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.
Files changed (406) hide show
  1. data/CHANGES +49 -28
  2. data/Gemfile +10 -9
  3. data/VERSION +1 -1
  4. data/{test/vaspgeometryoptimizer/ended-Iter1/try00/CONTCAR → bin/changeincar} +0 -0
  5. data/bin/checkvasp +106 -75
  6. data/bin/genincar +4 -4
  7. data/bin/genkpoints +13 -13
  8. data/bin/genpotcar +2 -2
  9. data/bin/latticeconstants +10 -12
  10. data/bin/qsubvasp +63 -80
  11. data/bin/resetvaspdir +51 -0
  12. data/bin/resetvaspgeomopt +73 -0
  13. data/bin/runvasp +42 -49
  14. data/bin/runvaspdir +19 -0
  15. data/bin/runvaspgeomopt +19 -0
  16. data/bin/showvaspdir +171 -0
  17. data/bin/showvaspgeomopt +83 -0
  18. data/bin/symposcar +89 -113
  19. data/bin/varycondition +28 -0
  20. data/example/dot.vasputils +26 -232
  21. data/lib/vasputils/conditionvarier.rb +157 -0
  22. data/lib/vasputils/incar.rb +40 -43
  23. data/lib/vasputils/kpoints.rb +31 -33
  24. data/lib/vasputils/outcar.rb +53 -53
  25. data/lib/vasputils/poscar.rb +148 -150
  26. data/lib/vasputils/potcar/concatenater.rb +22 -22
  27. data/lib/vasputils/potcar.rb +12 -12
  28. data/lib/vasputils/setting.rb +22 -22
  29. data/lib/vasputils/vaspdir.rb +199 -86
  30. data/lib/vasputils/vaspgeometryoptimizer.rb +233 -100
  31. data/lib/vasputils.rb +7 -65
  32. data/test/conditionanalyzer/00/POSCAR +8 -0
  33. data/test/conditionanalyzer/00/encut400_k444/CONTCAR +8 -0
  34. data/test/conditionanalyzer/00/encut400_k444/INCAR +28 -0
  35. data/test/conditionanalyzer/00/encut400_k444/KPOINTS +6 -0
  36. data/test/conditionanalyzer/00/encut400_k444/OUTCAR +1436 -0
  37. data/test/conditionanalyzer/00/encut400_k444/POSCAR +8 -0
  38. data/test/conditionanalyzer/00/encut400_k444/POTCAR +16 -0
  39. data/test/conditionanalyzer/00/encut400_k555/CONTCAR +8 -0
  40. data/test/conditionanalyzer/00/encut400_k555/INCAR +28 -0
  41. data/test/conditionanalyzer/00/encut400_k555/KPOINTS +6 -0
  42. data/test/conditionanalyzer/00/encut400_k555/OUTCAR +1436 -0
  43. data/test/conditionanalyzer/00/encut400_k555/POSCAR +8 -0
  44. data/test/conditionanalyzer/00/encut400_k555/POTCAR +16 -0
  45. data/test/conditionanalyzer/00/encut500_k444/CONTCAR +8 -0
  46. data/test/conditionanalyzer/00/encut500_k444/INCAR +28 -0
  47. data/test/conditionanalyzer/00/encut500_k444/KPOINTS +6 -0
  48. data/test/conditionanalyzer/00/encut500_k444/OUTCAR +1436 -0
  49. data/test/conditionanalyzer/00/encut500_k444/POSCAR +8 -0
  50. data/test/conditionanalyzer/00/encut500_k444/POTCAR +16 -0
  51. data/test/conditionanalyzer/00/encut500_k555/CONTCAR +8 -0
  52. data/test/conditionanalyzer/00/encut500_k555/INCAR +28 -0
  53. data/test/conditionanalyzer/00/encut500_k555/KPOINTS +6 -0
  54. data/test/conditionanalyzer/00/encut500_k555/OUTCAR +1436 -0
  55. data/test/conditionanalyzer/00/encut500_k555/POSCAR +8 -0
  56. data/test/conditionanalyzer/00/encut500_k555/POTCAR +16 -0
  57. data/test/{vaspkpointsfinder/01-01-01/try00 → conditionanalyzer/01/00-original}/INCAR +3 -3
  58. data/test/conditionanalyzer/01/00-original/KPOINTS +6 -0
  59. data/test/conditionanalyzer/01/00-original/POSCAR +10 -0
  60. data/test/conditionanalyzer/01/01-ENCUT/1000/try02/CONTCAR +13 -0
  61. data/test/conditionanalyzer/01/01-ENCUT/1000/try02/INCAR +17 -0
  62. data/test/conditionanalyzer/01/01-ENCUT/1000/try02/KPOINTS +6 -0
  63. data/test/conditionanalyzer/01/01-ENCUT/1000/try02/OUTCAR +1692 -0
  64. data/test/conditionanalyzer/01/01-ENCUT/1000/try02/POSCAR +13 -0
  65. data/test/conditionanalyzer/01/01-ENCUT/1200/try02/CONTCAR +13 -0
  66. data/test/conditionanalyzer/01/01-ENCUT/1200/try02/INCAR +17 -0
  67. data/test/conditionanalyzer/01/01-ENCUT/1200/try02/KPOINTS +6 -0
  68. data/test/conditionanalyzer/01/01-ENCUT/1200/try02/OUTCAR +1692 -0
  69. data/test/conditionanalyzer/01/01-ENCUT/1200/try02/POSCAR +13 -0
  70. data/test/conditionanalyzer/01/01-ENCUT/1500/try02/CONTCAR +13 -0
  71. data/test/conditionanalyzer/01/01-ENCUT/1500/try02/INCAR +17 -0
  72. data/test/conditionanalyzer/01/01-ENCUT/1500/try02/KPOINTS +6 -0
  73. data/test/conditionanalyzer/01/01-ENCUT/1500/try02/OUTCAR +1742 -0
  74. data/test/conditionanalyzer/01/01-ENCUT/1500/try02/POSCAR +13 -0
  75. data/test/conditionanalyzer/01/01-ENCUT/500/try05/CONTCAR +13 -0
  76. data/test/conditionanalyzer/01/01-ENCUT/500/try05/INCAR +17 -0
  77. data/test/conditionanalyzer/01/01-ENCUT/500/try05/KPOINTS +6 -0
  78. data/test/conditionanalyzer/01/01-ENCUT/500/try05/OUTCAR +1644 -0
  79. data/test/conditionanalyzer/01/01-ENCUT/500/try05/POSCAR +13 -0
  80. data/test/conditionanalyzer/01/01-ENCUT/600/try01/CONTCAR +13 -0
  81. data/test/conditionanalyzer/01/01-ENCUT/600/try01/INCAR +17 -0
  82. data/test/conditionanalyzer/01/01-ENCUT/600/try01/KPOINTS +6 -0
  83. data/test/conditionanalyzer/01/01-ENCUT/600/try01/OUTCAR +1644 -0
  84. data/test/conditionanalyzer/01/01-ENCUT/600/try01/POSCAR +13 -0
  85. data/test/conditionanalyzer/01/01-ENCUT/700/try01/CONTCAR +13 -0
  86. data/test/conditionanalyzer/01/01-ENCUT/700/try01/INCAR +17 -0
  87. data/test/conditionanalyzer/01/01-ENCUT/700/try01/KPOINTS +6 -0
  88. data/test/conditionanalyzer/01/01-ENCUT/700/try01/OUTCAR +1644 -0
  89. data/test/conditionanalyzer/01/01-ENCUT/700/try01/POSCAR +13 -0
  90. data/test/conditionanalyzer/01/01-ENCUT/800/try01/CONTCAR +13 -0
  91. data/test/conditionanalyzer/01/01-ENCUT/800/try01/INCAR +17 -0
  92. data/test/conditionanalyzer/01/01-ENCUT/800/try01/KPOINTS +6 -0
  93. data/test/conditionanalyzer/01/01-ENCUT/800/try01/OUTCAR +3610 -0
  94. data/test/conditionanalyzer/01/01-ENCUT/800/try01/POSCAR +10 -0
  95. data/test/conditionanalyzer/01/01-ENCUT/900/try01/CONTCAR +13 -0
  96. data/test/conditionanalyzer/01/01-ENCUT/900/try01/INCAR +17 -0
  97. data/test/conditionanalyzer/01/01-ENCUT/900/try01/KPOINTS +6 -0
  98. data/test/conditionanalyzer/01/01-ENCUT/900/try01/OUTCAR +1692 -0
  99. data/test/conditionanalyzer/01/01-ENCUT/900/try01/POSCAR +13 -0
  100. data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/CONTCAR +13 -0
  101. data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/INCAR +17 -0
  102. data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/KPOINTS +6 -0
  103. data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/OUTCAR +12318 -0
  104. data/test/conditionanalyzer/01/02-KPOINTS/16x16x16/try07/POSCAR +13 -0
  105. data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/CONTCAR +13 -0
  106. data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/INCAR +17 -0
  107. data/test/{vaspkpointsfinder/01-01-01/try00 → conditionanalyzer/01/02-KPOINTS/1x1x1/try07}/KPOINTS +1 -1
  108. data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/OUTCAR +1337 -0
  109. data/test/conditionanalyzer/01/02-KPOINTS/1x1x1/try07/POSCAR +13 -0
  110. data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/CONTCAR +13 -0
  111. data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/INCAR +17 -0
  112. data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/KPOINTS +6 -0
  113. data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/OUTCAR +9885 -0
  114. data/test/conditionanalyzer/01/02-KPOINTS/2x2x2/try10/POSCAR +13 -0
  115. data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/CONTCAR +13 -0
  116. data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/INCAR +17 -0
  117. data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/KPOINTS +6 -0
  118. data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/OUTCAR +72342 -0
  119. data/test/conditionanalyzer/01/02-KPOINTS/32x32x32/try06/POSCAR +13 -0
  120. data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/CONTCAR +13 -0
  121. data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/INCAR +17 -0
  122. data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/KPOINTS +6 -0
  123. data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/OUTCAR +139254 -0
  124. data/test/conditionanalyzer/01/02-KPOINTS/32x32x64/try04/POSCAR +13 -0
  125. data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/CONTCAR +13 -0
  126. data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/INCAR +17 -0
  127. data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/KPOINTS +6 -0
  128. data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/OUTCAR +1644 -0
  129. data/test/conditionanalyzer/01/02-KPOINTS/4x4x4/try05/POSCAR +13 -0
  130. data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/INCAR +17 -0
  131. data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/KPOINTS +6 -0
  132. data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/OUTCAR +507061 -0
  133. data/test/conditionanalyzer/01/02-KPOINTS/64x64x64/POSCAR +10 -0
  134. data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/CONTCAR +13 -0
  135. data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/INCAR +17 -0
  136. data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/KPOINTS +6 -0
  137. data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/OUTCAR +3298 -0
  138. data/test/conditionanalyzer/01/02-KPOINTS/8x8x8/try05/POSCAR +13 -0
  139. data/test/conditionanalyzer/mixed_conditions/orthorhombic/CONTCAR +17 -0
  140. data/test/conditionanalyzer/mixed_conditions/orthorhombic/INCAR +28 -0
  141. data/test/conditionanalyzer/mixed_conditions/orthorhombic/KPOINTS +6 -0
  142. data/test/conditionanalyzer/mixed_conditions/orthorhombic/OUTCAR +1436 -0
  143. data/test/conditionanalyzer/mixed_conditions/orthorhombic/POSCAR +12 -0
  144. data/test/conditionanalyzer/mixed_conditions/orthorhombic/POTCAR +16 -0
  145. data/test/conditionanalyzer/mixed_conditions/tetragonal/CONTCAR +17 -0
  146. data/test/conditionanalyzer/mixed_conditions/tetragonal/INCAR +28 -0
  147. data/test/conditionanalyzer/mixed_conditions/tetragonal/KPOINTS +6 -0
  148. data/test/conditionanalyzer/mixed_conditions/tetragonal/OUTCAR +1436 -0
  149. data/test/conditionanalyzer/mixed_conditions/tetragonal/POSCAR +12 -0
  150. data/test/conditionanalyzer/mixed_conditions/tetragonal/POTCAR +16 -0
  151. data/test/conditionanalyzer/picker/encut400_k444-cubic/INCAR +28 -0
  152. data/test/conditionanalyzer/picker/encut400_k444-cubic/KPOINTS +6 -0
  153. data/test/conditionanalyzer/picker/encut400_k444-cubic/OUTCAR +1436 -0
  154. data/test/conditionanalyzer/picker/encut400_k444-cubic/POSCAR +9 -0
  155. data/test/conditionanalyzer/picker/encut400_k444-cubic/POTCAR +16 -0
  156. data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/INCAR +28 -0
  157. data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/KPOINTS +6 -0
  158. data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/OUTCAR +1436 -0
  159. data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/POSCAR +9 -0
  160. data/test/conditionanalyzer/picker/encut400_k444-tetragonal-b/POTCAR +16 -0
  161. data/test/conditionanalyzer/picker/encut400_k444-unfinished/INCAR +28 -0
  162. data/test/conditionanalyzer/picker/encut400_k444-unfinished/KPOINTS +6 -0
  163. data/test/conditionanalyzer/picker/encut400_k444-unfinished/OUTCAR +1381 -0
  164. data/test/conditionanalyzer/picker/encut400_k444-unfinished/POSCAR +12 -0
  165. data/test/conditionanalyzer/picker/encut400_k444-unfinished/POTCAR +16 -0
  166. data/test/conditionanalyzer/picker/hexiagonal/CONTCAR +13 -0
  167. data/test/conditionanalyzer/picker/hexiagonal/INCAR +17 -0
  168. data/test/conditionanalyzer/picker/hexiagonal/KPOINTS +6 -0
  169. data/test/conditionanalyzer/picker/hexiagonal/OUTCAR +1644 -0
  170. data/test/conditionanalyzer/picker/hexiagonal/POSCAR +13 -0
  171. data/test/conditionvarier/standard/INCAR +28 -0
  172. data/test/conditionvarier/standard/KPOINTS +6 -0
  173. data/test/conditionvarier/standard/POSCAR +12 -0
  174. data/test/conditionvarier/standard/POTCAR +16 -0
  175. data/test/helper.rb +4 -4
  176. data/test/poscar/symmetry/cubic/POSCAR +8 -0
  177. data/test/poscar/symmetry/hexagonal/POSCAR +8 -0
  178. data/test/poscar/symmetry/monoclinic/POSCAR +8 -0
  179. data/test/poscar/symmetry/orthorhombic/POSCAR +8 -0
  180. data/test/poscar/symmetry/tetragonal/POSCAR +8 -0
  181. data/test/poscar/symmetry/tetragonal-b/POSCAR +8 -0
  182. data/test/poscar/symmetry/triclinic/POSCAR +10 -0
  183. data/test/poscar/symmetry/trigonal/POSCAR +9 -0
  184. data/test/test_conditionvarier.rb +201 -0
  185. data/test/test_incar.rb +144 -144
  186. data/test/test_kpoints.rb +91 -91
  187. data/test/test_outcar.rb +154 -154
  188. data/test/test_poscar.rb +263 -262
  189. data/test/test_potcar.rb +31 -31
  190. data/test/test_potcar_concatenater.rb +39 -39
  191. data/test/test_setting.rb +15 -14
  192. data/test/test_vaspdir.rb +193 -126
  193. data/test/test_vaspgeometryoptimizer.rb +177 -78
  194. data/test/test_vasputils.rb +48 -48
  195. data/test/vaspdir/reset_init/finished/orig/CONTCAR +17 -0
  196. data/test/vaspdir/reset_init/finished/orig/INCAR +27 -0
  197. data/test/vaspdir/reset_init/finished/orig/KPOINTS +6 -0
  198. data/test/vaspdir/reset_init/finished/orig/OUTCAR +1436 -0
  199. data/test/vaspdir/reset_init/finished/orig/POSCAR +12 -0
  200. data/test/vaspdir/reset_init/finished/orig/POTCAR +16 -0
  201. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/CONTCAR +17 -0
  202. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/INCAR +27 -0
  203. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/KPOINTS +6 -0
  204. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/OUTCAR +1436 -0
  205. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/POSCAR +12 -0
  206. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir0/POTCAR +16 -0
  207. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/CONTCAR +17 -0
  208. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/INCAR +27 -0
  209. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/KPOINTS +6 -0
  210. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/OUTCAR +1436 -0
  211. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/POSCAR +12 -0
  212. data/test/vaspgeometryoptimizer/multiple_vaspdir/vaspdir1/POTCAR +16 -0
  213. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/DOSCAR +0 -0
  214. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/EIGENVAL +0 -0
  215. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/INCAR +0 -0
  216. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/KPOINTS +0 -0
  217. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/OSZICAR +0 -0
  218. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/OUTCAR +0 -0
  219. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/PCDAT +0 -0
  220. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/POSCAR +0 -0
  221. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/POTCAR +0 -0
  222. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/WAVECAR +0 -0
  223. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/XDATCAR +0 -0
  224. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt00/vasprun.xml +0 -0
  225. data/test/vaspgeometryoptimizer/prepare_next/no-contcar/geomopt01/.gitignore +0 -0
  226. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/CHG +0 -0
  227. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/CHGCAR +0 -0
  228. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/CONTCAR +0 -0
  229. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/DOSCAR +0 -0
  230. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/EIGENVAL +0 -0
  231. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/INCAR +0 -0
  232. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/KPOINTS +0 -0
  233. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/OSZICAR +0 -0
  234. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/OUTCAR +0 -0
  235. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/PCDAT +0 -0
  236. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/POSCAR +0 -0
  237. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/POTCAR +0 -0
  238. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/WAVECAR +0 -0
  239. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/XDATCAR +0 -0
  240. data/test/vaspgeometryoptimizer/prepare_next/normal/geomopt00/vasprun.xml +0 -0
  241. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/CONTCAR +12 -0
  242. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/INCAR +0 -0
  243. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/KPOINTS +0 -0
  244. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/OUTCAR +0 -0
  245. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/POSCAR +12 -0
  246. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt00/POTCAR +0 -0
  247. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/CONTCAR +12 -0
  248. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/INCAR +0 -0
  249. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/KPOINTS +0 -0
  250. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/OUTCAR +0 -0
  251. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/POSCAR +12 -0
  252. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt01/POTCAR +0 -0
  253. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/CONTCAR +0 -0
  254. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/INCAR +0 -0
  255. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/KPOINTS +0 -0
  256. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/POSCAR +12 -0
  257. data/test/vaspgeometryoptimizer/reset_init/orig/geomopt02/POTCAR +0 -0
  258. data/test/vaspgeometryoptimizer/reset_init/orig/lock_vaspgeomopt/dummy +0 -0
  259. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/CONTCAR +12 -0
  260. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/INCAR +0 -0
  261. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/KPOINTS +0 -0
  262. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/OUTCAR +0 -0
  263. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/POSCAR +12 -0
  264. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt00/POTCAR +0 -0
  265. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/CONTCAR +12 -0
  266. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/INCAR +0 -0
  267. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/KPOINTS +0 -0
  268. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/OUTCAR +0 -0
  269. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/POSCAR +12 -0
  270. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt01/POTCAR +0 -0
  271. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/CONTCAR +0 -0
  272. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/INCAR +0 -0
  273. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/KPOINTS +0 -0
  274. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/OUTCAR +0 -0
  275. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/POSCAR +12 -0
  276. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/geomopt02/POTCAR +0 -0
  277. data/test/vaspgeometryoptimizer/reset_next/empty-contcar/orig/lock_vaspgeomopt/dummy +0 -0
  278. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/CONTCAR +12 -0
  279. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/INCAR +0 -0
  280. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/KPOINTS +0 -0
  281. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/OUTCAR +0 -0
  282. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/POSCAR +12 -0
  283. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt00/POTCAR +0 -0
  284. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/CONTCAR +12 -0
  285. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/INCAR +0 -0
  286. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/KPOINTS +0 -0
  287. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/OUTCAR +0 -0
  288. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/POSCAR +12 -0
  289. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt01/POTCAR +0 -0
  290. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/INCAR +0 -0
  291. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/KPOINTS +0 -0
  292. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/POSCAR +12 -0
  293. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/geomopt02/POTCAR +0 -0
  294. data/test/vaspgeometryoptimizer/reset_next/no-contcar/orig/lock_vaspgeomopt/dummy +0 -0
  295. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/CONTCAR +12 -0
  296. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/INCAR +0 -0
  297. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/KPOINTS +0 -0
  298. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/OUTCAR +0 -0
  299. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/POSCAR +12 -0
  300. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt00/POTCAR +0 -0
  301. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/CONTCAR +12 -0
  302. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/INCAR +0 -0
  303. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/KPOINTS +0 -0
  304. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/OUTCAR +0 -0
  305. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/POSCAR +12 -0
  306. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt01/POTCAR +0 -0
  307. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/CONTCAR +12 -0
  308. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/INCAR +0 -0
  309. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/KPOINTS +0 -0
  310. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/POSCAR +12 -0
  311. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/geomopt02/POTCAR +0 -0
  312. data/test/vaspgeometryoptimizer/reset_next/poscar-contcar/orig/lock_vaspgeomopt/dummy +0 -0
  313. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/CONTCAR +12 -0
  314. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/INCAR +0 -0
  315. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/KPOINTS +0 -0
  316. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/OUTCAR +0 -0
  317. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/POSCAR +12 -0
  318. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt00/POTCAR +0 -0
  319. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/CONTCAR +12 -0
  320. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/INCAR +0 -0
  321. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/KPOINTS +0 -0
  322. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/OUTCAR +0 -0
  323. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/POSCAR +12 -0
  324. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt01/POTCAR +0 -0
  325. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/CONTCAR +0 -0
  326. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/INCAR +0 -0
  327. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/KPOINTS +0 -0
  328. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/POSCAR +12 -0
  329. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/geomopt02/POTCAR +0 -0
  330. data/test/vaspgeometryoptimizer/reset_reincarnation/orig/lock_vaspgeomopt/dummy +0 -0
  331. data/test/vaspgeometryoptimizer/started/geomopt00/INCAR +0 -0
  332. data/test/vaspgeometryoptimizer/started/geomopt00/KPOINTS +0 -0
  333. data/test/vaspgeometryoptimizer/started/geomopt00/POSCAR +0 -0
  334. data/test/vaspgeometryoptimizer/started/geomopt00/POTCAR +0 -0
  335. data/test/vaspgeometryoptimizer/till01/geomopt00/CONTCAR +0 -0
  336. data/test/vaspgeometryoptimizer/till01/geomopt00/INCAR +0 -0
  337. data/test/vaspgeometryoptimizer/till01/geomopt00/KPOINTS +0 -0
  338. data/test/vaspgeometryoptimizer/till01/geomopt00/OUTCAR +0 -0
  339. data/test/vaspgeometryoptimizer/till01/geomopt00/POSCAR +0 -0
  340. data/test/vaspgeometryoptimizer/till01/geomopt00/POTCAR +0 -0
  341. data/test/vaspgeometryoptimizer/till01/geomopt01/INCAR +0 -0
  342. data/test/vaspgeometryoptimizer/till01/geomopt01/KPOINTS +0 -0
  343. data/test/vaspgeometryoptimizer/till01/geomopt01/POSCAR +0 -0
  344. data/test/vaspgeometryoptimizer/till01/geomopt01/POTCAR +0 -0
  345. metadata +464 -106
  346. data/bin/genvaspdir +0 -17
  347. data/bin/rmvaspout +0 -40
  348. data/lib/vasputils/vaspkpointsfinder.rb +0 -72
  349. data/test/test_vaspkpointsfinder.rb +0 -25
  350. data/test/vaspkpointsfinder/01-01-01/try00/POSCAR +0 -8
  351. data/vasputils.gemspec +0 -567
  352. /data/test/{vaspgeometryoptimizer/ended-Iter1/try00 → conditionanalyzer/01/00-original}/POTCAR +0 -0
  353. /data/test/{vaspgeometryoptimizer/ended-Iter1/try01 → conditionanalyzer/01/01-ENCUT/1000/try02}/POTCAR +0 -0
  354. /data/test/{vaspgeometryoptimizer/ended-Iter2/try00 → conditionanalyzer/01/01-ENCUT/1200/try02}/POTCAR +0 -0
  355. /data/test/{vaspgeometryoptimizer/ended-Iter2/try01 → conditionanalyzer/01/01-ENCUT/1500/try02}/POTCAR +0 -0
  356. /data/test/{vaspgeometryoptimizer/not-yet/try00 → conditionanalyzer/01/01-ENCUT/500/try05}/POTCAR +0 -0
  357. /data/test/{vaspgeometryoptimizer/prepare_next/try00 → conditionanalyzer/01/01-ENCUT/600/try01}/POTCAR +0 -0
  358. /data/test/{vaspgeometryoptimizer/started/try00 → conditionanalyzer/01/01-ENCUT/700/try01}/POTCAR +0 -0
  359. /data/test/{vaspgeometryoptimizer/till01/try00 → conditionanalyzer/01/01-ENCUT/800/try01}/POTCAR +0 -0
  360. /data/test/{vaspgeometryoptimizer/till01 → conditionanalyzer/01/01-ENCUT/900}/try01/POTCAR +0 -0
  361. /data/test/{vaspkpointsfinder/01-01-01/try00 → conditionanalyzer/01/02-KPOINTS/16x16x16/try07}/POTCAR +0 -0
  362. /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/INCAR → conditionanalyzer/01/02-KPOINTS/1x1x1/try07/POTCAR} +0 -0
  363. /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/KPOINTS → conditionanalyzer/01/02-KPOINTS/2x2x2/try10/POTCAR} +0 -0
  364. /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/OUTCAR → conditionanalyzer/01/02-KPOINTS/32x32x32/try06/POTCAR} +0 -0
  365. /data/test/{vaspgeometryoptimizer/ended-Iter1/try00/POSCAR → conditionanalyzer/01/02-KPOINTS/32x32x64/try04/POTCAR} +0 -0
  366. /data/test/{vaspgeometryoptimizer/ended-Iter1/try01/INCAR → conditionanalyzer/01/02-KPOINTS/4x4x4/try05/POTCAR} +0 -0
  367. /data/test/{vaspgeometryoptimizer/ended-Iter2/try00 → conditionanalyzer/01/02-KPOINTS/64x64x64}/CONTCAR +0 -0
  368. /data/test/{vaspgeometryoptimizer/ended-Iter1/try01/KPOINTS → conditionanalyzer/01/02-KPOINTS/64x64x64/POTCAR} +0 -0
  369. /data/test/{vaspgeometryoptimizer/ended-Iter1/try01/POSCAR → conditionanalyzer/01/02-KPOINTS/8x8x8/try05/POTCAR} +0 -0
  370. /data/test/{vaspgeometryoptimizer/ended-Iter2/try00/INCAR → conditionanalyzer/picker/hexiagonal/POTCAR} +0 -0
  371. /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter1/geomopt00}/CONTCAR +0 -0
  372. /data/test/vaspgeometryoptimizer/{ended-Iter2/try01 → ended-Iter1/geomopt00}/INCAR +0 -0
  373. /data/test/vaspgeometryoptimizer/{ended-Iter2/try00 → ended-Iter1/geomopt00}/KPOINTS +0 -0
  374. /data/test/vaspgeometryoptimizer/{ended-Iter2/try00 → ended-Iter1/geomopt00}/OUTCAR +0 -0
  375. /data/test/vaspgeometryoptimizer/{ended-Iter2/try00 → ended-Iter1/geomopt00}/POSCAR +0 -0
  376. /data/test/vaspgeometryoptimizer/{ended-Iter2/try01/KPOINTS → ended-Iter1/geomopt00/POTCAR} +0 -0
  377. /data/test/vaspgeometryoptimizer/{not-yet/try00 → ended-Iter1/geomopt01}/INCAR +0 -0
  378. /data/test/vaspgeometryoptimizer/{not-yet/try00 → ended-Iter1/geomopt01}/KPOINTS +0 -0
  379. /data/test/vaspgeometryoptimizer/ended-Iter1/{try01 → geomopt01}/OUTCAR +0 -0
  380. /data/test/vaspgeometryoptimizer/{ended-Iter2/try01 → ended-Iter1/geomopt01}/POSCAR +0 -0
  381. /data/test/vaspgeometryoptimizer/{not-yet/try00/POSCAR → ended-Iter1/geomopt01/POTCAR} +0 -0
  382. /data/test/vaspgeometryoptimizer/{till01/try00 → ended-Iter2/geomopt00}/CONTCAR +0 -0
  383. /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/INCAR +0 -0
  384. /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/KPOINTS +0 -0
  385. /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/OUTCAR +0 -0
  386. /data/test/vaspgeometryoptimizer/{prepare_next/try00 → ended-Iter2/geomopt00}/POSCAR +0 -0
  387. /data/test/vaspgeometryoptimizer/{prepare_next/try00/CHG → ended-Iter2/geomopt00/POTCAR} +0 -0
  388. /data/test/vaspgeometryoptimizer/{started/try00 → ended-Iter2/geomopt01}/INCAR +0 -0
  389. /data/test/vaspgeometryoptimizer/{started/try00 → ended-Iter2/geomopt01}/KPOINTS +0 -0
  390. /data/test/vaspgeometryoptimizer/ended-Iter2/{try01 → geomopt01}/OUTCAR +0 -0
  391. /data/test/vaspgeometryoptimizer/{started/try00 → ended-Iter2/geomopt01}/POSCAR +0 -0
  392. /data/test/vaspgeometryoptimizer/{prepare_next/try00/CHGCAR → ended-Iter2/geomopt01/POTCAR} +0 -0
  393. /data/test/vaspgeometryoptimizer/{till01/try00 → not-geomopt/not-geomopt-subdir/calcA}/INCAR +0 -0
  394. /data/test/vaspgeometryoptimizer/{till01/try00 → not-geomopt/not-geomopt-subdir/calcA}/KPOINTS +0 -0
  395. /data/test/vaspgeometryoptimizer/{till01/try00 → not-geomopt/not-geomopt-subdir/calcA}/POSCAR +0 -0
  396. /data/test/vaspgeometryoptimizer/{prepare_next/try00/DOSCAR → not-geomopt/not-geomopt-subdir/calcA/POTCAR} +0 -0
  397. /data/test/vaspgeometryoptimizer/{till01/try01 → not-geomopt/not-geomopt-subdir/calcB}/INCAR +0 -0
  398. /data/test/vaspgeometryoptimizer/{till01/try01 → not-geomopt/not-geomopt-subdir/calcB}/KPOINTS +0 -0
  399. /data/test/vaspgeometryoptimizer/{till01/try01 → not-geomopt/not-geomopt-subdir/calcB}/POSCAR +0 -0
  400. /data/test/vaspgeometryoptimizer/{prepare_next/try00/EIGENVAL → not-geomopt/not-geomopt-subdir/calcB/POTCAR} +0 -0
  401. /data/test/vaspgeometryoptimizer/{prepare_next/try00/OSZICAR → not-yet/geomopt00/INCAR} +0 -0
  402. /data/test/vaspgeometryoptimizer/{prepare_next/try00/PCDAT → not-yet/geomopt00/KPOINTS} +0 -0
  403. /data/test/vaspgeometryoptimizer/{prepare_next/try00/WAVECAR → not-yet/geomopt00/POSCAR} +0 -0
  404. /data/test/vaspgeometryoptimizer/{prepare_next/try00/XDATCAR → not-yet/geomopt00/POTCAR} +0 -0
  405. /data/test/vaspgeometryoptimizer/prepare_next/{try00/vasprun.xml → no-contcar/geomopt00/CHG} +0 -0
  406. /data/test/vaspgeometryoptimizer/{till01/try00/OUTCAR → prepare_next/no-contcar/geomopt00/CHGCAR} +0 -0
