vasputils 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +49 -28
- data/Gemfile +10 -9
- data/VERSION +1 -1
- data/{test/vaspgeometryoptimizer/ended-Iter1/try00/CONTCAR → bin/changeincar} +0 -0
- data/bin/checkvasp +106 -75
- data/bin/genincar +4 -4
- data/bin/genkpoints +13 -13
- data/bin/genpotcar +2 -2
- data/bin/latticeconstants +10 -12
- data/bin/qsubvasp +63 -80
- data/bin/resetvaspdir +51 -0
- data/bin/resetvaspgeomopt +73 -0
- data/bin/runvasp +42 -49
- data/bin/runvaspdir +19 -0
- data/bin/runvaspgeomopt +19 -0
- data/bin/showvaspdir +171 -0
- data/bin/showvaspgeomopt +83 -0
- data/bin/symposcar +89 -113
- data/bin/varycondition +28 -0
- data/example/dot.vasputils +26 -232
- data/lib/vasputils/conditionvarier.rb +157 -0
- data/lib/vasputils/incar.rb +40 -43
- data/lib/vasputils/kpoints.rb +31 -33
- data/lib/vasputils/outcar.rb +53 -53
- data/lib/vasputils/poscar.rb +148 -150
- data/lib/vasputils/potcar/concatenater.rb +22 -22
- data/lib/vasputils/potcar.rb +12 -12
- data/lib/vasputils/setting.rb +22 -22
- data/lib/vasputils/vaspdir.rb +199 -86
- data/lib/vasputils/vaspgeometryoptimizer.rb +233 -100
- data/lib/vasputils.rb +7 -65
- data/test/conditionanalyzer/00/POSCAR +8 -0
- data/test/conditionanalyzer/00/encut400_k444/CONTCAR +8 -0
- data/test/conditionanalyzer/00/encut400_k444/INCAR +28 -0
- data/test/conditionanalyzer/00/encut400_k444/KPOINTS +6 -0
- data/test/conditionanalyzer/00/encut400_k444/OUTCAR +1436 -0
- data/test/conditionanalyzer/00/encut400_k444/POSCAR +8 -0
- data/test/conditionanalyzer/00/encut400_k444/POTCAR +16 -0
- data/test/conditionanalyzer/00/encut400_k555/CONTCAR +8 -0
- data/test/conditionanalyzer/00/encut400_k555/INCAR +28 -0
- data/test/conditionanalyzer/00/encut400_k555/KPOINTS +6 -0
- data/test/conditionanalyzer/00/encut400_k555/OUTCAR +1436 -0
- data/test/conditionanalyzer/00/encut400_k555/POSCAR +8 -0
- data/test/conditionanalyzer/00/encut400_k555/POTCAR +16 -0
- data/test/conditionanalyzer/00/encut500_k444/CONTCAR +8 -0
- data/test/conditionanalyzer/00/encut500_k444/INCAR +28 -0
- data/test/conditionanalyzer/00/encut500_k444/KPOINTS +6 -0
- data/test/conditionanalyzer/00/encut500_k444/OUTCAR +1436 -0
- data/test/conditionanalyzer/00/encut500_k444/POSCAR +8 -0
- data/test/conditionanalyzer/00/encut500_k444/POTCAR +16 -0
- data/test/conditionanalyzer/00/encut500_k555/CONTCAR +8 -0
- data/test/conditionanalyzer/00/encut500_k555/INCAR +28 -0
- data/test/conditionanalyzer/00/encut500_k555/KPOINTS +6 -0
- data/test/conditionanalyzer/00/encut500_k555/OUTCAR +1436 -0
- data/test/conditionanalyzer/00/encut500_k555/POSCAR +8 -0
- data/test/conditionanalyzer/00/encut500_k555/POTCAR +16 -0
- data/test/{vaspkpointsfinder/01-01-01/try00 → conditionanalyzer/01/00-original}/INCAR +3 -3
- data/test/conditionanalyzer/01/00-original/KPOINTS +6 -0
- data/test/conditionanalyzer/01/00-original/POSCAR +10 -0
- data/test/conditionanalyzer/01/01-ENCUT/1000/try02/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/1000/try02/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/1000/try02/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/1000/try02/OUTCAR +1692 -0
- data/test/conditionanalyzer/01/01-ENCUT/1000/try02/POSCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/1200/try02/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/1200/try02/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/1200/try02/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/1200/try02/OUTCAR +1692 -0
- data/test/conditionanalyzer/01/01-ENCUT/1200/try02/POSCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/1500/try02/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/1500/try02/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/1500/try02/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/1500/try02/OUTCAR +1742 -0
- data/test/conditionanalyzer/01/01-ENCUT/1500/try02/POSCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/500/try05/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/500/try05/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/500/try05/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/500/try05/OUTCAR +1644 -0
- data/test/conditionanalyzer/01/01-ENCUT/500/try05/POSCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/600/try01/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/600/try01/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/600/try01/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/600/try01/OUTCAR +1644 -0
- data/test/conditionanalyzer/01/01-ENCUT/600/try01/POSCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/700/try01/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/700/try01/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/700/try01/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/700/try01/OUTCAR +1644 -0
- data/test/conditionanalyzer/01/01-ENCUT/700/try01/POSCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/800/try01/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/800/try01/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/800/try01/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/800/try01/OUTCAR +3610 -0
- data/test/conditionanalyzer/01/01-ENCUT/800/try01/POSCAR +10 -0
- data/test/conditionanalyzer/01/01-ENCUT/900/try01/CONTCAR +13 -0
- data/test/conditionanalyzer/01/01-ENCUT/900/try01/INCAR +17 -0
- data/test/conditionanalyzer/01/01-ENCUT/900/try01/KPOINTS +6 -0
- data/test/conditionanalyzer/01/01-ENCUT/900/try01/OUTCAR +1692 -0
- data/test/conditionanalyzer/01/01-ENCUT/900/try01/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/OUTCAR +12318 -0
- data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/INCAR +17 -0
- data/test/{vaspkpointsfinder/01-01-01/try00 → conditionanalyzer/01/02-KPOINTS/1x1x1/try07}/KPOINTS +1 -1
- data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/OUTCAR +1337 -0
- data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/OUTCAR +9885 -0
- data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/OUTCAR +72342 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/OUTCAR +139254 -0
- data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/OUTCAR +1644 -0
- data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/POSCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/OUTCAR +507061 -0
- data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/POSCAR +10 -0
- data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/CONTCAR +13 -0
- data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/INCAR +17 -0
- data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/KPOINTS +6 -0
- data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/OUTCAR +3298 -0
- data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/POSCAR +13 -0
- data/test/conditionanalyzer/mixed_conditions/orthorhombic/CONTCAR +17 -0
- data/test/conditionanalyzer/mixed_conditions/orthorhombic/INCAR +28 -0
- data/test/conditionanalyzer/mixed_conditions/orthorhombic/KPOINTS +6 -0
- data/test/conditionanalyzer/mixed_conditions/orthorhombic/OUTCAR +1436 -0
- data/test/conditionanalyzer/mixed_conditions/orthorhombic/POSCAR +12 -0
- data/test/conditionanalyzer/mixed_conditions/orthorhombic/POTCAR +16 -0
- data/test/conditionanalyzer/mixed_conditions/tetragonal/CONTCAR +17 -0
- data/test/conditionanalyzer/mixed_conditions/tetragonal/INCAR +28 -0
- data/test/conditionanalyzer/mixed_conditions/tetragonal/KPOINTS +6 -0
- data/test/conditionanalyzer/mixed_conditions/tetragonal/OUTCAR +1436 -0
- data/test/conditionanalyzer/mixed_conditions/tetragonal/POSCAR +12 -0
- data/test/conditionanalyzer/mixed_conditions/tetragonal/POTCAR +16 -0
- data/test/conditionanalyzer/picker/encut400_k444-cubic/INCAR +28 -0
- data/test/conditionanalyzer/picker/encut400_k444-cubic/KPOINTS +6 -0
- data/test/conditionanalyzer/picker/encut400_k444-cubic/OUTCAR +1436 -0
- data/test/conditionanalyzer/picker/encut400_k444-cubic/POSCAR +9 -0
- data/test/conditionanalyzer/picker/encut400_k444-cubic/POTCAR +16 -0
- data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/INCAR +28 -0
- data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/KPOINTS +6 -0
- data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/OUTCAR +1436 -0
- data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/POSCAR +9 -0
- data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/POTCAR +16 -0
- data/test/conditionanalyzer/picker/encut400_k444-unfinished/INCAR +28 -0
- data/test/conditionanalyzer/picker/encut400_k444-unfinished/KPOINTS +6 -0
- data/test/conditionanalyzer/picker/encut400_k444-unfinished/OUTCAR +1381 -0
- data/test/conditionanalyzer/picker/encut400_k444-unfinished/POSCAR +12 -0
- data/test/conditionanalyzer/picker/encut400_k444-unfinished/POTCAR +16 -0
- data/test/conditionanalyzer/picker/hexiagonal/CONTCAR +13 -0
- data/test/conditionanalyzer/picker/hexiagonal/INCAR +17 -0
- data/test/conditionanalyzer/picker/hexiagonal/KPOINTS +6 -0
- data/test/conditionanalyzer/picker/hexiagonal/OUTCAR +1644 -0
- data/test/conditionanalyzer/picker/hexiagonal/POSCAR +13 -0
- data/test/conditionvarier/standard/INCAR +28 -0
- data/test/conditionvarier/standard/KPOINTS +6 -0
- data/test/conditionvarier/standard/POSCAR +12 -0
- data/test/conditionvarier/standard/POTCAR +16 -0
- data/test/helper.rb +4 -4
- data/test/poscar/symmetry/cubic/POSCAR +8 -0
- data/test/poscar/symmetry/hexagonal/POSCAR +8 -0
- data/test/poscar/symmetry/monoclinic/POSCAR +8 -0
- data/test/poscar/symmetry/orthorhombic/POSCAR +8 -0
- data/test/poscar/symmetry/tetragonal/POSCAR +8 -0
- data/test/poscar/symmetry/tetragonal-b/POSCAR +8 -0
- data/test/poscar/symmetry/triclinic/POSCAR +10 -0
- data/test/poscar/symmetry/trigonal/POSCAR +9 -0
- data/test/test_conditionvarier.rb +201 -0
- data/test/test_incar.rb +144 -144
- data/test/test_kpoints.rb +91 -91
- data/test/test_outcar.rb +154 -154
- data/test/test_poscar.rb +263 -262
- data/test/test_potcar.rb +31 -31
- data/test/test_potcar_concatenater.rb +39 -39
- data/test/test_setting.rb +15 -14
- data/test/test_vaspdir.rb +193 -126
- data/test/test_vaspgeometryoptimizer.rb +177 -78
- data/test/test_vasputils.rb +48 -48
- data/test/vaspdir/reset_init/finished/orig/CONTCAR +17 -0
- data/test/vaspdir/reset_init/finished/orig/INCAR +27 -0
- data/test/vaspdir/reset_init/finished/orig/KPOINTS +6 -0
- data/test/vaspdir/reset_init/finished/orig/OUTCAR +1436 -0
- data/test/vaspdir/reset_init/finished/orig/POSCAR +12 -0
- data/test/vaspdir/reset_init/finished/orig/POTCAR +16 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/CONTCAR +17 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/INCAR +27 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/KPOINTS +6 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/OUTCAR +1436 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/POTCAR +16 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/CONTCAR +17 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/INCAR +27 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/KPOINTS +6 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/OUTCAR +1436 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/POTCAR +16 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/DOSCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/EIGENVAL +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/OSZICAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/PCDAT +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/POSCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/WAVECAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/XDATCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/vasprun.xml +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt01/.gitignore +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/CHG +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/CHGCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/CONTCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/DOSCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/EIGENVAL +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/OSZICAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/PCDAT +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/POSCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/WAVECAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/XDATCAR +0 -0
- data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/vasprun.xml +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/CONTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_init/orig/lock_vaspgeomopt/dummy +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/CONTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/lock_vaspgeomopt/dummy +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/lock_vaspgeomopt/dummy +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/lock_vaspgeomopt/dummy +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/CONTCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/CONTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/INCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/POSCAR +12 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/reset_reincarnation/orig/lock_vaspgeomopt/dummy +0 -0
- data/test/vaspgeometryoptimizer/started/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/started/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/started/geomopt00/POSCAR +0 -0
- data/test/vaspgeometryoptimizer/started/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt00/CONTCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt00/INCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt00/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt00/OUTCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt00/POSCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt00/POTCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt01/INCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt01/KPOINTS +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt01/POSCAR +0 -0
- data/test/vaspgeometryoptimizer/till01/geomopt01/POTCAR +0 -0
- metadata +464 -106
- data/bin/genvaspdir +0 -17
- data/bin/rmvaspout +0 -40
- data/lib/vasputils/vaspkpointsfinder.rb +0 -72
- data/test/test_vaspkpointsfinder.rb +0 -25
- data/test/vaspkpointsfinder/01-01-01/try00/POSCAR +0 -8
- data/vasputils.gemspec +0 -567
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try00 → conditionanalyzer/01/00-original}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try01 → conditionanalyzer/01/01-ENCUT/1000/try02}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter2/try00 → conditionanalyzer/01/01-ENCUT/1200/try02}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter2/try01 → conditionanalyzer/01/01-ENCUT/1500/try02}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/not-yet/try00 → conditionanalyzer/01/01-ENCUT/500/try05}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/prepare_next/try00 → conditionanalyzer/01/01-ENCUT/600/try01}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/started/try00 → conditionanalyzer/01/01-ENCUT/700/try01}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/till01/try00 → conditionanalyzer/01/01-ENCUT/800/try01}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/till01 → conditionanalyzer/01/01-ENCUT/900}/try01/POTCAR +0 -0
- /data/test/{vaspkpointsfinder/01-01-01/try00 → conditionanalyzer/01/02-KPOINTS/16x16x16/try07}/POTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/INCAR → conditionanalyzer/01/02-KPOINTS/1x1x1/try07/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/KPOINTS → conditionanalyzer/01/02-KPOINTS/2x2x2/try10/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/OUTCAR → conditionanalyzer/01/02-KPOINTS/32x32x32/try06/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/POSCAR → conditionanalyzer/01/02-KPOINTS/32x32x64/try04/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try01/INCAR → conditionanalyzer/01/02-KPOINTS/4x4x4/try05/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter2/try00 → conditionanalyzer/01/02-KPOINTS/64x64x64}/CONTCAR +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try01/KPOINTS → conditionanalyzer/01/02-KPOINTS/64x64x64/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter1/try01/POSCAR → conditionanalyzer/01/02-KPOINTS/8x8x8/try05/POTCAR} +0 -0
- /data/test/{vaspgeometryoptimizer/ended-Iter2/try00/INCAR → conditionanalyzer/picker/hexiagonal/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter1/geomopt00}/CONTCAR +0 -0
- /data/test/vaspgeometryoptimizer/{ended-Iter2/try01 → ended-Iter1/geomopt00}/INCAR +0 -0
- /data/test/vaspgeometryoptimizer/{ended-Iter2/try00 → ended-Iter1/geomopt00}/KPOINTS +0 -0
- /data/test/vaspgeometryoptimizer/{ended-Iter2/try00 → ended-Iter1/geomopt00}/OUTCAR +0 -0
- /data/test/vaspgeometryoptimizer/{ended-Iter2/try00 → ended-Iter1/geomopt00}/POSCAR +0 -0
- /data/test/vaspgeometryoptimizer/{ended-Iter2/try01/KPOINTS → ended-Iter1/geomopt00/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{not-yet/try00 → ended-Iter1/geomopt01}/INCAR +0 -0
- /data/test/vaspgeometryoptimizer/{not-yet/try00 → ended-Iter1/geomopt01}/KPOINTS +0 -0
- /data/test/vaspgeometryoptimizer/ended-Iter1/{try01 → geomopt01}/OUTCAR +0 -0
- /data/test/vaspgeometryoptimizer/{ended-Iter2/try01 → ended-Iter1/geomopt01}/POSCAR +0 -0
- /data/test/vaspgeometryoptimizer/{not-yet/try00/POSCAR → ended-Iter1/geomopt01/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try00 → ended-Iter2/geomopt00}/CONTCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/INCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/KPOINTS +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/OUTCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/POSCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/CHG → ended-Iter2/geomopt00/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{started/try00 → ended-Iter2/geomopt01}/INCAR +0 -0
- /data/test/vaspgeometryoptimizer/{started/try00 → ended-Iter2/geomopt01}/KPOINTS +0 -0
- /data/test/vaspgeometryoptimizer/ended-Iter2/{try01 → geomopt01}/OUTCAR +0 -0
- /data/test/vaspgeometryoptimizer/{started/try00 → ended-Iter2/geomopt01}/POSCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/CHGCAR → ended-Iter2/geomopt01/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try00 → not-geomopt/not-geomopt-subdir/calcA}/INCAR +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try00 → not-geomopt/not-geomopt-subdir/calcA}/KPOINTS +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try00 → not-geomopt/not-geomopt-subdir/calcA}/POSCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/DOSCAR → not-geomopt/not-geomopt-subdir/calcA/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try01 → not-geomopt/not-geomopt-subdir/calcB}/INCAR +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try01 → not-geomopt/not-geomopt-subdir/calcB}/KPOINTS +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try01 → not-geomopt/not-geomopt-subdir/calcB}/POSCAR +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/EIGENVAL → not-geomopt/not-geomopt-subdir/calcB/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/OSZICAR → not-yet/geomopt00/INCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/PCDAT → not-yet/geomopt00/KPOINTS} +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/WAVECAR → not-yet/geomopt00/POSCAR} +0 -0
- /data/test/vaspgeometryoptimizer/{prepare_next/try00/XDATCAR → not-yet/geomopt00/POTCAR} +0 -0
- /data/test/vaspgeometryoptimizer/prepare_next/{try00/vasprun.xml → no-contcar/geomopt00/CHG} +0 -0
- /data/test/vaspgeometryoptimizer/{till01/try00/OUTCAR → prepare_next/no-contcar/geomopt00/CHGCAR} +0 -0
data/lib/vasputils/vaspdir.rb
CHANGED
|
@@ -6,98 +6,211 @@ require "pp"
|
|
|
6
6
|
require "date"
|
|
7
7
|
require "yaml"
|
|
8
8
|
|
|
9
|
-
require "rubygems"
|
|
10
|
-
|
|
11
|
-
require "comana/computationmanager.rb"
|
|
12
|
-
require "comana/machineinfo.rb"
|
|
13
|
-
|
|
14
|
-
require "vasputils.rb"
|
|
9
|
+
#require "rubygems"
|
|
10
|
+
#require "comana"
|
|
15
11
|
|
|
16
12
|
# Class for VASP executable directory,
|
|
17
13
|
# including input and output files.
|
|
18
14
|
#
|
|
19
|
-
class VaspUtils::VaspDir < ComputationManager
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
class VaspUtils::VaspDir < Comana::ComputationManager
|
|
16
|
+
MACHINEFILE = "machines"
|
|
17
|
+
|
|
18
|
+
class InitializeError < Exception; end
|
|
19
|
+
class NoVaspBinaryError < Exception; end
|
|
20
|
+
class PrepareNextError < Exception; end
|
|
21
|
+
class ExecuteError < Exception; end
|
|
22
|
+
class InvalidValueError < Exception; end
|
|
23
|
+
class AlreadyExistError < Exception; end
|
|
24
|
+
|
|
25
|
+
def initialize(dir)
|
|
26
|
+
super(dir)
|
|
27
|
+
@lockdir = "lock_vaspdir"
|
|
28
|
+
%w(INCAR KPOINTS POSCAR POTCAR).each do |file|
|
|
29
|
+
infile = "#{@dir}/#{file}"
|
|
30
|
+
raise InitializeError, infile unless FileTest.exist? infile
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# 配下の OUTCAR を Outcar インスタンスにして返す。
|
|
35
|
+
# 存在しなければ例外 Errno::ENOENT を返す。
|
|
36
|
+
def outcar
|
|
37
|
+
VaspUtils::Outcar.load_file("#{@dir}/OUTCAR")
|
|
31
38
|
end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
VaspUtils::Poscar.load_file("#{@dir}/POSCAR")
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# 配下の CONTCAR を Cell2 インスタンスにして返す。
|
|
47
|
-
# 存在しなければ例外 Errno::ENOENT を返す。
|
|
48
|
-
def contcar
|
|
49
|
-
VaspUtils::Poscar.load_file("#{@dir}/CONTCAR")
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# 配下の KPOINTS を読み込んだ結果をハッシュにして返す。
|
|
53
|
-
#
|
|
54
|
-
# 存在しなければ例外 Errno::ENOENT を返す筈だが、
|
|
55
|
-
# vasp dir の判定を incar でやっているので置こる筈がない。
|
|
56
|
-
def incar
|
|
57
|
-
VaspUtils::Incar.load_file("#{@dir}/INCAR")
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# 配下の KPOINTS を読み込んだ結果をハッシュにして返す。
|
|
61
|
-
def kpoints
|
|
62
|
-
VaspUtils::Kpoints.load_file("#{@dir}/KPOINTS")
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# 正常に終了していれば true を返す。
|
|
66
|
-
# 実行する前や実行中、OUTCAR が完遂していなければ false。
|
|
67
|
-
#
|
|
68
|
-
# MEMO
|
|
69
|
-
# PI12345 ファイルは実行中のみ存在し、終了後 vasp (mpi?) に自動的に削除される。
|
|
70
|
-
def finished?
|
|
71
|
-
begin
|
|
72
|
-
return VaspUtils::Outcar.load_file("#{@dir}/OUTCAR")[:normal_ended]
|
|
73
|
-
rescue Errno::ENOENT
|
|
74
|
-
return false
|
|
39
|
+
|
|
40
|
+
# 配下の POSCAR を CrystalCell::Cell インスタンスにして返す。
|
|
41
|
+
# 存在しなければ例外 Errno::ENOENT を返す。
|
|
42
|
+
def poscar
|
|
43
|
+
VaspUtils::Poscar.load_file("#{@dir}/POSCAR")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# 配下の CONTCAR を CrystalCell::Cell インスタンスにして返す。
|
|
47
|
+
# 存在しなければ例外 Errno::ENOENT を返す。
|
|
48
|
+
def contcar
|
|
49
|
+
VaspUtils::Poscar.load_file("#{@dir}/CONTCAR")
|
|
75
50
|
end
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
51
|
+
|
|
52
|
+
# 配下の KPOINTS を読み込んだ結果をハッシュにして返す。
|
|
53
|
+
#
|
|
54
|
+
# 存在しなければ例外 Errno::ENOENT を返す筈だが、
|
|
55
|
+
# vasp dir の判定を incar でやっているので生じる筈がない。
|
|
56
|
+
def incar
|
|
57
|
+
VaspUtils::Incar.load_file("#{@dir}/INCAR")
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# 配下の KPOINTS を読み込んだ結果をハッシュにして返す。
|
|
61
|
+
def kpoints
|
|
62
|
+
VaspUtils::Kpoints.load_file("#{@dir}/KPOINTS")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# 正常に終了していれば true を返す。
|
|
66
|
+
# 実行する前や実行中、OUTCAR が完遂していなければ false。
|
|
67
|
+
#
|
|
68
|
+
# MEMO
|
|
69
|
+
# PI12345 ファイルは実行中のみ存在し、終了後 vasp (mpi?) に自動的に削除される。
|
|
70
|
+
def finished?
|
|
71
|
+
begin
|
|
72
|
+
return VaspUtils::Outcar.load_file("#{@dir}/OUTCAR")[:normal_ended]
|
|
73
|
+
rescue Errno::ENOENT
|
|
74
|
+
return false
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def reset_init(io = $stdout)
|
|
79
|
+
#fullpath = File.expand_path @dir
|
|
80
|
+
keep_files = ["INCAR", "KPOINTS", "POSCAR", "POTCAR"]
|
|
81
|
+
remove_files = []
|
|
82
|
+
Dir.entries( @dir ).sort.each do |file|
|
|
83
|
+
next if file == "."
|
|
84
|
+
next if file == ".."
|
|
85
|
+
remove_files << file unless keep_files.include? file
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
if remove_files.size == 0
|
|
89
|
+
io.puts " No remove files."
|
|
90
|
+
return
|
|
91
|
+
else
|
|
92
|
+
#pp @dir; exit
|
|
93
|
+
#puts " Remove files:"
|
|
94
|
+
#remove_files.each { |file| puts " #{file}" }
|
|
95
|
+
|
|
96
|
+
#puts " Keep files:"
|
|
97
|
+
#keep_files.each { |file| puts " #{file}" }
|
|
98
|
+
|
|
99
|
+
remove_files.each do |file|
|
|
100
|
+
io.puts " Removing: #{file}"
|
|
101
|
+
FileUtils.rm_rf "#{@dir}/#{file}"
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# 'tgt_name' is a String.
|
|
107
|
+
# 'conditions' is a Hash.
|
|
108
|
+
# E.g., {:encut => 500.0, :ka => 2, :kb => 4}
|
|
109
|
+
def mutate(tgt_name, condition)
|
|
110
|
+
raise AlreadyExistError, "Already exist: #{tgt_name}" if File.exist? tgt_name
|
|
111
|
+
|
|
112
|
+
Dir.mkdir tgt_name
|
|
113
|
+
|
|
114
|
+
##POSCAR
|
|
115
|
+
FileUtils.cp("#{@dir}/POSCAR", "#{tgt_name}/POSCAR")
|
|
116
|
+
|
|
117
|
+
##POTCAR
|
|
118
|
+
FileUtils.cp("#{@dir}/POTCAR", "#{tgt_name}/POTCAR")
|
|
119
|
+
|
|
120
|
+
##INCAR
|
|
121
|
+
new_incar = incar
|
|
122
|
+
new_incar["ENCUT"] = condition[:encut] if condition[:encut]
|
|
123
|
+
File.open("#{tgt_name}/INCAR", "w") do |io|
|
|
124
|
+
VaspUtils::Incar.dump(new_incar, io)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
##KPOINTS
|
|
128
|
+
new_kpoints = kpoints
|
|
129
|
+
new_kpoints[:mesh][0] = condition[:ka] if condition[:ka]
|
|
130
|
+
new_kpoints[:mesh][1] = condition[:kb] if condition[:kb]
|
|
131
|
+
new_kpoints[:mesh][2] = condition[:kc] if condition[:kc]
|
|
132
|
+
if condition[:kab]
|
|
133
|
+
new_kpoints[:mesh][0] = condition[:kab]
|
|
134
|
+
new_kpoints[:mesh][1] = condition[:kab]
|
|
135
|
+
end
|
|
136
|
+
if condition[:kbc]
|
|
137
|
+
new_kpoints[:mesh][1] = condition[:kbc]
|
|
138
|
+
new_kpoints[:mesh][2] = condition[:kbc]
|
|
139
|
+
end
|
|
140
|
+
if condition[:kca]
|
|
141
|
+
new_kpoints[:mesh][2] = condition[:kca]
|
|
142
|
+
new_kpoints[:mesh][0] = condition[:kca]
|
|
143
|
+
end
|
|
144
|
+
if condition[:kabc]
|
|
145
|
+
new_kpoints[:mesh][0] = condition[:kabc]
|
|
146
|
+
new_kpoints[:mesh][1] = condition[:kabc]
|
|
147
|
+
new_kpoints[:mesh][2] = condition[:kabc]
|
|
148
|
+
end
|
|
149
|
+
File.open("#{tgt_name}/KPOINTS", "w") do |io|
|
|
150
|
+
VaspUtils::Kpoints.dump(new_kpoints, io)
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
private
|
|
155
|
+
|
|
156
|
+
# vasp を投げる。
|
|
157
|
+
def calculate
|
|
158
|
+
#HOSTNAME is for GridEngine
|
|
159
|
+
hostname = (ENV["HOST"] || ENV["HOSTNAME"]).sub(/\..*$/, "") #ignore domain name
|
|
160
|
+
|
|
161
|
+
begin
|
|
162
|
+
clustersettings = Comana::ClusterSetting.load_file("#{ENV["HOME"]}/.clustersetting")
|
|
163
|
+
info = clustersettings.settings_host(hostname)
|
|
164
|
+
rescue
|
|
165
|
+
puts "No vasp path in #{ENV["HOME"]}/.clustersetting"
|
|
166
|
+
pp info
|
|
167
|
+
raise NoVaspBinaryError
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
if ENV["SGE_EXECD_PIDFILE"] #grid engine 経由のとき
|
|
171
|
+
nslots = ENV["NSLOTS"]
|
|
172
|
+
lines = open(ENV["PE_HOSTFILE"], "r").readlines.collect do |line|
|
|
173
|
+
line =~ /^(\S+)\s+(\S+)/
|
|
174
|
+
"#{$1} cpu=#{$2}"
|
|
175
|
+
end
|
|
176
|
+
generate_machinefile(lines)
|
|
177
|
+
else
|
|
178
|
+
nslots = 1
|
|
179
|
+
lines = ["localhost cpu=1"]
|
|
180
|
+
generate_machinefile(lines)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
raise InvalidValueError,
|
|
184
|
+
"`clustersettings' is #{clustersettings.inspect}." unless clustersettings
|
|
185
|
+
raise InvalidValueError, "`info' is #{info.inspect}." unless info
|
|
186
|
+
raise InvalidValueError, "`info['mpi']' is #{info['mpi']}" unless info['mpi']
|
|
187
|
+
raise InvalidValueError, "`info['vasp']' is #{info['vasp']}" unless info['vasp']
|
|
188
|
+
raise InvalidValueError, "`MACHINEFILE' is #{MACHINEFILE}" unless MACHINEFILE
|
|
189
|
+
raise InvalidValueError, "`nslots' is #{nslots}" unless nslots
|
|
190
|
+
raise InvalidValueError, "`nslots' is #{nslots}" unless nslots
|
|
191
|
+
|
|
192
|
+
#pp "#{info["mpi"]} -machinefile #{MACHINEFILE} -np #{nslots} #{info["vasp"]}"
|
|
193
|
+
command = "cd #{@dir};"
|
|
194
|
+
command += "#{info["mpi"]} -machinefile #{MACHINEFILE} -np #{nslots} #{info["vasp"]}"
|
|
195
|
+
command += "> stdout"
|
|
196
|
+
|
|
197
|
+
io = File.open("#{@dir}/runvasp.log", "w")
|
|
198
|
+
io.puts command
|
|
199
|
+
io.close
|
|
200
|
+
|
|
201
|
+
end_status = system command
|
|
202
|
+
raise ExecuteError, "end_status is #{end_status.inspect}" unless end_status
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def prepare_next
|
|
206
|
+
#do_nothing
|
|
207
|
+
raise PrepareNextError, "VaspDir doesn't need next."
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def generate_machinefile(lines)
|
|
211
|
+
io = File.open("#{@dir}/#{MACHINEFILE}", "w")
|
|
212
|
+
io.puts lines
|
|
213
|
+
io.close
|
|
89
214
|
end
|
|
90
|
-
command = "cd #{@dir};"
|
|
91
|
-
command += vasp
|
|
92
|
-
command += "> stdout"
|
|
93
|
-
|
|
94
|
-
end_status = system command
|
|
95
|
-
raise ExecuteError, "end_status is #{end_status.inspect}" unless end_status
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def prepare_next
|
|
99
|
-
#do_nothing
|
|
100
|
-
raise PrepareNextError, "VaspDir doesn't need next."
|
|
101
|
-
end
|
|
102
215
|
|
|
103
216
|
end
|
|
@@ -5,112 +5,245 @@ require "pp"
|
|
|
5
5
|
require "fileutils"
|
|
6
6
|
|
|
7
7
|
require "rubygems"
|
|
8
|
-
gem "comana"
|
|
9
|
-
require "comana/computationmanager.rb"
|
|
8
|
+
#gem "comana"
|
|
9
|
+
#require "comana/computationmanager.rb"
|
|
10
|
+
#require "comana/computationmanager.rb"
|
|
10
11
|
|
|
11
|
-
require "vasputils.rb"
|
|
12
|
+
#require "vasputils.rb"
|
|
12
13
|
#require "vasputils/vaspdir.rb"
|
|
13
14
|
|
|
14
15
|
#
|
|
16
|
+
#The directory must has subdirs whose name is started by 'geomopt'.
|
|
17
|
+
#This restriction of naming is necessary to distinguish from simple aggregation
|
|
18
|
+
#of vasp directories.
|
|
15
19
|
#
|
|
16
|
-
|
|
17
|
-
class
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
20
|
+
class VaspUtils::VaspGeometryOptimizer < Comana::ComputationManager
|
|
21
|
+
class NoVaspDirError < Exception; end
|
|
22
|
+
class LatestDirStartedError < Exception; end
|
|
23
|
+
class NoIntegerEndedNameError < Exception; end
|
|
24
|
+
class NoContcarError < Exception; end
|
|
25
|
+
class InitializeError < Exception; end
|
|
26
|
+
|
|
27
|
+
PREFIX = "geomopt"
|
|
28
|
+
|
|
29
|
+
def initialize(dir)
|
|
30
|
+
super(dir)
|
|
31
|
+
@lockdir = "lock_vaspgeomopt"
|
|
32
|
+
begin
|
|
33
|
+
latest_dir # to check.
|
|
34
|
+
rescue NoVaspDirError
|
|
35
|
+
raise InitializeError
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Return incremented name.
|
|
40
|
+
# If the name of VaspDir ends with string of integer,
|
|
41
|
+
# return incremental value with the basename.
|
|
42
|
+
# If not ended with integer, this method assume "00"
|
|
43
|
+
def self.next_name(name)
|
|
44
|
+
basename = name.sub(/(\d*)$/, "")
|
|
45
|
+
new_num = $1.to_i + 1
|
|
46
|
+
return basename + sprintf("%02d", new_num)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# 注目した VaspDir が yet なら実行し、続ける。
|
|
50
|
+
# yet 以外なら例外。
|
|
51
|
+
# VaspDir になっているか。
|
|
52
|
+
def calculate
|
|
53
|
+
$stdout.puts "Calculate #{latest_dir.dir}"
|
|
54
|
+
$stdout.flush
|
|
55
|
+
|
|
56
|
+
latest_dir.start
|
|
57
|
+
#dir = latest_dir
|
|
58
|
+
#while (! finished?)
|
|
59
|
+
# raise LatestDirStartedError if dir.state == :started
|
|
60
|
+
# dir.start
|
|
61
|
+
# if dir.finished?
|
|
62
|
+
# break
|
|
63
|
+
# else
|
|
64
|
+
# #dir = prepare_next
|
|
65
|
+
# puts "Geometry optimization fihished. Exit."
|
|
66
|
+
# end
|
|
67
|
+
#end
|
|
68
|
+
#puts "Geometry optimization fihished. Exit."
|
|
69
|
+
#sleep 1 # for interrupt
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# latest_dir から返って来る最新の VaspDir が finished? で真を返し、
|
|
73
|
+
# かつ Iteration が 1 であるか。
|
|
74
|
+
# Note: even when the geometry optimization does not include lattice shape,
|
|
75
|
+
# calculate will continued till to converge to Iter 1 calculation.
|
|
76
|
+
def finished?
|
|
77
|
+
return false unless latest_dir.finished?
|
|
78
|
+
return false unless latest_dir.outcar[:ionic_steps] == 1
|
|
79
|
+
return true
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Find latest VaspDir.
|
|
83
|
+
# Return a last VaspDir which has the name by name sort
|
|
84
|
+
# and which can be made as a VaspDir instance.
|
|
85
|
+
# Note: in a series of geometry optimization,
|
|
86
|
+
# the directory names should have a rule of naming
|
|
87
|
+
# which can define a method <=>.
|
|
88
|
+
# Usually, it is simple sort of String.
|
|
89
|
+
def latest_dir
|
|
90
|
+
Dir.glob("#{@dir}/#{PREFIX}*").sort.reverse.find do |dir|
|
|
91
|
+
begin
|
|
92
|
+
vd = VaspUtils::VaspDir.new(dir)
|
|
93
|
+
return vd
|
|
94
|
+
rescue VaspUtils::VaspDir::InitializeError
|
|
95
|
+
next
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
raise NoVaspDirError, @dir
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
#Keep 'geomopt00/{POSCAR,POTCAR,INCAR,POTCAR}', remove others.
|
|
102
|
+
def reset_init
|
|
103
|
+
poscars = Dir.glob("#{@dir}/#{PREFIX}*/POSCAR").sort
|
|
104
|
+
poscar = nil
|
|
105
|
+
path = nil
|
|
106
|
+
poscars.each do |poscar|
|
|
107
|
+
begin
|
|
108
|
+
VaspUtils::Poscar.load_file poscar
|
|
109
|
+
path = File.dirname(poscar)
|
|
110
|
+
break
|
|
111
|
+
rescue VaspUtils::Poscar::ParseError
|
|
112
|
+
next
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
raise NoVaspDirError unless path
|
|
116
|
+
|
|
117
|
+
##geomopt*
|
|
118
|
+
rm_list = Dir.glob "#{@dir}/#{PREFIX}*"
|
|
119
|
+
rm_list.delete path
|
|
120
|
+
##input files
|
|
121
|
+
rm_list << Dir.glob("#{path}/*")
|
|
122
|
+
rm_list.flatten!
|
|
123
|
+
["KPOINTS", "INCAR", "POTCAR", "POSCAR"].each do |file|
|
|
124
|
+
rm_list.delete "#{path}/#{file}"
|
|
125
|
+
end
|
|
126
|
+
##queeue
|
|
127
|
+
rm_list += Dir.glob "#{@dir}/lock*"
|
|
128
|
+
rm_list += Dir.glob "#{@dir}/*.sh"
|
|
129
|
+
rm_list += Dir.glob "#{@dir}/*.log"
|
|
130
|
+
rm_list += Dir.glob "#{@dir}/*.o*"
|
|
131
|
+
##remove
|
|
132
|
+
rm_list.each do |file|
|
|
133
|
+
FileUtils.rm_rf file
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
#Generate a new vaspdir as 'geomopt00'.
|
|
138
|
+
#Other directories, including old 'geomopt00', are removed.
|
|
139
|
+
def reset_next(io = $stdout)
|
|
140
|
+
begin
|
|
141
|
+
latest_dir.contcar
|
|
142
|
+
prepare_next
|
|
143
|
+
clean_queue_files
|
|
144
|
+
rescue Errno::ENOENT
|
|
145
|
+
latest_dir.reset_init(io)
|
|
146
|
+
clean_queue_files
|
|
147
|
+
rescue VaspUtils::Poscar::ParseError
|
|
148
|
+
latest_dir.reset_init(io)
|
|
149
|
+
clean_queue_files
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
#Generate a new vaspdir as 'geomopt00'.
|
|
154
|
+
#Other directories, including old 'geomopt00', are removed.
|
|
155
|
+
def reset_reincarnate
|
|
156
|
+
#CONTCAR を最後から解釈していく。
|
|
157
|
+
#全てだめだったら POSCAR を解釈する。
|
|
158
|
+
#全部だめだったら例外を投げる。
|
|
159
|
+
|
|
160
|
+
#CONTCAR を解釈できたディレクトリで INCAR, KPOINTS, POTCAR を取得。
|
|
161
|
+
#geomopt01 という名前でディレクトリを作る。
|
|
162
|
+
contcars = Dir.glob("#{@dir}/#{PREFIX}*/CONTCAR").sort.reverse
|
|
163
|
+
contcars += Dir.glob("#{@dir}/#{PREFIX}*/POSCAR").sort.reverse
|
|
164
|
+
poscar = nil
|
|
165
|
+
path = nil
|
|
166
|
+
contcars.each do |contcar|
|
|
167
|
+
begin
|
|
168
|
+
VaspUtils::Poscar.load_file contcar
|
|
169
|
+
poscar = contcar
|
|
170
|
+
path = File.dirname(contcar)
|
|
171
|
+
break
|
|
172
|
+
rescue VaspUtils::Poscar::ParseError
|
|
173
|
+
next
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
raise NoVaspDirError unless poscar
|
|
177
|
+
|
|
178
|
+
new_dir = "#{@dir}/new_#{PREFIX}00"
|
|
179
|
+
Dir.mkdir new_dir
|
|
180
|
+
FileUtils.mv("#{path}/KPOINTS", "#{new_dir}/KPOINTS")
|
|
181
|
+
FileUtils.mv("#{path}/INCAR" , "#{new_dir}/INCAR" )
|
|
182
|
+
FileUtils.mv("#{path}/POTCAR" , "#{new_dir}/POTCAR" )
|
|
183
|
+
FileUtils.mv(poscar , "#{new_dir}/POSCAR")
|
|
184
|
+
|
|
185
|
+
rm_list = Dir.glob "#{@dir}/#{PREFIX}*"
|
|
186
|
+
rm_list += Dir.glob "#{@dir}/lock*"
|
|
187
|
+
rm_list += Dir.glob "#{@dir}/*.sh"
|
|
188
|
+
rm_list += Dir.glob "#{@dir}/*.log"
|
|
189
|
+
rm_list += Dir.glob "#{@dir}/*.o*"
|
|
190
|
+
rm_list.each do |file|
|
|
191
|
+
FileUtils.rm_rf file
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
FileUtils.mv new_dir, "#{@dir}/#{PREFIX}00"
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
private
|
|
198
|
+
|
|
199
|
+
# Generate next directory from latest_dir.
|
|
200
|
+
# Need proper CONTCAR. If not, raise NoContcarError.
|
|
201
|
+
def prepare_next
|
|
202
|
+
raise NoContcarError unless File.exist? "#{latest_dir.dir}/CONTCAR"
|
|
203
|
+
|
|
204
|
+
new_dir = self.class.next_name(latest_dir.dir)
|
|
205
|
+
Dir.mkdir new_dir
|
|
206
|
+
|
|
207
|
+
#FileUtils.cp("#{latest_dir.dir}/CHG" , "#{new_dir}/CHG" )
|
|
208
|
+
#FileUtils.cp("#{latest_dir.dir}/CHGCAR" , "#{new_dir}/CHGCAR" )
|
|
209
|
+
#FileUtils.cp("#{latest_dir.dir}/DOSCAR" , "#{new_dir}/DOSCAR" )
|
|
210
|
+
#FileUtils.cp("#{latest_dir.dir}/EIGENVAL", "#{new_dir}/EIGENVAL")
|
|
211
|
+
#FileUtils.cp("#{latest_dir.dir}/INCAR" , "#{new_dir}/INCAR" )
|
|
212
|
+
#FileUtils.cp("#{latest_dir.dir}/KPOINTS" , "#{new_dir}/KPOINTS" )
|
|
213
|
+
#FileUtils.cp("#{latest_dir.dir}/OSZICAR" , "#{new_dir}/OSZICAR" )
|
|
214
|
+
#FileUtils.cp("#{latest_dir.dir}/PCDAT" , "#{new_dir}/PCDAT" )
|
|
215
|
+
#FileUtils.cp("#{latest_dir.dir}/POTCAR" , "#{new_dir}/POTCAR" )
|
|
216
|
+
#FileUtils.cp("#{latest_dir.dir}/WAVECAR" , "#{new_dir}/WAVECAR" )
|
|
217
|
+
#FileUtils.cp("#{latest_dir.dir}/XDATCAR" , "#{new_dir}/XDATCAR" )
|
|
218
|
+
|
|
219
|
+
possible_files = ["CHG", "CHGCAR", "DOSCAR", "EIGENVAL",
|
|
220
|
+
"OSZICAR", "PCDAT", "WAVECAR", "XDATCAR"]
|
|
221
|
+
possible_files.each do |file|
|
|
222
|
+
if File.exist? "#{latest_dir.dir}/#{file}"
|
|
223
|
+
FileUtils.cp("#{latest_dir.dir}/#{file}", "#{new_dir}/#{file}")
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
necessary_files = ["INCAR", "KPOINTS", "POTCAR"]
|
|
228
|
+
necessary_files.each do |file|
|
|
229
|
+
FileUtils.cp("#{latest_dir.dir}/#{file}", "#{new_dir}/#{file}")
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
FileUtils.cp("#{latest_dir.dir}/CONTCAR" , "#{new_dir}/POSCAR" ) # change name
|
|
233
|
+
# without POSCAR, OUTCAR, vasprun.xml
|
|
234
|
+
VaspUtils::VaspDir.new(new_dir)
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def clean_queue_files
|
|
238
|
+
rm_list = []
|
|
239
|
+
rm_list += Dir.glob "#{@dir}/lock*"
|
|
240
|
+
rm_list += Dir.glob "#{@dir}/*.sh"
|
|
241
|
+
rm_list += Dir.glob "#{@dir}/*.log"
|
|
242
|
+
rm_list += Dir.glob "#{@dir}/*.o*"
|
|
243
|
+
rm_list.each do |file|
|
|
244
|
+
FileUtils.rm_rf file
|
|
245
|
+
end
|
|
89
246
|
end
|
|
90
|
-
raise NoVaspDirError, @dir
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
private
|
|
94
|
-
|
|
95
|
-
# Generate next directory of latest_dir.
|
|
96
|
-
def prepare_next
|
|
97
|
-
new_dir = self.class.next_name(latest_dir.dir)
|
|
98
|
-
Dir.mkdir new_dir
|
|
99
|
-
FileUtils.cp("#{latest_dir.dir}/CHG" , "#{new_dir}/CHG" )
|
|
100
|
-
FileUtils.cp("#{latest_dir.dir}/CHGCAR" , "#{new_dir}/CHGCAR" )
|
|
101
|
-
FileUtils.cp("#{latest_dir.dir}/DOSCAR" , "#{new_dir}/DOSCAR" )
|
|
102
|
-
FileUtils.cp("#{latest_dir.dir}/EIGENVAL", "#{new_dir}/EIGENVAL")
|
|
103
|
-
FileUtils.cp("#{latest_dir.dir}/INCAR" , "#{new_dir}/INCAR" )
|
|
104
|
-
FileUtils.cp("#{latest_dir.dir}/KPOINTS" , "#{new_dir}/KPOINTS" )
|
|
105
|
-
FileUtils.cp("#{latest_dir.dir}/OSZICAR" , "#{new_dir}/OSZICAR" )
|
|
106
|
-
FileUtils.cp("#{latest_dir.dir}/PCDAT" , "#{new_dir}/PCDAT" )
|
|
107
|
-
FileUtils.cp("#{latest_dir.dir}/POTCAR" , "#{new_dir}/POTCAR" )
|
|
108
|
-
FileUtils.cp("#{latest_dir.dir}/WAVECAR" , "#{new_dir}/WAVECAR" )
|
|
109
|
-
FileUtils.cp("#{latest_dir.dir}/XDATCAR" , "#{new_dir}/XDATCAR" )
|
|
110
|
-
FileUtils.cp("#{latest_dir.dir}/CONTCAR" , "#{new_dir}/POSCAR" ) # change name
|
|
111
|
-
# without POSCAR, OUTCAR, vasprun.xml
|
|
112
|
-
VaspUtils::VaspDir.new(new_dir)
|
|
113
|
-
end
|
|
114
247
|
|
|
115
248
|
end
|
|
116
249
|
|