系の物性値
シミュレーションによって得られる物性値を取得し、画面に表示します。
ここでは
- シミュレーション開始からの経過時間
- 粒子の平均速さ
- 粒子の平均運動エネルギー
を表示します。単位(s, min, ps など)を指定できるようにします。
gt = 0.0 #シミュレーション世界の経過時間 k_B = 1.38*10**-23 #ボルツマン 定数 def showtime(unit): #gtを画面に表示 #メインループで、gt に t_scaleを加える処理を加えておく #unit 時間の単位 if(unit=="s"): tstr = "%1.4f %s" % (gt, unit) if(unit=="min"): tstr = "%1.4f %s" % (gt/60.0, unit) if(unit=="ps"): tstr = "%1.4f %s" % (gt*10**12, unit) text1 = font1.render(tstr, True, (255, 255, 255)) #text1に文字列を出力 screen.blit(text1,(10,10)) #画面に表示 def showspeed(): #ボールの速さの平均を取得、表示 speed_total = 0 #速さの合計 for x in range(0, ballnum): #ボールすべてについて処理をする speed_total += ball[x].get_speed() speed_ave = speed_total/ballnum tstr = "Average speed %1.3f m/s" % speed_ave text1 = font1.render(tstr, True, (255, 255, 255)) #text1に文字列を出力 screen.blit(text1,(10,40)) #画面に表示 def showenergy(unit="J"): energy_total = 0 #運動 エネルギーの合計 for x in range(0, ballnum): #ボールすべてについて処理をする energy_total += ball[x].get_energy() energy_ave = energy_total/ballnum if(unit=="J"): tstr = "Average energy %1.3f %s" % (energy_ave, unit) if(unit=="K"): tstr = "Average energy %1.3f %s" % (energy_ave/k_B, unit) text1 = font1.render(tstr, True, (255, 255, 255)) #text1に文字列を出力 screen.blit(text1,(10,70)) #画面に表示 return(energy_ave/k_B) #メインループで使うので、K単位の平均エネルギーを返す