[Wien] Unable to see Li K edges in ELOSS file. Kindly guide.

Pranjal Nandi pnandi at ub.edu
Fri Mar 8 00:29:31 CET 2024


Dear Peter,

Thanks a lot for your explanation. It helped a lot.

Further I would like to mention that I am facing an issue when I do parallel calculation. In parallel mode, SCF runs well, Optic package runs well (version 21.1). But when I run x qtl -p -telnes (from w2web), I get the following error

running QTL in parallel mode
calculating QTL's from parallel vectors
so: Undefined variable.
0.035u 0.043s 0:00.09 77.7%     0+0k 0+24io 0pf+0w
error: command   /home/WIEN2k/WIEN2k/qtlpara qtl.def   failed

I checked the forum too and found the following suitable threads

http://zeus.theochem.tuwien.ac.at/pipermail/wien/2021-May/031757.html

https://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg21125.html

https://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg20660.html

But I am highly confused as which solution should I start first? Here are some relevant files for your convenience.

It would be helpful if you could kindly guide me on the right track.

File qtlpara_lapw

#!/bin/tcsh -f
#

set tmp  = .tmp_qtlpara.$$
set tmp2 = .tmp_qtlpara.$$_2
onintr exit
set name = $0
set bin = $name:h #default directory for WIEN-executables
if !(-d $bin) set bin = .

unalias rm
alias   testinput       'if (! -e \!:1 ||  -z \!:1) goto \!:2'
alias   testerror       'if (! -z \!:1.error) goto error'

set t    = time
set log     = :parallel
set defmach = `hostname`
set updn # spinpolarization switch
set dnup    = 'dn' # spinpolarization switch
set sc # semicore-switch
set cmplx
set remote = ssh
set init = init:
set res  = residue:
############################################################################
# In this section use 0 to turn of an option, 1 to turn it on,
# respectively choose a value

set useremote   = 1             # using remote shell to launch processes
setenv DELAY  0.1             # delay launching of processes by n seconds
setenv SLEEPY 1             # additional sleep before checking
set debug       = 0             # set verbosity of debugging output

############################################################################

############################################################################
# and now we look if we should override the defaults
if (-e $bin/parallel_options) then
        source $bin/parallel_options
endif


if ( $?USE_REMOTE ) then
        set useremote = $USE_REMOTE
endif

############################################################################


