ABACUS/scripts/catalogue/c_scan_N_fixed_dsfs.sh

97 regels
2.1 KiB
Bash
Executable File

#! /bin/zsh
# For given N (L) this
# computes the smoothened dsfs and produces the animated figure
# for a `c_scan_N_fixed` run.
if [[ $# -ne 6 ]]; then
echo "Arguments needed: whichDSF, kBT, target_sumrule, N, nkmax (max momentum in units of kF/4), width."
exit 1
fi
if [[ $1 != 'd' && $1 != 'g' && $1 != 'o' ]]; then
echo "Only the d, g and o scanning options are implemented."
exit 1
fi
if [[ $2 -lt 0 ]]; then
echo "Temperature kBT must be > 0."
exit 1
fi
if [[ $3 -lt 0 || $3 -gt 1 ]]; then
echo "Requirement: 0 < target_sumrule < 1."
exit 1
fi
if [[ $4 -lt 0 ]]; then
echo "N must be > 0."
exit 1
fi
if [[ $5 -lt 0 ]]; then
echo "nkmax must be > 0."
exit 1
fi
if [[ $6 -lt 0 ]]; then
echo "width must be > 0."
exit 1
fi
whichDSF=$1
kBT=$2
target_sumrule=$3
N=$4
nkmax=$5
width=$6
correlator='rho-rho'
if [[ $whichDSF == 'o' ]]; then
correlator='psidag-psi'
elif [[ $whichDSF == 'g' ]]; then
correlator='psi-psidag'
fi
iKmax=$(($nkmax * $N/8))
ommin=0
ommax=$((0.5 * $nkmax*($nkmax + 8))) # use (half of) TG Type 1 dispersion
Nom=1000
# store location for these runs
dirstore='Lieb-Liniger/'$correlator'/T_'$kBT'/c_scan_N_fixed/k_0_to_'${(l:2::0:)nkmax}'kFo4/sr_'$target_sumrule'/store'
# List of interactions: fractional powers of 2
clist_raw=()
for nc in {-160..160}
do
clist_raw=($clist_raw $((4 * 2**($nc/16.) )))
done
# Now cast the integer values to true integers
zmodload zsh/mathfunc
clist=()
for c in $clist_raw
do
if [[ $((floor($c))) == $((ceil($c))) ]]; then
clist=($clist $((int($c))))
else
clist=($clist $c)
fi
done
basedir="$(pwd)"
for c in $clist
do
echo '** Starting computation of DSFs for c =' $c', N = '$N
# First construct the dsfs
dir=$dirstore'/data/N_'$N'/c_'$c # dir='Lieb-Liniger/'$correlator'/T_'$kBT'/c_scan_N_fixed/k_0_to_'${(l:2::0:)nkmax}'kFo4/sr_'$target_sumrule'/store/data/N_'$N'/c_'$c
cd $dir
Smoothen_LiebLin_DSF_Scaled $whichDSF $c $N $N 0 $iKmax $kBT 0 $ommin $ommax $Nom $width
cd $basedir
echo ' Successfully computed DSFs for c =' $c', N = '$N'.\n'
done