[Wien] Error in parabolfit_lapw for 4D optimization of monoclinic structure
Peter Blaha
peter.blaha at tuwien.ac.at
Sat Nov 26 16:48:09 CET 2022
The files you send are much too large.
Anyway, case.ene and case.latparam must look like:
-12035.77743100
-12035.75697968
-12035.79115863
....
and
12.44102 9.30176 15.97764 1.277
12.44102 9.30176 15.81786 1.277
12.56668 9.30176 15.97764 1.277
12.69235 9.30176 15.97764 1.277
...
The attached parabolfit_lapw should do this (the wien2k_21 script
produces wrong ene and latparam files for 4D case.
In addition, since your monoclinic angle is gamma, you need to specify
-g (otherwise you will always get angle alpha, which is always the same).
PS: I saw that you did not optimize the internal positions in the scf
files, so these energies are probably not very good since they were done
with fixed positions. You should optimize positions with run -min ....
--
--------------------------------------------------------------------------
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
-------------------------------------------------------------------------
-------------- next part --------------
#!/bin/tcsh -f
set file = `pwd`
set file = $file:t #tail of file-names
unset help
unset type
unset scf
set angle
while ($#argv)
switch ($1)
case -h:
set help
shift; breaksw
case -t:
shift
set type = $1
shift; breaksw
case -p:
# shift
set terminal = png
shift; breaksw
case -f:
shift; set file = $1
shift; breaksw
case -scf:
shift; set scf=`/bin/ls $1`
# shift; set scf="$1"
shift; breaksw
case -a:
set angle = a
shift; breaksw
case -b:
set angle = b
shift; breaksw
case -g:
set angle = g
shift; breaksw
default:
shift; breaksw
endsw
end
if ($?help) goto help
if !($?type) then
echo 'enter dimensionality (2-4) of fit:'
set type=$<
endif
if( $type == '2' ) then
if( ! $?scf ) set scf='*a+c*.scf'
# grepline :ene "$scf" 1 -s| cut -c40- >$file.ene
# grepline :lat "$scf" 1 -s| cut -c36->$file.latparam
grepline :ene "$scf" 1 -s| cut -d = -f 2|grep -v files >$file.ene
grepline :lat "$scf" 1 -s| cut -d = -f 2|grep -v files|cut -c10- >$file.latparam
else if( $type == '3' ) then
if( ! $?scf ) set scf='*abc*.scf'
# grepline :ene "$scf" 1 -s| cut -c40- >$file.ene
# grepline :lat "$scf" 1 -s| cut -c27->$file.latparam
grepline :ene "$scf" 1 -s| cut -d = -f 2|grep -v files >$file.ene
grepline :lat "$scf" 1 -s| cut -d = -f 2|grep -v files >$file.latparam
else if( $type == '4' ) then
if( ! $?scf ) set scf='*mon*.scf'
# grepline :ene "$scf" 1 -s| cut -c40- >$file.ene
# grepline :lat "$scf" 1 -s| cut -c27->$file.latparam
grepline :ene "$scf" 1 -s| cut -d = -f 2|grep -v files >$file.ene
grepline :lat "$scf" 1 -s| cut -d = -f 2|grep -v files >$file.latparam
if($angle == 'b') then
grepline :lat "$scf" 1 -s|cut -d = -f 2|grep -v files| cut -c1-30,40- >$file.latparam
endif
if($angle == 'g') then
grepline :lat "$scf" 1 -s| cut -d = -f 2|grep -v files | cut -c1-30,50- >$file.latparam
endif
endif
echo The following scf files were used for analysis:
foreach i ($scf)
echo $i
end
echo " "
echo "$file.ene and $file.latparam generated"
echo " "
echo $type | x_lapw -f $file eosfit6
exit(0)
help:
cat <<EOF
parabolfit_lapw is an interface for fitting E vs. 2-4-dim lattice parameters
by a non-linear least squares fit (eosfit6) using PORT routines.
Once you have several scf calculations at different volumes (usually generated
with "optimize.job" or "optimize_abc_lapw") it generates the required
"$file.ene" and "$file.latparam"
parabolfit_lapw [ -t 2/3/4 ] [ -f FILEHEAD ] [ -scf '*xxx*.scf' ] [-a/b/g]
-a/b/g allows to specify alpha,beta or gamma in 4D fit.
EOF
More information about the Wien
mailing list