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

📄 e6interact.f90

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

subroutine e6interact( Nb, Xb, Yb, Zb, TYPEb, DAMP2b, DAMP3b, &
					   Nmol, LENGTH, Nham, Nljgrs, &
					   EPS, SIG, CP, ALP, RMAX, BoxSize, ENERGY )

implicit none

! This routine calculates the total energy of a group of molecules.

! Nb is the total number of LJ beads in a system.
! TYPEb contains the group identity of each bead.
! Xb, Yb, Zb are the coordinates of each bead.

integer, intent(in)									:: Nb
integer, dimension(Nb), intent(in)					:: TYPEb
real, dimension(Nb), intent(in)						:: Xb, Yb, Zb
real, dimension(Nb), intent(in)						:: DAMP2b, DAMP3b

! Nmol is the number of molecules in the system.
! LENGTH contains the number of LJ beads in each molecule.

integer, intent(in)									:: Nmol
integer, dimension(Nmol), intent(in)				:: LENGTH

! Nham is the number of hamiltonians.
! Nljgrs is the number of LJ groups in the system.
! EPS is a rank 3 array containing the eps_ij parameters for each hamiltonian.
! SIG is a rank 3 array containing the sigma_ij parameters for each hamiltonian.
! CP is a rank 3 array containing the C_ij parameters for each hamiltonian.
! ALP is a rank 3 array containing the alpha_ij parameters for each hamiltonian.
! RMAX is a rank 3 array containing the Rmax_ij parameters for each hamiltonian.

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

! BoxSize is the length of the simulation box.

real, intent(in)									:: BoxSize

! ENERGY contains the total energy of the system for each hamiltonian.

real, dimension(Nham), intent(out)					:: ENERGY

! Local variables

integer												:: i, Nc
integer												:: Start, Finish
real, dimension(Nham)								:: ENERGY_part



ENERGY = 0.0

Finish = 0

do i = 1, Nmol - 1

	Start = Finish + 1
	Finish = Start + LENGTH(i) - 1

	Nc = LENGTH(i)

	call e6molecule( Nc, Xb(Start:Finish), Yb(Start:Finish), &
					 Zb(Start:Finish), TYPEb(Start:Finish), &
					 DAMP2b(Start:Finish), DAMP3b(Start:Finish), &
					 Nb - Finish, Xb(Finish+1:Nb), Yb(Finish+1:Nb), &
					 Zb(Finish+1:Nb), TYPEb(Finish+1:Nb), &
					 DAMP2b(Finish+1:Nb), DAMP3b(Finish+1:Nb), &
					 Nham, Nljgrs, EPS, SIG, CP, ALP, RMAX, &
					 BoxSize, ENERGY_part)

	ENERGY = ENERGY + ENERGY_part

end do

return

end subroutine e6interact




⌨️ 快捷键说明

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