使用3D头编写链表代码

时间:2014-11-29 20:00:09

标签: linked-list fortran

我试图用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)

感谢您的帮助。

0 个答案:

没有答案