@@ -0,0 +1,157 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ #
5
+ #
6
+ #
7
+ class VaspUtils::ConditionVarier
8
+ class InvalidOptionError < Exception; end
9
+ class ArgumentError < Exception; end
10
+
11
+ #
12
+ def initialize(standard_vaspdir, options)
13
+ @standard_vaspdir = VaspUtils::VaspDir.new(standard_vaspdir)
14
+ self.class.check_sanity_options(options)
15
+
16
+ @options = {}
17
+ [:ka, :kb, :kc, :kab, :kbc, :kca, :kabc].each do |key|
18
+ next unless options[key]
19
+ @options[key] = self.class.integers(options[key])
20
+ end
21
+ [:encut].each do |key|
22
+ next unless options[key]
23
+ @options[key] = self.class.floats(options[key])
24
+ end
25
+
26
+ end
27
+
28
+ def self.integers(str)
29
+ str.split(",").map{|val| val.to_i}
30
+ end
31
+
32
+ def self.floats(str)
33
+ str.split(",").map{|val| val.to_f}
34
+ end
35
+
36
+ def self.check_sanity_options(options)
37
+ counts = {:a => 0, :b => 0, :c => 0}
38
+ if options.keys.include?(:ka)
39
+ counts[:a] += 1
40
+ end
41
+ if options.keys.include?(:kb)
42
+ counts[:b] += 1
43
+ end
44
+ if options.keys.include?(:kc)
45
+ counts[:c] += 1
46
+ end
47
+ if options.keys.include?(:kab)
48
+ counts[:a] += 1
49
+ counts[:b] += 1
50
+ end
51
+ if options.keys.include?(:kbc)
52
+ counts[:b] += 1
53
+ counts[:c] += 1
54
+ end
55
+ if options.keys.include?(:kca)
56
+ counts[:c] += 1
57
+ counts[:a] += 1
58
+ end
59
+ if options.keys.include?(:kabc)
60
+ counts[:a] += 1
61
+ counts[:b] += 1
62
+ counts[:c] += 1
63
+ end
64
+
65
+ if counts[:a] > 1
66
+ raise InvalidOptionError, "Error: ka mesh is duplicated."
67
+ end
68
+ if counts[:b] > 1
69
+ raise InvalidOptionError, "Error: kb mesh is duplicated."
70
+ end
71
+ if counts[:c] > 1
72
+ raise InvalidOptionError, "Error: kc mesh is duplicated."
73
+ end
74
+ end
75
+
76
+ # Argument 'ary' is Array of Integer's.
77
+ # Return all variation of integers less than Integer's.
78
+ def self.mesh_points(ary)
79
+ raise ArgumentError, "Argument ary is empty: #{ary.inspect}" if ary.empty?
80
+ raise ArgumentError, "Argument ary is not Array: #{ary.inspect}" unless ary.is_a? Array
81
+
82
+ if ary.size == 1
83
+ results = Array.new
84
+ ary[0].times do |i|
85
+ results[i] = [i]
86
+ end
87
+ return results
88
+ elsif ary.size > 1
89
+ variation = ary.shift
90
+ right_ary = self.mesh_points(ary)
91
+
92
+ results = Array.new
93
+ variation.times do |i|
94
+ right_ary.each do |ary|
95
+ #p [i, *ary]
96
+ results.push([i, *ary])
97
+ end
98
+ end
99
+ return results
100
+ else
101
+ raise RuntimeError, "Must not happen!"
102
+ end
103
+ end
104
+
105
+ def self.hash_to_s(hash)
106
+ result = []
107
+ hash.keys.sort.each do |key|
108
+ result.push( key.to_s + "_" + hash[key].to_s)
109
+ end
110
+ result = result.join(",")
111
+ #pp result
112
+ result
113
+ end
114
+
115
+ def generate_condition_dirs(tgt_dir = ".")
116
+ keys = @options.keys.sort
117
+ # as order of 'keys'
118
+
119
+ sizes = []
120
+ keys.each do |key|
121
+ sizes.push( @options[key].size)
122
+ end
123
+
124
+ mesh_indices = self.class.mesh_points(sizes)
125
+
126
+ #p @options
127
+ #p keys
128
+ #p sizes
129
+ #p mesh_indices
130
+
131
+ conditions_list = []
132
+ mesh_indices.each do |ary|
133
+ conditions = {}
134
+ keys.size.times do |i|
135
+ key = keys[i]
136
+ conditions[key] = @options[key][ary[i]]
137
+ end
138
+ conditions_list << conditions
139
+ end
140
+ #pp conditions_list
141
+
142
+ conditions_list.each do |conditions|
143
+ dirname = self.class.hash_to_s(conditions)
144
+ #pp conditions.to_s
145
+ if File.exist? dirname
146
+ puts "#{dirname} is already exist."
147
+ next
148
+ end
149
+ #pp conditions
150
+ #pp dirname
151
+ dirname = tgt_dir + "/" + dirname
152
+ @standard_vaspdir.mutate(dirname, conditions)
153
+ end
154
+ end
155
+
156
+ end
157
+
@@ -1,65 +1,62 @@
1
1
  #! /usr/bin/env ruby
