vasputils 0.0.5 → 0.0.6

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/Gemfile CHANGED
@@ -14,6 +14,6 @@ group :development do
14
14
  gem "mageo", ">= 0.0.0"
15
15
  gem "malge", ">= 0.0.1"
16
16
  gem "maset", ">= 0.0.0"
17
- gem "comana", ">= 0.0.5"
17
+ gem "comana", ">= 0.0.6"
18
18
  gem "builtinextension", ">= 0.0.3"
19
19
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
data/bin/qsubvasp CHANGED
@@ -1,66 +1,44 @@
1
1
  #! /usr/bin/env ruby
2
2
  # coding: utf-8
3
3
 
4
-
5
- SCRIPT_FILE = "pbs.sh"
6
- PBS_LOG = "pbs.log"
7
-
8
-
9
4
  require "optparse"
10
5
  require "yaml"
11
6
  require "pp"
12
7
 
8
+ require "rubygems"
9
+ gem "comana"
10
+ require "comana/queuesubmitter.rb"
11
+ require "comana/machineinfo.rb"
12
+
13
+ require "vasputils/vaspdir.rb"
14
+ require "vasputils/vaspgeomopt.rb"
15
+
13
16
  ## option analysis
14
17
  OPTS = {}
15
18
  op = OptionParser.new
16
- #op.on("-e", "--economy" , "Prior efficiency."){OPTS[:e] = true}
17
- op.on("-s", "--speed" , "Prior speed.") {OPTS[:s] = true}
18
-
19
- op.on("-g", "--geom-opt" , "Geometry optimization.") {OPTS[:g] = true}
20
- #op.on("-n", "--nebm" , "Nudged Elastic Band method."){OPTS[:n] = true}
21
- #op.on("-c", "--cond-find", "Condition Finding.") {OPTS[:c] = true}
22
-
19
+ #op.on("-e" , "--economy", "Prior efficiency." ){OPTS[:e] = true}
20
+ op.on("-s" , "--speed" , "Prior speed to efficiency."){OPTS[:s] = true}
21
+ op.on("-n nodes" , "--nodes" , "Node series." ){|v| OPTS[:n] = v}
22
+ #op.on("-c command", "--command", "Command to calculate." ){|v| OPTS[:c] = v}
23
+ op.on("-d dir" , "--dir" , "Directory to calculate." ){|v|
24
+ #OPTS[:d] = VaspDir.new(v)
25
+ OPTS[:d] = VaspGeomOpt.new(File.expand_path(v))
26
+ }
23
27
  op.parse!(ARGV)
24
28
 
25
- cluster = ARGV[0]
26
- #cluster = ARGV
27
- #qsub で複数のクラスターを候補に入れることができるか?e.g., Ga, Ge
28
- #それによって、ここがかきかわる。
29
-
30
- #puts "Options -e and -s cannot be duplicated." if OPTS[:e] && OPTS[:s]
31
- #if [OPTS[:g], OPTS[:n], OPTS[:c]].select_all(true).size ==
32
- # puts "Options -g, -n, and -c cannot be duplicated."
33
- # exit
34
- #end
35
-
36
- yaml = YAML.load_file("#{ENV["HOME"]}/.machineinfo")
37
- pp yaml
29
+ OPTS[:machineinfo] = MachineInfo.load_file
30
+ OPTS[:c] = "runvasp -g"
38
31
 
39
- if File.exits?(SCRIPT_FILE)
40
- puts "#{SCRIPT_FILE} already exist. Exit."
32
+ qs = QueueSubmitter.new(OPTS)
33
+ #pp qs; exit
34
+ begin
35
+ qs.start
36
+ puts "Submitted. Exit."
37
+ exit
38
+ rescue QueueSubmitter::AlreadyStartedError
39
+ puts "Already started. Exit."
40
+ exit
41
+ rescue QueueSubmitter::PrepareNextError
42
+ puts "Must not happen."
41
43
  exit
42
44
  end
