gs2crmod 0.9.9 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/gs2crmod.gemspec +2 -2
- data/lib/gs2crmod/calculations.rb +18 -25
- data/lib/gs2crmod/gs2.rb +5 -1
- data/lib/gs2crmod/gsl_data.rb +18 -2
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.10
|
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.9.
|
8
|
+
s.version = "0.9.10"
|
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 = "2013-08-
|
12
|
+
s.date = "2013-08-16"
|
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"]
|
@@ -249,14 +249,9 @@ end
|
|
249
249
|
|
250
250
|
alias :csti :calculate_saturation_time_index
|
251
251
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
logf(:calculate_growth_rates_and_frequencies)
|
256
|
-
logd
|
257
|
-
|
258
|
-
# get_list_of(:ky, :kx)
|
259
|
-
@growth_rates= FloatHash.new
|
252
|
+
#Actually, this doesn't calculate the frequencies but reads them from run_name.out. Requires write_line to be .true.
|
253
|
+
#
|
254
|
+
def calculate_frequencies
|
260
255
|
@real_frequencies = FloatHash.new
|
261
256
|
gs2_out = FileUtils.tail(@run_name + ".out", list(:ky).size*list(:kx).size)
|
262
257
|
# a = gs2_out.split("\n")
|
@@ -265,19 +260,6 @@ def calculate_growth_rates_and_frequencies
|
|
265
260
|
# eputs final_timestep_list
|
266
261
|
f = LongRegexen::FLOAT.verbatim
|
267
262
|
logi(f)
|
268
|
-
#regex = Regexp.new( "^.*aky=\\s*(?<aky>#{f}).*omav=\\s*(?<re>#{f})\\s*(?<gr>#{f})")
|
269
|
-
#logi(regex)
|
270
|
-
#final_timestep_list.gsub(regex) do
|
271
|
-
#data = $~
|
272
|
-
## eputs data.inspect; gets
|
273
|
-
##raise CRFatal.new("Unknown value of ky read from output file: #{data[:aky].to_f}. Not in list:\n#{list(:ky).values.inspect}")
|
274
|
-
|
275
|
-
#next unless (list(:ky).values).include? data[:aky].to_f
|
276
|
-
##@growth_rates[data[:aky].to_f] = data[:gr].to_f
|
277
|
-
#aky = data[:aky].to_f
|
278
|
-
#next if aky==0.0
|
279
|
-
#@real_frequencies[data[:aky].to_f] = data[:re].to_f
|
280
|
-
#end
|
281
263
|
@frequency_at_ky_at_kx||= FloatHash.new
|
282
264
|
ky_values = []
|
283
265
|
regex = Regexp.new( "^.*aky=\\s*(?<aky>#{f})\s*akx=\\s*(?<akx>#{f}).*omav=\\s*(?<re>#{f})\\s*(?<gr>#{f})")
|
@@ -288,16 +270,27 @@ def calculate_growth_rates_and_frequencies
|
|
288
270
|
ky_values.push aky
|
289
271
|
@frequency_at_ky_at_kx[aky][akx] = eval($~[:re])
|
290
272
|
end
|
273
|
+
end
|
274
|
+
def calculate_growth_rates_and_frequencies
|
275
|
+
return if @grid_option == "single" and @aky == 0.0 # no meaningful results
|
276
|
+
Dir.chdir(@directory) do
|
277
|
+
logf(:calculate_growth_rates_and_frequencies)
|
278
|
+
logd
|
279
|
+
|
280
|
+
calculate_frequencies
|
281
|
+
|
282
|
+
# get_list_of(:ky, :kx)
|
283
|
+
@growth_rates= FloatHash.new
|
291
284
|
#raise CRFatal.new("Unknown value of ky read from output file: #{data[:aky].to_f}. Not in list:\n#{list(:ky).values.inspect}")
|
292
285
|
# pp @ky_list
|
293
286
|
|
294
287
|
# With zero magnetic shear, calculate growth rates for both kx and ky
|
295
|
-
if @shat and @shat.abs < 1.0e-5 and @nx and @nx > 1
|
288
|
+
#if @shat and @shat.abs < 1.0e-5 and @nx and @nx > 1
|
296
289
|
to_calc = [:kx, :ky]
|
297
290
|
@growth_rate_at_kx ||= FloatHash.new
|
298
|
-
else
|
299
|
-
to_calc = [:ky]
|
300
|
-
end
|
291
|
+
#else
|
292
|
+
#to_calc = [:ky]
|
293
|
+
#end
|
301
294
|
|
302
295
|
@growth_rate_at_ky ||= FloatHash.new
|
303
296
|
eputs
|
data/lib/gs2crmod/gs2.rb
CHANGED
@@ -64,6 +64,10 @@ def spectrogk?
|
|
64
64
|
false
|
65
65
|
end
|
66
66
|
|
67
|
+
def gryfx?
|
68
|
+
false
|
69
|
+
end
|
70
|
+
|
67
71
|
CODE_SCRIPT_FOLDER = MODULE_FOLDER = File.dirname(File.expand_path(__FILE__))
|
68
72
|
|
69
73
|
# Include the other files
|
@@ -314,7 +318,7 @@ def generate_phantom_runs
|
|
314
318
|
# log('@runner.class', @runner.class)
|
315
319
|
# @runner.add_phantom_run(phantom_run)
|
316
320
|
end
|
317
|
-
elsif @scan_type and @scan_type != "none"
|
321
|
+
elsif (not gryfx?) and @scan_type and @scan_type != "none"
|
318
322
|
t = gsl_vector('t')
|
319
323
|
scan_vals = gsl_vector('scan_parameter_value')
|
320
324
|
current = scan_vals[0]
|
data/lib/gs2crmod/gsl_data.rb
CHANGED
@@ -41,9 +41,16 @@ def netcdf_file
|
|
41
41
|
ncclose
|
42
42
|
end
|
43
43
|
cache[:netcdf_file_otime] = Time.now.to_i
|
44
|
-
cache[:netcdf_file] ||= NumRu::NetCDF.open(
|
44
|
+
cache[:netcdf_file] ||= NumRu::NetCDF.open(netcdf_filename)
|
45
|
+
cache[:netcdf_file].sync
|
46
|
+
cache[:netcdf_file]
|
45
47
|
end
|
46
48
|
|
49
|
+
def netcdf_filename
|
50
|
+
@directory + '/' + @run_name + '.out.nc'
|
51
|
+
end
|
52
|
+
|
53
|
+
|
47
54
|
def ncclose
|
48
55
|
cache[:netcdf_file].close
|
49
56
|
cache.delete(:netcdf_file)
|
@@ -518,7 +525,7 @@ module GSLVectors
|
|
518
525
|
options.convert_to_index(self, :ky, :kx)
|
519
526
|
nkx = netcdf_file.var('kx').dims[0].length
|
520
527
|
# p nkx
|
521
|
-
stride = @jtwist * (options[:ky_index]
|
528
|
+
stride = @jtwist * (options[:ky_index] )
|
522
529
|
#stride = 3
|
523
530
|
nlinks = [(nkx / stride).floor, 1].max
|
524
531
|
theta0 = options[:kx_index] % @jtwist #(options[:theta0] || 0)
|
@@ -651,6 +658,15 @@ module GSLVectors
|
|
651
658
|
# ep thetas
|
652
659
|
#eputs "End theta_along_field_line"
|
653
660
|
return thetas if agk? or (@s_hat_input or @shat).abs < 1.0e-5
|
661
|
+
if gryfx?
|
662
|
+
theta_list = ((1..kx_elements.size).to_a.map do |i|
|
663
|
+
thetas * i
|
664
|
+
end)
|
665
|
+
thetas = theta_list.inject{|o,n| o.connect(n)}
|
666
|
+
thetas -= Math::PI*(kx_elements.size-1)
|
667
|
+
return thetas
|
668
|
+
|
669
|
+
end
|
654
670
|
theta_list = (kx_elements.map do |element|
|
655
671
|
|
656
672
|
kx = list(:kx)[(element + 1).to_i]
|
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.9.
|
4
|
+
version: 0.9.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-08-
|
13
|
+
date: 2013-08-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: coderunner
|