genecrmod 0.2.4 → 0.2.5

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 15cb544d0c7f91d1f29358dcbaa51eaf4931400f
4
+ data.tar.gz: bb7a3f4dd8ee898a24828f4837da17efc5778bd2
5
+ SHA512:
6
+ metadata.gz: cbf12402982835bb5af91bacbe72a5a0e4c97d997a4ec4b262ef1a2765cad0f48db14fb13ec3941031c6987bbcb2a3bbde5f1c283ba5d4cdd4a9cb76731bdade
7
+ data.tar.gz: adff8560a7697ca5a3c2f10be7b204e008b6611eb4f63ad360bfb609eaa795f66c75d6c81859516e40c3adbc6655e06472e5540bcbf6baa1ab7b5821401f71f4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: genecrmod 0.2.5 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "genecrmod"
8
- s.version = "0.2.4"
9
+ s.version = "0.2.5"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Edmund Highcock"]
12
- s.date = "2015-08-26"
14
+ s.date = "2015-08-28"
13
15
  s.description = "A module which allows the GENE gyrokinetic code to be run using the CodeRunner framework. "
14
16
  s.email = "edmundhighcock@users.sourceforge.net"
15
17
  s.extra_rdoc_files = [
@@ -35,12 +37,11 @@ Gem::Specification.new do |s|
35
37
  ]
36
38
  s.homepage = "http://github.com/edmundhighcock/genecrmod"
37
39
  s.licenses = ["GPLv3"]
38
- s.require_paths = ["lib"]
39
- s.rubygems_version = "1.8.23"
40
+ s.rubygems_version = "2.2.2"
40
41
  s.summary = "A module which allows the GENE gyrokinetic code to be run using the CodeRunner framework."
41
42
 
42
43
  if s.respond_to? :specification_version then
43
- s.specification_version = 3
44
+ s.specification_version = 4
44
45
 
45
46
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
47
  s.add_runtime_dependency(%q<coderunner>, [">= 0.14.2"])
@@ -1,40 +1,59 @@
1
1
 
2
2
  class CodeRunner::Gene
3
- def run_namelist_tests(namelist, hash, enum = nil)
4
- ext = enum ? "_#{enum}" : ""
5
- hash[:must_pass].each do |tst|
6
- error(namelist_test_failed(namelist, tst)) unless instance_eval(tst[:test])
7
- end if hash[:must_pass]
8
- hash[:should_pass].each do |tst|
9
- warning(namelist_test_failed(namelist, tst)) unless instance_eval(tst[:test])
10
- end if hash[:should_pass]
11
- hash[:variables].each do |var, var_hash|
12
- #gs2_var = (var_hash[:gs2_name] or var)
13
- cr_var = var+ext.to_sym
14
- value = send(cr_var)
15
- if value.kind_of? Array
16
- value.each{|v| test_variable(namelist, var, var_hash, ext, v)}
17
- else
18
- test_variable(namelist, var, var_hash, ext, value)
19
- end
20
- end
3
+ def run_namelist_tests(namelist, hash, enum = nil)
4
+ ext = enum ? "_#{enum}" : ""
5
+ hash[:must_pass].each do |tst|
6
+ error(namelist_test_failed(namelist, tst)) unless instance_eval(tst[:test])
7
+ end if hash[:must_pass]
8
+ hash[:should_pass].each do |tst|
9
+ warning(namelist_test_failed(namelist, tst)) unless instance_eval(tst[:test])
10
+ end if hash[:should_pass]
11
+ hash[:variables].each do |var, var_hash|
12
+ cr_var = var+ext.to_sym
13
+ value = send(cr_var)
14
+ if value.kind_of? Array
15
+ value.each{|v| test_variable(namelist, var, var_hash, ext, v)}
16
+ else
17
+ test_variable(namelist, var, var_hash, ext, value)
21
18
  end
22
- def check_parameters
23
- rcp.namelists.each do |namelist, hash|
24
- next if hash[:should_include].kind_of? String and not eval(hash[:should_include])
25
- if en = hash[:enumerator]
26
- #ep 'en', en, namelist
27
- next unless send(en[:name])
28
- send(en[:name]).times do |i|
29
- run_namelist_tests(namelist, hash, i+1)
30
- end
31
- else
32
- run_namelist_tests(namelist, hash)
19
+ end
20
+ end
21
+
22
+ def check_parameters
23
+ rcp.namelists.each do |namelist, hash|
24
+ next if hash[:should_include].kind_of? String and not eval(hash[:should_include])
25
+ if en = hash[:enumerator]
26
+ next unless send(en[:name])
27
+ send(en[:name]).times do |i|
28
+ run_namelist_tests(namelist, hash, i+1)
33
29
  end
30
+ else
31
+ run_namelist_tests(namelist, hash)
34
32
  end
