gs2crmod 0.10.31 → 0.11.0
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 +1 -1
- data/VERSION +1 -1
- data/gs2crmod.gemspec +7 -3
- data/lib/gs2crmod/graphs.rb +15 -8
- data/lib/gs2crmod/gs2.rb +1 -0
- data/lib/gs2crmod/read_netcdf.rb +174 -0
- data/test/cyclone_low_res.tgz +0 -0
- data/test/test_gs2crmod.rb +24 -6
- metadata +62 -15
data/Gemfile
CHANGED
@@ -4,7 +4,7 @@ source "http://rubygems.org"
|
|
4
4
|
gem "coderunner", ">= 0.13.13"
|
5
5
|
gem "rubyhacks", ">= 0.1.2"
|
6
6
|
# It seems necessary to have the following line un-commented on some systems but commented out on other systems:
|
7
|
-
|
7
|
+
gem "ruby-netcdf", ">= 0.6.6.1"
|
8
8
|
|
9
9
|
# Add dependencies to develop your gem here.
|
10
10
|
# Include everything needed to run rake, tests, features, etc.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.11.0
|
data/gs2crmod.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gs2crmod"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.11.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Edmund Highcock", "Ferdinand van Wyk"]
|
12
|
-
s.date = "2014-01-
|
12
|
+
s.date = "2014-01-17"
|
13
13
|
s.description = "GS2 is a gyrokinetic flux tube initial value turbulence code which can be used for fusion or astrophysical plasmas. CodeRunner is a framework for the automated running and analysis of large simulations. This module allows GS2 (and its sister code AstroGK) to harness the power of the CodeRunner framework."
|
14
14
|
s.email = "edmundhighcock@sourceforge.net"
|
15
15
|
s.extensions = ["ext/extconf.rb"]
|
@@ -59,6 +59,7 @@ Gem::Specification.new do |s|
|
|
59
59
|
"lib/gs2crmod/ingen.rb",
|
60
60
|
"lib/gs2crmod/namelists.rb",
|
61
61
|
"lib/gs2crmod/properties.rb",
|
62
|
+
"lib/gs2crmod/read_netcdf.rb",
|
62
63
|
"lib/gs2crmod/species_dependent_namelists.rb",
|
63
64
|
"lib/gs2crmod/spectrogk.rb",
|
64
65
|
"lib/gs2crmod/spectrogk/namelists.rb",
|
@@ -78,7 +79,7 @@ Gem::Specification.new do |s|
|
|
78
79
|
s.licenses = ["GSLv3"]
|
79
80
|
s.require_paths = ["lib"]
|
80
81
|
s.required_ruby_version = Gem::Requirement.new(">= 1.9.1")
|
81
|
-
s.rubygems_version = "1.8.
|
82
|
+
s.rubygems_version = "1.8.23"
|
82
83
|
s.summary = "Module to allow CodeRunner to run and analyse the GS2 and AstroGK codes."
|
83
84
|
|
84
85
|
if s.respond_to? :specification_version then
|
@@ -87,6 +88,7 @@ Gem::Specification.new do |s|
|
|
87
88
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
88
89
|
s.add_runtime_dependency(%q<coderunner>, [">= 0.13.13"])
|
89
90
|
s.add_runtime_dependency(%q<rubyhacks>, [">= 0.1.2"])
|
91
|
+
s.add_runtime_dependency(%q<ruby-netcdf>, [">= 0.6.6.1"])
|
90
92
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
91
93
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
92
94
|
s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
|
@@ -94,6 +96,7 @@ Gem::Specification.new do |s|
|
|
94
96
|
else
|
95
97
|
s.add_dependency(%q<coderunner>, [">= 0.13.13"])
|
96
98
|
s.add_dependency(%q<rubyhacks>, [">= 0.1.2"])
|
99
|
+
s.add_dependency(%q<ruby-netcdf>, [">= 0.6.6.1"])
|
97
100
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
98
101
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
99
102
|
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
@@ -102,6 +105,7 @@ Gem::Specification.new do |s|
|
|
102
105
|
else
|
103
106
|
s.add_dependency(%q<coderunner>, [">= 0.13.13"])
|
104
107
|
s.add_dependency(%q<rubyhacks>, [">= 0.1.2"])
|
108
|
+
s.add_dependency(%q<ruby-netcdf>, [">= 0.6.6.1"])
|
105
109
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
106
110
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
107
111
|
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
data/lib/gs2crmod/graphs.rb
CHANGED
@@ -122,21 +122,23 @@ def self.generate_graphs_rdoc_file
|
|
122
122
|
end
|
123
123
|
def self.help_graphs
|
124
124
|
# @@runner ||= CodeRunner.fetch_runner(U: true,
|
125
|
+
string = ""
|
125
126
|
graphs = self.instance_methods.find_all{|m| m.to_s =~ /_graphkit$/}.sort_by{|m| m.to_s}
|
126
127
|
run = new(nil)
|
127
|
-
|
128
|
+
string << "-------------------------------------------\n Available Graphs For #{self.to_s}\n-------------------------------------------\n\n"
|
128
129
|
graphs.each do |graph|
|
129
130
|
help = run.send(graph, command: :help)
|
130
131
|
options = run.send(graph, command: :options)
|
131
|
-
|
132
|
+
string << "\n------------------------------------\n#{graph.to_s.sub(/_graphkit/, '')}\n------------------------------------\n\n#{help}\n"
|
132
133
|
if options and options.size > 0
|
133
|
-
|
134
|
+
string << "\n\tOptions:\n"
|
134
135
|
options.each do |op|
|
135
|
-
|
136
|
+
string << "\t\t#{op}: #{GRAPHKIT_OPTIONS_HELP[op]}\n"
|
136
137
|
end
|
137
138
|
end
|
138
139
|
|
139
140
|
end
|
141
|
+
string.paginate
|
140
142
|
end
|
141
143
|
|
142
144
|
GRAPHKIT_OPTIONS_HELP = {
|
@@ -192,7 +194,7 @@ GRAPHKIT_OPTIONS_HELP = {
|
|
192
194
|
def graphkit(name, options={})
|
193
195
|
logf :graphkit
|
194
196
|
# If an array of t, kx or ky values is provided, plot one graph for each value and then sum the graphs together
|
195
|
-
[:t, :kx, :ky].each do |var|
|
197
|
+
[:t, :kx, :ky, :X, :Y, :e, :l, :theta].each do |var|
|
196
198
|
#ep 'index', var
|
197
199
|
if options[var].class == Symbol and options[var] == :all
|
198
200
|
options[var] = list(var).values
|
@@ -218,10 +220,15 @@ def graphkit(name, options={})
|
|
218
220
|
|
219
221
|
|
220
222
|
|
221
|
-
# If a method from the new GraphKits module can generate this graphkit use it
|
222
|
-
#ep name + '_graphkit'
|
223
|
-
#ep self.class.instance_methods.find{|meth| (name + '_graphkit').to_sym == meth}
|
224
223
|
|
224
|
+
# Smart graphkits are defined in the file read_netcdf
|
225
|
+
if name =~ /^cdf_/
|
226
|
+
return smart_graphkit(options + {graphkit_name: name})
|
227
|
+
elsif name =~ /^nc_/
|
228
|
+
return old_smart_graphkit(options + {graphkit_name: name})
|
229
|
+
end
|
230
|
+
|
231
|
+
# If a method from the new GraphKits module can generate this graphkit use it
|
225
232
|
if method = self.class.instance_methods.find{|meth| (name + '_graphkit').to_sym == meth}
|
226
233
|
options[:graphkit_name] = name
|
227
234
|
return send(method, options)
|
data/lib/gs2crmod/gs2.rb
CHANGED
@@ -0,0 +1,174 @@
|
|
1
|
+
# This module reads data from the new diagnostics output file
|
2
|
+
# <run_name>.cdf.
|
3
|
+
#
|
4
|
+
# It is intended to replace a lot of the function of gsl_data.rb
|
5
|
+
# which reads the old netcdf file. In particular, it defines a new
|
6
|
+
# generic reader function which can read any variable in the new
|
7
|
+
# netcdf file using a standard set of index constraints
|
8
|
+
#
|
9
|
+
|
10
|
+
class CodeRunner::Gs2
|
11
|
+
module ReadNetcdf
|
12
|
+
|
13
|
+
def new_netcdf_file
|
14
|
+
if (open = @runner.run_list.keys.find_all{|id| @runner.run_list[id].cache[:new_netcdf_file]}).size > 200
|
15
|
+
open = open.sort_by{|id| @runner.run_list[id].cache[:new_netcdf_file_otime]}
|
16
|
+
@runner.run_list[open[0]].new_ncclose
|
17
|
+
end
|
18
|
+
|
19
|
+
if cache[:new_netcdf_file] and not [:Complete, :Failed].include? @status
|
20
|
+
new_ncclose
|
21
|
+
end
|
22
|
+
cache[:new_netcdf_file_otime] = Time.now.to_i
|
23
|
+
cache[:new_netcdf_file] ||= NumRu::NetCDF.open(new_netcdf_filename)
|
24
|
+
cache[:new_netcdf_file].sync
|
25
|
+
cache[:new_netcdf_file]
|
26
|
+
end
|
27
|
+
|
28
|
+
def new_netcdf_filename
|
29
|
+
@directory + '/' + @run_name + '.cdf'
|
30
|
+
end
|
31
|
+
def new_ncclose
|
32
|
+
cache[:new_netcdf_file].close
|
33
|
+
cache.delete(:new_netcdf_file)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end #module ReadNetcdf
|
38
|
+
include ReadNetcdf
|
39
|
+
|
40
|
+
class NetcdfSmartReader
|
41
|
+
def initialize(file)
|
42
|
+
@file = file
|
43
|
+
end
|
44
|
+
def dimensions(varname)
|
45
|
+
#p 'varname', varname
|
46
|
+
@file.var(varname).dims
|
47
|
+
end
|
48
|
+
def read_variable(varname, options)
|
49
|
+
#start = get_start(dims, options)
|
50
|
+
dims = dimensions(varname)
|
51
|
+
narray = @file.var(varname).get('start'=>starts(dims, options), 'end'=>ends(dims, options))
|
52
|
+
shape = narray.shape
|
53
|
+
shape.delete_if{|i| i==1}
|
54
|
+
#p 'shape', shape; STDIN.gets
|
55
|
+
narray.reshape!(*shape)
|
56
|
+
narray
|
57
|
+
|
58
|
+
end
|
59
|
+
def starts(dims, options)
|
60
|
+
dims.map{|d| dim_start(d.name, options)}
|
61
|
+
end
|
62
|
+
def dim_start(name, options)
|
63
|
+
sym = name.to_sym
|
64
|
+
if i=options[sym + :_index]
|
65
|
+
return i-1
|
66
|
+
elsif i=options[sym + :_element]
|
67
|
+
return i
|
68
|
+
elsif i=options[sym + :min]
|
69
|
+
return i
|
70
|
+
else
|
71
|
+
return 0
|
72
|
+
end
|
73
|
+
end
|
74
|
+
def ends(dims, options)
|
75
|
+
dims.map{|d| dim_end(d.name, options)}
|
76
|
+
end
|
77
|
+
def dim_end(name, options)
|
78
|
+
sym = name.to_sym
|
79
|
+
if i=options[sym + :_index]
|
80
|
+
return i-1
|
81
|
+
elsif i=options[sym + :_element]
|
82
|
+
return i
|
83
|
+
elsif i=options[sym + :max]
|
84
|
+
return i
|
85
|
+
else
|
86
|
+
return -1
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def axiskit(variable, options)
|
91
|
+
GraphKit::AxisKit.autocreate(data: read_variable(variable, options), units: @file.var(variable).att('Units').get, title: @file.var(variable).att('Description').get.sub(/(,|summed|average).*$/, '').sub(/[vV]alues of (the )?/, '').sub(/ coordinate/, ''))
|
92
|
+
end
|
93
|
+
def dimension_variable_name(n)
|
94
|
+
case n
|
95
|
+
when 'X'
|
96
|
+
'kx'
|
97
|
+
when 'Y'
|
98
|
+
'ky'
|
99
|
+
when 'e'
|
100
|
+
'energy'
|
101
|
+
when 'l'
|
102
|
+
'lambda'
|
103
|
+
when 't'
|
104
|
+
n
|
105
|
+
else
|
106
|
+
raise "Unknown dimension #{n}"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
def check_no_r(non_flat_dims)
|
110
|
+
raise "Please specify the r index for real or imaginary" if non_flat_dims.include? @file.dim('r')
|
111
|
+
end
|
112
|
+
def graphkit(variable, options)
|
113
|
+
non_flat_dims=dimensions(variable).find_all{|dim| dim_start(dim.name, options) != dim_end(dim.name, options) and dim.length != 1}
|
114
|
+
check_no_r(non_flat_dims)
|
115
|
+
axiskits = non_flat_dims.map{|dim| dimvar = dimension_variable_name(dim.name); axiskit(dimvar, options)} + [axiskit(variable, options)]
|
116
|
+
hash = {}
|
117
|
+
axes = [:x, :y, :z, :f]
|
118
|
+
axiskits.each_with_index{|ax, i| hash[axes[i]] = ax}
|
119
|
+
kit = GraphKit.autocreate(hash)
|
120
|
+
opts = options.dup
|
121
|
+
opts.delete(:graphkit_name)
|
122
|
+
#kit.data[0].title += " with options: " + opts.to_s
|
123
|
+
kit.data[0].title += " " + opts.to_s.gsub(/_(index|element)/, '')
|
124
|
+
if kit.zlabel
|
125
|
+
kit.zlabel = "'#{kit.zlabel}' rotate by 90"
|
126
|
+
#kit.zlabel = nil
|
127
|
+
end
|
128
|
+
kit
|
129
|
+
end
|
130
|
+
end # class NetcdfSmartReader
|
131
|
+
|
132
|
+
class OldNetcdfSmartReader < NetcdfSmartReader
|
133
|
+
def dimension_variable_name(n)
|
134
|
+
if (dimnames = @file.dims.map{|dim| dim.name}).include? n
|
135
|
+
#p ['dimnames', dimnames, n]
|
136
|
+
n
|
137
|
+
else
|
138
|
+
raise "Unknown dimension #{r}: dimensions are: #{dimnames}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
def check_no_r(non_flat_dims)
|
142
|
+
raise "Please specify the ri index for real or imaginary" if non_flat_dims.include? @file.dim('ri')
|
143
|
+
end
|
144
|
+
def axiskit(variable, options)
|
145
|
+
GraphKit::AxisKit.autocreate(data: read_variable(variable, options), title: variable)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def netcdf_smart_reader
|
150
|
+
NetcdfSmartReader.new(new_netcdf_file)
|
151
|
+
end
|
152
|
+
|
153
|
+
def smart_graphkit(options)
|
154
|
+
case options[:command]
|
155
|
+
when :help
|
156
|
+
"A smart graphkit is a direct plot of a given variable from the new netcdf file. The name of the graphkit is the name of the variable prefixed by 'cdf_'. To plot, for example, the heat flux vs time, you would give the graph name cdf_heat_flux_tot. You can use index specifiers in the the options; for example, to plot the potential as a function of kx and ky for a given time index, you would use the graph name cdf_phi2_by_mode, and the options {t_index: n}. To plot the potential as function of kx for a given ky and time would use the options {t_index, n, Y_index: m}. For each dimension you can specify the index, or a minium and/or maximum."
|
157
|
+
when :options
|
158
|
+
[:X_index, :Y_index, :t_index, :e_index, :l_index, :s_index, :Xmax, :Xmin, :X_element]
|
159
|
+
else
|
160
|
+
netcdf_smart_reader.graphkit(options[:graphkit_name].sub(/^cdf_/, ''), options)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
def old_smart_graphkit(options)
|
164
|
+
case options[:command]
|
165
|
+
when :help
|
166
|
+
"An old smart graphkit is a direct plot of a given variable from the old netcdf file. The name of the graphkit is the name of the variable prefixed by 'nc_'. To plot, for example, the heat flux vs time, you would give the graph name nc_hflux_tot. You can use index specifiers in the the options; for example, to plot the potential as a function of kx and ky for a given time index, you would use the graph name nc_phi2_by_mode, and the options {t_index: n}. To plot the potential as function of kx for a given ky and time would use the options {t_index, n, ky_index: m}. For each dimension you can specify the index, or a minium and/or maximum."
|
167
|
+
when :options
|
168
|
+
[:kx_index, :ky_index, :t_index, :e_index, :l_index, :s_index, :kxmax, :kxmin, :kx_element]
|
169
|
+
else
|
170
|
+
vars = OldNetcdfSmartReader.new(netcdf_file).graphkit(options[:graphkit_name].sub(/^nc_/, ''), options)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
data/test/cyclone_low_res.tgz
CHANGED
Binary file
|
data/test/test_gs2crmod.rb
CHANGED
@@ -112,21 +112,21 @@ class TestAnalysis < Test::Unit::TestCase
|
|
112
112
|
def test_3d_graphs
|
113
113
|
kit = @runner.run_list[1].graphkit('phi_real_space', {n0: 3, Rgeo: 3})
|
114
114
|
assert_equal([5,5,9], kit.data[0].f.data.shape)
|
115
|
-
assert_equal(-0.
|
115
|
+
assert_equal(-0.00492, kit.data[0].f.data[2,3,6].round(5))
|
116
116
|
kit = @runner.run_list[1].graphkit('density_real_space', {n0: 3, Rgeo: 3, species_index: 1, gs2_coordinate_factor: 0.9})
|
117
117
|
#kit.gnuplot
|
118
118
|
assert_equal([5,5,9], kit.data[0].f.data.shape)
|
119
119
|
assert_equal(-0.00985, kit.data[0].f.data[2,3,6].round(5))
|
120
120
|
kit = @runner.run_list[1].graphkit('phi_real_space', {n0: 3, Rgeo: 3, t_index: 2})
|
121
121
|
assert_equal([5,5,9], kit.data[0].f.data.shape)
|
122
|
-
assert_equal(0.
|
122
|
+
assert_equal(0.00015, kit.data[0].f.data[2,3,6].round(5))
|
123
123
|
kit = @runner.run_list[1].graphkit('phi_real_space_surface', {n0: 3, Rgeo: 3, interpolate_theta: 2})
|
124
124
|
assert_equal([5,5,1], kit.data[0].f.data.shape)
|
125
125
|
assert_equal([5,1,17], kit.data[2].f.data.shape)
|
126
|
-
assert_equal(-0.
|
126
|
+
assert_equal(-0.0024, kit.data[0].f.data[1,4,0].round(5))
|
127
127
|
#kit.gnuplot
|
128
128
|
kit = @runner.run_list[1].graphkit('phi_real_space_poloidal_plane', {n0: 1, Rgeo: 3, interpolate_theta: 8, torphi: Math::PI/4.0})
|
129
|
-
assert_equal(-0.
|
129
|
+
assert_equal(-0.00176, kit.data[0].f.data[-1,1].round(5))
|
130
130
|
assert_equal(1.707, kit.data[0].x.data[-1,1].round(3))
|
131
131
|
kit.gp.view = ["equal xyz", ",,4.0"]
|
132
132
|
#kit.gnuplot
|
@@ -144,11 +144,29 @@ class TestAnalysis < Test::Unit::TestCase
|
|
144
144
|
assert_equal([5,17], kit.data[0].f.data.shape)
|
145
145
|
assert_equal([3,1,17], kit.data[2].f.data.shape)
|
146
146
|
assert_equal([3,1,17], kit.data[2].y.data.shape)
|
147
|
-
assert_equal(
|
147
|
+
assert_equal(0.00012, kit.data[0].f.data[-1,1].round(5))
|
148
148
|
assert_equal(2.12132, kit.data[2].y.data[2,0,12].round(5))
|
149
149
|
#kit.gnuplot
|
150
150
|
end
|
151
151
|
|
152
|
+
def test_new_netcdf_module
|
153
|
+
assert_equal(NumRu::NetCDF, @run.new_netcdf_file.class)
|
154
|
+
assert_equal(NumRu::NetCDFVar, @run.new_netcdf_file.var('phi2').class)
|
155
|
+
assert_equal(@run.netcdf_file.var('phi2').get.to_a[-1], @run.new_netcdf_file.var('phi2').get.to_a[-1])
|
156
|
+
assert_equal("r", @run.netcdf_smart_reader.dimensions('phi')[0].name)
|
157
|
+
assert_equal("X", @run.netcdf_smart_reader.dimensions('phi')[2].name)
|
158
|
+
assert_equal(2, @run.netcdf_smart_reader.dim_start("Y", Y_index: 3))
|
159
|
+
assert_equal(@run.new_netcdf_file.var('phi2').get.to_a, @run.netcdf_smart_reader.read_variable('phi2', {}).to_a)
|
160
|
+
assert_equal(@run.new_netcdf_file.var('phi2').get.to_a[3], @run.netcdf_smart_reader.read_variable('phi2', {t_index: 4})[0])
|
161
|
+
assert_equal(@run.new_netcdf_file.var('phi2').get.to_a[3], @run.netcdf_smart_reader.read_variable('phi2', {tmax: 3})[-1])
|
162
|
+
assert_equal(@run.new_netcdf_file.var('phi').get[0,4,3,1], @run.netcdf_smart_reader.read_variable('phi', {zmax: 5, X_index: 4, Y_element: 1})[0,-2])
|
163
|
+
assert_equal("time (a/v_thr)", @run.smart_graphkit(graphkit_name: 'cdf_heat_flux_tot').xlabel)
|
164
|
+
@run.smart_graphkit(graphkit_name: 'cdf_phi', r_index: 1, z_index: 5)
|
165
|
+
@run.old_smart_graphkit(graphkit_name: 'nc_phi', ri_index: 1, theta_index: 5)
|
166
|
+
@run.graphkit('nc_phi', ri_index: 1, theta_index: [5,6])
|
167
|
+
#@runner.run_class.help_graphs
|
168
|
+
end
|
169
|
+
|
152
170
|
def tfolder
|
153
171
|
CYCLONE_LOW_RES_FOLDER
|
154
172
|
end
|
@@ -187,7 +205,7 @@ class TestAgkAnalysis < Test::Unit::TestCase
|
|
187
205
|
end
|
188
206
|
def test_3d_graphs
|
189
207
|
kit = @runner.run_list[2].graphkit('phi_real_space_surface', {rho_star: 0.1})
|
190
|
-
kit.gnuplot
|
208
|
+
#kit.gnuplot
|
191
209
|
assert_equal([5,5,1], kit.data[0].f.data.shape)
|
192
210
|
#assert_equal(-0.00402, kit.data[0].f.data[2,3,6].round(5))
|
193
211
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gs2crmod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-01-
|
13
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: coderunner
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: 0.13.13
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.13.13
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: rubyhacks
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,31 @@ dependencies:
|
|
33
38
|
version: 0.1.2
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.1.2
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: ruby-netcdf
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.6.6.1
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.6.6.1
|
37
63
|
- !ruby/object:Gem::Dependency
|
38
64
|
name: shoulda
|
39
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
40
66
|
none: false
|
41
67
|
requirements:
|
42
68
|
- - ! '>='
|
@@ -44,10 +70,15 @@ dependencies:
|
|
44
70
|
version: '0'
|
45
71
|
type: :development
|
46
72
|
prerelease: false
|
47
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
48
79
|
- !ruby/object:Gem::Dependency
|
49
80
|
name: rdoc
|
50
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
51
82
|
none: false
|
52
83
|
requirements:
|
53
84
|
- - ~>
|
@@ -55,10 +86,15 @@ dependencies:
|
|
55
86
|
version: '3.12'
|
56
87
|
type: :development
|
57
88
|
prerelease: false
|
58
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '3.12'
|
59
95
|
- !ruby/object:Gem::Dependency
|
60
96
|
name: bundler
|
61
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
62
98
|
none: false
|
63
99
|
requirements:
|
64
100
|
- - ! '>'
|
@@ -66,10 +102,15 @@ dependencies:
|
|
66
102
|
version: 1.0.0
|
67
103
|
type: :development
|
68
104
|
prerelease: false
|
69
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>'
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.0.0
|
70
111
|
- !ruby/object:Gem::Dependency
|
71
112
|
name: jeweler
|
72
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
73
114
|
none: false
|
74
115
|
requirements:
|
75
116
|
- - ! '>='
|
@@ -77,7 +118,12 @@ dependencies:
|
|
77
118
|
version: 1.8.4
|
78
119
|
type: :development
|
79
120
|
prerelease: false
|
80
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 1.8.4
|
81
127
|
description: GS2 is a gyrokinetic flux tube initial value turbulence code which can
|
82
128
|
be used for fusion or astrophysical plasmas. CodeRunner is a framework for the automated
|
83
129
|
running and analysis of large simulations. This module allows GS2 (and its sister
|
@@ -131,6 +177,7 @@ files:
|
|
131
177
|
- lib/gs2crmod/ingen.rb
|
132
178
|
- lib/gs2crmod/namelists.rb
|
133
179
|
- lib/gs2crmod/properties.rb
|
180
|
+
- lib/gs2crmod/read_netcdf.rb
|
134
181
|
- lib/gs2crmod/species_dependent_namelists.rb
|
135
182
|
- lib/gs2crmod/spectrogk.rb
|
136
183
|
- lib/gs2crmod/spectrogk/namelists.rb
|
@@ -166,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
213
|
version: '0'
|
167
214
|
requirements: []
|
168
215
|
rubyforge_project:
|
169
|
-
rubygems_version: 1.8.
|
216
|
+
rubygems_version: 1.8.23
|
170
217
|
signing_key:
|
171
218
|
specification_version: 3
|
172
219
|
summary: Module to allow CodeRunner to run and analyse the GS2 and AstroGK codes.
|