coderunner 0.13.9 → 0.13.10
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/coderunner.gemspec +1 -1
- data/lib/coderunner/fortran_namelist.rb +36 -6
- data/lib/coderunner/graphs_and_films.rb +2 -2
- data/lib/coderunner/system_modules/dirac.rb +1 -1
- data/lib/coderunner/system_modules/moab.rb +2 -2
- data/lib/cubecalccrmod/deleted_variables.rb +355 -1
- data/lib/cubecalccrmod/namelists.rb +22 -1
- data/test/test_coderunner.rb +3 -2
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.13.
|
1
|
+
0.13.10
|
data/coderunner.gemspec
CHANGED
@@ -113,7 +113,7 @@ end
|
|
113
113
|
# in namelist
|
114
114
|
|
115
115
|
def self.known_code_variable?(namelist, var)
|
116
|
-
return true if rcp.namelists[namelist] and rcp.namelists[namelist][:variables].map{|(v,h)| (h[:code_name] or v).to_s.downcase.to_sym}.include? var.to_s.downcase.to_sym
|
116
|
+
return true if rcp.namelists[namelist.to_s.downcase.to_sym] and rcp.namelists[namelist.to_s.downcase.to_sym][:variables].map{|(v,h)| (h[:code_name] or v).to_s.downcase.to_sym}.include? var.to_s.downcase.to_sym
|
117
117
|
# end
|
118
118
|
return false
|
119
119
|
end
|
@@ -290,7 +290,7 @@ end
|
|
290
290
|
# in the simulation code.
|
291
291
|
|
292
292
|
def self.add_code_variable_to_namelist(namelist, var, value)
|
293
|
-
code_name = var
|
293
|
+
code_name = var.to_s.downcase.to_sym
|
294
294
|
var = var.to_s.downcase.to_sym
|
295
295
|
namelist = namelist.to_s.sub(/_(?<num>\d+)$/, '').to_sym
|
296
296
|
enum = $~ ? $~[:num] : nil
|
@@ -298,7 +298,7 @@ def self.add_code_variable_to_namelist(namelist, var, value)
|
|
298
298
|
namelists = rcp.namelists
|
299
299
|
namelist_file = 'namelists.rb'
|
300
300
|
# end
|
301
|
-
raise "This namelist: #{namelist} should have an enumerator and does not have one" if enum and not
|
301
|
+
raise "This namelist: #{namelist} should have an enumerator and does not have one" if enum and (not rcp.namelists[namelist] or not rcp.namelists[namelist][:enumerator])
|
302
302
|
unless ENV['CR_NON_INTERACTIVE']
|
303
303
|
return unless Feedback.get_boolean("An unknown variable has been found in this input file: \n\n\t Namelist: #{namelist}, Name: #{code_name}, Sample Value: #{value.inspect}.\n\nDo you wish to add it to the CodeRunner module? (Recommended: answer yes as long as the variable is not a typo)")
|
304
304
|
end
|
@@ -548,7 +548,7 @@ def self.parse_input_file(input_file, strict=true)
|
|
548
548
|
regex = Regexp.new("#{rcp.matching_regex.to_s}\\s*(?:\\!(?<comment>.*))?\\n")
|
549
549
|
#ep input_file
|
550
550
|
text.scan(/(?:(?:^|\A)\s*\!\s*(?<namelist_comment>[^\n]+)\n)?(?:^|\A)\&(?<namelist>\S+).*?^\//m) do
|
551
|
-
namelist = $~[:namelist].to_sym
|
551
|
+
namelist = $~[:namelist].downcase.to_sym
|
552
552
|
hash = namelist_hash[namelist] = {}
|
553
553
|
#p $~
|
554
554
|
scan_text_for_variables($~.to_s).each do |var, val|
|
@@ -557,7 +557,7 @@ def self.parse_input_file(input_file, strict=true)
|
|
557
557
|
hash[var] = val
|
558
558
|
end
|
559
559
|
end
|
560
|
-
pp 'inputfile', namelist_hash
|
560
|
+
#pp 'inputfile', namelist_hash
|
561
561
|
namelist_hash
|
562
562
|
end
|
563
563
|
|
@@ -568,7 +568,7 @@ def self.scan_text_for_variables(text)
|
|
568
568
|
arr = []
|
569
569
|
text.scan(regex) do
|
570
570
|
match = $~
|
571
|
-
var = match[:name].to_sym
|
571
|
+
var = match[:name].downcase.to_sym
|
572
572
|
default = match[:default.to_sym]
|
573
573
|
default = (match[:float] or match[:complex]) ? match[:default].gsub(/(\.)(\D|$)/, '\10\2').gsub(/[dD]/, 'e').gsub(/(\D|^)(\.)/, '\10\2') : match[:default]
|
574
574
|
#ep 'default', default
|
@@ -1112,13 +1112,39 @@ def self.get_sample_value(source, var)
|
|
1112
1112
|
return sample_val
|
1113
1113
|
end
|
1114
1114
|
|
1115
|
+
# Add variables found in the given namelist file and delete variables not found in it.
|
1116
|
+
#
|
1117
|
+
def self.synchronise_variables_from_input_file(input_file = ARGV[2])
|
1118
|
+
namelists = parse_input_file(input_file)
|
1119
|
+
nms = {}
|
1120
|
+
all_variables_in_source = {}
|
1121
|
+
namelist_declarations = {}
|
1122
|
+
namelists.each do |nmlist, vars|
|
1123
|
+
all_variables_in_source[nmlist.to_s.sub(/_\d+/, '').to_sym] = []
|
1124
|
+
vars.each do |var, value|
|
1125
|
+
all_variables_in_source[nmlist.to_s.sub(/_\d+/, '').to_sym].push var
|
1126
|
+
p ['nmlist', nmlist, 'var', var]
|
1127
|
+
next if known_code_variable?(nmlist, var)
|
1128
|
+
add_code_variable_to_namelist(nmlist, var, value)
|
1129
|
+
end
|
1130
|
+
end
|
1131
|
+
delete_old_variables(all_variables_in_source)
|
1132
|
+
end
|
1133
|
+
|
1134
|
+
|
1115
1135
|
# Find unknown input variables in the source code and add them to the database of namelists
|
1116
1136
|
# Delete input variables which are no longer present in the source code
|
1117
1137
|
|
1118
1138
|
def self.synchronise_variables(source_code_folder = ARGV[2])
|
1119
1139
|
source = get_aggregated_source_code_text(source_code_folder)
|
1120
1140
|
nms, all_variables_in_source, namelist_declarations = get_namelists_and_variables_from_source_code(source)
|
1141
|
+
process_synchronisation(nms, all_variables_in_source, namelist_declarations)
|
1142
|
+
end
|
1121
1143
|
# ep source.size
|
1144
|
+
|
1145
|
+
# Delete variables unless they are still present in the source code
|
1146
|
+
|
1147
|
+
def self.delete_old_variables(all_variables_in_source)
|
1122
1148
|
variables_to_delete = {}
|
1123
1149
|
#pp 'namelists', rcp.namelists
|
1124
1150
|
rcp.namelists.each do |namelist, namelist_hash|
|
@@ -1146,6 +1172,10 @@ def self.synchronise_variables(source_code_folder = ARGV[2])
|
|
1146
1172
|
end
|
1147
1173
|
end
|
1148
1174
|
end
|
1175
|
+
end
|
1176
|
+
|
1177
|
+
def self.process_synchronisation(nms, all_variables_in_source, namelist_declarations)
|
1178
|
+
delete_old_variables(all_variables_in_source)
|
1149
1179
|
|
1150
1180
|
raise "No namelists found" if nms.size == 0
|
1151
1181
|
eputs nms.keys.zip(nms.values.map{|vs| vs.size})
|
@@ -533,7 +533,7 @@ class CodeRunner
|
|
533
533
|
eputs "making film"
|
534
534
|
frame_rate = (options[:frame_rate] or options[:fr] || 15)
|
535
535
|
film_name = (options[:film_name] or options [:fn] or end_graphkit.file_name + '_film').gsub(/\s/, '_')
|
536
|
-
puts `ffmpeg -y #{options[:bitrate] ? "-b #{options[:bitrate]}" : ""} -r #{frame_rate} -threads #{(@multiple_processes or 1)} -i film_frames/frame_%0#{fd}d#{extension} -
|
536
|
+
puts `ffmpeg -y #{options[:bitrate] ? "-b #{options[:bitrate]}" : ""} -r #{frame_rate} -threads #{(@multiple_processes or 1)} -i film_frames/frame_%0#{fd}d#{extension} -qscale 0 #{film_name}.mp4`
|
537
537
|
end
|
538
538
|
end
|
539
539
|
|
@@ -737,7 +737,7 @@ class CodeRunner
|
|
737
737
|
eputs "making film"
|
738
738
|
frame_rate = (options[:frame_rate] or options[:fr] || 15)
|
739
739
|
film_name = (options[:film_name] or options [:fn] or graphkit_frame_array[0][1].file_name + '_film').gsub(/\s/, '_')
|
740
|
-
puts `ffmpeg -y #{options[:bitrate] ? "-b #{options[:bitrate]}" : ""} -r #{frame_rate} -threads #{(@multiple_processes or 1)} -i film_frames/frame_%0#{fd}d#{extension} -
|
740
|
+
puts `ffmpeg -y #{options[:bitrate] ? "-b #{options[:bitrate]}" : ""} -r #{frame_rate} -threads #{(@multiple_processes or 1)} -i film_frames/frame_%0#{fd}d#{extension} -qscale 0 #{film_name}.mp4`
|
741
741
|
end
|
742
742
|
end
|
743
743
|
|
@@ -80,7 +80,7 @@ module Moab
|
|
80
80
|
raise "Please specify wall mins using the W flag"
|
81
81
|
end
|
82
82
|
eputs "Allotted wall time is " + sprintf("%02d:%02d:%02d", hours, mins, secs)
|
83
|
-
return [hours,
|
83
|
+
return [hours, mins, secs]
|
84
84
|
end
|
85
85
|
def ppn_checks
|
86
86
|
eputs "Warning: Underuse of nodes (#{ppn} cores per node instead of #{max_ppn})" if ppn.to_i < max_ppn
|
@@ -88,7 +88,7 @@ module Moab
|
|
88
88
|
end
|
89
89
|
def batch_script
|
90
90
|
ppn_checks
|
91
|
-
hours,
|
91
|
+
hours, mins, secs = hours_minutes_seconds
|
92
92
|
<<EOF
|
93
93
|
#!/bin/bash --login
|
94
94
|
#PBS -N #{executable_name}.#{job_identifier}
|
@@ -27,4 +27,358 @@
|
|
27
27
|
[{:test=>"kind_of? Numeric",
|
28
28
|
:explanation=>
|
29
29
|
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
30
|
-
:type=>:Float}
|
30
|
+
:type=>:Float},
|
31
|
+
:beta=>
|
32
|
+
{:should_include=>"true",
|
33
|
+
:description=>nil,
|
34
|
+
:help=>nil,
|
35
|
+
:code_name=>:beta,
|
36
|
+
:must_pass=>
|
37
|
+
[{:test=>"kind_of? Numeric",
|
38
|
+
:explanation=>
|
39
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
40
|
+
:type=>:Float},
|
41
|
+
:zeff=>
|
42
|
+
{:should_include=>"true",
|
43
|
+
:description=>nil,
|
44
|
+
:help=>nil,
|
45
|
+
:code_name=>:zeff,
|
46
|
+
:must_pass=>
|
47
|
+
[{:test=>"kind_of? Numeric",
|
48
|
+
:explanation=>
|
49
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
50
|
+
:type=>:Float},
|
51
|
+
:grid_option=>
|
52
|
+
{:should_include=>"true",
|
53
|
+
:description=>nil,
|
54
|
+
:help=>nil,
|
55
|
+
:code_name=>:grid_option,
|
56
|
+
:must_pass=>
|
57
|
+
[{:test=>"kind_of? String",
|
58
|
+
:explanation=>"This variable must be a string."}],
|
59
|
+
:type=>:String},
|
60
|
+
:aky=>
|
61
|
+
{:should_include=>"true",
|
62
|
+
:description=>nil,
|
63
|
+
:help=>nil,
|
64
|
+
:code_name=>:aky,
|
65
|
+
:must_pass=>
|
66
|
+
[{:test=>"kind_of? Numeric",
|
67
|
+
:explanation=>
|
68
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
69
|
+
:type=>:Float},
|
70
|
+
:akx=>
|
71
|
+
{:should_include=>"true",
|
72
|
+
:description=>nil,
|
73
|
+
:help=>nil,
|
74
|
+
:code_name=>:akx,
|
75
|
+
:must_pass=>
|
76
|
+
[{:test=>"kind_of? Numeric",
|
77
|
+
:explanation=>
|
78
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
79
|
+
:type=>:Float},
|
80
|
+
:ntheta=>
|
81
|
+
{:should_include=>"true",
|
82
|
+
:description=>nil,
|
83
|
+
:help=>nil,
|
84
|
+
:code_name=>:ntheta,
|
85
|
+
:must_pass=>
|
86
|
+
[{:test=>"kind_of? Integer",
|
87
|
+
:explanation=>"This variable must be an integer."}],
|
88
|
+
:type=>:Integer},
|
89
|
+
:nperiod=>
|
90
|
+
{:should_include=>"true",
|
91
|
+
:description=>nil,
|
92
|
+
:help=>nil,
|
93
|
+
:code_name=>:nperiod,
|
94
|
+
:must_pass=>
|
95
|
+
[{:test=>"kind_of? Integer",
|
96
|
+
:explanation=>"This variable must be an integer."}],
|
97
|
+
:type=>:Integer},
|
98
|
+
:eps=>
|
99
|
+
{:should_include=>"true",
|
100
|
+
:description=>nil,
|
101
|
+
:help=>nil,
|
102
|
+
:code_name=>:eps,
|
103
|
+
:must_pass=>
|
104
|
+
[{:test=>"kind_of? Numeric",
|
105
|
+
:explanation=>
|
106
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
107
|
+
:type=>:Float},
|
108
|
+
:epsl=>
|
109
|
+
{:should_include=>"true",
|
110
|
+
:description=>nil,
|
111
|
+
:help=>nil,
|
112
|
+
:code_name=>:epsl,
|
113
|
+
:must_pass=>
|
114
|
+
[{:test=>"kind_of? Numeric",
|
115
|
+
:explanation=>
|
116
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
117
|
+
:type=>:Float},
|
118
|
+
:shat=>
|
119
|
+
{:should_include=>"true",
|
120
|
+
:description=>nil,
|
121
|
+
:help=>nil,
|
122
|
+
:code_name=>:shat,
|
123
|
+
:must_pass=>
|
124
|
+
[{:test=>"kind_of? Numeric",
|
125
|
+
:explanation=>
|
126
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
127
|
+
:type=>:Float},
|
128
|
+
:pk=>
|
129
|
+
{:should_include=>"true",
|
130
|
+
:description=>nil,
|
131
|
+
:help=>nil,
|
132
|
+
:code_name=>:pk,
|
133
|
+
:must_pass=>
|
134
|
+
[{:test=>"kind_of? Numeric",
|
135
|
+
:explanation=>
|
136
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
137
|
+
:type=>:Float},
|
138
|
+
:shift=>
|
139
|
+
{:should_include=>"true",
|
140
|
+
:description=>nil,
|
141
|
+
:help=>nil,
|
142
|
+
:code_name=>:shift,
|
143
|
+
:must_pass=>
|
144
|
+
[{:test=>"kind_of? Numeric",
|
145
|
+
:explanation=>
|
146
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
147
|
+
:type=>:Float},
|
148
|
+
:equilibrium_option=>
|
149
|
+
{:should_include=>"true",
|
150
|
+
:description=>nil,
|
151
|
+
:help=>nil,
|
152
|
+
:code_name=>:equilibrium_option,
|
153
|
+
:must_pass=>
|
154
|
+
[{:test=>"kind_of? String",
|
155
|
+
:explanation=>"This variable must be a string."}],
|
156
|
+
:type=>:String},
|
157
|
+
:model_option=>
|
158
|
+
{:should_include=>"true",
|
159
|
+
:description=>nil,
|
160
|
+
:help=>nil,
|
161
|
+
:code_name=>:model_option,
|
162
|
+
:must_pass=>
|
163
|
+
[{:test=>"kind_of? String",
|
164
|
+
:explanation=>"This variable must be a string."}],
|
165
|
+
:type=>:String},
|
166
|
+
:ngauss=>
|
167
|
+
{:should_include=>"true",
|
168
|
+
:description=>nil,
|
169
|
+
:help=>nil,
|
170
|
+
:code_name=>:ngauss,
|
171
|
+
:must_pass=>
|
172
|
+
[{:test=>"kind_of? Integer",
|
173
|
+
:explanation=>"This variable must be an integer."}],
|
174
|
+
:type=>:Integer},
|
175
|
+
:negrid=>
|
176
|
+
{:should_include=>"true",
|
177
|
+
:description=>nil,
|
178
|
+
:help=>nil,
|
179
|
+
:code_name=>:negrid,
|
180
|
+
:must_pass=>
|
181
|
+
[{:test=>"kind_of? Integer",
|
182
|
+
:explanation=>"This variable must be an integer."}],
|
183
|
+
:type=>:Integer},
|
184
|
+
:gridfac=>
|
185
|
+
{:should_include=>"true",
|
186
|
+
:description=>nil,
|
187
|
+
:help=>nil,
|
188
|
+
:code_name=>:gridfac,
|
189
|
+
:must_pass=>
|
190
|
+
[{:test=>"kind_of? Numeric",
|
191
|
+
:explanation=>
|
192
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
193
|
+
:type=>:Float},
|
194
|
+
:omprimfac=>
|
195
|
+
{:should_include=>"true",
|
196
|
+
:description=>nil,
|
197
|
+
:help=>nil,
|
198
|
+
:code_name=>:omprimfac,
|
199
|
+
:must_pass=>
|
200
|
+
[{:test=>"kind_of? Numeric",
|
201
|
+
:explanation=>
|
202
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
203
|
+
:type=>:Float},
|
204
|
+
:boundary_option=>
|
205
|
+
{:should_include=>"true",
|
206
|
+
:description=>nil,
|
207
|
+
:help=>nil,
|
208
|
+
:code_name=>:boundary_option,
|
209
|
+
:must_pass=>
|
210
|
+
[{:test=>"kind_of? String",
|
211
|
+
:explanation=>"This variable must be a string."}],
|
212
|
+
:type=>:String},
|
213
|
+
:adiabatic_option=>
|
214
|
+
{:should_include=>"true",
|
215
|
+
:description=>nil,
|
216
|
+
:help=>nil,
|
217
|
+
:code_name=>:adiabatic_option,
|
218
|
+
:must_pass=>
|
219
|
+
[{:test=>"kind_of? String",
|
220
|
+
:explanation=>"This variable must be a string."}],
|
221
|
+
:type=>:String},
|
222
|
+
:g_exb=>
|
223
|
+
{:should_include=>"true",
|
224
|
+
:description=>nil,
|
225
|
+
:help=>nil,
|
226
|
+
:code_name=>:g_exb,
|
227
|
+
:must_pass=>
|
228
|
+
[{:test=>"kind_of? Numeric",
|
229
|
+
:explanation=>
|
230
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
231
|
+
:type=>:Float},
|
232
|
+
:nonad_zero=>
|
233
|
+
{:should_include=>"true",
|
234
|
+
:description=>nil,
|
235
|
+
:help=>nil,
|
236
|
+
:code_name=>:nonad_zero,
|
237
|
+
:must_pass=>
|
238
|
+
[{:test=>"kind_of? String and FORTRAN_BOOLS.include? self",
|
239
|
+
:explanation=>
|
240
|
+
"This variable must be a fortran boolean. (In Ruby this is represented as a string: e.g. '.true.')"}],
|
241
|
+
:type=>:Fortran_Bool},
|
242
|
+
:field_option=>
|
243
|
+
{:should_include=>"true",
|
244
|
+
:description=>nil,
|
245
|
+
:help=>nil,
|
246
|
+
:code_name=>:field_option,
|
247
|
+
:must_pass=>
|
248
|
+
[{:test=>"kind_of? String",
|
249
|
+
:explanation=>"This variable must be a string."}],
|
250
|
+
:type=>:String},
|
251
|
+
:wstar_units=>
|
252
|
+
{:should_include=>"true",
|
253
|
+
:description=>nil,
|
254
|
+
:help=>nil,
|
255
|
+
:code_name=>:wstar_units,
|
256
|
+
:must_pass=>
|
257
|
+
[{:test=>"kind_of? String and FORTRAN_BOOLS.include? self",
|
258
|
+
:explanation=>
|
259
|
+
"This variable must be a fortran boolean. (In Ruby this is represented as a string: e.g. '.true.')"}],
|
260
|
+
:type=>:Fortran_Bool},
|
261
|
+
:fphi=>
|
262
|
+
{:should_include=>"true",
|
263
|
+
:description=>nil,
|
264
|
+
:help=>nil,
|
265
|
+
:code_name=>:fphi,
|
266
|
+
:must_pass=>
|
267
|
+
[{:test=>"kind_of? Numeric",
|
268
|
+
:explanation=>
|
269
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
270
|
+
:type=>:Float},
|
271
|
+
:fapar=>
|
272
|
+
{:should_include=>"true",
|
273
|
+
:description=>nil,
|
274
|
+
:help=>nil,
|
275
|
+
:code_name=>:fapar,
|
276
|
+
:must_pass=>
|
277
|
+
[{:test=>"kind_of? Numeric",
|
278
|
+
:explanation=>
|
279
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
280
|
+
:type=>:Float},
|
281
|
+
:faperp=>
|
282
|
+
{:should_include=>"true",
|
283
|
+
:description=>nil,
|
284
|
+
:help=>nil,
|
285
|
+
:code_name=>:faperp,
|
286
|
+
:must_pass=>
|
287
|
+
[{:test=>"kind_of? Numeric",
|
288
|
+
:explanation=>
|
289
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
290
|
+
:type=>:Float},
|
291
|
+
:delt=>
|
292
|
+
{:should_include=>"true",
|
293
|
+
:description=>nil,
|
294
|
+
:help=>nil,
|
295
|
+
:code_name=>:delt,
|
296
|
+
:must_pass=>
|
297
|
+
[{:test=>"kind_of? Numeric",
|
298
|
+
:explanation=>
|
299
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
300
|
+
:type=>:Float},
|
301
|
+
:nstep=>
|
302
|
+
{:should_include=>"true",
|
303
|
+
:description=>nil,
|
304
|
+
:help=>nil,
|
305
|
+
:code_name=>:nstep,
|
306
|
+
:must_pass=>
|
307
|
+
[{:test=>"kind_of? Integer",
|
308
|
+
:explanation=>"This variable must be an integer."}],
|
309
|
+
:type=>:Integer},
|
310
|
+
:delt_adj=>
|
311
|
+
{:should_include=>"true",
|
312
|
+
:description=>nil,
|
313
|
+
:help=>nil,
|
314
|
+
:code_name=>:delt_adj,
|
315
|
+
:must_pass=>
|
316
|
+
[{:test=>"kind_of? Numeric",
|
317
|
+
:explanation=>
|
318
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
319
|
+
:type=>:Float},
|
320
|
+
:delt_minimum=>
|
321
|
+
{:should_include=>"true",
|
322
|
+
:description=>nil,
|
323
|
+
:help=>nil,
|
324
|
+
:code_name=>:delt_minimum,
|
325
|
+
:must_pass=>
|
326
|
+
[{:test=>"kind_of? Numeric",
|
327
|
+
:explanation=>
|
328
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
329
|
+
:type=>:Float},
|
330
|
+
:layout=>
|
331
|
+
{:should_include=>"true",
|
332
|
+
:description=>nil,
|
333
|
+
:help=>nil,
|
334
|
+
:code_name=>:layout,
|
335
|
+
:must_pass=>
|
336
|
+
[{:test=>"kind_of? String",
|
337
|
+
:explanation=>"This variable must be a string."}],
|
338
|
+
:type=>:String},
|
339
|
+
:collision_model=>
|
340
|
+
{:should_include=>"true",
|
341
|
+
:description=>nil,
|
342
|
+
:help=>nil,
|
343
|
+
:code_name=>:collision_model,
|
344
|
+
:must_pass=>
|
345
|
+
[{:test=>"kind_of? String",
|
346
|
+
:explanation=>"This variable must be a string."}],
|
347
|
+
:type=>:String},
|
348
|
+
:nonlinear_mode=>
|
349
|
+
{:should_include=>"true",
|
350
|
+
:description=>nil,
|
351
|
+
:help=>nil,
|
352
|
+
:code_name=>:nonlinear_mode,
|
353
|
+
:must_pass=>
|
354
|
+
[{:test=>"kind_of? String",
|
355
|
+
:explanation=>"This variable must be a string."}],
|
356
|
+
:type=>:String},
|
357
|
+
:flow_mode=>
|
358
|
+
{:should_include=>"true",
|
359
|
+
:description=>nil,
|
360
|
+
:help=>nil,
|
361
|
+
:code_name=>:flow_mode,
|
362
|
+
:must_pass=>
|
363
|
+
[{:test=>"kind_of? String",
|
364
|
+
:explanation=>"This variable must be a string."}],
|
365
|
+
:type=>:String},
|
366
|
+
:cfl=>
|
367
|
+
{:should_include=>"true",
|
368
|
+
:description=>nil,
|
369
|
+
:help=>nil,
|
370
|
+
:code_name=>:cfl,
|
371
|
+
:must_pass=>
|
372
|
+
[{:test=>"kind_of? Numeric",
|
373
|
+
:explanation=>
|
374
|
+
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
375
|
+
:type=>:Float},
|
376
|
+
:nspec=>
|
377
|
+
{:should_include=>"true",
|
378
|
+
:description=>nil,
|
379
|
+
:help=>nil,
|
380
|
+
:code_name=>:nspec,
|
381
|
+
:must_pass=>
|
382
|
+
[{:test=>"kind_of? Integer",
|
383
|
+
:explanation=>"This variable must be an integer."}],
|
384
|
+
:type=>:Integer}}
|
@@ -54,4 +54,25 @@
|
|
54
54
|
:explanation=>
|
55
55
|
"This variable must be a floating point number (an integer is also acceptable: it will be converted into a floating point number)."}],
|
56
56
|
:type=>:Float,
|
57
|
-
:autoscanned_defaults=>[1.0]}}}
|
57
|
+
:autoscanned_defaults=>[1.0]}}},
|
58
|
+
:parameters=>{:description=>"", :should_include=>"true", :variables=>{}},
|
59
|
+
:kt_grids_knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
60
|
+
:kt_grids_single_parameters=>
|
61
|
+
{:description=>"", :should_include=>"true", :variables=>{}},
|
62
|
+
:theta_grid_parameters=>
|
63
|
+
{:description=>"", :should_include=>"true", :variables=>{}},
|
64
|
+
:theta_grid_knobs=>
|
65
|
+
{:description=>"", :should_include=>"true", :variables=>{}},
|
66
|
+
:theta_grid_salpha_knobs=>
|
67
|
+
{:description=>"", :should_include=>"true", :variables=>{}},
|
68
|
+
:le_grids_knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
69
|
+
:dist_fn_knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
70
|
+
:fields_knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
71
|
+
:knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
72
|
+
:reinit_knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
73
|
+
:layouts_knobs=>{:description=>"", :should_include=>"true", :variables=>{}},
|
74
|
+
:collisions_knobs=>
|
75
|
+
{:description=>"", :should_include=>"true", :variables=>{}},
|
76
|
+
:nonlinear_terms_knobs=>
|
77
|
+
{:description=>"", :should_include=>"true", :variables=>{}},
|
78
|
+
:species_knobs=>{:description=>"", :should_include=>"true", :variables=>{}}}
|
data/test/test_coderunner.rb
CHANGED
@@ -21,7 +21,7 @@ $coderunner_command = "#{$ruby_command} -I lib/ lib/coderunner.rb"
|
|
21
21
|
#raise "Couldn't build test program using #{string}" unless system string
|
22
22
|
#end
|
23
23
|
|
24
|
-
if
|
24
|
+
if false
|
25
25
|
class TestSubmission < Test::Unit::TestCase
|
26
26
|
def setup
|
27
27
|
string = $cpp_command + ' ../cubecalc.cc -o cubecalc'
|
@@ -363,7 +363,7 @@ end # if false/true
|
|
363
363
|
#end
|
364
364
|
#
|
365
365
|
#
|
366
|
-
ENV['CR_NON_INTERACTIVE'] = 'true'
|
366
|
+
#ENV['CR_NON_INTERACTIVE'] = 'true'
|
367
367
|
class TestFortranNamelistC < Test::Unit::TestCase
|
368
368
|
def setup
|
369
369
|
end
|
@@ -372,6 +372,7 @@ class TestFortranNamelistC < Test::Unit::TestCase
|
|
372
372
|
CodeRunner.setup_run_class('cubecalc', modlet: 'with_namelist')
|
373
373
|
assert_equal(File.read('test/cubecalc_namelist.cc').size+1, CodeRunner::Cubecalc::WithNamelist.get_aggregated_source_code_text('test').size)
|
374
374
|
CodeRunner::Cubecalc::WithNamelist.synchronise_variables('test')
|
375
|
+
CodeRunner::Cubecalc::WithNamelist.synchronise_variables_from_input_file('test/cubecalc.in')
|
375
376
|
CodeRunner::Cubecalc::WithNamelist.update_defaults_from_source_code('test')
|
376
377
|
end
|
377
378
|
def test_mediawiki_write
|