为fortran中的粒子指定名称

时间:2014-04-28 10:16:21

标签: fortran fortran90

我只想为配置中的粒子指定名称。例如。 我在3D立方结构中有例如N=125粒子,我有两种粒子AB。 我想使用随机生成器r=ran(0,1),如果r<0.5,则粒子为A,否则粒子为B。 然后我想使用AB计算其他属性,如能源等。

我该怎么做?

这是我制作混合配置的代码

    subroutine init_order(rx,ry,rz,n)
use LJ_POT
    implicit none

!为粒子分配初始位置     双精度rx(num),ry(num),rz(num)     整数i,j,k,n     真实的* 8 u,ir1

open(10,file='conf.in',status='unknown')
ir1=19375.d0
n=0
    do i=1,nx
    do j=1,ny
     do k=1,nz
     n=n+1
     rx(n)=(dble(i)-0.5d0)*gsize
     ry(n)=(dble(j)-0.5d0)*gsize
     rz(n)=(dble(k)-0.5d0)*gsize

     call usran(ir1,u)
     if (u.le.0.5d0) then
        write(10,*) rx(n),ry(n),rz(n),'red'
     else if (u.gt.0.5d0) then
        write(10,*) rx(n),ry(n),rz(n),'blue'
     end if
     end do
    end do
    end do
    close(10)

175格式(4(f12.5))     返回         结束子程序

N=8进行此配置:

0.75000000000000000 0.75000000000000000 0.75000000000000000红色

0.75000000000000000 0.75000000000000000 2.2500000000000000蓝色

0.75000000000000000 2.2500000000000000 0.75000000000000000蓝色

0.75000000000000000 2.2500000000000000 2.2500000000000000蓝色

2.2500000000000000 0.75000000000000000 0.75000000000000000 blue

2.2500000000000000 0.75000000000000000 2.2500000000000000红色

2.2500000000000000 2.2500000000000000 0.75000000000000000红色

2.2500000000000000 2.2500000000000000 2.2500000000000000红色

1 个答案:

答案 0 :(得分:1)

您所描述的是对派生类型的调用:

 type particle
 real x(3)
 character*4 color
 end type

声明一个粒子类型数组:

 type particle p(1000)

然后将您的坐标引用为

 p(i)%x(j) = 0.

和color / name as:

 p(i)%color = 'red'

当然,你可以去老学校,只使用一个单独的阵列:

 real p(3,1000)
 integer color(1000)

 p(j,i)=0
 color(i)='red'