In this example, how to determine the equilibrium lattice constant is described. Since the stress is not yet implemented in the official version of STATE, we need to optimize the lattice parameters manually. To do so, we calculate the total energy as a function of lattice constant and obtain the one which gives the lowest total energy
#$ -S /bin/sh #$ -cwd #$ -pe fillup 6 #$ -N Al #disable OPENMP parallelism export OMP_NUM_THREADS=1 # execuable of the STATE code ln -fs ${HOME}/STATE/src/state-5.6.5-rc1/src/STATE . # pseudopotential data ln -fs ${HOME}/STATE/gncpp/pot.Al_pbe1 fort.37 # launch STATE for a in $(seq 7.50 0.10 7.90) do INPUT_FILE=nfinp_a${a} OUTPUT_FILE=nfout_a${a} cat > ${INPUT_FILE} << EOF 0 0 0 0 0 0 : I_CTRL(1:6) (DUMMY) 4.00 8.00 1 1 1 : GMAX GMAXP NTYP NATM NATM2 221 2 : NUM_SPACE_GROUP TYPE_BRAVIS_LATTICE ${a} ${a} ${a} 90.00 90.00 90.00 : A B C ALPHA BETA GAMMA 12 12 12 1 1 1 : K_MESH 0 0 : NCORD NINV : IWEI IMDTYP ITYP 0.00 0.00 0.00 1 0 1 : POS(1:3) IWEI IMDTYP ITYP 13 0.50 26.98 6 1 0.20 : IATOMN ALFA AMION ILOC IVAN 0 0 0 0 0 : ICOND INIPOS INIVEL ININOS INIACC 0 1 : IPRE IPRI 30 30 0 84200.00 0 : NMD1 NMD2 LAST_ITER CPUMAXjIFSTOP 6 1 : WAY_MIX MIX_WHAT 0 20 0.60 : ITER_START KBXMIX MIX_ALPHA 0.20 0.30 0.20 0.20 0.20 : DTIM1 DTIM2 DTIM3 DTIM4 DTIM 300.00 4 1 0.50D-09 : DTIO IMDALG IEXPL EDELTA -0.0020 0.50D+03 0 : WIDTH FORCCR ISTRESS ggapbe 1 : XCTYPE KSPIN 2.00 : DESTM 101 : NBZTYP 4 4 4 : DUMMY 4 4 4 : DUMMY 6 : KEG 1 : NEXTST 0 : DUMMY 2 : IMSD 0 : EVALUATE_EKO_DIFF 0 : NPDOSAO 0 0.00 : SM_N DOPPING EOF mpirun -np $NSLOTS ./STATE < ${INPUT_FILE} > ${OUTPUT_FILE} doneAfter the calculations, let us use "getetot.sh" placed in the working directory to get
7.5 -2.07149508 7.6 -2.07210987 7.7 -2.07223992 7.8 -2.07193773 7.9 -2.07125357Use gnuplot or whatever software to fit the total energy to any function.