if ($#argv < 1) then
echo usage: $0 deffile
exit
endif

while ($#argv)
  switch ($1)
  case -h:
  case -H:
    set help
    shift; breaksw
  case -up:
    set updn = 'up'
    set dnup = 'dn'
    shift; breaksw
  case -dn:
    set updn = 'dn'
    set dnup = 'up'
    shift; breaksw
  case -so:
    set so = 'so'
    shift; breaksw
  default:
    set def = $1:r
    shift; breaksw
  endsw
end

set exe = $bin/qtl
set exe = qtl

#are we running parallel?
testinput .processes single
echo "running QTL in parallel mode"
echo "RUNNING" >.qtlpara

#before we start, we wipe away all parallel error files
if ( -e qtl.error ) rm *qtl*.error
if ( -e upqtl.error ) rm *qtl*.error
if ( -e dnqtl.error ) rm *qtl*.error

if ( -e qtl_1.error ) rm *qtl_*.error
if ( -e upqtl_1.error ) rm *qtl_*.error
if ( -e dnqtl_1.error ) rm *qtl_*.error
if ( -e .timeq_1) rm .timeq_*


if (-e .machines.help) rm .machines.help

grep -v $init .processes|grep : | grep -v $res >$tmp2
set mist     = `wc $tmp2 `
set maxproc  = $mist[1]
set machine  = `grep $init .processes | cut -f2 -d: | xargs`
if ($#machine > $maxproc) then
    set machine  = `grep $init .processes |head -$maxproc| cut -f2 -d: | xargs`
endif
set lockfile = `cut -f2 -d: $tmp2 | awk '{print $1 NR}'|xargs`
set residue  = `grep $res .processes|cut -f2 -d:`
if ($residue == "") unset residue

if ($debug > 0) echo machines: $machine


echo "** " Error in Parallel QTL >$def.error


#get name of case
setenv PWD `pwd|sed "s/tmp_mnt\///"`
setenv PWD $cwd
set case    = $PWD
set case    = $case:t
if ($case == "") then
  echo "ERROR: cannot detect working directory $cwd -> exit"
  exit 1
endif
if ($debug > 0) echo Setting up case $case for parallel execution
if ($debug > 0) echo of QTL
if ($debug > 0) echo "  "
#
echo "calculating QTL's from parallel vectors"
vec2old_lapw -p -local $so -$updn
$exe $def.def $maxproc
rm $tmp* >&/dev/null
echo "DONE" >.qtlpara
exit 0

error:
echo "** " QTL crashed!
echo "** " QTL crashed at `date`>>$log
echo "** " check ERROR FILES! >>$log
echo "-----------------------------------------------------------------">>$log
echo "** " Error in Parallel QTL >>$def.error
rm $tmp* >&/dev/null
echo "ERROR" >.qtlpara
exit 1



File qtlpara

#!/bin/tcsh -f
#

set tmp  = .tmp_qtlpara.$$
set tmp2 = .tmp_qtlpara.$$_2
onintr exit
set name = $0
set bin = $name:h #default directory for WIEN-executables
if !(-d $bin) set bin = .

unalias rm
alias   testinput       'if (! -e \!:1 ||  -z \!:1) goto \!:2'
alias   testerror       'if (! -z \!:1.error) goto error'

set t    = time
set log     = :parallel
set defmach = `hostname`
set updn # spinpolarization switch
set dnup    = 'dn' # spinpolarization switch
set sc # semicore-switch
set cmplx
set remote = ssh
set init = init:
set res  = residue:
############################################################################
# In this section use 0 to turn of an option, 1 to turn it on,
# respectively choose a value

set useremote   = 1             # using remote shell to launch processes
setenv DELAY  0.1             # delay launching of processes by n seconds
setenv SLEEPY 1             # additional sleep before checking
set debug       = 0             # set verbosity of debugging output

############################################################################

############################################################################
# and now we look if we should override the defaults
if (-e $bin/parallel_options) then
        source $bin/parallel_options
endif


if ( $?USE_REMOTE ) then
        set useremote = $USE_REMOTE
endif

############################################################################


if ($#argv < 1) then
echo usage: $0 deffile
exit
endif

while ($#argv)
  switch ($1)
  case -h:
  case -H:
    set help
    shift; breaksw
  case -up:
    set updn = 'up'
    set dnup = 'dn'
    shift; breaksw
  case -dn:
    set updn = 'dn'
    set dnup = 'up'
    shift; breaksw
  case -so:
    set so = 'so'
    shift; breaksw
  default:
    set def = $1:r
    shift; breaksw
  endsw
end

set exe = $bin/qtl
set exe = qtl

#are we running parallel?
testinput .processes single
echo "running QTL in parallel mode"
echo "RUNNING" >.qtlpara

#before we start, we wipe away all parallel error files
if ( -e qtl.error ) rm *qtl*.error
if ( -e upqtl.error ) rm *qtl*.error
if ( -e dnqtl.error ) rm *qtl*.error

if ( -e qtl_1.error ) rm *qtl_*.error
if ( -e upqtl_1.error ) rm *qtl_*.error
if ( -e dnqtl_1.error ) rm *qtl_*.error
if ( -e .timeq_1) rm .timeq_*


if (-e .machines.help) rm .machines.help

grep -v $init .processes|grep : | grep -v $res >$tmp2
set mist     = `wc $tmp2 `
set maxproc  = $mist[1]
set machine  = `grep $init .processes | cut -f2 -d: | xargs`
if ($#machine > $maxproc) then
    set machine  = `grep $init .processes |head -$maxproc| cut -f2 -d: | xargs`
endif
set lockfile = `cut -f2 -d: $tmp2 | awk '{print $1 NR}'|xargs`
set residue  = `grep $res .processes|cut -f2 -d:`
if ($residue == "") unset residue

if ($debug > 0) echo machines: $machine


echo "** " Error in Parallel QTL >$def.error


#get name of case
setenv PWD `pwd|sed "s/tmp_mnt\///"`
setenv PWD $cwd
set case    = $PWD
set case    = $case:t
if ($case == "") then
  echo "ERROR: cannot detect working directory $cwd -> exit"
  exit 1
endif
if ($debug > 0) echo Setting up case $case for parallel execution
if ($debug > 0) echo of QTL
if ($debug > 0) echo "  "
#
echo "calculating QTL's from parallel vectors"
vec2old_lapw -p -local $so -$updn
$exe $def.def $maxproc
rm $tmp* >&/dev/null
echo "DONE" >.qtlpara
exit 0

error:
echo "** " QTL crashed!
echo "** " QTL crashed at `date`>>$log
echo "** " check ERROR FILES! >>$log
echo "-----------------------------------------------------------------">>$log
echo "** " Error in Parallel QTL >>$def.error
rm $tmp* >&/dev/null
echo "ERROR" >.qtlpara
exit 1

File Name: qtl.def

 4,'TiPO4.inso',   'unknown',    'formatted',-1
 5,'TiPO4.inq',   'old',    'formatted',-1
 6,'TiPO4.outputq','unknown','formatted',0
 8,'TiPO4.scf2',       'old',    'formatted',-1
 9,'/mnt/dades_C/WIEN2k/TiPO4.vector', 'unknown','unformatted',-1
10,'/mnt/dades_C/WIEN2k/TiPO4.vectordn', 'unknown','unformatted',-1
12,'TiPO4.dmat',       'unknown','formatted',0
16,'TiPO4.qtl',       'unknown','formatted',0
18,'TiPO4.vsp',       'old',    'formatted',-1
19,'TiPO4.vspdn',       'unknown','formatted',-1
20,'TiPO4.struct',         'old',    'formatted',-1
21,'TiPO4.scfq',   'unknown',    'formatted',0
22,'TiPO4.rotlm',   'unknown',    'formatted',0
26,'TiPO4.weight',       'old',    'formatted',-1
29,'/mnt/dades_C/WIEN2k/TiPO4.tmp','SCRATCH','unformatted',9000
30,'TiPO4.qtltext','unknown','formatted',0
31,'TiPO4.qtlatom','unknown','formatted',0
59,'TiPO4.energydn', 'unknown','formatted',-1
60,'TiPO4.energy', 'unknown','formatted',-1
32,'TiPO4.cf1','unknown','formatted',0
71,'TiPO4.int1','unknown','formatted',0

Thank you.

With warm regards,
Pranjal

-----Original Message-----
From: Wien <wien-bounces at zeus.theochem.tuwien.ac.at> On Behalf Of Peter Blaha
Sent: Sunday, March 3, 2024 8:04 PM
To: wien at zeus.theochem.tuwien.ac.at
Subject: Re: [Wien] Unable to see Li K edges in ELOSS file. Kindly guide.

I analysed your problem. It has nothing to do with WIEN2k, but is much more fundamental.

A Li-K edge is per se not a "real edge". It's energy is so low, that it may overlap with many other excitations, they could be from Fe-3p (or from other shallow core levels ), but of course also from excitations from all other valence states into the conduction band.

You can analyse the different contributions to case.joint nicely, by playing with the band-indices. Download the 4 images

http:www.wien2k.at/Depository/LiFePO4.joint-total.png

http:www.wien2k.at/Depository/LiFePO4.joint-without-Fe-3p.png

http:www.wien2k.at/Depository/LiFePO4.joint-without-Fe-3p-zoom.png

http:www.wien2k.at/Depository/Li-K-edge.png from

They show case.joint ( unbroadened eps_xx) with the following band ranges in case.injoint (1st line):

     1 9999 9999              : LOWER,UPPER and (optional) UPPER-VAL BANDINDEX  (total eps_xx)

     13 9999 9999              : LOWER,UPPER and (optional) UPPER-VAL BANDINDEX (eps_xx without Fe-3p statesI

     13 9999 16              : LOWER,UPPER and (optional) UPPER-VAL BANDINDEX     (eps_xx only from Li-1s

The Li-1s plot (Li-K-edge) starts as expected only at about 50 eV and its shape follows closely the Li-2p DOS (not shown), since the Li-1s bands are really flat (around -2.9 Ry) and "JDOS = DOS". Please look at the small y-scale !!!!  (Note, such a selective absorption is not possible experimentally)

The total eps-xx is very large at low energy, and around 53 eV  a sharp peak appears .

However, when you  cut-off the Fe-3p states (first 12 bands) this peak is gone, which identifies it as the Fe-3p ("Fe-M--2,3 edge", not the usual Fe-L-2,3 edge) contribution. Only a very shallow structure can be seen and when you  zoom in, the Li-1s absorption is visible, but only a "part of the eps2".


Am 01.03.2024 um 21:50 schrieb Pranjal Nandi:
> Dear Peter,
>
> Thanks for the reply. I would like to clarify some misunderstandings.
>
> There are two files for which I am doing the simulation, they are for
> LiFePo4 and LiTi2(PO4)3. (Note the addition of Ti in the second
> sample)
>
> The image I had shared was from Optics. I am discussing both the results below.
>
> For the optics results.
>
> -       For LiFePO4, I do not see any Li edge structure.
> -       For LiTi2(PO4)3, I do not see any Li edge structure. What I see is a new peak compared to LiFePO4 at around 35 eV whose shape is very close to the shape of Ti and not of Li.
>
> --
> ----------------------------------------------------------------------
> ---- Peter BLAHA, Inst.f. Materials Chemistry, TU Vienna, A-1060
> Vienna
> Phone: +43-1-58801-165300
> Email: peter.blaha at tuwien.ac.at    WIEN2k: http://www.wien2k.at
> WWW:   http://www.imc.tuwien.ac.at
> ----------------------------------------------------------------------
> ---

_______________________________________________
Wien mailing list
Wien at zeus.theochem.tuwien.ac.at
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:  http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html


Aquest missatge, i els fitxers adjunts que hi pugui haver, pot contenir informació confidencial o protegida legalment i s’adreça exclusivament a la persona o entitat destinatària. Si no consteu com a destinatari final o no teniu l’encàrrec de rebre’l, no esteu autoritzat a llegir-lo, retenir-lo, modificar-lo, distribuir-lo, copiar-lo ni a revelar-ne el contingut. Si l’heu rebut per error, informeu-ne el remitent i elimineu del sistema tant el missatge com els fitxers adjunts que hi pugui haver.

Este mensaje, y los ficheros adjuntos que pueda incluir, puede contener información confidencial o legalmente protegida y está exclusivamente dirigido a la persona o entidad destinataria. Si usted no consta como destinatario final ni es la persona encargada de recibirlo, no está autorizado a leerlo, retenerlo, modificarlo, distribuirlo o copiarlo, ni a revelar su contenido. Si lo ha recibido por error, informe de ello al remitente y elimine del sistema tanto el mensaje como los ficheros adjuntos que pueda contener.

This email message and any attachments it carries may contain confidential or legally protected material and are intended solely for the individual or organization to whom they are addressed. If you are not the intended recipient of this message or the person responsible for processing it, then you are not authorized to read, save, modify, send, copy or disclose any part of it. If you have received the message by mistake, please inform the sender of this and eliminate the message and any attachments it carries from your account.


More information about the Wien mailing list