gs2crmod 0.7.1 → 0.7.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.7.1
1
+ 0.7.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.7.1"
8
+ s.version = "0.7.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-06-28"
12
+ s.date = "2013-07-02"
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"]
@@ -1958,6 +1958,119 @@ module GraphKits
1958
1958
  kit
1959
1959
  end
1960
1960
  end
1961
+ def g2_by_energy_by_all_k_graphkit(options={})
1962
+ case options[:command]
1963
+ when :help
1964
+ return "Plots g**2 vs Hankel mode for fixed wavenumber and Hankel mode. JTP"
1965
+ when :options
1966
+ return []
1967
+ else
1968
+ #raise "Velocity space diagnostics not found" unless FileTest.exist? "#@directory/#@run_name.vpg"
1969
+ raise "Velocity space diagnostics not found" unless FileTest.exist? "#@directory/#@run_name.vpx#{'%02d'%options[:kx_index]}y#{'%02d'%options[:ky_index]}z#{'%02d'%options[:kz_index]}g"
1970
+ g2 = []
1971
+ x_axis = []
1972
+ File.open("#@directory/#@run_name.vpx#{'%02d'%options[:kx_index]}y#{'%02d'%options[:ky_index]}z#{'%02d'%options[:kz_index]}g","r").each_line do | line |
1973
+ #File.open("#@directory/#@run_name.vpg","r").each_line do | line |
1974
+ line_array = line.split(/\s+/).map{|v| v.to_f}
1975
+ if( options[:il_index] == line_array[4] )
1976
+ g2.push line_array[1] # **2+line_array[2]**2
1977
+ x_axis.push line_array[3]
1978
+ end
1979
+ end
1980
+
1981
+ return GraphKit.quick_create([x_axis,g2])
1982
+ end
1983
+ end
1984
+ def g2_by_energy_by_kx_by_ky_graphkit(options={})
1985
+ case options[:command]
1986
+ when :help
1987
+ return "Plots g**2 vs Hankel mode for fixed wavenumber and Hankel mode. JTP"
1988
+ when :options
1989
+ return []
1990
+ else
1991
+ raise "Velocity space diagnostics not found" unless FileTest.exist? "#@directory/#@run_name.vpg"
1992
+ g2 = []
1993
+ x_axis = []
1994
+ File.open("#@directory/#@run_name.vpx#{'%02d'%options[:kx_index]}y#{'%02d'%options[:ky_index]}g","r").each_line do | line |
1995
+ #File.open("#@directory/#@run_name.vpg","r").each_line do | line |
1996
+ line_array = line.split(/\s+/).map{|v| v.to_f}
1997
+ if( options[:il_index] == line_array[4] )
1998
+ g2.push line_array[1] # **2+line_array[2]**2
1999
+ x_axis.push line_array[3]
2000
+ end
2001
+ end
2002
+
2003
+ return GraphKit.quick_create([x_axis,g2])
2004
+ end
2005
+ end
2006
+ def g2_by_energy_graphkit(options={})
2007
+ case options[:command]
2008
+ when :help
2009
+ return "Plots g**2 vs Hankel mode for fixed wavenumber and Hankel mode. JTP"
2010
+ when :options
2011
+ return []
2012
+ else
2013
+ raise "Velocity space diagnostics not found" unless FileTest.exist? "#@directory/#@run_name.vpg"
2014
+ g2 = []
2015
+ x_axis = []
2016
+ #File.open("#@directory/#@run_name.vpx#{options[:kx_index]}y#{options[:ky_index]}g","r").each_line do | line |
2017
+ File.open("#@directory/#@run_name.vpg","r").each_line do | line |
2018
+ line_array = line.split(/\s+/).map{|v| v.to_f}
2019
+ if( options[:il_index] == line_array[4] )
2020
+ g2.push line_array[1] # **2+line_array[2]**2
2021
+ x_axis.push line_array[3]
2022
+ end
2023
+ end
2024
+
2025
+ return GraphKit.quick_create([x_axis,g2])
2026
+ end
2027
+ end
2028
+ def g2_by_lambda_by_all_k_graphkit(options={})
2029
+ case options[:command]
2030
+ when :help
2031
+ return "Plots g**2 vs Hermite mode for fixed wavenumber and Hankel mode. JTP"
2032
+ when :options
2033
+ return []
2034
+ else
2035
+ #raise "Velocity space diagnostics not found" unless FileTest.exist? "#@directory/#@run_name.vpg"
2036
+ g2 = []
2037
+ x_axis = []
2038
+ #File.open("#@directory/#@run_name.vpx#{options[:kx_index]}y#{options[:ky_index]}g","r").each_line do | line |
2039
+ #File.open("#@directory/#@run_name.vpg","r").each_line do | line |
2040
+ File.open("#@directory/#@run_name.vpx#{'%02d'%options[:kx_index]}y#{'%02d'%options[:ky_index]}z#{'%02d'%options[:kz_index]}g","r").each_line do | line |
2041
+ line_array = line.split(/\s+/).map{|v| v.to_f}
2042
+ if( options[:e_index] == line_array[3] )
2043
+ g2.push line_array[1] # **2+line_array[2]**2
2044
+ x_axis.push line_array[4]
2045
+ end
2046
+ end
2047
+
2048
+ return GraphKit.quick_create([x_axis,g2])
2049
+ end
2050
+ end
2051
+ def g2_by_lambda_graphkit(options={})
2052
+ case options[:command]
2053
+ when :help
2054
+ return "Plots g**2 vs Hermite mode for fixed wavenumber and Hankel mode. JTP"
2055
+ when :options
2056
+ return []
2057
+ else
2058
+ raise "Velocity space diagnostics not found" unless FileTest.exist? "#@directory/#@run_name.vpg"
2059
+ g2 = []
2060
+ x_axis = []
2061
+ #File.open("#@directory/#@run_name.vpx#{options[:kx_index]}y#{options[:ky_index]}g","r").each_line do | line |
2062
+ File.open("#@directory/#@run_name.vpg","r").each_line do | line |
2063
+ line_array = line.split(/\s+/).map{|v| v.to_f}
2064
+ if( options[:e_index] == line_array[3] )
2065
+ g2.push line_array[1] # **2+line_array[2]**2
2066
+ x_axis.push line_array[4]
2067
+ end
2068
+ end
2069
+
2070
+ return GraphKit.quick_create([x_axis,g2])
2071
+ end
2072
+ end
2073
+
1961
2074
  def vspace_diagnostics_graphkit(options={})
