(無題)

 投稿者:SECOND  投稿日:2017年 1月31日(火)10時29分7秒
  おこられるとおもっていたので、ほっとしています。
質問は、しないで下さい。

それよりもっと、大事な事がありました。

 初期の温度から、外れたところで安定する原因について。

  開始の particle 配置による、ポテンシャル・エネルギー総和 と、
 運動中の particle 位置による、ポテンシャル・エネルギー総和の平均 との差分が
  運動エネルギーとして、particle の初期温度に、加算されるようです。

! set particles
   RANDOMIZE 5
   LET s = xMax/(side+1) *0.72   ← 開始の間隔を、0.72倍に詰めると、以下

time =    .00 (ps) temp = 150.00 (K)
time =   2.00 (ps) temp = 154.87 (K)
time =   4.00 (ps) temp = 150.00 (K)
time =   6.00 (ps) temp = 151.80 (K)
time =   8.00 (ps) temp = 150.17 (K)
time =  10.00 (ps) temp = 134.82 (K)
time =  12.00 (ps) temp = 148.11 (K)
time =  14.00 (ps) temp = 147.04 (K)
time =  16.00 (ps) temp = 154.42 (K)
time =  18.00 (ps) temp = 150.13 (K)
time =  20.00 (ps) temp = 144.92 (K)
        (
         )
time = 980.00 (ps) temp = 155.54 (K)
time = 982.00 (ps) temp = 160.40 (K)
time = 984.00 (ps) temp = 154.57 (K)
time = 986.00 (ps) temp = 158.49 (K)
time = 988.00 (ps) temp = 154.77 (K)
time = 990.00 (ps) temp = 153.97 (K)
time = 992.00 (ps) temp = 149.67 (K)
time = 994.00 (ps) temp = 149.56 (K)
time = 996.00 (ps) temp = 155.93 (K)
time = 998.00 (ps) temp = 150.51 (K)
time =1000.00 (ps) temp = 145.03 (K)
 

Re: (無題)

 投稿者:mike  投稿日:2017年 1月31日(火)11時49分56秒
  > No.4247[元記事へ]

SECONDさんへのお返事です。


(5)NVEの場合

> それよりもっと、大事な事がありました。
>
>  初期の温度から、外れたところで安定する原因について。
>
> 開始の particle 配置による、ポテンシャル・エネルギー総和 と、
> 運動中の particle 位置による、ポテンシャル・エネルギー総和の平均 との差分が
> 運動エネルギーとして、particle の初期温度に、加算されるようです。

>  開始の particle 配置による、ポテンシャル・エネルギー総和 と、
> 運動中の particle 位置による、ポテンシャル・エネルギー総和の平均 との差分が
> 運動エネルギーとして、particle の初期温度に、加算されるようです。

これは、本プログラムのような断熱系(NVE:粒子数一定、体積一定、全エネルギ一定)のシステムでは
正常な振る舞いです。
分子間のポテンシャルはsigmaより少し離れるとV(r) ~ r^(-6)で浅くなりますので、
初期状態を等間隔にするとどうしても平均のポテンシャルエネルギーは大きくなり、
粒子が動いて近くに来ることが多くなると、運動エネルギーに変わって、温度が上がります。

簡易的に温度を一定にする方法として、時々ajustVelocity(temp)を呼ぶという方法もあります。

SUB ajustVelocity(temp)
   LET w=SQR( temp / sysTemp)
   MAT vxy= w*vxy
   MAT vz= w*vz
END SUB


(6)温度を返す関数として

FUNCTION sysTemp
   LET v2 = 0
   FOR i=1 TO Nmt
      LET v2 = v2 + ABS(vxy(i))^2-vz(i)^2        ! vx^2 + vy^2 + vz^2
      !LET v2 = v2 + ABS(ABS(vxy(i))+vz(i))^2     ! vx^2 + vy^2 + vz^2
   NEXT i
   LET sysTemp = 0.5*mass*v2/Nmt/k_   !(totalEnergy/Nmt)/k
END FUNCTION

を定義されていますが、
統計力学によると、粒子1個あたり、1自由度あたり (1/2)*k*TTempのエネルギーを分配されますから
2D : Ek = (2/2)k*Temp*Nmt ,
3D : Ek = (3/2)k*Temp*Nmt
となりますので、3Dの場合は Temp = (2/3)*Ek/(Nmt*k) となります。

 

戻る