2
2
  # coding: utf-8
3
3
 
4
- require "vasputils.rb"
4
+ #require "vasputils.rb"
5
5
 
6
6
  # see http://cms.mpi.univie.ac.at/vasp/vasp/INCAR_File.html
7
7
  #
8
8
  # INCAR のフォーマット
9
- # - 基本 1行 1項目。
10
- # - = 区切りで左辺の項目名に対して右辺の値になる。
11
- # - 半角# のあと、コメント
9
+ # - 基本 1行 1項目。
10
+ # - = 区切りで左辺の項目名に対して右辺の値になる。
11
+ # - 半角# のあと、コメント
12
12
  #
13
13
  # TODO, Future feature
14
14
  # INCAR のフォーマット
15
- # - 右辺のあとの文字列は、セミコロンでなければ無視される。
16
- # - ; 区切りで1行に複数の項目を設定できる。
17
- # - \ で次の行に設定を続けることができる。
15
+ # - 右辺のあとの文字列は、セミコロンでなければ無視される。
16
+ # - ; 区切りで1行に複数の項目を設定できる。
17
+ # - \ で次の行に設定を続けることができる。
18
18
 
19
19
  # Class to utilize INCAR file of VASP.
20
20
  # まず、自分で使う範囲だけ作る。
21
21
  # あとで余力があれば精密化する。
