mod_main0 Module

and many others ... Wrapper module for the reading and setup of the JM-KKR program, it also calculates the electrostatic potential.

Todo

JC: NATOMIMP and NATOMIMPD seem to be the same variable, however, right now find no way to eliminate one of them.

Todo

JC: There seem to be several repeated variables doing the same, e.g. INS, KNOSPH, KWS and KSHAPE, all seem to dictate whether one has ASA or FP. Maybe it would be good to consolidate and eliminate any unnecessary variables.

Todo

JC: Several variables such as IRMD and IRNSD are actually determined in the startb1() subroutine, maybe change the allocations such that they are done there instead Summary: Wrapper module for the reading and setup of the JM-KKR program

Author: Deprecated: False ! This needs to be set to True for deprecated subroutines

Todo

  • JC: NATOMIMP and NATOMIMPD seem to be the same variable, however, right now find no way to eliminate one of them.
  • JC: There seem to be several repeated variables doing the same, e.g. INS, KNOSPH, KWS and KSHAPE, all seem to dictate whether one has ASA or FP. Maybe it would be good to consolidate and eliminate any unnecessary variables.
  • JC: Several variables such as IRMD and IRNSD are actually determined in the startb1 subroutine, maybe change the allocations such that they are done there instead

Note

  • Jonathan Chico Jan. 2018: Removed inc.p dependencies and rewrote to Fortran90

Uses


Variables

Type Visibility Attributes Name Initial
integer, public :: kte = 1

Calculation of the total energy On/Off (1/0)

integer, public :: kws = 1

0 (MT), 1(ASA)

integer, public :: kxc = 2

Type of xc-potential 0=MJW 1=vBH 2=VWN 3=PW91 4=PBE 5=PBEsol

integer, public :: igf = 0

Do not print or print (0/1) the KKRFLEX_* files

integer, public :: icc = 0

Enables the calculation of off-diagonal elements of the GF.(0=SCF/DOS; 1=cluster; -1=custom)

integer, public :: ins = 2

0 (MT), 1(ASA), 2(Full Potential)

integer, public :: irm

Maximum number of radial points

integer, public :: ipe = 0

Not real used, IPFE should be 0

integer, public :: ipf = 0

Not real used, IPFE should be 0

integer, public :: ipfe = 0

Not real used, IPFE should be 0

integer, public :: kcor = 0
integer, public :: kefg = 0
integer, public :: khyp = 0
integer, public :: kpre = 0
integer, public :: nprinc = 1

number of principal layers used for slab-inversion

integer, public :: nsra = 1

scalar-relativistic (nsra==2) or non-relativistic (nsra==1)

integer, public :: lpot = 2

Maximum l component in potential expansion

integer, public :: imix = 0

Type of mixing scheme used (0=straight, 4=Broyden 2nd, 5=Anderson)

integer, public :: iend = 1

Number of nonzero gaunt coefficients

integer, public :: icst = 2

Number of Born approximation

integer, public :: naez = 1

Number of atoms in unit cell

integer, public :: nemb = 1

Number of 'embedding' positions

integer, public :: lmax = 2

Maximum l component in wave function expansion

integer, public :: ncls = 1

Number of reference clusters

integer, public :: nref = 1

Number of diff. ref. potentials

integer, public :: npol = 7

Number of Matsubara Poles (EMESHT)

integer, public :: npnt1 = 3

number of E points (EMESHT) for the contour integration going up

integer, public :: npnt2 = 10

number of E points (EMESHT) for the contour integration goind parallel to the real axis

integer, public :: npnt3 = 4

number of E points (EMESHT) for the contour integration going down

integer, public :: lmmax0d = 16

(LMAX+1)^2 wihtout spin doubling

integer, public :: nvirt = 0
integer, public :: lmpot = 16

(LPOT+1)**2

integer, public :: kvmad = 0
integer, public :: itscf = 0

