[关闭]
@sculxb 2017-12-19T08:16:22.000000Z 字数 2927 阅读 1598

DFT计算测试用脚本

DFT 收敛测试 截断能 k点 晶格常数


首先是晶格常数测试

  1. #!/bin/sh
  2. #for i in 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 3.60 3.61 3.62 3.63 3.64 3.65 3.66 3.67 3.68 3.69
  3. #for i in 3.544 3.545 3.546 3.547 3.548 3.549 3.550 3.551 3.552 3.553 3.554
  4. for i in 12 14 16 18 22 24 26
  5. do
  6. mkdir $i
  7. cd $i
  8. j=$(echo "scale=8;$i/0.52917721067"|bc)
  9. echo $j
  10. q=$(echo "scale=8;17/$i"|bc)
  11. echo $q
  12. cat <<EOF > relax.in
  13. &control
  14. calculation='relax',
  15. prefix='t-s',
  16. pseudo_dir='/home/xbLiu/src/qe-6.1/pseudo'
  17. outdir='./'
  18. etot_conv_thr = 1.0E-4,
  19. forc_conv_thr = 1.0D-3,
  20. nstep = 200,
  21. /
  22. &system
  23. ibrav = 4,
  24. celldm(1) = 6.70285856
  25. celldm(3) = 4.79278263
  26. nat = 3,
  27. ntyp = 2,
  28. ecutwfc = 60,
  29. ecutrho = 800,
  30. occupations = 'smearing',
  31. smearing = 'mp',
  32. degauss = 0.005,
  33. ! la2F = .true.,
  34. nosym =.true.,
  35. /
  36. &electrons
  37. electron_maxstep = 100,
  38. mixing_mode = 'plain',
  39. mixing_beta = 0.7,
  40. conv_thr = 1.0d-6,
  41. diagonalization = 'cg',
  42. diago_cg_maxiter = 50,
  43. /
  44. &IONS
  45. ion_dynamics = 'bfgs',
  46. !pot_extrapolation = 'second_order',
  47. !wfc_extrapolation = 'second_order',
  48. /
  49. ATOMIC_SPECIES
  50. Ti 47.867 Ti.pbe-spn-kjpaw_psl.0.3.1.UPF
  51. Se 78.96 Se.pbe-n-kjpaw_psl.0.2.UPF
  52. ATOMIC_POSITIONS (crystal)
  53. Ti 0.000000000 0.000000000 0.500000008
  54. Se 0.333333334 0.666666666 0.590939645
  55. Se 0.666666669 0.333333335 0.409060355
  56. K_POINTS {automatic}
  57. $i $i 1 0 0 0
  58. EOF
  59. cat <<EOF > run.sh
  60. #PBS -N vc-relax
  61. #PBS -l nodes=1:ppn=12
  62. #PBS -l walltime=1:00:00:00
  63. #PBS -q batch
  64. #PBS -V
  65. #PBS -S /bin/bash
  66. ### Set intel environment###
  67. source /opt/software/intel/composer_xe_2015.6.233/bin/compilervars.sh intel64
  68. source /opt/software/intel/mkl/bin/intel64/mklvars_intel64.sh
  69. source /opt/software/intel/impi/5.0.3.049/bin64/mpivars.sh
  70. cd \$PBS_O_WORKDIR
  71. EXEC=/home/xbLiu/src/qe-6.1/bin/
  72. NP=\`cat \$PBS_NODEFILE | wc -l\`
  73. NN=\`cat \$PBS_NODEFILE | sort | uniq | tee /tmp/nodes.\$$ | wc -l\`
  74. cat \$PBS_NODEFILE > /tmp/nodefile.\$$
  75. mpirun -genv I_MPI_DEVICE rdssm -machinefile /tmp/nodefile.\$$ -n \$NP \\
  76. \$EXEC/pw.x <relax.in> relax.out
  77. rm -rf /tmp/nodefile.\$$
  78. rm -rf /tmp/nodes.\$$
  79. EOF
  80. qsub run.sh
  81. cd ..
  82. done
  83. #qsub *.scf.in

然后测试完用的提取数据的脚本

  1. #!/bin/sh
  2. #for i in 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 3.60
  3. #for i in 3.544 3.545 3.546 3.547 3.548 3.549 3.550 3.551 3.552 3.553 3.554
  4. for i in 12 14 16 18 22 24 26
  5. do
  6. cd $i
  7. tot_e=`grep ! total energy *.out|tail -n 1|awk '{print $5}' `
  8. echo $i $tot_e>> ../kp-out
  9. cd ..
  10. #j=$(echo "scale=8;$i/0.52917721067"|bc)
  11. #echo $j
  12. #q=$(echo "scale=8;17/$i"|bc)
  13. #echo $q
  14. done

画图用的python脚本

  1. #!/usr/bin/env python2
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Tue Dec 19 14:55:41 2017
  5. @author: cris
  6. """
  7. import numpy as np
  8. import matplotlib.pyplot as plt
  9. np.set_printoptions(threshold=np.NaN)
  10. plt.rcParams['font.sans-serif']=['Abyssinica SIL']
  11. tot_e = np.array([])
  12. tot_e_dat = open('../file/kp-out')
  13. for line in tot_e_dat.readlines():
  14. line = line.split()
  15. tot_e = np.concatenate((tot_e,line))
  16. size=len(tot_e)
  17. col = size/2
  18. tot_e = tot_e.astype(float)
  19. tot_e = tot_e.reshape(col,2)
  20. tot_e = np.transpose(tot_e)
  21. print tot_e[0]
  22. plt.plot(tot_e[0],tot_e[1],'-',color='k')
  23. plt.xticks(fontsize=15,rotation=40)
  24. plt.yticks(fontsize=15)
  25. ax=plt.gca()
  26. ax.get_yaxis().set_tick_params(direction='in', width=1)
  27. ax.get_xaxis().set_tick_params(direction='in', width=1)
  28. plt.savefig('../graph/tot_e-0.005-paw-kp.jpeg',dpi=150)
  29. plt.show()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注