43
-
44
- File.open(SCRIPT_FILE, "w") do |io|
45
- io.puts "#PBS -N task"
46
- io.puts "#PBS -l nodes=4:ppn=1:Ga"
47
- io.puts "cd $PBS_O_WORKDIR"
48
- io.puts "runvasp"
49
- #io.puts "#/usr/local/bin/mpiexec /usr/local/bin/vasp5212mpi-ifc11-fast"
50
- #io.puts "#/home/ippei/local/mpi/mpiexec-0.84/mpiexec /usr/local/calc/bin/vasp5212-mpich2"
51
- #io.puts "#/usr/local/calc/mpiexec/bin/mpiexec /usr/local/calc/bin/vasp5212-mpich2"
52
- #io.puts "#~/tmp.rb #OK"
53
-
54
- #io.puts condition
55
- #io.puts rsync
56
- #io.puts run
57
- #io.puts rsync
58
- #io.puts mv to trash?
59
- end
60
-
61
- # Record job_id in pbs. Overwrite if exists.
62
- job_id = `qsub #{SCRIPT_FILE}`
63
- File.open(PBS_LOG, "w") do |io|
64
- io.puts job_id
65
- end
66
-
data/bin/runvasp CHANGED
@@ -5,7 +5,7 @@ require "rubygems"
5
5
  gem "comana"
6
6
  require "comana/computationmanager.rb"
7
7
 
8
- gem "vasputils"
8
+ #gem "vasputils"
9
9
  require "vasputils/vaspdir.rb"
10
10
  require "vasputils/vaspgeomopt.rb"
11
11
 
@@ -15,10 +15,8 @@ require "optparse"
15
15
  OPTIONS = {}
16
16
  op = OptionParser.new
17
17
  op.on("-g" , "--geom-opt", "Geometry optimization"){OPTIONS[:g] = true}
18
- #op.on("-b val", "--bak=val", "descriptionB"){|v| OPTIONS[:bak] = v}
19
18
  op.parse!(ARGV)
20
19
 
21
-
22
20
  dir = ARGV[0] || "."
23
21
 
24
22
  if OPTIONS[:g]
@@ -16,27 +16,15 @@ require "vasputils/outcar.rb"
16
16
  require "vasputils/poscar.rb"
17
17
  require "vasputils/kpoints.rb"
18
18
 
19
- # vasp 実行ディレクトリ(入力・出力ファイルを含む)を扱うクラス
20
- #
21
- # MEMO
22
- # interrupted? みたいなメソッドは作れない。
23
- # 実行が開始したあと、その計算の状態が中断されているのか、
24
- # 単に実行中でファイルが書き込まれている途中なのか、
25
- # プログラムを実行しているプロセス自身以外は、外部からは判別がつかない。
26
- #
27
- # ルール
28
- # try00 形式の postfix がついていることを前提とする。
29
- # 00 の部分には CONTCAR を POSCAR にする手続きで連続して行う計算の番号を示す。
19
+ # Class for VASP executable directory,
20
+ # including input and output files.
30
21
  #
31
22
  class VaspDir < ComputationManager
32
23
  class InitializeError < Exception; end
33
24
  class NoVaspBinaryError < Exception; end
34
25
  class PrepareNextError < Exception; end
26
+ class ExecuteError < Exception; end
35
27
 
36
- #INCAR 解析とかして、モードを調べる。
37
- #- 格子定数の構造最適化モード(ISIF = 3)
38
- #- 格子定数を固定した構造最適化モード(ISIF = 2)
39
- ##- k 点探索モードは無理だろう。
40
28
  def initialize(dir)
41
29
  super(dir)
42
30
  @lockdir = "lock_vaspdir"
@@ -87,17 +75,6 @@ class VaspDir < ComputationManager
87
75
  private
88
76
 
89
77
  # vasp を投げる。
90
- # 計算実行時に lock を生成する。
91
- # もし既に lock が存在していれば、例外 VaspDirLockedError を
92
- # 投げる。
93
- # lock は作られっぱなしで、プログラムからは削除されない。
94
- # 通常、一度計算したらもう二度と計算しないし。
95
- #
96
- # MEMO
97
- # mpirun で投げる場合は
98
- # machinefile を生成しないとどのホストで計算するか、安定しない。
99
- # そのうち mpiexec from torque に対応するが、
100
- # まずは mpirun で動くように作る。
101
78
  def calculate
102
79
  begin
103
80
  info =
@@ -111,7 +88,8 @@ class VaspDir < ComputationManager
111
88
  command += vasp
112
89
  command += "> stdout"
113
90
 
114
- system command
91
+ end_status = system command
92
+ raise ExecuteError, "end_status is #{end_status.inspect}" unless end_status
115
93
  end
116
94
 
117
95
  def prepare_next
@@ -120,70 +98,3 @@ class VaspDir < ComputationManager
120
98
  end
121
99
 
122
100
  end