counter scf iterations

integer, public :: ncheb = 10

Number of Chebychev pannels for the new solver

integer, public :: nineq = 1

Number of ineq. positions in unit cell

integer, public :: natyp = 1

Number of kinds of atoms in unit cell

integer, public :: ifile = 13

Unit specifier for potential card

integer, public :: kvrel = 1

0,1,2 : non / scalar relat. / full Dirac calculation

integer, public :: nspin = 2

Counter for spin directions

integer, public :: nleft = 1

Number of repeated basis for left host to get converged electrostatic potentials

integer, public :: nright = 1

Number of repeated basis for right host to get converged electrostatic potentials

integer, public :: invmod = -1

inversion mode, 0=full inversion, 1= banded matrix, 2= supercell, 3=godfrin; default signals that inversion mode was not set yet

integer, public :: khfeld = 0

0,1: no / yes external magnetic field

integer, public :: itdbry = 10

Number of SCF steps to remember for the Broyden mixing

integer, public :: insref = 0

INS for reference pot. (usual 0)

integer, public :: kshape = 2

Exact treatment of WS cell

integer, public :: ielast = 0

number of energy points in complex energy contour

integer, public :: ishift = 0

Parameter controling the potential shift after mixing

integer, public :: kfrozn = 0
integer, public :: nsymat = 0
integer, public :: nqcalc = 0
integer, public :: kforce = 0

Calculation of the forces

integer, public :: n1semi = 0

Number of energy points for the semicore contour

integer, public :: n2semi = 0

Number of energy points for the semicore contour

integer, public :: n3semi = 0

Number of energy points for the semicore contour

integer, public :: nlayer = 1

Number of principal layer

integer, public :: nlbasis = 0

Number of basis layers of left host (repeated units)

integer, public :: nrbasis = 0

Number of basis layers of right host (repeated units)

integer, public :: intervx = 10

Number of intervals in x-direction for k-net in IB of the BZ

integer, public :: intervy = 10

Number of intervals in y-direction for k-net in IB of the BZ

integer, public :: intervz = 10

Number of intervals in z-direction for k-net in IB of the BZ

integer, public :: maxmesh = 1

Number of different k-meshes

integer, public :: npan_eq = 30

Number of intervals from [R_LOG] to muffin-tin radius Used in conjunction with runopt NEWSOSOL

integer, public :: npan_log = 30

Number of intervals from nucleus to [R_LOG] Used in conjunction with runopt NEWSOSOL

integer, public :: npolsemi = 0

Number of poles for the semicore contour

integer, public :: scfsteps = 1

number of scf iterations

integer, public :: natomimp = 0

Size of the cluster for impurity-calculation output of GF should be 1, if you don't do such a calculation

integer, public :: iesemicore = 0
integer, public :: idosemicore = 0
integer, public :: ivshift = 0

for selected potential shift: atom index of potentials to be shifted by VCONST

integer, private :: verbosity = 0

verbosity level for timings and output: 0=old default, 1,2,3 = timing and ouput verbosity level the same (low,medium,high)

integer, private :: MPI_scheme = 0

scheme for MPI parallelization: 0 = determine automatically (default), 1 = atoms, 2 = energies, 3 = after 2 runs with (1 and 2), select best option.

integer, private :: special_straight_mixing = 0

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')

real(kind=dp), public :: tk = 800.0_dp

Temperature

real(kind=dp), public :: fcm = 20.0_dp

Factor for increased linear mixing of magnetic part of potential compared to non-magnetic part.

real(kind=dp), public :: e2in = 0.0_dp
real(kind=dp), public :: emin = -0.30_dp

Lower value (in Ryd) for the energy contour

real(kind=dp), public :: emax = 0.70_dp

Maximum value (in Ryd) for the DOS calculation Controls also [NPT2] in some cases

real(kind=dp), public :: alat = 1.0_dp

Lattice constant in a.u.