1962
2075
  case options[:command]
1963
2076
  when :help
@@ -158,7 +158,7 @@ class CodeRunner::Gs2
158
158
  when /phi/
159
159
  time_varying ? 'phi_t' : 'phi'
160
160
  when /density/
161
- time_varying ? raise("") : 'density'
161
+ time_varying ? 'ntot_t' : 'density'
162
162
  end
163
163
  #p name
164
164
  return name
@@ -179,7 +179,7 @@ class CodeRunner::Gs2
179
179
  if options[:t_index]
180
180
  #ep options; gets
181
181
  raise CRFatal.new("write_phi_over_time is not enabled so this function won't work") unless @write_phi_over_time
182
- arr = GSL::Tensor.new(netcdf_file.var(field_netcdf_name(options[:field_name], true)).get({'start' => [0,(options[:thetamin]||0),0,0, options[:t_index] - 1], 'end' => [-1,(options[:thetamax]||-1),(options[:nakx]||0)-1,(options[:naky]||0)-1, options[:t_index] - 1]}))
182
+ arr = GSL::Tensor.new(netcdf_file.var(field_netcdf_name(options[:field_name], true)).get({'start' => [0,(options[:thetamin]||0),0,0, species_element, options[:t_index] - 1].compact, 'end' => [-1,(options[:thetamax]||-1),(options[:nakx]||0)-1,(options[:naky]||0)-1, species_element, options[:t_index] - 1].compact}))
183
183
  #ep 'arr.shape', arr.shape
184
184
  arr.reshape!(*arr.shape.slice(1...arr.shape.size))
185
185
 
@@ -120,8 +120,8 @@ def ingen
120
120
 
121
121
  error("Boundary options should not be periodic with finite magnetic shear") if @boundary_option == "periodic" and ((@s_hat_input and @s_hat_input.abs > 1.0e-6) or (@shat and @shat.abs > 1.0e-6))
122
122
 
123
- error("abs(shat) should not be less that 1.0e-6") if @shat and @shat.abs < 1.0e-6
124
- error("abs(s_hat_input) should not be less that 1.0e-6") if @s_hat_input and @s_hat_input.abs < 1.0e-6
123
+ error("abs(shat) should not be less that 1.0e-6") if @shat and @shat.abs < 1.0e-6 and not agk?
124
+ error("abs(s_hat_input) should not be less that 1.0e-6") if @s_hat_input and @s_hat_input.abs < 1.0e-6 and not agk?
125
125
 
126
126
  # delt
127
127
 
