日記

研究日誌,日々の雑感,ノロケ

2) 10K以上の弾性波伝播で,detectorが波を受けるまでの間にゆっくりと座標を変化させている(右にずれている)。弾性波を流さずに長いタイムステップnveで放置したらどうなるか見て,この現象についても考える。10Knve_doNothing(nve_relax)など

→前も書いたけど、nveでrelaxしたらめちゃくちゃ座標ずれていくことが判明。nptでやるしかなさそうな気もするけど、タイムステップがなあ。とりあえず、もう1回さらに長いタイムステップで見てみる。

→おわた。永遠にずれていく。体積は変わってない(そりゃnveだから当たり前!)

f:id:gogasya:20211109022735p:plain
nveで放置すると永久に原子が変位する。これはdetector

3) nptでやるにあたって,afterExp.latから読み込んでnptでシミュレーションを始動したら,最初いつものえぐいfluctuationが出るのか?要確認。 →expresumeがどこに行ったのかわかんない。 →やってみた。大丈夫そう。

f:id:gogasya:20211109022546p:plain
nptでafterExp.latからただ放置。あんまぶれてないね

新しい問題

4) pulse-inversionするとギザギザだし平行移動するし。クソか?

f:id:gogasya:20211109023035p:plain
それっぽい
f:id:gogasya:20211109023108p:plain
はい、2次成分おわたー

これ10Kでやったやつだから、とりあえず0.1Kで再チャレンジしてみる。そこでもぐじゃぐじゃだったら、考え直す。

1108

前回の問題点

  1. 20K以上の昇温で,セルサイズは収束しているように見えるが,温度変化がおかしい。より長いタイムステップをかけて移ろいを見ないといけない。20Kexp_longなど →15000 temp/rescale, 15000 relaxで以下のグラフ。

f:id:gogasya:20211108151454p:plain

とりあえず1K前後の温度変動はしょうがないっぽいな。

  1. 10K以上の弾性波伝播で,detectorが波を受けるまでの間にゆっくりと座標を変化させている(右にずれている)。弾性波を流さずに長いタイムステップnveで放置したらどうなるか見て,この現象についても考える。10Knve_doNothing(nve_relax)など

f:id:gogasya:20211108151948p:plain
detector原子の波動導入時の位置変化。波が来る前にちょっと右に行ってる

→前も書いたけど、nveにでrelaxしたらめちゃくちゃ座標ずれていくことが判明。nptでやるしかなさそうな気もするけど、タイムステップがなあ。とりあえず、もう1回さらに長いタイムステップで見てみる。

f:id:gogasya:20211108151729p:plain
detector原子の時間変化

  1. nptでやるにあたって,afterExp.latから読み込んでnptでシミュレーションを始動したら,最初いつものえぐいfluctuationが出るのか?要確認。 →expresumeがどこに行ったのかわかんない。

今日の問題点

  1. 20K以上の昇温で,セルサイズは収束しているように見えるが,温度変化がおかしい。より長いタイムステップをかけて移ろいを見ないといけない。20Kexp_longなど

  2. 10K以上の弾性波伝播で,detectorが波を受けるまでの間にゆっくりと座標を変化させている(右にずれている)。弾性波を流さずに長いタイムステップnveで放置したらどうなるか見て,この現象についても考える。10Knve_doNothing(nve_relax)など →nveにでrelaxしたらめちゃくちゃ座標ずれていくことが判明。nptでやるしかなさそうな気がしてきた。

  3. nptでやるにあたって,afterExp.latから読み込んでnptでシミュレーションを始動したら,最初いつものえぐいfluctuationが出るのか?要確認。

LAMMPSのif文のクォーテーション内では論理演算子以外の演算子は使えない

M1で初飲み会した。みんな研究モチベないよね~~という話。

tabelog.com

店員さん優しかった。

LAMMPSのif文でやられるのもうn回(nは十分大きい自然数)なので,いい加減メモ。

docs.lammps.org

LAMMPSのif構文は論理演算子は使えても,(加減乗除などの)演算子は使えないといううんこ仕様らしい。 だから,下のifはエラーを返される。

if "${current_time} < $Q + ${initialSteps}*dt" then "jump loopBreak"

以下ならいける。なお,variableの宣言の際は,イコールの右側にスペースがあってはいけない。

variable totalTime equal $Q+${initialSteps}*dt
if "${current_time} < ${totalTime}" then "jump loopBreak"

これを考慮してもう一度in_1103.lammpsをつくったので,さしあたりそれを使ってくださいという感じ。ちなみにdtはデフォルト変数で,タイムステップ幅を表す。LAMMPSのデフォルト変数もマジでわかりにくいので探したら怪しい中華サイトにチートシートあった。

www.codetd.com