real(kind=dp), public :: rmax = 10.0_dp

Ewald summation cutoff parameter for real space summation

real(kind=dp), public :: gmax = 100.0_dp

Ewald summation cutoff parameter for reciprocal space summation

real(kind=dp), public :: r_log = 0.5_dp

Radius up to which log-rule is used for interval width. Used in conjunction with runopt NEWSOSOL

real(kind=dp), public :: rcutz = 2.30_dp

Parameter for the screening cluster along the z-direction

real(kind=dp), public :: rcutxy = 2.30_dp

Parameter for the screening cluster along the x-y plane

real(kind=dp), public :: qbound = 1.0e-7_dp

Convergence parameter for the potential

real(kind=dp), public :: vconst = 0.0_dp

Value of potential shift in the first iteration in Ry

real(kind=dp), public :: hfield = 0.0_dp

Value of external magnetic field in Ry, for initial potential shift in spin polarised case

real(kind=dp), public :: mixing = 0.01_dp

Magnitude of the mixing parameter

real(kind=dp), public :: abasis = 1.0_dp

Scaling factors for rbasis

real(kind=dp), public :: bbasis = 1.0_dp

Scaling factors for rbasis

real(kind=dp), public :: cbasis = 1.0_dp

Scaling factors for rbasis

real(kind=dp), public :: efermi = 0.0_dp

Fermi energy

real(kind=dp), public :: eshift = 0.0_dp
real(kind=dp), public :: tksemi = 800.0_dp

Temperature of semi-core contour

real(kind=dp), public :: tolrdif = 1.0_dp

For distance between scattering-centers smaller than [], free GF is set to zero. Units are Bohr radii.

real(kind=dp), public :: alatnew = 1.0_dp
real(kind=dp), public :: volume0 = 1.0_dp

Unit cell volume

real(kind=dp), public :: emusemi = 0.0_dp

Top of semicore contour in Ryd.

real(kind=dp), public :: ebotsemi = -0.50_dp

Bottom of semicore contour in Ryd

real(kind=dp), public :: fsemicore = 0.00_dp

Initial normalization factor for semicore states (approx. 1.)

character(len=10), public :: solver = 'BS        '

Type of solver

character(len=40), public :: i12 = '                                        '

File identifiers

character(len=40), public :: i13 = 'potential                               '

Potential file name

character(len=40), public :: i19 = 'shapefun                                '

Shape function file name

character(len=40), public :: i25 = 'scoef                                   '

Default name of scoef file

character(len=40), public :: i40 = '                                        '

File identifiers

logical, public :: lrhosym = .false.
logical, public :: linipol = .false.

True: Initial spin polarization; false: no initial spin polarization

logical, public :: lcartesian = .false.
integer, public, dimension (nsymaxd) :: isymindex
integer, public, dimension (:), allocatable :: cls

Cluster around atomic sites

integer, public, dimension (:), allocatable :: irc

R point for potential cutting

integer, public, dimension (:), allocatable :: imt

R point at MT radius

integer, public, dimension (:), allocatable :: nfu

number of shape function components in cell 'icell'

integer, public, dimension (:), allocatable :: nsh1

Corresponding index of the sites I/J in (NSH1/2) in the unit cell in a shell

integer, public, dimension (:), allocatable :: nsh2

Corresponding index of the sites I/J in (NSH1/2) in the unit cell in a shell

integer, public, dimension (:), allocatable :: lmxc
integer, public, dimension (:), allocatable :: ipan

Number of panels in non-MT-region

integer, public, dimension (:), allocatable :: irns

Position of atoms in the unit cell in units of bravais vectors

integer, public, dimension (:), allocatable :: irws

R point at WS radius

integer, public, dimension (:), allocatable :: kmesh
integer, public, dimension (:), allocatable :: irmin

Max R for spherical treatment

integer, public, dimension (:), allocatable :: loflm