35
- warning("Very little analysis will be possible without write_h5 = '.true.'") if not (@write_h5 and @write_h5.fortran_true?)
36
33
  end
37
- def test_failed(namelist, var, gs2_var, tst)
34
+
35
+ # Now look at namelist specific flags, catch any obvious mistakes/conflicts
36
+
37
+ ###################
38
+ # in_out namelist #
39
+ ###################
40
+
41
+ if not (@write_h5 and @write_h5.fortran_true?)
42
+ warning("Very little analysis will be possible without write_h5 = '.true.'")
43
+ end
44
+
45
+ if not (@write_checkpoint and @write_checkpoint.fortran_true?) and
46
+ not (@chpt_h5 and @chpt_h5.fortran_true?)
47
+ p @write_checkpoint, @write_checkpoint.fortran_true?
48
+ warning("This simulation will not write out a checkpoint file.")
49
+ end
50
+
51
+ if (@write_std and @write_std.fortran_true?) and (@write_h5 and @write_h5.fortran_true?)
52
+ warning("Both write_std and write_h5 are specified - will produce lots of output!")
53
+ end
54
+ end
55
+
56
+ def test_failed(namelist, var, gene_var, tst)
38
57
  return <<EOF
39
58
 
40
59
  ---------------------------
@@ -43,7 +62,7 @@ def test_failed(namelist, var, gs2_var, tst)
43
62
 
44
63
  Namelist: #{namelist}
45
64
  Variable: #{var}
46
- GS2 Name: #{gs2_var}
65
+ GENE Name: #{gene_var}
47
66
  Value: #{send(var)}
48
67
  Test: #{tst[:test]}
49
68
  Explanation: #{tst[:explanation]}
@@ -51,10 +70,10 @@ Explanation: #{tst[:explanation]}
51
70
  ---------------------------
52
71
  EOF
53
72
 
54
- end
73
+ end
55
74
 
56
75
 
57
- def namelist_test_failed(namelist, tst)
76
+ def namelist_test_failed(namelist, tst)
58
77
  return <<EOF
59
78
 
60
79
  ---------------------------
@@ -68,22 +87,22 @@ Explanation: #{tst[:explanation]}
68
87
  ---------------------------
69
88
  EOF
70
89
 
71
- end
72
- def test_variable(namelist, var, var_hash, ext, value)
73
- gs2_var = (var_hash[:gs2_name] or var)
74
- cr_var = var+ext.to_sym
75
- if value and (not var_hash[:should_include] or eval(var_hash[:should_include]))
76
- var_hash[:must_pass].each do |tst|
77
- error(test_failed(namelist, cr_var, gs2_var, tst)) unless value.instance_eval(tst[:test])
78
- end if var_hash[:must_pass]
79
- var_hash[:should_pass].each do |tst|
80
- warning(test_failed(namelist, cr_var, gs2_var, tst)) unless value.instance_eval(tst[:test])
81
- end if var_hash[:should_pass]
82
- if (var_hash[:allowed_values] or var_hash[:text_options])
83
- tst = {test: "#{(var_hash[:allowed_values] or var_hash[:text_options]).inspect}.include? self", explanation: "The variable must have one of these values"}
84
- error(test_failed(namelist, cr_var, gs2_var, tst)) unless value.instance_eval(tst[:test])
85
- end
86
-
87
- end
88
- end
90
+ end
91
+
92
+ def test_variable(namelist, var, var_hash, ext, value)
93
+ gene_var = (var_hash[:gene_name] or var)
94
+ cr_var = var+ext.to_sym
95
+ if value and (not var_hash[:should_include] or eval(var_hash[:should_include]))
96
+ var_hash[:must_pass].each do |tst|
97
+ error(test_failed(namelist, cr_var, gene_var, tst)) unless value.instance_eval(tst[:test])
98
+ end if var_hash[:must_pass]
99
+ var_hash[:should_pass].each do |tst|
100
+ warning(test_failed(namelist, cr_var, gene_var, tst)) unless value.instance_eval(tst[:test])
101
+ end if var_hash[:should_pass]
102
+ if (var_hash[:allowed_values] or var_hash[:text_options])
103
+ tst = {test: "#{(var_hash[:allowed_values] or var_hash[:text_options]).inspect}.include? self", explanation: "The variable must have one of these values"}
104
+ error(test_failed(namelist, cr_var, gene_var, tst)) unless value.instance_eval(tst[:test])
105
+ end
106
+ end
107
+ end
89
108
  end
@@ -50,26 +50,31 @@ class CodeRunner
50
50
 
51
51
 
52
52
 
53
- # Modify new_run so that it becomes a restart of self. Adusts
53
+ # Modify new_run so that it becomes a restart of self. Adjusts
54
54
  # all the parameters of the new run to be equal to the parameters
55
55
  # of the run that calls this function, and sets up its run name
56
56
  # correctly
57
57
  def restart(new_run)
