ecalj — a package for the first-principles electronic structure calculations.
This is README.org (org-mode in emacs) at https://github.com/tkotani/ecalj. Email to firstname.lastname@example.org.
What can we do in ecalj package?
- All electron full-potential PMT method, where the PMT method means
A mixed basis method of two kinds of augmented waves, that is, LAPW+LMTO.
Relaxiation of atomic positions is possible at the GGA/LDA level. (Not automatic for lattice defermation yet).
Our recent research shows that very localized MTOs (damping factor are ∼ 1 a.u), together with APW
(cutoff is ≈ 2 to 3 Ry) works well to get reasonable convergences.
https://journals.jps.jp/doi/abs/10.7566/JPSJ.84.034702 (PMT formalism)
https://journals.jps.jp/doi/abs/10.7566/JPSJ.82.124714 (PMT applied to diatomic molecules).
As we can use automatic settings of MTOs paremeters all the time,
we don’t need to be bothered with the setting of them.
The PMT method method is promising since it can connect physics and chemistry, and virtually it can
be a very efficient method (currenty the ability is limited by the implementetion in ecalj).
In principle, it is possible to perform reasonable calculations just from atomic structures and very minimum setting. (For QSGW for 4f electrons, automatically-generated ctrl file may not work). We have document included about how to confirm calculations to be publicaiton quality.
- The PMT-QSGW method, that is,
the Quasiparticle self-consistent GW method (QSGW) based on the PMT method
Thanks to PMT, we can perform QSGW with very minimum settings by hands. Easy to use.
After converged, we can easily make band plots of the QSGW calculaiton without the Wanneir interpolation,
because, roughly speaking, such an interpolation scheme is internally built in.
In addion, we can calculate dielectric functions, spectrum function of the Green’s functions and so on (some of functions are obsolate. Need fixing).
For paralellized calculations, we currently mainly have k-paralell only. In addition, memory distribution is not yet so much. These may cause some problems to handle primitive cells including many atoms. Roughly speaking, our current PMT-QSGW is applicable upto 16 atoms a cell (light atoms are easier to handle). http://journals.jps.jp/doi/abs/10.7566/JPSJ.83.094711 (Formulation of PMT-QSGW method) https://iopscience.iop.org/article/10.7567/JJAP.55.051201/pdf (PMT-QSGW applied to a variety of insulators)
We have so much room to make PMT and QSGW very efficient.
- The Wannier function generators and effective model generators (Maxloc Wannier and effective interaction between Wannier funcitons). This is adopted from codes by Dr.Miyake,Dr.Sakuma, and Dr.Kino. See fpgw/Wannier/README. cRPA is implemented, mRPA will be implemented.
- Utilitys are included, to write crystal structures. For example, a converter between POSCAR(VASP) and our crystal strucrue file ‘ctrls.*’ are included.
- For publications, make a citation cleary to this homepage such as;
 ecalj package at https://github.com/tkotani/ecalj/. Its one-body part is developed based on the Questaal at https://lordcephei.github.io/. Its GW part is originally taken from ecalj. in the references on the same footing of other papers.