l of lm=(l,m) (GAUNT)

integer, public, dimension (:), allocatable :: nacls

Number of atoms in cluster

integer, public, dimension (:), allocatable :: ncore

Number of core states

integer, public, dimension (:), allocatable :: imaxsh
integer, public, dimension (:), allocatable :: nshell

Index of atoms/pairs per shell (ij-pairs); nshell(0) = number of shells

integer, public, dimension (:), allocatable :: inipol

Initial spin polarisation

integer, public, dimension (:), allocatable :: ixipol

Constraint of spin pol.

integer, public, dimension (:), allocatable :: refpot

Ref. pot. card at position

integer, public, dimension (:), allocatable :: ntcell

Index for WS cell

integer, public, dimension (:), allocatable :: iqcalc
integer, public, dimension (:), allocatable :: iofgij

Linear pointers, similar to NSH1/NSH2 but giving the actual index of sites I,J = 1,NATOMIMP in the cluster

integer, public, dimension (:), allocatable :: jofgij

Linear pointers, similar to NSH1/NSH2 but giving the actual index of sites I,J = 1,NATOMIMP in the cluster

integer, public, dimension (:), allocatable :: atomimp
integer, public, dimension (:), allocatable :: ijtabsh

Linear pointer, assigns pair (i,j) to a shell in the array GS(,,*,NSHELD)

integer, public, dimension (:), allocatable :: ijtabsym

Linear pointer, assigns pair (i,j) to the rotation bringing GS into Gij

integer, public, dimension (:), allocatable :: npan_tot
integer, public, dimension (:), allocatable :: ijtabcalc

Linear pointer, specifying whether the block (i,j) has to be calculated needs set up for ICC=-1, not used for ICC=1

integer, public, dimension (:), allocatable :: npan_eq_at
integer, public, dimension (:), allocatable :: npan_log_at
integer, public, dimension (:), allocatable :: ijtabcalc_i
integer, public, dimension (:, :), allocatable :: ish
integer, public, dimension (:, :), allocatable :: jsh
integer, public, dimension (:, :), allocatable :: ilm_map
integer, public, dimension (:, :), allocatable :: kfg
integer, public, dimension (:, :), allocatable :: atom

Atom at site in cluster

integer, public, dimension (:, :), allocatable :: ezoa

EZ of atom at site in cluster

integer, public, dimension (:, :), allocatable :: lmsp

0,1 : non/-vanishing lm=(l,m) component of non-spherical potential

integer, public, dimension (:, :), allocatable :: lcore

Angular momentum of core states

integer, public, dimension (:, :), allocatable :: icleb

Pointer array

integer, public, dimension (:, :), allocatable :: ircut

R points of panel borders

integer, public, dimension (:, :), allocatable :: llmsp

lm=(l,m) of 'nfund'th nonvanishing component of non-spherical pot.

integer, public, dimension (:, :), allocatable :: lmsp1
integer, public, dimension (:, :), allocatable :: kaoez

Kind of atom at site in elem. cell

integer, public, dimension (:, :), allocatable :: ifunm
integer, public, dimension (:, :), allocatable :: ifunm1
integer, public, dimension (:, :), allocatable :: ititle
integer, public, dimension (:, :), allocatable :: icheck
integer, public, dimension (:, :), allocatable :: ipan_intervall
integer, public, dimension (:, :, :), allocatable :: jend

Pointer array for icleb()

real(kind=dp), public, dimension (2) :: vbc

Potential constants

real(kind=dp), public, dimension (3) :: zperight

Vector to define how to repeat the basis of the right host

real(kind=dp), public, dimension (3) :: zperleft

Vector to define how to repeat the basis of the left host

real(kind=dp), public, dimension (3, 3) :: recbv

Reciprocal basis vectors

real(kind=dp), public, dimension (3, 3) :: bravais

Bravais lattice vectors