123
-
124
- #class VaspGeometryOptimization < ComputationManager
125
- # # 次の計算ディレクトリを作成し、
126
- # # その VaspDir クラスで self を置き換える。
127
- # # 計算が正常終了していなければ、例外 VaspDirNotEndedError を生じる。
128
- # # 次の計算ディレクトリが既に存在していれば例外 Errno::EEXIST が投げられる。
129
- # def next
130
- # raise NotEndedError unless normal_ended?
131
- # raise ConvergedError unless to_be_continued?
132
- # #postfix = /try(\d+)$/
133
- # POSTFIX =~ @dir
134
- # try_num = $1.to_i
135
- # next_dir = @dir.sub(POSTFIX, sprintf("try%02d", try_num + 1))
136
- # Dir.mkdir next_dir
137
- # FileUtils.cp( "#{@dir}/INCAR" , "#{next_dir}/INCAR")
138
- # FileUtils.cp( "#{@dir}/KPOINTS", "#{next_dir}/KPOINTS")
139
- # FileUtils.cp( "#{@dir}/POTCAR" , "#{next_dir}/POTCAR")
140
- # FileUtils.cp( "#{@dir}/CONTCAR", "#{next_dir}/POSCAR")
141
- # initialize(next_dir)
142
- # end
143
- #
144
- # # Return number of electronic steps.
145
- # def internal_steps
146
- # return outcar[:electronic_steps] if outcar
147
- # return 0
148
- # end
149
- #
150
- # # Return number of ionic steps.
151
- # def external_steps
152
- # return outcar[:ionic_steps] if outcar
153
- # return 0
154
- # end
155
- #
156
- # # Return elapsed time.
157
- # def elapsed_time
158
- # return outcar[:elapsed_time] if outcar
159
- # return 0.0
160
- # end
161
- #
162
- # # normal_ended? が false なら false。
163
- # # normal_ended? が true のうち、
164
- # # 結果を使って次に計算すべきなら true を、そうでなければ false を返す。
165
- # #
166
- # # 計算すべき、の条件はモードによって異なる。
167
- # # NSW = 0 もしくは NSW = 1 のとき、必ず false。
168
- # # - :single_point モードならば、常に false。
169
- # # - :geom_opt_lattice モードならば、ionic step が 2 以上なら true。
170
- # # - :geom_opt_atoms モードならば、ionic step が NSW と同じなら true。
171
- # #
172
- # def to_be_continued?
173
- # begin
174
- # outcar = Outcar.load_file("#{@dir}/OUTCAR")
175
- # rescue Errno::ENOENT
176
- # return false
177
- # end
178
- # ionic_steps = outcar[:ionic_steps]
179
- # return false unless outcar[:normal_ended]
180
- # return false if @incar["NSW"].to_i <= 1
181
- # if @mode == :geom_opt_lattice
182
- # return ionic_steps != 1
183
- # elsif @mode == :geom_opt_atoms
184
- # return ionic_steps == @incar["NSW"].to_i
185
- # else
186
- # return false
187
- # end
188
- # end
189
- #
@@ -57,7 +57,7 @@ class VaspGeomOpt < ComputationManager
57
57
  # end
58
58
  #end
59
59
  #puts "Geometry optimization fihished. Exit."
60
- sleep 1 # for interrupt
60
+ #sleep 1 # for interrupt
61
61
  end
62
62
 
63
63
  # latest_dir から返って来る最新の VaspDir が finished? で真を返し、
@@ -108,7 +108,7 @@ class VaspGeomOpt < ComputationManager
108
108
  next
109
109
  end
110
110
  end
111
- raise NoVaspDirError
111
+ raise NoVaspDirError, @dir
112
112
  end
113
113
 
114
114
  end
data/memo.txt CHANGED
@@ -1,12 +1,18 @@
1
- 0.0.5
1
+ #
2
+
3
+ 0.0.6 release [2012-05-10]
4
+ bin/qsubvasp is added.
5
+ lib/vaspdir is modified to raise ExecuteError when vasp failed.
6
+
7
+ 0.0.5 release
2
8
  Modifiy error process in VaspDir.calculate.
3
9
  Add runvasp.
4
10
  Add qsubvasp.
5
11
 
6
12
  0.0.4 release
7
- Using Comana library.
8
- Add runvasp.
9
- Modify VaspDir.
10
- Add VaspGeomOpt.
13
+ Modified to use Comana.
14
+ bin/runvasp is added.
15
+ VaspDir is modified.
16
+ VaspGeomOpt is added.
11
17
 
12
18
  0.0.3 release
data/vasputils.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "vasputils"
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippei94da"]
12
- s.date = "2012-05-08"
12
+ s.date = "2012-05-10"
13
13
  s.description = "This gem provides parsers for some of input and output files for VASP.\n This will provide support command for computations."
