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 CHANGED
@@ -1 +1 @@
1
- 0.9.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.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-15"
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
- def calculate_growth_rates_and_frequencies
253
- return if @grid_option == "single" and @aky == 0.0 # no meaningful results
254
- Dir.chdir(@directory) do
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]
@@ -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(@directory + '/' + @run_name + '.out.nc')
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] - 1)
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.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-15 00:00:00.000000000 Z
13
+ date: 2013-08-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coderunner