This was meant as a reply to this thread: https://www.mail-archive.com/users@lists.quantum-espresso.org/msg33771.html
Sorry about that.
_<https://www.mail-archive.com/search?l=users@lists.quantum-espresso.org&q=from:%22Lorenzo+Paulatto%22>_
____________________________________________________________________________________________________

Am 08.11.2018 um 18:29 schrieb Noé Mascello:
Hello

I had the same problem i.e. combining the dvscf files of calculations that were split into calculations of irreducible representations. Since there was no conclusion, I just wanted to say that the solution as suggested by Lorenzo Paulatto works. I have attached a small script below that can be used as inspiration if confroted with the same problem. It should work for any general case. I have checked the integrity of the combined dvscf files by running EPW calculations with them and comparing the results to a case where the phonon calculations have not been split into calculations of irreducible representations. This yielded the same results. The dvscf files are however different to the dvscf files obtained when the calculation is not split into calculation of irreducible q-points or not split at all. I don't quite understand that and one should probably check it oneself.

Cheers,

Noé Mascello

ETH Zurich


_____________________________________________________________________________________
#!/bin/bash
#You need to run the script in the directory where the '_ph0' directory of the collected phonon calculations is located. #Furthermore the directories of the separate phonon calculations are named 'q${q}_r${r}' where ${q} is the number of the irreducible q-point and ${r} is the number of a corresponding representation.

pf="prefix"

#get the number of irreducible q-points and representations
irr_qs=$(grep q-points ph_start.out | tail -n1 | grep -o [0-9]*)
for ((i=0; i < irr_qs; i++))
do
    q=$((i+1))
    irreps_el=$(grep -A1 "<NUMBER_IRR_REP" _ph0/${pf}.phsave/patterns.${q}.xml | tail -n1)
    irreps[$i]=$irreps_el
done

#combine the dvscf1 files bytewise for every q-point
for ((q=1; q <= irr_qs; q++))
do
i=$((q-1))
size_new=0
size_old=0
touch dvscf1_old

for ((r=1; r <= irreps[i]; r++))
do
if ((q==1))
then
size_new=$(ls -l q1_r${r}/_ph0/${pf}.dvscf1 | awk '{print $5}')
_count=$((size_new - size_old))
_skip=$((size_new - _count))
size_old=$size_new
dd if=q1_r${r}/_ph0/${pf}.dvscf1 of=dvscf1_temp skip=$_skip count=$_count iflag=skip_bytes,count_bytes
cat dvscf1_old dvscf1_temp > dvscf1_new
mv dvscf1_new dvscf1_old

else
size_new=$(ls -l q${q}_r${r}/_ph0/${pf}.q_${q}/${pf}.dvscf1 | awk '{print $5}')
_count=$((size_new - size_old))
_skip=$((size_new - _count))
size_old=$size_new
dd if=q${q}_r${r}/_ph0/{pf}.q_${q}/${pf}.dvscf1 of=dvscf1_temp skip=$_skip count=$_count iflag=skip_bytes,count_bytes
cat dvscf1_old dvscf1_temp > dvscf1_new
mv dvscf1_new dvscf1_old
fi
done

#move the combined dvscf files to the right location
if ((q==1))
then
mv dvscf1_old _ph0/${pf}.dvscf1
else
if [ ! -d _ph0/{pf}.q_${q} ]
then
mkdir _ph0/${pf}.q_${q}
fi
mv dvscf1_old _ph0/${pf}.q_${q}/{pf}.dvscf1
fi
done

_______________________________________________
users mailing list
users@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/users

_______________________________________________
users mailing list
users@lists.quantum-espresso.org
https://lists.quantum-espresso.org/mailman/listinfo/users

Reply via email to