我试图用3D头编写链表代码。听到的是我试过的:
SUBROUTINE cell_list (rat,nat,cell,nx,ny,nz,hx,hy,hz,link)
USE constants
IMPLICIT NONE
INTEGER :: nat
REAL(8) :: rat(3,nat)
INTEGER,intent(inout) :: nx,ny,nz !number of cells per dimension
REAL(8),intent(inout) :: hx,hy,hz !size of a cell
REAL(8) :: Lx,Ly,Lz !length of the box
REAL(8) :: xmin,xmax,ymin,ymax,zmin,zmax
INTEGER :: iat !label of particles
INTEGER :: j,k !loop control
INTEGER :: cellx,celly,cellz !id of the cell for certain atom
INTEGER :: link(nat)
INTEGER :: cell(1:nx,1:ny,1:nz)
cell = 0
link = 0
DO iat = 1,nat
cellx = int(rat(1,iat)/hx)+1
celly = int(rat(2,iat)/hy)+1
cellz = int(rat(3,iat)/hz)+1
if (cell(cellx,celly,cellz).ne.0) then
link(iat) = cell(cellx,celly,cellz)
endif
cell(cellx,celly,cellz)=iat
END DO
END SUBROUTINE cell_list
in like linke(iat)=cell(cellx,celly,cellz)
我们如何将3D数组分配给标量链接。我的代码是真的吗?
我在一些书中看到了相同的1D代码,例如"理解分子模拟,Frenkel"他在那里用过这样的东西:
linke(iat)=cell(icell)
感谢您的帮助。