Routine to read the information from the input file
Note
VP: there should be some crosscheck of competing options e.g., XCPL
and
CONDUCT
cannot be done simultaneously neither SOC1
and SOC2
manipulation etc.
Note
In leftbasis and rightbasis, kaoez is used only in decimation case. Then it indicates the correspondence of the atom-coordinate given by leftbasis and rightbasis to the left- and right-host t-matrix read in by decimaread. For the slab case, kaoez is not used in the embedded positions.
Note
JC: Read the IRM value from the inputcard. This in principle can be determined from the potential file, hence maybe it is best to do it that way instead
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(inout) | :: | kte |
Calculation of the total energy On/Off (1/0) |
||
integer, | intent(inout) | :: | igf |
Do not print or print (0/1) the |
||
integer, | intent(inout) | :: | kxc |
Type of xc-potential 0=vBH 1=MJW 2=VWN 3=PW91 |
||
integer, | intent(inout) | :: | lly |
LLY <> 0 : apply Lloyds formula |
||
integer, | intent(inout) | :: | icc |
Enables the calculation of off-diagonal elements of the GF.(0=SCF/DOS; 1=cluster; -1=custom) |
||
integer, | intent(inout) | :: | ins |
0 (MT), 1(ASA), 2(Full Potential) |
||
integer, | intent(inout) | :: | kws |
0 (MT), 1(ASA) |
||
integer, | intent(inout) | :: | ipe |
Not real used, IPFE should be 0 |
||
integer, | intent(inout) | :: | ipf |
Not real used, IPFE should be 0 |
||
integer, | intent(inout) | :: | ipfe |
Not real used, IPFE should be 0 |
||
integer, | intent(inout) | :: | icst |
Number of Born approximation |
||
integer, | intent(inout) | :: | imix |
Type of mixing scheme used (0=straight, 4=Broyden 2nd, 5=Anderson) |
||
integer, | intent(inout) | :: | lpot |
Maximum l component in potential expansion |
||
integer, | intent(inout) | :: | naez |
Number of atoms in unit cell |
||
integer, | intent(inout) | :: | nemb |
Number of 'embedding' positions |
||
integer, | intent(inout) | :: | nref |
Number of diff. ref. potentials |
||
integer, | intent(inout) | :: | ncls |
Number of reference clusters |
||
integer, | intent(inout) | :: | npol |
Number of Matsubara Pols (EMESHT) |
||
integer, | intent(inout) | :: | lmax |
Maximum l component in wave function expansion |
||
integer, | intent(inout) | :: | kcor | |||
integer, | intent(inout) | :: | kefg | |||
integer, | intent(inout) | :: | khyp | |||
integer, | intent(inout) | :: | kpre | |||
integer, | intent(inout) | :: | kvmad | |||
integer, | intent(inout) | :: | lmmax0d |
(lmax+1)**2 without spin doubling |
||
integer, | intent(inout) | :: | lmpot | |||
integer, | intent(inout) | :: | ncheb |
Number of Chebychev pannels for the new solver |
||
integer, | intent(inout) | :: | nleft |
Number of repeated basis for left host to get converged electrostatic potentials |
||
integer, | intent(inout) | :: | ifile |
Unit specifier for potential card |
||
integer, | intent(inout) | :: | kvrel |
0,1 : non / scalar relat. calculation |
||
integer, | intent(inout) | :: | nspin |
Counter for spin directions |
||
integer, | intent(inout) | :: | natyp |
Number of kinds of atoms in unit cell |
||
integer, | intent(inout) | :: | nineq |
Number of ineq. positions in unit cell |
||
integer, | intent(inout) | :: | npnt1 |
number of E points (EMESHT) for the contour integration |
||
integer, | intent(inout) | :: | npnt2 |
number of E points (EMESHT) for the contour integration |
||
integer, | intent(inout) | :: | npnt3 |
number of E points (EMESHT) for the contour integration |
||
integer, | intent(inout) | :: | kfrozn | |||
integer, | intent(inout) | :: | ishift |
Parameter controling the potential shift after mixing |
||
integer, | intent(inout) | :: | n1semi |
Number of energy points for the semicore contour |
||
integer, | intent(inout) | :: | n2semi |
Number of energy points for the semicore contour |
||
integer, | intent(inout) | :: | n3semi |
Number of energy points for the semicore contour |
||
integer, | intent(inout) | :: | nsteps |
number of iterations |
||
integer, | intent(inout) | :: | insref |
INS for reference pot. (usual 0) |
||
integer, | intent(inout) | :: | kshape |
Exact treatment of WS cell |
||
integer, | intent(inout) | :: | itdbry |
Number of SCF steps to remember for the Broyden mixing |
||
integer, | intent(inout) | :: | nright |
Number of repeated basis for right host to get converged electrostatic potentials |
||
integer, | intent(inout) | :: | kforce |
Calculation of the forces |
||
integer, | intent(inout) | :: | ivshift |
for selected potential shift: atom index of potentials to be shifted by VCONST |
||
integer, | intent(inout) | :: | khfield |
0,1: no / yes external magnetic field |
||
integer, | intent(inout) | :: | nlbasis |
Number of basis layers of left host (repeated units) |
||
integer, | intent(inout) | :: | nrbasis |
Number of basis layers of right host (repeated units) |
||
integer, | intent(inout) | :: | intervx |
Number of intervals in x-direction for k-net in IB of the BZ |
||
integer, | intent(inout) | :: | intervy |
Number of intervals in y-direction for k-net in IB of the BZ |
||
integer, | intent(inout) | :: | intervz |
Number of intervals in z-direction for k-net in IB of the BZ |
||
integer, | intent(inout) | :: | npan_eq |
Number of intervals from [R_LOG] to muffin-tin radius Used in conjunction with runopt NEWSOSOL |
||
integer, | intent(inout) | :: | npan_log |
Number of intervals from nucleus to [R_LOG] Used in conjunction with runopt NEWSOSOL |
||
integer, | intent(inout) | :: | npolsemi |
Number of poles for the semicore contour |
||
real(kind=dp), | intent(inout) | :: | tk |
Temperature |
||
real(kind=dp), | intent(inout) | :: | fcm |
Factor for increased linear mixing of magnetic part of potential compared to non-magnetic part. |
||
real(kind=dp), | intent(inout) | :: | emin |
Lower value (in Ryd) for the energy contour |
||
real(kind=dp), | intent(inout) | :: | emax |
Maximum value (in Ryd) for the DOS calculation Controls also [NPT2] in some cases |
||
real(kind=dp), | intent(inout) | :: | rmax |
Ewald summation cutoff parameter for real space summation |
||
real(kind=dp), | intent(inout) | :: | gmax |
Ewald summation cutoff parameter for reciprocal space summation |
||
real(kind=dp), | intent(inout) | :: | alat |
Lattice constant (in a.u.) |
||
real(kind=dp), | intent(inout) | :: | r_log |
Radius up to which log-rule is used for interval width. Used in conjunction with runopt NEWSOSOL |
||
real(kind=dp), | intent(inout) | :: | rcutz |
Parameter for the screening cluster along the z-direction |
||
real(kind=dp), | intent(inout) | :: | rcutxy |
Parameter for the screening cluster along the x-y plane |
||
real(kind=dp), | intent(inout) | :: | eshift | |||
real(kind=dp), | intent(inout) | :: | qbound |
Convergence parameter for the potential |
||
real(kind=dp), | intent(inout) | :: | hfield |
External magnetic field, for initial potential shift in spin polarised case |
||
real(kind=dp), | intent(inout) | :: | mixing |
Magnitude of the mixing parameter |
||
real(kind=dp), | intent(inout) | :: | abasis |
Scaling factors for rbasis |
||
real(kind=dp), | intent(inout) | :: | bbasis |
Scaling factors for rbasis |
||
real(kind=dp), | intent(inout) | :: | cbasis |
Scaling factors for rbasis |
||
real(kind=dp), | intent(inout) | :: | vconst |
Potential shift in the first iteration |
||
real(kind=dp), | intent(inout) | :: | tksemi |
Temperature for semi-core contour |
||
real(kind=dp), | intent(inout) | :: | tolrdif |
For distance between scattering-centers smaller than [ |
||
real(kind=dp), | intent(inout) | :: | emusemi |
Top of semicore contour in Ryd. |
||
real(kind=dp), | intent(inout) | :: | ebotsemi |
Bottom of semicore contour in Ryd |
||
real(kind=dp), | intent(inout) | :: | fsemicore |
Initial normalization factor for semicore states (approx. 1.) |
||
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | lambda_xc |
Scale magnetic moment (0 < Lambda_XC < 1, 0=zero moment, 1= full moment) |
|
complex(kind=dp), | intent(inout) | :: | deltae |
LLY Energy difference for numerical derivative |
||
logical, | intent(inout) | :: | lrhosym | |||
logical, | intent(inout) | :: | linipol |
True: Initial spin polarization; false: no initial spin polarization |
||
logical, | intent(inout) | :: | lcartesian | |||
integer, | intent(out), | dimension (:), allocatable | :: | imt |
R point at MT radius |
|
integer, | intent(out), | dimension (:), allocatable | :: | cls |
Cluster around atomic sites |
|
integer, | intent(out), | dimension (:), allocatable | :: | lmxc | ||
integer, | intent(out), | dimension (:), allocatable | :: | irns |
Position of atoms in the unit cell in units of bravais vectors |
|
integer, | intent(out), | dimension (:), allocatable | :: | irws |
R point at WS radius |
|
integer, | intent(out), | dimension (:), allocatable | :: | ntcell |
Index for WS cell |
|
integer, | intent(out), | dimension (:), allocatable | :: | refpot |
Ref. pot. card at position |
|
integer, | intent(out), | dimension (:), allocatable | :: | inipol |
Initial spin polarisation |
|
integer, | intent(out), | dimension (:), allocatable | :: | ixipol |
Constraint of spin pol. |
|
integer, | intent(out), | dimension (:), allocatable | :: | hostimp | ||
integer, | intent(out), | dimension (:, :), allocatable | :: | kfg | ||
real(kind=dp), | intent(inout), | dimension (2) | :: | vbc |
Potential constants |
|
real(kind=dp), | intent(inout), | dimension (3) | :: | zperleft |
Vector to define how to repeat the basis of the left host |
|
real(kind=dp), | intent(inout), | dimension (3) | :: | zperight |
Vector to define how to repeat the basis of the right host |
|
real(kind=dp), | intent(inout), | dimension (3, 3) | :: | bravais |
Bravais lattice vectors |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | rmt |
Muffin-tin radius of true system |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | zat |
Nuclear charge |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | rws |
Wigner Seitz radius |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | mtfac |
Scaling factor for radius MT |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | rmtref |
Muffin-tin radius of reference system |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | rmtnew |
Adapted muffin-tin radius |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | rmtrefat | ||
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | fpradius |
R point at which full-potential treatment starts |
|
real(kind=dp), | intent(out), | dimension (:, :), allocatable | :: | tleft |
Vectors of the basis for the left host |
|
real(kind=dp), | intent(out), | dimension (:, :), allocatable | :: | tright |
vectors of the basis for the right host |
|
real(kind=dp), | intent(out), | dimension (:, :), allocatable | :: | rbasis |
Position of atoms in the unit cell in units of bravais vectors |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | socscale |
Spin-orbit scaling |
|
real(kind=dp), | intent(out), | dimension (:, :), allocatable | :: | cscl |
Speed of light scaling |
|
real(kind=dp), | intent(out), | dimension (:, :), allocatable | :: | socscl | ||
character(len=10), | intent(inout) | :: | solver |
Type of solver |
||
character(len=40), | intent(inout) | :: | i12 |
File identifiers |
||
character(len=40), | intent(inout) | :: | i13 |
Potential file name |
||
character(len=40), | intent(inout) | :: | i19 |
Shape function file name |
||
character(len=40), | intent(inout) | :: | i25 |
Scoef file name |
||
character(len=40), | intent(inout) | :: | i40 |
File identifiers |
||
character(len=124), | intent(inout), | dimension (6) | :: | txc | ||
complex(kind=dp), | intent(out), | dimension (:, :, :), allocatable | :: | drotq |
Rotation matrices to change between LOCAL/GLOBAL frame of reference for magnetisation <> Oz or noncollinearity Note CPA variables. Routine has been modified to look for
the token |
|
integer, | intent(inout) | :: | ncpa |
ncpa = 0/1 CPA flag |
||
integer, | intent(inout) | :: | itcpamax |
max. number of CPA iterations |
||
real(kind=dp), | intent(inout) | :: | cpatol |
convergency tolerance for CPA-cycle |
||
integer, | intent(out), | dimension (:), allocatable | :: | noq |
number of diff. atom types located |
|
integer, | intent(out), | dimension (:), allocatable | :: | iqat |
the site on which an atom is located on a given site |
|
integer, | intent(out), | dimension (:), allocatable | :: | icpa |
icpa = 0/1 site-dependent CPA flag |
|
integer, | intent(out), | dimension (:, :), allocatable | :: | kaoez |
atom types located at a given site |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | conc |
concentration of a given atom @note Note
Variables storing the magnetization direction information.
|
|
integer, | intent(inout) | :: | kmrot |
0: no rotation of the magnetisation; 1: individual rotation of the magnetisation for every site |
||
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | qmtet |
angle of the magnetization with respect to the z-axis |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | qmphi |
angle of the magnetization with respect to the z-axis |
|
integer, | intent(inout) | :: | kreadldau |
LDA+U arrays available |
||
integer, | intent(inout), | dimension (:), allocatable | :: | lopt |
angular momentum QNUM for the atoms on which LDA+U should be applied (-1 to switch it OFF) |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | ueff |
input U parameter for each atom |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | jeff |
input J parameter for each atom |
|
real(kind=dp), | intent(out), | dimension (:), allocatable | :: | erefldau |
the energies of the projector's wave functions (REAL) LDA+U |
|
integer, | intent(inout) | :: | invmod |
inversion mode, 0=full inversion, 1= banded matrix, 2= supercell, 3=godfrin |
||
integer, | intent(inout) | :: | verbosity |
verbosity level for timings and output: 0=old default, 1,2,3 = timing and ouput verbosity level the same (low,medium,high) |
||
integer, | intent(inout) | :: | MPI_scheme |
scheme for MPI parallelization: 0 = automatic (default), 1 = atoms, 2 = energies, 3 = select best of (1,2) |
||
integer, | intent(inout) | :: | special_straight_mixing |
id to specify modified straight mixing scheme: 0=normal, 1=alternating mixing factor (i.e. reduced mixing factor in every odd iteration), 2=charge-neurality based mixing factor (former: 'alt mix' and 'spec mix') |
||
logical, | intent(out) | :: | lbfield | |||
logical, | intent(out) | :: | lbfield_constr | |||
logical, | intent(out) | :: | lbfield_all | |||
logical, | intent(out) | :: | lbfield_trans | |||
logical, | intent(out) | :: | lbfield_mt | |||
logical, | intent(out) | :: | ltorque | |||
integer, | intent(out) | :: | ibfield | |||
integer, | intent(out) | :: | ibfield_constr | |||
integer, | intent(out) | :: | ibfield_itscf0 | |||
integer, | intent(out) | :: | ibfield_itscf1 |