14
14
  s.email = "ippei94da@gmail.com"
15
15
  s.executables = ["addVolumeToten.rb", "latticeconstants", "lsvasp", "lsvaspdir", "lsvaspseries", "qsubvasp", "runvasp", "symposcar"]
@@ -215,7 +215,7 @@ Gem::Specification.new do |s|
215
215
  s.add_development_dependency(%q<mageo>, [">= 0.0.0"])
216
216
  s.add_development_dependency(%q<malge>, [">= 0.0.1"])
217
217
  s.add_development_dependency(%q<maset>, [">= 0.0.0"])
218
- s.add_development_dependency(%q<comana>, [">= 0.0.5"])
218
+ s.add_development_dependency(%q<comana>, [">= 0.0.6"])
219
219
  s.add_development_dependency(%q<builtinextension>, [">= 0.0.3"])
220
220
  else
221
221
  s.add_dependency(%q<rdoc>, [">= 3.12"])
@@ -226,7 +226,7 @@ Gem::Specification.new do |s|
226
226
  s.add_dependency(%q<mageo>, [">= 0.0.0"])
227
227
  s.add_dependency(%q<malge>, [">= 0.0.1"])
228
228
  s.add_dependency(%q<maset>, [">= 0.0.0"])
229
- s.add_dependency(%q<comana>, [">= 0.0.5"])
229
+ s.add_dependency(%q<comana>, [">= 0.0.6"])
230
230
  s.add_dependency(%q<builtinextension>, [">= 0.0.3"])
231
231
  end
232
232
  else
@@ -238,7 +238,7 @@ Gem::Specification.new do |s|
238
238
  s.add_dependency(%q<mageo>, [">= 0.0.0"])
239
239
  s.add_dependency(%q<malge>, [">= 0.0.1"])
240
240
  s.add_dependency(%q<maset>, [">= 0.0.0"])
241
- s.add_dependency(%q<comana>, [">= 0.0.5"])
241
+ s.add_dependency(%q<comana>, [">= 0.0.6"])
242
242
  s.add_dependency(%q<builtinextension>, [">= 0.0.3"])
243
243
  end
244
244
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vasputils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-08 00:00:00.000000000 Z
12
+ date: 2012-05-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &82143140 !ruby/object:Gem::Requirement
16
+ requirement: &79249910 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.12'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *82143140
24
+ version_requirements: *79249910
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &82141240 !ruby/object:Gem::Requirement
27
+ requirement: &79246810 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.1.3
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *82141240
35
+ version_requirements: *79246810
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &82139430 !ruby/object:Gem::Requirement
38
+ requirement: &79590980 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.8.3
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *82139430
46
+ version_requirements: *79590980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &82155010 !ruby/object:Gem::Requirement
49
+ requirement: &79586380 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *82155010
57
+ version_requirements: *79586380
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: crystalcell
60
- requirement: &82154520 !ruby/object:Gem::Requirement
60
+ requirement: &79583830 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *82154520
68
+ version_requirements: *79583830
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mageo
71
- requirement: &82153850 !ruby/object:Gem::Requirement
71
+ requirement: &79580340 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.0.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *82153850
79
+ version_requirements: *79580340
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: malge
82
- requirement: &82153190 !ruby/object:Gem::Requirement
82
+ requirement: &79577480 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.0.1
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *82153190
90
+ version_requirements: *79577480
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: maset
93
- requirement: &82152310 !ruby/object:Gem::Requirement
93
+ requirement: &79577090 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,21 +98,21 @@ dependencies:
98
98
  version: 0.0.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *82152310
101
+ version_requirements: *79577090
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: comana
104
- requirement: &82150690 !ruby/object:Gem::Requirement
104
+ requirement: &79576480 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: 0.0.5
109
+ version: 0.0.6
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *82150690
112
+ version_requirements: *79576480
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: builtinextension
115
- requirement: &82149970 !ruby/object:Gem::Requirement
115
+ requirement: &79566760 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: 0.0.3
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *82149970
123
+ version_requirements: *79566760
124
124
  description: ! "This gem provides parsers for some of input and output files for VASP.\n
125
125
  \ This will provide support command for computations."
126
126
  email: ippei94da@gmail.com
@@ -331,7 +331,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
331
331
  version: '0'
332
332
  segments:
333
333
  - 0
334
- hash: -917063793
334
+ hash: -103563277
335
335
  required_rubygems_version: !ruby/object:Gem::Requirement
336
336
  none: false
337
337
  requirements: