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.
- checksums.yaml +7 -0
- data/VERSION +1 -1
- data/genecrmod.gemspec +6 -5
- data/lib/genecrmod/check_parameters.rb +71 -52
- data/lib/genecrmod/gene.rb +11 -6
- data/lib/genecrmod/namelists.rb +4 -3
- data/test/linear_run/.CODE_RUNNER_TEMP_RUN_LIST_CACHE +0 -0
- metadata +23 -44
checksums.yaml
ADDED
@@ -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.
|
1
|
+
0.2.5
|
data/genecrmod.gemspec
CHANGED
@@ -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.
|
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-
|
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.
|
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 =
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
data/lib/genecrmod/gene.rb
CHANGED
@@ -50,26 +50,31 @@ class CodeRunner
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
# Modify new_run so that it becomes a restart of self.
|
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
|
-
|
71
|
-
|
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
|
data/lib/genecrmod/namelists.rb
CHANGED
@@ -942,9 +942,10 @@
|
|
942
942
|
:help=>nil,
|
943
943
|
:code_name=>:underflow_limit,
|
944
944
|
:must_pass=>
|
945
|
-
[{:test=>"kind_of?
|
946
|
-
:explanation=>
|
947
|
-
|
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,
|
Binary file
|
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.
|
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-
|
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:
|
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:
|
169
|
+
rubygems_version: 2.2.2
|
191
170
|
signing_key:
|
192
|
-
specification_version:
|
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: []
|