Samples and Get Started

From Ecal

Jump to: navigation, search

いくつかの例が用意されています。そのほかの例は別に提供されるでしょう。TESTsample/ directory内にMTO+APWの例があります。ここではその例をstep by stepに説明していきます。 例を実行するためにlmf,lmfaなどの実行ファイルにPATHが通っていることを確認しておいてください。

Contents

Samples

TESTsamples directoryを見てください。Cu,Cu,GaAs,Li,SrTiO3の例があります。(csh scriptはそれぞれを実行するためにあります。)*/job*には

Cu/job_lmf   Fe/job_lmf   GaAs/job_lmf   Li/job_lmf   SrTiO3/job_lmf   
Cu/job_band  Fe/job_band  GaAs/job_band  Li/job_band  SrTiO3/job_band  
Cu/job_tdos  Fe/job_tdos  GaAs/job_tdos  Li/job_tdos  SrTiO3/job_tdos  
                                                      SrTiO3/job_pdos   

が含まれており、これらのファイルはそれぞれのctrl file(ctrl.cu, ctrl.cu_dos )と band plotに使用するsymmetry-line syml.cuが計算を始めるのに必要となります。


他にも以下のファイルがあります。

  • Li_lattice/ : Liのlattice constantを決める
  • SrTiO3_tutorial/ : scratchからctrl fileを作るための説明 (V節で説明)
  • LaGaO_relax/ : zero温度での原子位置の緩和の仕方。


次に、これらのファイルをどう実行するのか説明します。

Cuの例

最初にCu を実行してみます。TESTsamples/Cu directoryへ移動してください。最初にファイルのバックアップをとっておくことをお勧めします。実行に必要なファイルはctrl.cu, ctrl.cu_dos, and syml.cu だけです。

次に./job_lmf をlmfの結果を得るために実行します。 ctrl.cu is the starting point by hand. しなければいけないことはjob_lmfに書かれています。 それらの内部をごらんください。 lmfは10%程度のoverlapがあっても動きます。 以下のコマンドを試してみてください。

lmf --help         helpを表示します。
lmf --input        ctrl file中の必要なものとoptionを表示します。 
lmf --show cu      ctrlがどう読まれるか、またdefaultが何かを表示します。そのあと実行が始まります。このcommand line optionはctrl file内で"IO_SHOW=t"と書くことと等価です。
lmf --showp cu     preprocessされた ctrl fileを示します。   
lmchk cu            geometrical informationsを表示します。
lmchk --getwsr cu   MT半径の推奨値を示します。   

lmf --show=2 cu    開発者向けです。lmv7.fが呼ぶmain part fp/lmfp.fの日付をみます。 

lmfaがlmfで使われるatm fileを作ります。 lmfはrst.*を作ります。もし、rst.*があれば、atm.*からでなく通常はrst.*から計算が始まります。 'lmf --help'を見てください。( 'lmf --rs=0 cu' で*.rstを読まずに計算を始められます。)

ctrl fileの最低限の説明

ctrl fileの書き方はV節で説明します。 次のページで説明するutility programがあり、crystal structureから半自動でctrl fileを作成してくれます。

ctrl fileの説明をします。ctrl.gas はGaAsのプログラムです。

VERS    LM=7 FP=7    
SYMGRP  find    
STRUC   NBAS=2 NSPEC=2    
         ALAT=10.66 DALAT=0 PLAT= 0 .5 .5  .5 0 .5  .5 .5 0     
SITE    ATOM=C1  POS=  0   0   0    
         ATOM=A1  POS= .25 .25 .25     
ITER    CONV=1e-5 CONVC=1e-6 NIT=20    
BZ      NKABC=3 3 3 BZJOB=0 METAL=0    
OPTIONS   PFLOAT=1    
IO      SHOW=t VERBOS=35    
HAM     FTMESH=24 XCFUN=2    
         NSPIN=1 REL=t     
         PWMODE=11 PWEMAX=3     
SPEC  #BYmergemto : ctrl and mtopara were merged.    
        ATOM= Ga Z= 31 R=2.254225     
        RSMH= 1.503 1.503  EH= -0.325 -0.100 KMXA=7 PZ=0,0,13.9 PZ=0,0,4.2     
        ATOM= As Z= 33 R=2.361690     
        RSMH= 1.514 1.524  EH= -0.834 -0.220 KMXA=7  

このファイルのフォーマットを説明します。 VERS, SYMGRP, STRUC, SITE, ITER, BZ, OPTIONS, IO, HAM, SPECはcategoryを示します。 NBASなどはtokenを示します。tokenはcategoryの下位に存在します。 categoryは必ず行頭から書かないといけません。 しかし、tokenは行頭に書いてはいけません。

このctrl fileの場合はcategory,STRUCの下に NBAS, NL NSPEC, PLAT PLAT のtokenがあります。 あるcategoryの範囲は別のcategoryの始まりまでかファイルの終わりまでです。 NBAS=の後には入力データを記入できます。 その入力データの数・タイプはtokenによって異なります。(ある場合にはデータそれ自体の数も数えられます。)

Notation: 以下ではSTRUCの下のNBASの成分はSTRUC_NBASと書きます。(category_tokenという意味です。)たとえば、OPTIONS_PFLOAT=1 はOPTION categoryのFLOAT=1を意味します。

