gs2crmod 0.9.1 → 0.9.2

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.2
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.1"
8
+ s.version = "0.9.2"
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-07-30"
12
+ s.date = "2013-07-31"
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"]
@@ -21,7 +21,8 @@ def auto_axiskits(name, options)
21
21
  'es_heat_by_kx_over_time' => ['Phi^2 by ky', ''],
22
22
  'phi2_by_mode_over_time' => ["Phi^2 by mode", ''],
23
23
  'tpar2_by_mode_over_time' => ["(delta T_parallel)^2 by mode", '%'],
24
- 'hflux_tot' => ['Total Heat Flux', ''],
24
+ 'tperp2_by_mode_over_time' => ["(delta T_perp)^2 by mode", '%'],
25
+ 'hflux_tot' => ['Total Heat Flux', ''],
25
26
  'ky' => ['ky', "1/rho_#{species_letter}"],
26
27
  'kx' => ['kx', "1/rho_#{species_letter}"],
27
28
  'kpar' => ['kpar', "2 pi/qR"],
@@ -1935,6 +1936,47 @@ module GraphKits
1935
1936
  end
1936
1937
  end
1937
1938
 
1939
+ def tperp2_by_mode_vs_time_graphkit(options={})
1940
+ case options[:command]
1941
+ when :help
1942
+ return "'tperp2_by_ky_vs_time' or 'tperp2_by_kx_vs_time': tperp^2 over time for a given kx or ky, integrated over the other direction"
1943
+ when :options
1944
+ return [:ky, :ky_index, :kx, :kx_index]
1945
+ else
1946
+ kxy = :mode
1947
+
1948
+ # i.e. tperp2_by_ky_vs_time or tperp2_by_kx_vs_time or tperp2_by_mode_vs_time
1949
+
1950
+ nt_options = options.dup # 'no time' options
1951
+ nt_options.delete(:t_index) if nt_options[:t_index]
1952
+ nt_options.delete(:frame_index) if nt_options[:frame_index]
1953
+ tperpax = axiskit("tperp2_by_#{kxy}_over_time", nt_options)
1954
+ kit = GraphKit.autocreate({x: axiskit('t', options), y: tperpax})
1955
+ kit.data[0].title = "Tperp^2 total: #{kxy} = #{options[kxy]}"
1956
+ if options[:t_index]
1957
+ # p 'hello'
1958
+ array_element = options[:t_index_window] ? options[:t_index] - options[:t_index_window][0] : options[:t_index] - 1
1959
+ # p tparax.data.size, array_element
1960
+ # p options[:t_index], options[:t_index_window]
1961
+ time = DataKit.autocreate({x: {data: GSL::Vector.alloc([list(:t)[options[:t_index]]])}, y: {data: GSL::Vector.alloc([tperpax.data[array_element]]) } })
1962
+ time.pointsize = 3.0
1963
+ # p time
1964
+ # kit.data[0].axes[:x].data = -kit.data[0].axes[:x].data
1965
+ kit.data.push time
1966
+ end
1967
+ if options[:norm]
1968
+ xrange, yrange = kit.plot_area_size
1969
+ kit.each_axiskit(:y) do |axiskit|
1970
+ axiskit.data /= yrange[1] / (options[:height] or 1.0)
1971
+ end
1972
+ end
1973
+ kit.log_axis = 'y'
1974
+ #kit.data[0].title = "gs2:#@run_name"
1975
+ kit.data[0].with = "l" #"linespoints"
1976
+ kit.file_name = options[:graphkit_name]
1977
+ kit
1978
+ end
1979
+ end
1938
1980
  def apar2_vs_time_graphkit(options={})
1939
1981
  case options[:command]
1940
1982
  when :help
@@ -450,6 +450,30 @@ module GSLVectors
450
450
  end
451
451
  end
452
452
 