real(kind=dp), public, dimension (64, 3, 3) :: rsymat
real(kind=dp), public, dimension (:), allocatable :: a

Constants for exponential R mesh

real(kind=dp), public, dimension (:), allocatable :: b

Constants for exponential R mesh

real(kind=dp), public, dimension (:), allocatable :: wg

Integr. weights for Legendre polynomials

real(kind=dp), public, dimension (:), allocatable :: gsh
real(kind=dp), public, dimension (:), allocatable :: zat

Nuclear charge

real(kind=dp), public, dimension (:), allocatable :: rmt

Muffin-tin radius of true system

real(kind=dp), public, dimension (:), allocatable :: rws

Wigner Seitz radius

real(kind=dp), public, dimension (:), allocatable :: vref
real(kind=dp), public, dimension (:), allocatable :: mtfac

Scaling factor for radius MT

real(kind=dp), public, dimension (:), allocatable :: rmtnew

Adapted muffin-tin radius

real(kind=dp), public, dimension (:), allocatable :: rmtref

Muffin-tin radius of reference system

real(kind=dp), public, dimension (:), allocatable :: rmtrefat
real(kind=dp), public, dimension (:), allocatable :: fpradius

R point at which full-potential treatment starts

real(kind=dp), public, dimension (:), allocatable :: socscale

Spin-orbit scaling

real(kind=dp), public, dimension (:), allocatable :: lambda_xc

Scale magnetic moment (0 < Lambda_XC < 1, 0=zero moment, 1= full moment)

real(kind=dp), public, dimension (:, :), allocatable :: rmesh

Radial mesh ( in units a Bohr)

real(kind=dp), public, dimension (:, :), allocatable :: s
real(kind=dp), public, dimension (:, :), allocatable :: rr

Set of real space vectors (in a.u.)

real(kind=dp), public, dimension (:, :), allocatable :: drdi

Derivative dr/di

real(kind=dp), public, dimension (:, :), allocatable :: dror
real(kind=dp), public, dimension (:, :), allocatable :: cleb

GAUNT coefficients (GAUNT)

real(kind=dp), public, dimension (:, :), allocatable :: visp

Spherical part of the potential

real(kind=dp), public, dimension (:, :), allocatable :: cscl

Speed of light scaling

real(kind=dp), public, dimension (:, :), allocatable :: rnew
real(kind=dp), public, dimension (:, :), allocatable :: ratom
real(kind=dp), public, dimension (:, :), allocatable :: ecore

Core energies

real(kind=dp), public, dimension (:, :), allocatable :: tleft

Vectors of the basis for the left host

real(kind=dp), public, dimension (:, :), allocatable :: tright

Vectors of the basis for the right host

real(kind=dp), public, dimension (:, :), allocatable :: socscl
real(kind=dp), public, dimension (:, :), allocatable :: rbasis

Position of atoms in the unit cell in units of bravais vectors

real(kind=dp), public, dimension (:, :), allocatable :: rclsimp
real(kind=dp), public, dimension (:, :), allocatable :: cmomhost

Charge moments of each atom of the (left/right) host

real(kind=dp), public, dimension (:, :), allocatable :: rpan_intervall
real(kind=dp), public, dimension (:, :, :), allocatable :: rs
real(kind=dp), public, dimension (:, :, :), allocatable :: yrg

Spherical harmonics (GAUNT2)

real(kind=dp), public, dimension (:, :, :), allocatable :: vins

Non-spherical part of the potential

real(kind=dp), public, dimension (:, :, :), allocatable :: rcls

Real space position of atom in cluster

real(kind=dp), public, dimension (:, :, :), allocatable :: rrot
complex(kind=dp), public, dimension (:), allocatable :: ez

complex energy points

complex(kind=dp), public, dimension (:), allocatable :: dez

length of energy interval: (EF-EMIN)/NEPTS for uniform distribution of points

complex(kind=dp), public, dimension (:), allocatable :: wez