58
- raise "Restart not tested yet"
59
- #new_run = self.dup
60
58
  (rcp.variables).each{|v| new_run.set(v, send(v)) if send(v)}
61
59
  new_run.is_a_restart = true
62
60
  new_run.restart_id = @id
63
61
  new_run.restart_run_name = @run_name
64
- new_run.nopt = -1
65
62
  new_run.run_name = nil
66
63
  new_run.naming_pars = @naming_pars
67
64
  new_run.update_submission_parameters(new_run.parameter_hash.inspect, false) if new_run.parameter_hash
68
65
  new_run.naming_pars.delete(:restart_id)
69
66
  new_run.generate_run_name
70
- eputs 'Copying GENE Restart file'
71
- FileUtils.cp("#@directory/NOUT", "#{new_run.directory}/NIN")
67
+
68
+ eputs 'Copying GENE restart file'
69
+ if (@chpt_h5 and @chpt_h5.fortran_true?)
70
+ new_run.chpt_read_h5 = ".true."
71
+ FileUtils.cp("#@directory/checkpoint.h5", "#{new_run.directory}/checkpoint.h5")
72
+ else
73
+ new_run.read_checkpoint = ".true."
74
+ FileUtils.cp("#@directory/checkpoint", "#{new_run.directory}/checkpoint")
75
+ end
72
76
  end
77
+
73
78
  # This is a hook which gets called just before submitting a simulation. It sets up the folder and generates any necessary input files.
74
79
  def generate_input_file
75
80
  check_parameters
@@ -942,9 +942,10 @@
942
942
  :help=>nil,
943
943
  :code_name=>:underflow_limit,
944
944
  :must_pass=>
945
- [{:test=>"kind_of? String",
946
- :explanation=>"This variable must be a string."}],
947
- :type=>:String},
945
+ [{:test=>"kind_of? Numeric",
946
+ :explanation=>
947
+ "This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
948
+ :type=>:Float},
948
949
  :omega_prec=>
949
950
  {:should_include=>"true",
950
951
  :description=>nil,
metadata CHANGED
@@ -1,52 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: genecrmod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
5
- prerelease:
4
+ version: 0.2.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Edmund Highcock
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2015-08-26 00:00:00.000000000 Z
11
+ date: 2015-08-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: coderunner
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.14.2
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 0.14.2
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: hdf5
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: shoulda
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - '='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - '='
60
53
  - !ruby/object:Gem::Version
@@ -62,84 +55,74 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rdoc
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
61
  version: '3.12'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
68
  version: '3.12'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: bundler
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ~>
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
75
  version: '1.0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ~>
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
82
  version: '1.0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: jeweler
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ~>
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
89
  version: 2.0.1
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ~>
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
96
  version: 2.0.1
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: simplecov
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - ">="
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - ">="
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: minitest
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ~>
115
+ - - "~>"
132
116
  - !ruby/object:Gem::Version
133
117
  version: '4'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ~>
122
+ - - "~>"
140
123
  - !ruby/object:Gem::Version
141
124
  version: '4'
142
- description: ! 'A module which allows the GENE gyrokinetic code to be run using the
125
+ description: 'A module which allows the GENE gyrokinetic code to be run using the
143
126
  CodeRunner framework. '
144
127
  email: edmundhighcock@users.sourceforge.net
145
128
  executables: []
@@ -148,7 +131,7 @@ extra_rdoc_files:
148
131
  - LICENSE.txt
149
132
  - README.rdoc
150
133
  files:
151
- - .document
134
+ - ".document"
152
135
  - Gemfile
153
136
  - LICENSE.txt
154
137
  - README.rdoc
@@ -166,30 +149,26 @@ files:
166
149
  homepage: http://github.com/edmundhighcock/genecrmod
167
150
  licenses:
168
151
  - GPLv3
152
+ metadata: {}
169
153
  post_install_message:
170
154
  rdoc_options: []
171
155
  require_paths:
172
156
  - lib
173
157
  required_ruby_version: !ruby/object:Gem::Requirement
174
- none: false
175
158
  requirements:
176
- - - ! '>='
159
+ - - ">="
177
160
  - !ruby/object:Gem::Version
178
161
  version: '0'
179
- segments:
180
- - 0
181
- hash: -2164838482483879517
182
162
  required_rubygems_version: !ruby/object:Gem::Requirement
183
- none: false
184
163
  requirements:
185
- - - ! '>='
164
+ - - ">="
186
165
  - !ruby/object:Gem::Version
187
166
  version: '0'
188
167
  requirements: []
189
168
  rubyforge_project:
190
- rubygems_version: 1.8.23
169
+ rubygems_version: 2.2.2
191
170
  signing_key:
192
- specification_version: 3
171
+ specification_version: 4
193
172
  summary: A module which allows the GENE gyrokinetic code to be run using the CodeRunner
194
173
  framework.
195
174
  test_files: []