こまったらここを見よう。と思ったけど,こういうサイトいつつぶれるかわかんないから転記。

    step = timestep
    elapsed = timesteps since start of this run
    elaplong = timesteps since start of initial run in a series of runs
    dt = timestep size
    time = simulation time
    cpu = elapsed CPU time in seconds since start of this run
    tpcpu = time per CPU second
    spcpu = timesteps per CPU second
    cpuremain = estimated CPU time remaining in run
    part = which partition (0 to Npartition-1) this is
    timeremain = remaining time in seconds on timer timeout.
    atoms = # of atoms
    temp = temperature
    press = pressure
    pe = total potential energy
    ke = kinetic energy
    etotal = total energy (pe + ke)
    enthalpy = enthalpy (etotal + press*vol)
    evdwl = van der Waals pairwise energy (includes etail)
    ecoul = Coulombic pairwise energy
    epair = pairwise energy (evdwl + ecoul + elong)
    ebond = bond energy
    eangle = angle energy
    edihed = dihedral energy
    eimp = improper energy
    emol = molecular energy (ebond + eangle + edihed + eimp)
    elong = long-range kspace energy
    etail = van der Waals energy long-range tail correction
    vol = volume
    density = mass density of system
    lx,ly,lz = box lengths in x,y,z
    xlo,xhi,ylo,yhi,zlo,zhi = box boundaries
    xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes
    xlat,ylat,zlat = lattice spacings as calculated by lattice command
    bonds,angles,dihedrals,impropers = # of these interactions defined
    pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor
    fmax = max component of force on any atom in any dimension
    fnorm = length of force vector for all atoms
    nbuild = # of neighbor list builds
    ndanger = # of dangerous neighbor list builds
    cella,cellb,cellc = periodic cell lattice constants a,b,c
    cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma

照射研究会のポスターセッション準備が進まなすぎて鬱。修士やめて就職したい(けど,You can't spell しゅうしょく without しゅうし)。

あとM100のQOSGrpMemLimitみたいなやつは放置してればそのうち処理してくれるから気にしないでいい。

M100でLAMMPSをアンイストール

LAMMPSを一度makeでビルドしちゃったあとで、入れたいパッケージが増えたりした場合、一度LAMMPSを消して入れ直す必要がある。 Reference:

docs.lammps.org

消し方

cd lammps/src/
make clean
make clean-all
make clean-mpi
make purge

よくわかんない。make cleanで消えるっぽい。包含関係があって、make clean > make clean-all > make clean-mpi なんじゃないかと思うけど、とりあえず全部ぶっこんどきゃいいと思う。 make purgeはQSTのヘルプデスクが言ってた。 てかこれ全部やってもlmp_mpi残ってるけどいいのかな。

6SBの解説かくのしんどいな。

M100にLAMMPSのインストール

ソースコードをgit

cd $WORK
git clone -b stable https://github.com/lammps/lammps.git lammps

モジュールのload

  • MPI環境のモジュールとしてspectrum-MPI
  • コンパイラとしてxl

をそれぞれロード。

module load spectrum[+tab]
module load xl[+tab]

makefileを書き換え

コンパイラオプションを書き換える。ディレクトリはMAKEのなか。

cd lammps/src/MAKE
vi Makefile.mpi
  1 # mpi = MPI with its default compiler
  2
  3 SHELL = /bin/sh
  4
  5 # ---------------------------------------------------------------------
  6 # compiler/linker settings
  7 # specify flags and libraries needed for your compiler
  8
  9 #CC =       mpicxx
 10 CC =        mpixlC #HERE!!
 11 CCFLAGS =   -g -O3
 12 SHFLAGS =   -fPIC
 13 DEPFLAGS =  -M
 14
 15 #LINK =     mpicxx
 16 LINK =      mpixlC #HERE!!
 17 LINKFLAGS = -g -O3
 18 LIB =
 19 SIZE =      size

10行目と16行目のとこ。mpi環境でxlコンパイラ使うときはmpixlCって書いてあった: https://wiki.u-gov.it/confluence/display/SCAIUS/UG3.2%3A+MARCONI100+UserGuide#UG3.2:MARCONI100UserGuide-Compilers mpicxxとかでも動くんだと思うけど、推奨環境で行きましょう。

make yes-[package name]

cd src
make yes-manybody #example

make-yes のコマンドによって予め入れたいパッケージをすべてyesにしとかないとだめ。とりあえずmake yes-basicとmake yes-MANYBODY、make yes-MEAMだけやっといた。 yes/noの一覧はmake psで出せる。

make

cd lammps/src
make mpi

長い。あとtcmalloc: large allocうんちゃらっていうのが出て一時的に(10分弱?)動かなくなるけど、そのうちまた再開するから焦らないで。Ctrl+Cしちゃだめ。

以上で完了。頑張れ自分