integration weights: wez(ie) = -2.0_dp/pi*dez(ie)

complex(kind=dp), public, dimension (:, :, :), allocatable :: dsymll
complex(kind=dp), public, dimension (:, :, :), allocatable :: dsymll1
complex(kind=dp), public, dimension (:, :, :, :, :), allocatable :: lefttinvll
complex(kind=dp), public, dimension (:, :, :, :, :), allocatable :: righttinvll
character(len=124), public, dimension (6) :: txc
logical, public, dimension (2) :: vacflag
integer, public :: kmrot = 0

0: no rotation of the magnetisation; 1: individual rotation of the magnetisation for every site

real(kind=dp), public, dimension (:), allocatable :: qmtet

angle of the magnetization with respect to the z-axis

real(kind=dp), public, dimension (:), allocatable :: qmphi

angle of the magnetization with respect to the z-axis

integer, public :: ncpa = 0

NCPA = 0/1 CPA flag

integer, public :: itcpamax = 0

Max. number of CPA iterations

integer, public, dimension (:), allocatable :: noq

Number of diff. atom types located

integer, public, dimension (:), allocatable :: iqat

The site on which an atom is located on a given site

integer, public, dimension (:), allocatable :: icpa

ICPA = 0/1 site-dependent CPA flag

real(kind=dp), public, dimension (:), allocatable :: qmgam

Note

ITERMDIR running option introduced Apr 2003 -- Munich (H. Ebert + V. Popescu) allows a self-consistent determination of the magnetic configuration in REL mode

real(kind=dp), public, dimension (:, :), allocatable :: qmgamtab
real(kind=dp), public, dimension (:, :), allocatable :: qmphitab
real(kind=dp), public, dimension (:, :), allocatable :: qmtettab
integer, public, dimension (:), allocatable :: hostimp

Note

changes for impurity 20/02/2004 -- v.popescu according to n.papanikolaou

real(kind=dp), public :: cpatol = 1e-4_dp

Convergency tolerance for CPA-cycle

real(kind=dp), public, dimension (:), allocatable :: conc

Concentration of a given atom

complex(kind=dp), public, dimension (:, :), allocatable :: rc

NREL REAL spher. harm. > CMPLX. spher. harm. NREL CMPLX. spher. harm. > REAL spher. harm.

complex(kind=dp), public, dimension (:, :), allocatable :: crel

Non-relat. CMPLX. spher. harm. > (kappa,mue) (kappa,mue) > non-relat. CMPLX. spher. harm.

complex(kind=dp), public, dimension (:, :), allocatable :: rrel

Non-relat. REAL spher. harm. > (kappa,mue) (kappa,mue) > non-relat. REAL spher. harm.

complex(kind=dp), public, dimension (:, :, :), allocatable :: srrel
complex(kind=dp), public, dimension (:, :, :), allocatable :: drotq

Rotation matrices to change between LOCAL/GLOBAL frame of reference for magnetisation <> Oz or noncollinearity

integer, public, dimension (:), allocatable :: zrel

atomic number (cast integer)

integer, public, dimension (:), allocatable :: jwsrel

index of the WS radius

integer, public, dimension (:), allocatable :: irshift

shift of the REL radial mesh with respect no NREL

integer, public, dimension (:, :), allocatable :: nrrel
integer, public, dimension (:, :, :), allocatable :: irrel
real(kind=dp), public, dimension (0:100) :: fact
real(kind=dp), public, dimension (:, :), allocatable :: vtrel

potential (spherical part)

real(kind=dp), public, dimension (:, :), allocatable :: btrel

magnetic field

real(kind=dp), public, dimension (:, :), allocatable :: rmrel

radial mesh

real(kind=dp), public, dimension (:, :), allocatable :: drdirel

derivative of radial mesh

real(kind=dp), public, dimension (:, :), allocatable :: r2drdirel

(r**2 * drdi)