Binary file
@@ -30,11 +30,11 @@ if ENV['GS2_EXEC']
30
30
  FileUtils.rm(tfolder + '/v/id_1/.code_runner_run_data')
31
31
  FileUtils.rm(tfolder + '/v/id_1/code_runner_results.rb')
32
32
  # Don't uncomment the line below unless you *really* know what you are doing! Replacing the test archive will break many of the tests
33
- #Dir.chdir('test'){system "tar -czf cyclone_low_res.tgz cyclone_low_res/" unless FileTest.exist?('cyclone_low_res.tgz')}
33
+ Dir.chdir('test'){system "tar -czf cyclone_low_res.tgz cyclone_low_res/" unless FileTest.exist?('cyclone_low_res.tgz')}
34
34
  FileUtils.rm_r(tfolder)
35
35
  end
36
36
  def test_submission
37
- CodeRunner.submit(C: 'gs2', X: ENV['GS2_EXEC'], D: 'test_gs2crmod', n: '4', Y: tfolder)
37
+ CodeRunner.submit(C: 'gs2', X: ENV['GS2_EXEC'], D: 'test_gs2crmod', n: '4', Y: tfolder, p: '{write_moments: ".true."}')
38
38
  CodeRunner.status(Y: tfolder)
39
39
  end
40
40
  end
@@ -117,6 +117,11 @@ class TestAnalysis < Test::Unit::TestCase
117
117
  assert_equal(-0.00352, kit.data[0].f.data[-1,1].round(5))
118
118
  assert_equal(1.707, kit.data[0].x.data[-1,1].round(3))
119
119
  kit.gp.view = ["equal xyz", ",,4.0"]
120
+
121
+ kit = @runner.run_list[1].graphkit('density_real_space_poloidal_plane', {n0: 1, Rgeo: 3, interpolate_theta: 8, torphi: Math::PI/4.0, species_index: 1, t_index: 50})
122
+ assert_equal(-0.00208, kit.data[0].f.data[-1,1].round(5))
123
+ assert_equal(1.707, kit.data[0].x.data[-1,1].round(3))
124
+ kit.gp.view = ["equal xyz", ",,4.0"]
120
125
  #kit.gnuplot
121
126
  kit = @runner.run_list[1].graphkit('phi_real_space_standard_representation', {n0: 1, Rgeo: 3, interpolate_theta: 2, torphi_values: [Math::PI/4.0,3.0*Math::PI/4.0], interpolate_y: 2})
122
127
  assert_equal([5,17], kit.data[0].f.data.shape)
@@ -137,6 +142,36 @@ end
137
142
 
138
143
  AGK_SLAB_ITG_LOW_KPERP_FOLDER = 'test/agk_slab_itg_low_kperp'
139
144
 
145
+ class TestAgkAnalysis < Test::Unit::TestCase
146
+
147
+ def setup
148
+ Dir.chdir('test'){assert(system "tar -xzf agk_slab_itg_low_kperp.tgz")}
149
+ @runner = CodeRunner.fetch_runner(Y: tfolder)
150
+ @run = @runner.run_list[1]
151
+ end
152
+ def tfolder
153
+ AGK_SLAB_ITG_LOW_KPERP_FOLDER
154
+ end
155
+ def test_graphs
156
+ kit = @runner.run_list[1].graphkit('phi2_by_ky_vs_time', {ky_index: 2})
157
+ #kit.gnuplot
158
+ assert_equal(126, kit.data[0].y.data.size)
159
+ assert_equal(@runner.run_list[1].netcdf_file.var('phi2').get('start' => [4], 'end' => [4]).to_a[0], kit.data[0].y.data[4])
160
+ end
161
+ def test_analysis
162
+ assert_equal(1, @runner.run_list.size)
163
+ assert_equal(0.03224, @runner.run_list[1].max_growth_rate.round(5))
164
+ #p @runner.run_list[1].growth_rate_at_ky
165
+ assert_equal(0.03224, @runner.run_list[1].growth_rate_at_ky[0.01].round(5))
166
+ assert_equal(:Complete, @runner.run_list[1].status)
167
+ end
168
+ def teardown
169
+ FileUtils.rm_r(tfolder)
170
+ end
171
+ end
172
+
173
+
174
+
140
175
  if ENV['AGK_EXEC']
141
176
  class TestAstrogkSubmission < Test::Unit::TestCase
142
177
  def setup
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.7.1
4
+ version: 0.7.2
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-06-28 00:00:00.000000000 Z
13
+ date: 2013-07-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coderunner