mirror of https://gitlab.com/QEF/q-e.git
57 lines
1.5 KiB
Bash
57 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
#Same than in fd.in
|
|
fd_outfile=displaced
|
|
|
|
IN_DIR='./fd_files/'
|
|
OUT_DIR='./fd_files/'
|
|
FORCEDIR='./fd_forces/'
|
|
pw_exe='../../../../bin/pw.x'
|
|
|
|
#check directories
|
|
if [ ! -d "${IN_DIR}" ]; then
|
|
echo ERROR: ${IN_DIR} does not exist
|
|
exit
|
|
fi
|
|
|
|
if [ ! -d "${OUT_DIR}" ]; then
|
|
mkdir -p ${OUT_DIR}
|
|
fi
|
|
|
|
if [ ! -d "${FORCEDIR}" ]; then
|
|
mkdir -p ${FORCEDIR}
|
|
fi
|
|
# scf calculation of the displaced macrocells
|
|
#x,y,z displacements
|
|
#atomic_index within original unit cell (two Si atoms)
|
|
#positive/negative displacement
|
|
|
|
for i in $(seq 1 3); do
|
|
for n in $(seq 1 2); do
|
|
for m in $(seq 1 2 ); do
|
|
echo running serial pw.x on ${fd_outfile}.$m.$i.$n.in
|
|
$pw_exe < $IN_DIR/${fd_outfile}.$m.$i.$n.in > $OUT_DIR/${fd_outfile}.$m.$i.$n.out;
|
|
done
|
|
done
|
|
done
|
|
|
|
# scf calculation of the reference macrocell (no displacement)
|
|
echo running serial pw.x on ${fd_outfile}.0.0.0.in
|
|
$pw_exe < $IN_DIR/${fd_outfile}.0.0.0.in > $OUT_DIR/${fd_outfile}.0.0.0.out
|
|
|
|
# extract forces
|
|
grep 'force = ' $OUT_DIR/${fd_outfile}.0.0.0.out | grep ' atom ' > forces
|
|
awk '{printf("% 18.12f % 18.12f % 18.12f \n",$7,$8,$9)}' < forces > $FORCEDIR/force.0.0.0
|
|
rm forces
|
|
|
|
for i in `seq 1 3 ` ; do
|
|
for n in `seq 1 2 ` ; do
|
|
for m in `seq 1 2 ` ; do
|
|
grep 'force = ' $OUT_DIR/${fd_outfile}.$m.$i.$n.out | grep ' atom ' > forces
|
|
awk '{printf("% 18.12f % 18.12f % 18.12f \n",$7,$8,$9)}' < forces > $FORCEDIR/force.$m.$i.$n
|
|
rm forces
|
|
done
|
|
done
|
|
done
|
|
|