我只想为配置中的粒子指定名称。例如。
我在3D立方结构中有例如N=125
粒子,我有两种粒子A
和B
。
我想使用随机生成器r=ran(0,1)
,如果r<0.5
,则粒子为A
,否则粒子为B
。
然后我想使用A
,B
计算其他属性,如能源等。
我该怎么做?
这是我制作混合配置的代码
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红色
答案 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'