real(kind=dp), public, dimension (:, :, :), allocatable :: thesme
logical, public :: para = .true.
logical, public, dimension (nsymaxd) :: symunitary

unitary/antiunitary symmetry flag

integer, public :: ntldau = 0

Note

ph. mavropoulos according to Munich SPR-KKR h. ebert input: UEFF, JEFF : input U,J parameters for each atom EREFLDAU(1..NATYP) : the energies of ggthe projector's wave functions (REAL) LOPT(1..NATYP): angular momentum QNUM for the atoms on which LDA+U should be applied (-1 to switch it OFF) iteration index ITRUNLDAU integer flag perform LDA+U IDOLDAU integer flag LDA+U arrays available KREADLDAU NTLDAU - number of atoms on which LDA+U is applied (<=NATYP) arrays: ULDAU - calculated Coulomb matrix elements (EREFLDAU) WLDAU - potential matrix ITLDAU - integer pointer connecting the NTLDAU atoms to their corresponding index in the unit cell number of atoms on which LDA+U is applied

integer, public :: idoldau = 0

flag to perform LDA+U

integer, public :: itrunldau = 0

Iteration index for LDA+U

integer, public :: kreadldau = 0

LDA+U arrays available

integer, public, dimension (:), allocatable :: lopt

angular momentum QNUM for the atoms on which LDA+U should be applied (-1 to switch it OFF)

integer, public, dimension (:), allocatable :: itldau

integer pointer connecting the NTLDAU atoms to heir corresponding index in the unit cell

real(kind=dp), public, dimension (:), allocatable :: ueff

input U parameter for each atom

real(kind=dp), public, dimension (:), allocatable :: jeff

input J parameter for each atom

real(kind=dp), public, dimension (:), allocatable :: erefldau

the energies of the projector's wave functions (REAL)

real(kind=dp), public, dimension (:, :, :, :), allocatable :: wldau

potential matrix

real(kind=dp), public, dimension (:, :, :, :, :), allocatable :: uldau

calculated Coulomb matrix elements (EREFLDAU)

complex(kind=dp), public, dimension (:, :), allocatable :: phildau
logical, public :: lbfield
logical, public :: lbfield_constr
logical, public :: lbfield_all
logical, public :: lbfield_trans
logical, public :: lbfield_mt
logical, public :: ltorque
integer, public :: ibfield
integer, public :: ibfield_constr
integer, public :: ibfield_itscf0
integer, public :: ibfield_itscf1
integer, public :: lly = 0

LLY <> 0 : apply Lloyds formula

complex(kind=dp), public :: deltae = (1.0e-5_dp, 0.0_dp)

Energy difference for numerical derivative

logical, public :: emeshfile
real(kind=dp), public, dimension (:, :, :), allocatable :: thetas

shape function THETA=0 outer space THETA =1 inside WS cell in spherical harmonics expansion

real(kind=dp), public, dimension (:, :, :), allocatable :: thetasnew

shape function interpolated to Chebychev radial mesh


Subroutines

public subroutine main0()

M a i n

w r a p p e r

t o

h a n d l e

i n p u t

r e a d i n g ,

a l l o c a t i o n

o f

a r r a y s ,

a n d

Read more…

Arguments

None

public subroutine bshift_ns(irm, irid, ipand, lmpot, npotd, natyp, nspin, ngshd, nfund, ncelld, irmind, lmxspd, kshape, irc, irmin, inipol, ntcell, imaxsh, ilm_map, lmsp, ifunm, ircut, hfield, gsh, rmesh, thesme, thetas, visp, vins)

License
Creative Commons License
Category
potential, KKRhost

A d d s

a

c o n s t a n t

(

V S H I F T )

t o

t h e

p o t e n t i a l s

o f

a t o m s

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: irm

Maximum number of radial points

integer, intent(in) :: irid

Shape functions parameters in non-spherical part

integer, intent(in) :: ipand