SPEC, SITE categoryには多くのATOM tokenを書くことができます。 POS=0 0 0はATOMの下位のtokenです。したがってPOSはsubtokenになります。 この場合、SPEC_ATOM_POSと表記されます。(category_token_subtoken) このようにctrl fileは 第一レベルがcategory,第二レベルがtoken,第三レベルがsubtokenと 基本的にlinux/dosのfile systemのtree構造を模したものになっています。

それぞれのレベル(category, tone, subtoken)はそれぞれの値を持つことができます。 例えば、'SYMGRP find'はSYMGRPが文字列'find'を持つことを意味します。 今の例だとSPEC_ATOM(Ga)とSPEC_ATOM(As)の二つのtokenを持っており、 SPEC_ATOM(Ga)_Zが31という値を持っているといえます。

lmf --input はlmfでのcategory-tokens-subtoken を示します。 MarksOriginalDoc/fp.html も見てください。

Ver.7 format

この文章の例で説明しているのは Ver.6のformatで書かれたctrl fileです。 しかし、Ver.6のformatは論理的でなく、以下のver.7のformatの方が論理的です。

SITE   
      ATOM[Ga  POS=0  0 0]    
      ATOM[As  POS=.25 .25 .25]    
SPEC   
      ATOM[Ga Z=31 R=2.254225    
            RSMH= 1.54 1.54 0.798 EH= -0.343 -0.1 -0.815    
            PZ=0,0,3.93 KMXA=5 LMXA=5]    
      ATOM[As Z=33 R=2.361690     
            RSMH= 1.513 1.516 EH= -0.833 -0.216 KMXA=5 LMXA=5]  

lm-7.0betaKはどちらのフォーマットも使えます。


Li_lattice/

格子定数を自動的に変えて格子定数vs total energyを次のひとつのコマンドで計算できます。

csh ctrl.li

このctrl fileはlmfでの二つの機能を基にしています。

  1. ctrl fileは行頭のctrlstartから読まれます。
  2. ctrl file中の# lmf li -vdalat=0.2 はdalatを0.02単位で置き換えることを意味します。ここでのDALATは格子定数を変えるだけに用いられ、cutoff,real space meshなどの計算条件はSTRUC_ALATで決定されます。(通常cutoffを固定して計算が行われますが、cutoffが同じでも格子定数の変化により実空間gridの数が異なってしまいtotal energyにartifactな影響を及ぼし滑らかなカーブが描けなくなります。これに対する補正をpulay correctionと言います。DALATは現在のプログラムにはpulay correctionが入っていないための措置になります。1/(実空間mesh)^2がcutoffの次元なので、この手法だと格子定数が大きくなるほど大きなcutoffでの計算になり、一般に大きなcutoffほど低いtotal energyになることを忘れないでください。)

"csh ctrl.li"が終了後にsave.liの"c"で始まる行は収束した結果を示します。"grep 'c ' save.li"によってlattice constat vs total energyが見れます。

stressは計算できませんが、簡単なlattice distrotionsによるtotal energyの変化も同様の手法で計算できます。

band plot

bandplotのためにjob_bandがあります。postscript fileであるps.band.cuを見てください。

symmetry lineが書いてあるsyml.cuはjob_bandに必要です。このファイルは手でつくるか何かの例からとってきます。

dos plot

total dos plotにはjob_tdosを用います。ps.dos.cu_ができます。 pldosというjob_tdosから呼ばれるprogramは長い名前を作れませんのでtrucateされてps.dos.cu_になります。


dos plotには系がinsulatorであってもmetal mode (METAL=3かband integrationでtetrahedron法を用いる)と多くのk点を用いないといけません。 metal mode で more k-pointsの ctrl.cu_dosが用意されています。 ctrl.cuとの差を調べてみてください。

スピン分極している場合

Feが分極の場合です。job ,ctrl fileを見てください。

MPI/MPIK

SrTiO3 directoryには計算でのstdoutへの出力であるllmf_*が含まれています。

mpirun -n 4 lmf-MPI  srtio3 > llmf_mpi   #See MarksOriginalDoc/MPI-instruction   
mpirun -n 4 lmf-MPIK srtio3 > llmf_mpik  #k point pararell

rst.*などはserial版,parallel版とも同じで上は収束したrst.srtio3から計算を始めています。 これらの収束した結果はSCF criterionの範囲内でllmfの結果と同じです。

他の場所にも書きましたが、実行上の注意点を再び書いておきます。

  • lmf-MPIではprocessの数は原子数を超えてはいけません。
  • lmf-MPIKでのprocess数の制限は把握していません。

partial DOS

PDOS plotは少し複雑です。 SrTiO3/job_pdos, ctrl.srtio3_pdosを見てください。以下で--pdos optionの説明をみてみましょう。

--pdos[:mode=#][nl=#][:sites=site-list] , which is in lmto.html.   
SYMGRP i*i   <---we use no symmetry operation   

lmf --pdos:mode=2   

というfull angular momentum-decomposed PDOSに必要です。

echo 501,-.5,.5|lmdos --pdos:mode=2  srtio3   

がpdos weightを作ります。 -.5から.5を501分割します。(ctrl.srtio3_pdosのBZ_DOSより広い設定となっています。)

Comment: dos, pdos, band plotのフォーマットは少し複雑で、理解するにはコードの詳細を見る必要があります。将来はgnuplot用に書き直すつもりです。

Personal tools