22
22
  module VaspUtils::Incar
23
- #
24
- #def initialize()
25
- #end
26
-
27
- # 与えられた IO を読み込み、INCAR として解析したハッシュを返す。
28
- def self.parse(io)
29
- results = {}
30
- io.each_line do |line|
31
- line.sub!(/\#.*/, "") # コメント文字以降を削除
32
- next unless /=/ =~ line
33
- if /(.*)=(.*)/ =~ line
34
- key = $1.strip
35
- val = $2.strip
36
- val.sub!(/\s.*$/, "")
37
- next if key.empty?
38
- results[key] = val
39
- end
23
+
24
+ # 与えられた IO を読み込み、INCAR として解析したハッシュを返す。
25
+ def self.parse(io)
26
+ results = {}
27
+ io.each_line do |line|
28
+ line.sub!(/\#.*/, "") # コメント文字以降を削除
29
+ next unless /=/ =~ line
30
+ if /(.*)=(.*)/ =~ line
31
+ key = $1.strip
32
+ val = $2.strip
33
+ val.sub!(/\s.*$/, "")
34
+ next if key.empty?
35
+ results[key] = val
36
+ end
37
+ end
38
+ return results
40
39
  end
41
- return results
42
- end
43
40
 
44
- # 与えられた名前のファイルを INCAR として解析したハッシュを返す。
45
- def self.load_file(file)
46
- io = File.open(file, "r")
47
- return self.parse(io)
48
- end
41
+ # 与えられた名前のファイルを INCAR として解析したハッシュを返す。
42
+ def self.load_file(file)
43
+ io = File.open(file, "r")
44
+ return self.parse(io)
45
+ end
49
46
 
50
- # 与えられたデータ対(ハッシュ)を io に書き出す。
51
- # io が nil の場合は INCAR 形式文字列を返す。
52
- # (改行文字を埋め込んでおり、配列化していない)
53
- def self.dump(pairs, io = nil)
54
- result = pairs.map { |key, val|
55
- "#{key} = #{val}"
56
- }.join("\n")
47
+ # 与えられたデータ対(ハッシュ)を io に書き出す。
48
+ # io が nil の場合は INCAR 形式文字列を返す。
49
+ # (改行文字を埋め込んでおり、配列化していない)
50
+ def self.dump(pairs, io = nil)
51
+ result = pairs.map { |key, val|
52
+ "#{key} = #{val}"
53
+ }.join("\n")
57
54
 
58
- if io # is defined
59
- io.print result
60
- else
61
- return result
55
+ if io # is defined
56
+ io.print result
57
+ else
58
+ return result
59
+ end
62
60
  end
63
- end
64
61
  end
65
62
 
@@ -1,45 +1,43 @@
1
1
  #! /usr/bin/env ruby
2
2
  # coding: utf-8
3
3
 
4
- require "vasputils.rb"
4
+ #require "vasputils.rb"
5
5
 
6
6
  # Module dearing with KPOINTS.
7
7
  # This can deal with only Automatic mesh style of KPOINTS,
8
8
  # i.e., this cannot deal with other various styles of KPOINTS.
9
9
  module VaspUtils::Kpoints
10
- def self.parse(io)
11
- results = {}
12
- results[:comment] = io.readline.chomp
13
-
14
- raise "Not automatic generating KPOINTS! 2nd line must be 0." unless io.readline == "0\n"
15
-
16
- line = io.readline
17
- case line
18
- when /^m/i; then; results[:type] = :monkhorst
19
- when /^g/i; then; results[:type] = :gamma_center
20
- else
21
- raise "Kpoints module can deal with only monkhorst and gamma-center."
10
+ def self.parse(io)
11
+ results = {}
12
+ results[:comment] = io.readline.chomp
13
+
14
+ raise "Not automatic generating KPOINTS! 2nd line must be 0." unless io.readline =~ /^0$/
15
+
16
+ line = io.readline
17
+ case line
18
+ when /^m/i; then; results[:type] = :monkhorst
19
+ when /^g/i; then; results[:type] = :gamma_center
20
+ else
21
+ raise "Kpoints module can deal with only monkhorst and gamma-center."
22
+ end
23
+
24
+ results[:mesh] = io.readline.strip.split(/\s+/).map{|i| i.to_i}
25
+ results[:shift] = io.readline.strip.split(/\s+/).map{|i| i.to_f}
26
+
27
+ return results
22
28
  end
23
29
 
24
- #pp io.readline.strip.split(/\s+/).map{|i| i.to_i}
25
- results[:mesh] = io.readline.strip.split(/\s+/).map{|i| i.to_i}
26
- #pp io.readline.strip.split(/\s+/).map{|i| i.to_f}
27
- results[:shift] = io.readline.strip.split(/\s+/).map{|i| i.to_f}
28
-
29
- return results
30
- end
31
-
32
- #
33
- def self.load_file(file)
34
- self.parse(File.open(file, "r"))
35
- end
36
-
37
- def self.dump(data, io)
38
- io.puts "Automatic mesh"
39
- io.puts "0"
40
- io.puts data[:type].to_s.capitalize
41
- io.puts data[:mesh].join(" ")
42
- io.puts data[:shift].join(" ")
43
- end
30
+ #
31
+ def self.load_file(file)
32
+ self.parse(File.open(file, "r"))
33
+ end
34
+
35
+ def self.dump(data, io)
36
+ io.puts "Automatic mesh"
37
+ io.puts "0"
38
+ io.puts data[:type].to_s.capitalize
39
+ io.puts data[:mesh].join(" ")
40
+ io.puts data[:shift].join(" ")
41
+ end
44
42
  end
45
43
 
@@ -1,74 +1,74 @@
1
- require "vasputils.rb"
1
+ #require "vasputils.rb"
2
2
 
3
3
  # OUTCAR をパースする。
4
4
  # 精確には行わず、必要な情報だけをピックアップする感じ。
5
5
  #
6
6
  # あまり頑張らないことにした理由は以下。
7
- # OUTCAR がどう出力されるのかがよくわからない。
8
- # 本来は vasp のソースを見て決めるべきだろう。
9
- # やるとすればかなり大掛かりなプロジェクトになるが、そのわりには旨味が少ない。
10
- # grep でなんとかなるし。
7
+ # OUTCAR がどう出力されるのかがよくわからない。
8
+ # 本来は vasp のソースを見て決めるべきだろう。
9
+ # やるとすればかなり大掛かりなプロジェクトになるが、そのわりには旨味が少ない。
10
+ # grep でなんとかなるし。
11
11
  #
12
12
  # 基本的に終了した計算から情報を取り出すには vasprun.xml を読む。
13
13
  # OUTCAR は終了する前も含めてなんか簡単に見るために使う、という位置付けで。
14
14
  module VaspUtils::Outcar
15
- #toten は全 electronic and ionic steps のを flat に並べただけのもの。
16
- #必要なら構造化するが、現状その予定はない。
17
- #attr_reader :name
18
- #attr_reader :ionic_steps, :electronic_steps, :totens, :volumes, :elapsed_time
15
+ #toten は全 electronic and ionic steps のを flat に並べただけのもの。
16
+ #必要なら構造化するが、現状その予定はない。
17
+ #attr_reader :name
18
+ #attr_reader :ionic_steps, :electronic_steps, :totens, :volumes, :elapsed_time
19
19
 
20
- def self.load_file(file)
21
- raise Errno::ENOENT unless File.exist?(file)
20
+ def self.load_file(file)
21
+ raise Errno::ENOENT unless File.exist?(file)
22
22
 
23
- results = {}
24
- results[:name] = file
25
- #results[:irreducible_kpoints] = nil
26
- #results[:electronic_steps ] = 0
27
- #results[:ionic_steps ] = 0
28
- #results[:totens ] = []
29
- #results[:volumes ] = []
30
- results[:elapsed_time ] = nil
31
- results[:normal_ended ] = false
23
+ results = {}
24
+ results[:name] = file
25
+ #results[:irreducible_kpoints] = nil
26
+ #results[:electronic_steps ] = 0
27
+ #results[:ionic_steps ] = 0
28
+ #results[:totens ] = []
29
+ #results[:volumes ] = []
30
+ results[:elapsed_time ] = nil
31
+ results[:normal_ended ] = false
32
32
 
33
- #lines = File.readlines(file)
34
- #lines.each do |line|
35
- # #if /Found\s+(\d+)\s+irreducible k-points/i =~ line
36
- # # results[:irreducible_kpoints] = $1.to_i
37
- # #end
33
+ #lines = File.readlines(file)
34
+ #lines.each do |line|
35
+ # #if /Found\s+(\d+)\s+irreducible k-points/i =~ line
36
+ # # results[:irreducible_kpoints] = $1.to_i
37
+ # #end
38
38
 
39
- # #if /^-* Iteration\s+(\d+)/ =~ line
40
- # # results[:ionic_steps ] = $1.to_i
41
- # # results[:electronic_steps] += 1
42
- # #end
39
+ # #if /^-* Iteration\s+(\d+)/ =~ line
40
+ # # results[:ionic_steps ] = $1.to_i
41
+ # # results[:electronic_steps] += 1
42
+ # #end
43
43
 
44
- # ##if /free\s+energy\s+TOTEN\s+=\s(.*)\s+eV/ =~ line
45
- # #if /TOTEN\s+=\s(.*)\s+eV/ =~ line
46
- # # results[:totens] << $1.to_f
47
- # #end
44
+ # ##if /free\s+energy\s+TOTEN\s+=\s(.*)\s+eV/ =~ line
45
+ # #if /TOTEN\s+=\s(.*)\s+eV/ =~ line
46
+ # # results[:totens] << $1.to_f
47
+ # #end
48
48
 
49
- # #if /volume of cell :\s+(\d+\.\d+)$/ =~ line
50
- # # results[:volumes] << $1.to_f
51
- # #end
52
- #end
49
+ # #if /volume of cell :\s+(\d+\.\d+)$/ =~ line
50
+ # # results[:volumes] << $1.to_f
51
+ # #end
52
+ #end
53
53
 
54
- lines = `grep Iteration #{file}`.split("\n")
55
- results[:electronic_steps] = lines.size
56
- /^-* Iteration\s+(\d+)/ =~ lines[-1]
57
- results[:ionic_steps ] = $1.to_i
54
+ lines = `grep Iteration #{file}`.split("\n")
55
+ results[:electronic_steps] = lines.size
56
+ /^-* Iteration\s+(\d+)/ =~ lines[-1]
57
+ results[:ionic_steps ] = $1.to_i
58
58
 
59
- results[:totens] = `grep TOTEN #{file}`.split("\n").map do |line|
60
- /TOTEN\s+=\s(.*)\s+eV/ =~ line
61
- $1.to_f
62
- end
59
+ results[:totens] = `grep TOTEN #{file}`.split("\n").map do |line|
60
+ /TOTEN\s+=\s(.*)\s+eV/ =~ line
61
+ $1.to_f
62
+ end
63
63
 
64
- line = `tail -q -n 8 #{file}| head -n 1`
65
- if (/Elapsed time \(sec\):\s+(\d+\.\d+)/ =~ line)
66
- results[:elapsed_time] = $1.to_f
67
- end
64
+ line = `tail -q -n 8 #{file}| head -n 1`
65
+ if (/Elapsed time \(sec\):\s+(\d+\.\d+)/ =~ line)
66
+ results[:elapsed_time] = $1.to_f
67
+ end
68
68
 
69
- line = `tail -q -n 1 #{file}`
70
- results[:normal_ended] = true if (/Voluntary context switches:/ =~ line)
69
+ line = `tail -q -n 1 #{file}`
70
+ results[:normal_ended] = true if (/Voluntary context switches:/ =~ line)
71
71
 
72
- results
73
- end
72
+ results
73
+ end
74
74
  end