Number of panels in non-spherical part

integer, intent(in) :: lmpot

(LPOT+1)**2

integer, intent(in) :: npotd

(2(KREL+KORBIT)+(1-(KREL+KORBIT))NSPIND)*NATYP)

integer, intent(in) :: natyp

Number of kinds of atoms in unit cell

integer, intent(in) :: nspin

Counter for spin directions

integer, intent(in) :: ngshd

Shape functions parameters in non-spherical part

integer, intent(in) :: nfund

Shape functions parameters in non-spherical part

integer, intent(in) :: ncelld

Number of cells (shapes) in non-spherical part

integer, intent(in) :: irmind

irmd - irnsd

integer, intent(in) :: lmxspd
integer, intent(in) :: kshape

exact treatment of WS cell

integer, intent(in), dimension (natyp) :: irc

r point for potential cutting

integer, intent(in), dimension (natyp) :: irmin

max r for spherical treatment

integer, intent(in), dimension (natyp) :: inipol

initial spin polarisation

integer, intent(in), dimension (natyp) :: ntcell

index for WS cell

integer, intent(in), dimension (0:lmpot) :: imaxsh
integer, intent(in), dimension (ngshd, 3) :: ilm_map
integer, intent(in), dimension (natyp, lmxspd) :: lmsp

0,1 : non/-vanishing lm=(l,m) component of non-spherical potential

integer, intent(in), dimension (natyp, lmxspd) :: ifunm
integer, intent(in), dimension (0:ipand, natyp) :: ircut

r points of panel borders

real(kind=dp), intent(in) :: hfield

External magnetic field, for initial potential shift in spin polarised case

real(kind=dp), intent(in), dimension (ngshd) :: gsh
real(kind=dp), intent(in), dimension (irm, natyp) :: rmesh
real(kind=dp), intent(in), dimension (irid, nfund, ncelld) :: thesme
real(kind=dp), intent(in), dimension (irid, nfund, ncelld) :: thetas

shape function THETA=0 outer space THETA =1 inside WS cell in spherical harmonics expansion

real(kind=dp), intent(inout), dimension (irm, npotd) :: visp

Spherical part of the potential

real(kind=dp), intent(inout), dimension (irmind:irm, lmpot, nspotd) :: vins

Non-spherical part of the potential

private subroutine print_versionserial(iunit, version1, version2, version3, version4, serialnr)

Author
Philipp Ruessmann
License
Creative Commons License
Category
input-output, KKRhost

P r i n t

t h e

v e r s i o n

i n f o

a n d

h e a d e r

t o

t h e

o u t p u t

f i l e

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iunit

Unit identifier for the output file

character(len=*), intent(in) :: version1

Version of the code

character(len=*), intent(in) :: version2

Compilation option

character(len=*), intent(in) :: version3

Compilation option

character(len=*), intent(in) :: version4

Compilation option

character(len=*), intent(in) :: serialnr

File serial number

private subroutine reduce_array_size(nref, nrefd, rmtref, vref, ncls, nclsd, nacls, rcls)

Author
Philipp Ruessmann
License
Creative Commons License
Category
input-output, KKRhost

R e d u c e

s i z e

o f

a r r a y s

d e p e n d i n g

o n

n r e f d ,

n c s l d

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nref

actual number of reference potentials

integer, intent(inout) :: nrefd

maximal number of reference potentials

real(kind=dp), intent(inout), dimension (:), allocatable :: rmtref

Muffin-tin radius of reference system

real(kind=dp), intent(inout), dimension (:), allocatable :: vref

reference potential

integer, intent(in) :: ncls

actual number of clusters

integer, intent(inout) :: nclsd

maximal number of clusters

integer, intent(inout), dimension(:), allocatable :: nacls

number of atom in cluster

real(kind=dp), intent(inout), dimension(:, :, :), allocatable :: rcls

real space position of atoms in cluster