- Except commercial use, you can freely use and modify this package for your purpose.
You can re-distribute your modified package as long as you cited our ecalj package. For commercial use, ask to takaokotani.
Automatic installation script and test
Manuals and Samples of ecalj
We have presentations of ecalj in file:Document/ Especially, file:Document/Manual/ecaljmanual.pdf is the main document. Varieties of samples are at file:MATERIALS/ (some of them are obsolate).
How to perform paper quality calculations with minimum costs?
Usage minimum. QSGW for Si
See file:Document/Manual/ecaljmanual.pdf Here I show its very minimum. In Japanese, see http://gomisai.blog75.fc2.com/blog-entry-675.html (and others. Use search engine.)
(1) Write structure file ctrls.si by hand (you can have ctrls from POSCAR(VASP) with vasp2ctrl in ecalj/StructureTool/.)
(2) conver ctrls.si to ctrl.si by ctrlgen2.py si –nk=6 (without argument, it shows help). Then you have default ctrl.si (rename ctrlgen2.ctr.si to ctrl.si).
(3) Run “lmfa si” to prepare atom.
NOTE: If you like to skip them, run ./job_materials.py Si at /home/takao/ecalj/MATERIALS. >cd Si >cp ../syml.si >job_band_nspin1 si This shows you band by LDA. To generate syml.si, we can use ecalj/GetSyml/getsyml.py. When it is correctly installed (see below), $getsyml si should generate a syml.si from ctrl.si. You can edit it and run job_band.
(4) For PMT-QSGW, make GWinput.tmp by mkGWIN_v2 si. Copy GWinput.tmp as GWinput. (you supply three numbers for the command mkGIWN_V2.)
(5) Then run a script gwsc, e.g. “gwsc 2 si -np 3” (2+1 iteration with 3 nodes).
(6) To continue calculation do “gwsc 5 si -np 3” again. (To start, you need ctrl.si rst.si QGpsi ESEAVR sigm.si) When you start from these files, 0th iteration is skipped —thus we have just five iteration.
(7) For band, dos, and pdos plot, we have scripts which almost automatically makes these plot in gnuplot. Thus easy to modify these plots at your desposal.
Structure tool (Brillowin zone and symmetry lines writer).
In any calculations, we first need to supply crystal structure correctly. In the case of ecalj, we write it ctrls.*. All calculaitons can be performed from it.
For this purpose, we have converters between POSCAR (VASP’s crystal structure file) and ctrls.*(that for ecalj). In addition, we have a simple script to invoke crystal strucrure viewer, usually VESTA. It is in file:Structure/tool/.
Furthermore, we have a tool to generate BZ and symmetry lines on it for band plot. The symmetry line is written into syml.* and used for the band plot mode, job_band.
Install the viever
Here we use VESTA at http://jp-minerals.org/vesta/. Download it, and expand it to a directory. VESTA can handle kinds of format of crystal structure.
Then make a softlike by > ln -s ~/ecalj/StructureTool/viewvesta.py ~/bin/viewvesta > ln -s ~/ecalj/StructureTool/ctrl2vasp.py ~/bin/ctrl2vasp > ln -s ~/ecalj/StructureTool/vasp2ctrl.py ~/bin/vasp2ctrl
With this procedure we can run command viewvesta, ctrl2vasp, vasp2ctrl from console as long as you have ~/bin/ in the command search path. In my case, .bashrc have a line export PATH=$HOME/bin:$HOME/VESTA-x86_64:$PATH
It depends on your machine. (after editing .bashrc, you have to do “source ~/.bashrc” to reflect changes).
Set the variable of VESTA=, at the begining of ~/ecalj/StructureTool/viewvesta.py to let it know where is VESTA.
Symmetry line finder.
This is to generate symmetry lines. syml.* from ctrl.* in ecalj/GetSyml/ In the directory, we have getsyml.py, which is based on the seekpath https://github.com/giovannipizzi/seekpath/ See Lincence.txt in it. Folllowing citations are required. 1.Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, Band structure diagram paths based on crystallography, Comp. Mat. Sci. 128, 140 (2017) 2.You should also cite spglib that is an essential library used in the implementation.
How to do version up?
Be careful to do version up. It may cause another problem. But it is not so difficult to move it back to original version if you use git. An important things is keeping your changes by yourself. Especially your own Make.inc.* files (see InstalAll.ifort).
>cd ecalj >git log This shows what version you use now.
>git diff > gitdiff_backup This is to save your changes added to the original (to a file git_diff_backup ) for safe. I recommend you do take git diff >foobar as backup. >git stash also move your changes to stash.
>git checkout -f CAUTION!!!: this delete your changes in ecalj/. This recover files controlled by git to the original which was just downloaded.
>git pull This takes all new changes.
I think it is recommended to use >gitk –all
and read this document. Difference can be easily taken, e.g. by >git diff d2281:README 81d27:README (here d2281 and 81d27 are several digits of the begining of its version id). >git show 81d27:README is also useful.
History (not maintained well).
. May 2019: org documentaion started. Use ifile_handle(). . March 2019: this document is cleaned up slightly . March 2016: new histgram bin m_freq.F (HistBin_ratio and HisBin_dw are used to specify new mesh. . March 2016: wklm(1) is only used (only f_L for l=m=0 is used. See Eq.28 in JPSJ83,094711(2014).)
For 4f, we need modification to GWinput.tmp
( ask to t.kotani. We have a memo to treat 4f)
(for previous users): known bug(or not) for spin susceptibility mode
(This mode is now obsolate because we are switching to a new method with localized basis for spin susceptibility.) T.Kotani thinks epsPP\_lmfh\_chipm branch may/(or may not) have a bug (because of symmetrization). The bug may be near
if (is==nspinmx) then symmetrize=.true. call x0kf_v4hz(npm,ncc,...
in fpgw/main/hx0fp0.m.F (This bug may be from a few years ago, after I implemented EIBZ mode). I think “if (is==nspinmx.or.chipm) then” may be necessary especially for cases with more than two atoms in the cell (thus fe\_epsPP\_lmfh test may not work for this case…) A possible test is by removing symmetrization—> use eibzsym=F.