Dear Peter,
I have an issue with save_lapw (Wien2k 23.2) when calling it from w2web after a
parallel calculation.
using -d savedir (by checking the box: Save calculation in a directory as
specified) results in
save_lapw -d -eels savedir
this does not happen for a non-parallel calculation.
It seems that the p or -p from the parallel execution is transferred to the
"savelapw.pl" script
and eels is executed because of "$cmdline .= " -eels" if ($p)" in line 50
maybe its better to associate eels with a different character than p.
further, from W2Web, when saving with old to a directory, the command is
save_lapw -o -d savedir
and the -d overwrites -o such that the new saving scheme is used and not the
old one
the same appears for save_lapw -o -f or save_lapw -o -s, or other combinations
where one of -d, -f, -s appears after -o.
reason is the 'set new' in the save_lapw script in the parts
case -[D|d]:
case -[F|f]:
case -[S|s]:
I think 'set new' is not necessary to be repeated for -d, -f, -s, because it is
already done before the while statements,
or is there a special need to have it always in such cases and to supress the
old saving scheme?
(unset new appears only in -o and -nodel)
In my tests, -d -eels savedir or -d -o savedir did not work at all, also from
command line.
To use -o -d savedir, I also changed the following (mainly just copied from the
new scheme) in save_lapw:
(but this should be cross-checked to be correct or complete)
# old save scheme
if ($?new) goto new
echo 'Fallback to compatibility mode with "old" save_lapw'
foreach i (clmsum clmup clmdn dmatup dmatdn dmatud vorbup vorbdn vorbud struct
vrespsum vrespup vrespdn eeceup eecedn r2v r2vdn r2v2 r2v2dn r2v_nonloc
r2v_nonlocdn r2v_half r2v_halfdn tausum tauup taudn )
#old#if (! -z $file.$i && -e $file.$i ) cp -p $file.$i $savefile.$i
if ($savefile == "") then
set to = $i
else
set to = $savefile.$i:e
endif
#if (-e $savedir/$to) then
#if !($?force) goto exists
#endif
if !($?silent) echo " $i -> $savedir/$to"
if (! -z $i && -e $i) cp -p $i $savedir/$to
end
set hftest=`grep "HYBRID EIGENVALUES" $file.scf`
if($#hftest != 0) then
foreach i ( vectorhf vectorhfup vectorhfdn vectorhfso vectorhfsoup
vectorhfsodn energyhf energyhfup energyhfdn energyhfso energyhfsoup
energyhfsodn energyhf_rbz energyhfup_rbz energyhfdn_rbz weighthf weighthfup
weighthfdn weighthf_rbz weighthfup_rbz weighthfdn_rbz weighthfnoso
weighthfnosoup weighthfnosodn corewf corewfup corewfdn)
#old#if (! -z $file.$i && -e $file.$i ) cp -p $file.$i $savefile.$i
if ($savefile == "") then
set to = $i
else
set to = $savefile.$i:e
endif
if !($?silent) echo " $i -> $savedir/$to"
if (! -z $i && -e $i) cp -p $i $savedir/$to
end
echo "HF calculation detected and corresponding vectorhf, energyhf and
weighthf files are also saved (provided they are NOT on '$SCRATCH'"
endif
if (-e $file.scf ) mv $file.scf $savefile.scf
if(! $?nodel) then
if (-e $file.broyd1) rm $file.broyd*
echo 'broyden files deleted, clm*, dmat*, vorb*, vresp*, tau*, eece*, scf
and struct files saved under' $savefile
endif
exit (0)
# new save scheme, includes input files etc.
Optional remark:
It would also be nice if the hidden .machinesXXX as well as other numbered
(XXX) files are removed with clean_lapw and/or save_lapw.
For example, I guess the informations of all the case.output1up_XXX files is
also contained in case.output1up
and similar for output1dn, eenergyup, energydn, and maybe others.
When using many cores, the things become sometimes a little unclear and after a
while searching/inspecting becomes slow even though harddisc space doesn't
matter much to me.
In version 21.1 I used the following (without removing empty files), but this
might not be complete for 23.2:
echo "cleaning `pwd ` "
(ls $file.vec* $file.help* $file.vrespva* $file.vrespco* $file.clmsc0*
$file.clmsc1* $file.clmscup0* $file.clmscup1* $file.clmscdn0* $file.clmscdn1*
$file.clmval_* $file.clmvalup_* $file.clmvaldn_* $file.output0[1-9]0[0-9]
$file.output00[1-9][0-9] $file.output0[1-9][1-9][0-9] $file.output1_*_proc*
$file.output1up_*_proc* $file.output1dn_*_proc* $file.output2_*
$file.output2up_* $file.output2upeece_* $file.output2dn_* $file.output2dneece_*
$file.recprlist $file.scfdm_* $file.scfdmup_* $file.scfdmdn_* $file.dmat_[0-9]*
$file.dmatup_[0-9]* $file.dmatdn_[0-9]* $file.dmatud_[0-9]* > cleanfilelist1
)>& /dev/null
set a=`cat cleanfilelist1`
(ls $file.storeHinv* $file.nsh* $file.vint* $file.storeHinv* $file.nval*
$file.broy* $file.*_old *~ $file.corew* fort.* ftn* *.error > cleanfilelist2
)>& /dev/null
set a1=`cat cleanfilelist2`
(ls .command* .running* .lapw?para .time?_* .tmp? :parallel* This_file*
.processes .script .mist* .time_* :log STDOUT $file.klist_[0-9]* $file.weight*
.in.tmp* *.def *.scf1*_* *.scf2*_* *.tmp* >