453
+ def tperp2_by_mode_over_time_gsl_vector(options)
454
+ Dir.chdir(@directory) do #Necessary options: :ky and :kx
455
+ #Optional options: :t_index_window
456
+ # eputs "got here"
457
+ #options[:begin_element], options[:end_element] = (options[:t_index_window] ? options[:t_index_window].map{|ind| ind -1} : [0, -1])
458
+ options.setup_time_window
459
+ tperp_t_array=nil
460
+ if @grid_option == "single"
461
+ tperp_t_array = netcdf_file.var('tperp2').get('start' => [options[:begin_element]], 'end' => [options[:end_element]]).to_a.flatten
462
+ else
463
+ # value = options[:ky]
464
+ # eputs value
465
+ # get_list_of(:ky)
466
+ # index = @ky_list.find{|index,val| (val-value).abs < Float::EPSILON}[0]
467
+ options.convert_to_index(self, :kx, :ky, :species)
468
+ # p options
469
+ tperp_t_array = netcdf_file.var("tperp2_by_mode").get('start' => [options[:kx_index] - 1, options[:ky_index] - 1, options[:species_index] - 1, options[:begin_element]], 'end' => [options[:kx_index] - 1, options[:ky_index] - 1, options[:species_index] - 1, options[:end_element]]).to_a.flatten
470
+ # eputs 'tperp_t_array.size', tperp_t_array.size
471
+ end
472
+ return GSL::Vector.alloc(tperp_t_array)
473
+
474
+ end
475
+ end
476
+
453
477
  def phi0_by_kx_by_ky_over_time_gsl_vector(options)
454
478
  Dir.chdir(@directory) do
455
479
  options.convert_to_index(self, :kx, :ky)
@@ -96,8 +96,11 @@ class TestAnalysis < Test::Unit::TestCase
96
96
 
97
97
  kit = @run.graphkit('tpar2_by_mode_vs_time', {ky_index:2, kx_index:1, species_index:1})
98
98
  #kit.gnuplot
99
-
100
99
  assert_equal(@runner.run_list[1].netcdf_file.var('tpar2_by_mode').get('start' => [0,1,0,4], 'end' => [0,1,0,4]).to_a[0][0][0][0], kit.data[0].y.data[4])
100
+
101
+ kit = @run.graphkit('tperp2_by_mode_vs_time', {ky_index:2, kx_index:1, species_index:1})
102
+ #kit.gnuplot
103
+ assert_equal(@runner.run_list[1].netcdf_file.var('tperp2_by_mode').get('start' => [0,1,0,4], 'end' => [0,1,0,4]).to_a[0][0][0][0], kit.data[0].y.data[4])
101
104
  end
102
105
  def test_3d_graphs
103
106
  kit = @runner.run_list[1].graphkit('phi_real_space', {n0: 3, Rgeo: 3})
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.1
4
+ version: 0.9.2
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: 2013-07-30 00:00:00.000000000 Z
13
+ date: 2013-07-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coderunner
17
- requirement: &20442560 !ruby/object:Gem::Requirement
17
+ requirement: &10308540 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.12.16
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *20442560
25
+ version_requirements: *10308540
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: ruby-netcdf
28
- requirement: &20441580 !ruby/object:Gem::Requirement
28
+ requirement: &10307700 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.6.6.1
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *20441580
36
+ version_requirements: *10307700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: shoulda
39
- requirement: &20455280 !ruby/object:Gem::Requirement
39
+ requirement: &10306140 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *20455280
47
+ version_requirements: *10306140
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rdoc
50
- requirement: &20373540 !ruby/object:Gem::Requirement
50
+ requirement: &10247600 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '3.12'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *20373540
58
+ version_requirements: *10247600
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: bundler
61
- requirement: &20383260 !ruby/object:Gem::Requirement
61
+ requirement: &9765940 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>'
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.0.0
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *20383260
69
+ version_requirements: *9765940
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: jeweler
72
- requirement: &20381900 !ruby/object:Gem::Requirement
72
+ requirement: &9764800 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: 1.8.4
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *20381900
80
+ version_requirements: *9764800
81
81
  description: GS2 is a gyrokinetic flux tube initial value turbulence code which can
82
82
  be used for fusion or astrophysical plasmas. CodeRunner is a framework for the automated
83
83
  running and analysis of large simulations. This module allows GS2 (and its sister