⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ressetup.f90

📁 巨正则系综蒙特卡罗算法的源程序;可以用来进行吸附等分子模拟;最大的好处在于可以插入或删除原子
💻 F90
字号:

subroutine ResSetup( reslen, Xb, Yb, Zb, &
					 Nresmol, MaxBeads, &
					 Nmoves, Nham, &
					 Xresmols, Yresmols, &
					 Zresmols, Uint_resm, &
					 Ulj_resm, Uion_resm, &
					 nresmv, maxresmv, maxresp, &
					 PROB_MV, RESMOVE, RESPARAM, &
					 nvib, nbend, ntor, &
					 maxvib, maxbend, maxtor, &
					 IVIB, IBEND, ITOR, &
					 RVIB, RBEND, RTOR, &
					 RES_ATT, RES_SUC, &
					 BEADTYPE, GROUPTYPE, &
					 BONDSAPART, Nljgrs, &
					 EPS, SIG, CP, ALP, RMAX, &
					 Niongrs, CHARGE, &
					 f14_lj, f14_ion, &
					 BETA, LNW, BoxSize, &
					 Uintra, Ulj, Uion, &
					 Seed, th_h, phi_h )

implicit none

integer, intent(in)						:: reslen

real, dimension(reslen)					:: Xb, Yb, Zb

integer, intent(in)						:: Nresmol, Nmoves
integer, intent(in)						:: MaxBeads, Nham

real, dimension(Nresmol,MaxBeads)		:: Xresmols, Yresmols, Zresmols

real, dimension(Nresmol)				:: Uint_resm
real, dimension(Nresmol,Nham)			:: Ulj_resm, Uion_resm

integer, intent(in)						:: nresmv, maxresmv, maxresp

real, dimension(maxresmv), intent(in)	:: PROB_MV

character*10, dimension(maxresmv)		:: RESMOVE

integer, dimension(maxresp, maxresmv)	:: RESPARAM

integer, intent(in)						:: nvib, nbend, ntor
integer, intent(in)						:: maxvib, maxbend, maxtor

integer, dimension(2, maxvib)			:: IVIB
integer, dimension(3, maxbend)			:: IBEND
integer, dimension(4, maxtor)			:: ITOR

real, dimension(2, maxvib)				:: RVIB
real, dimension(2, maxbend)				:: RBEND
real, dimension(4, maxtor)				:: RTOR

integer, dimension(5)					:: RES_ATT, RES_SUC

character*5, dimension(MaxBeads)		:: BEADTYPE
integer, dimension(MaxBeads)			:: GROUPTYPE 
integer, dimension(MaxBeads,MaxBeads)	:: BONDSAPART

integer, intent(in)						:: Nljgrs

real, dimension(Nljgrs,Nljgrs,Nham)		:: EPS
real, dimension(Nljgrs,Nljgrs,Nham)		:: SIG
real, dimension(Nljgrs,Nljgrs,Nham)		:: CP
real, dimension(Nljgrs,Nljgrs,Nham)		:: ALP
real, dimension(Nljgrs,Nljgrs,Nham)		:: RMAX

integer, intent(in)						:: Niongrs
real, dimension(Niongrs,Nham)			:: CHARGE

real, intent(in)						:: f14_lj
real, intent(in)						:: f14_ion

real, dimension(Nham)					:: BETA

real, dimension(Nham)					:: LNW

! BoxSize is the length of the simulation box.

real, intent(in)						:: BoxSize

real									:: Uintra

real, dimension(Nham)					:: Ulj, Uion

integer									:: Seed

integer, dimension(0:180)				:: th_h
integer, dimension(-180:180)			:: phi_h

real, external							:: ran2

! Local stuff

integer							:: i, j


do i = 1, Nresmol

	do j = 1, 20 * Nmoves

		call ResUpdate( reslen, Xb, Yb, Zb, &
						  nresmv, maxresmv, maxresp, &
						  PROB_MV, RESMOVE, RESPARAM, &
						  nvib, nbend, ntor, &
						  maxvib, maxbend, maxtor, &
						  IVIB, IBEND, ITOR, &
						  RVIB, RBEND, RTOR, &
						  RES_ATT, RES_SUC, &
						  MaxBeads, &
						  BEADTYPE, GROUPTYPE, &
						  BONDSAPART, Nham, Nljgrs, &
						  EPS, SIG, CP, ALP, RMAX, &
						  Niongrs, CHARGE, &
						  f14_lj, f14_ion, &
						  BETA, LNW, BoxSize, &
						  Uintra, Ulj, Uion, &
						  Seed, th_h, phi_h )

	end do

	Xresmols(i,1:reslen) = Xb(1:reslen)
	Yresmols(i,1:reslen) = Yb(1:reslen)
	Zresmols(i,1:reslen) = Zb(1:reslen)

	Uint_resm(i) = Uintra
	Ulj_resm(i,:) = Ulj(:)
	Uion_resm(i,:) = Uion(:)

end do

return

end subroutine ResSetup



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -