trinitycrmod 0.8.10 → 0.8.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d7d881eb701c8e52d690150d4cb45f75ebd8fc1
4
- data.tar.gz: 7c7d986cb4b8433dd7ee7693dfc70c651a034a36
3
+ metadata.gz: 6f1483d6a2c54bf25934cd21ab4ea09aac04046d
4
+ data.tar.gz: e918fe7626ebc736ec38efbf0bc3d8bd29e99925
5
5
  SHA512:
6
- metadata.gz: c0e56413c5f40ae054d7e2187389abc25fb0f8c72e38751aed019fe6531b906f23fcb467280fa25e5f87634370720bd3097f8b9f0ad218d4d3a8a9b5cd54c36c
7
- data.tar.gz: f06e91d65ed930368d206f171ee7b20a1195bb9ff5834441130f8154319514c891f043795b64080d2f9e3a09e09ddbf67362e547ff98bb609d6012b25f798b6b
6
+ metadata.gz: 78d81fb7310a3b62d9d2edb610b09f0289de4b8461dc70fbd0921fe299f4960c4443ae1a9fd527a256b855afd9cdbbf0dfd5a90106a4bbb2fe07ff9fbd7648d1
7
+ data.tar.gz: 96bbc8c46ace6eecad55b20fc514f6c71ff24c90ffd352644a21c130a2e9929b38018cc832820b66a5e473d8e9be10cf4fc6a3d18f9bf1961ca8c156cf691086
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.10
1
+ 0.8.11
@@ -96,13 +96,20 @@ class CodeRunner::Trinity
96
96
  def integrate_profkit(kit, area_vectors, t_indices)
97
97
  datavecs = kit.data.map{|d| d.y.data}
98
98
  #p 'datavecs.size', datavecs.size
99
- rhovec = kit.data[0].x.data
100
- rhoarea_vectors = get_1d_array_float('geo', /1:\s*rho/)
101
- int = GSL::ScatterInterp.alloc(:linear, [rhoarea_vectors.to_gslv, area_vectors.to_gslv], false )
99
+ #rhovec = kit.data[0].x.data
100
+ #rhoarea_vectors = get_1d_array_float('geo', /1:\s*rho/)
101
+ #int = GSL::ScatterInterp.alloc(:linear, [rhoarea_vectors.to_gslv, area_vectors.to_gslv], false )
102
102
 
103
- area2 = rhovec.map{|rh| int.eval(rh)}
104
- integrated_values = datavecs.map{|dat| (dat.to_gslv*area2.to_gslv).sum}
105
- k2 = GraphKit.quick_create([list(:t).values, integrated_values])
103
+ #area2 = rhovec.map{|rh| int.eval(rh)}
104
+ #area_vectors = new_netcdf_file.var('area_grid').get[-1].to_gslv
105
+ grho_vector= new_netcdf_file.var('grho_grid').get.to_a[-1].to_gslv
106
+ rho_vector= new_netcdf_file.var('rad_grid').get.to_a[-1][-1].to_gslv
107
+ integrated_values = datavecs.map{|dat|
108
+ p 'dat.size', dat.size, area_vectors.size, grho_vector.size
109
+ integrand = dat.to_gslv*area_vectors/grho_vector
110
+ (integrand.subvector(0,dat.size-1) * (rho_vector.subvector(1,dat.size-1) - rho_vector.subvector(0,dat.size-1))).sum
111
+ }
112
+ k2 = GraphKit.quick_create([list(:t).values.to_gslv, integrated_values])
106
113
  k2.title = kit.title
107
114
  k2.ylabel = kit.ylabel
108
115
  return k2
@@ -116,7 +123,7 @@ class CodeRunner::Trinity
116
123
  #kit.gnuplot
117
124
  #area_vectors = t_indices.map{|i| get_2d_array_float('geo', /13:\s*area/, /1.*time/)[i].to_gslv}
118
125
  #system "less #@directory/#@run_name.geo"
119
- area_vectors = get_1d_array_float('geo', /13:\s*area/)
126
+ area_vectors = new_netcdf_file.var('area_grid').get.to_a[-1].to_gslv
120
127
  kit.each_with_index do |k,ik|
121
128
  kit[ik] = integrate_profkit(k, area_vectors, t_indices)
122
129
  end
@@ -73,7 +73,7 @@ class NetcdfSmartReader
73
73
  end
74
74
  def dim_start(name, options)
75
75
  sym = name.to_sym
76
- if i=options[sym + :_index]
76
+ if i=options[sym + :_index] or i = options[sym]
77
77
  return i-1
78
78
  elsif i=options[sym + :_element]
79
79
  return i
@@ -88,7 +88,7 @@ class NetcdfSmartReader
88
88
  end
89
89
  def dim_end(name, options)
90
90
  sym = name.to_sym
91
- if i=options[sym + :_index]
91
+ if i=options[sym + :_index] or i=options[sym]
92
92
  return i-1
93
93
  elsif i=options[sym + :_element]
94
94
  return i
@@ -99,12 +99,12 @@ class NetcdfSmartReader
99
99
  end
100
100
  end
101
101
  def self.dimensions
102
- ['t','tspec', 'iter', 'rad', 'cc', 'mrow', 'mcol', 'ivar', 'jac', 'grad', 'eval', 'cegrid']
102
+ ['t','tspec', 'iter', 'rad', 'cc', 'mrow', 'mcol', 'ivar', 'jac', 'grad', 'eval', 'cegrid', 'job']
103
103
  end
104
104
 
105
105
  def axiskit(variable, options)
106
106
  case variable
107
- when 'mrow', 'mcol', 'ivar', 'tspec', 'iter', 'jac', 'grad', 'eval'
107
+ when 'mrow', 'mcol', 'ivar', 'tspec', 'iter', 'jac', 'grad', 'eval', 'job'
108
108
  return GraphKit::AxisKit.autocreate(data: GSL::Vector.linspace(1, sz=@file.dim(variable).length, sz), title: variable)
109
109
  end
110
110
  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/, '').sub(/.*rho.*The definition.*/, 'rho'))
@@ -147,6 +147,9 @@ def netcdf_smart_reader
147
147
  NetcdfSmartReader.new(new_netcdf_file)
148
148
  end
149
149
 
150
+ class SmartGraphKitError < StandardError
151
+ end
152
+
150
153
  def smart_graphkit(options)
151
154
  case options[:command]
152
155
  when :help
@@ -154,7 +157,25 @@ def smart_graphkit(options)
154
157
  when :options
155
158
  [:nmat_index, :t_index, :tspec_index, :iter_index]
156
159
  else
157
- netcdf_smart_reader.graphkit(options[:graphkit_name].sub(/^nc_/, ''), options)
160
+ case options[:graphkit_name]
161
+ when /_vs_/
162
+ kits = options[:graphkit_name].sub(/^nc_/, '').split(/_vs_/).map{|n| netcdf_smart_reader.graphkit(n, options)}
163
+ kit = kits[-1]
164
+ raise SmartGraphKitError.new("Number of axes does not match number of variables") if kits.size != kit.naxes
165
+ for i in 0...kit.data.size
166
+ if kit.naxes > 1
167
+ kit.data[i].x = kits[0].data[i].y
168
+ end
169
+ if kit.naxes > 2
170
+ kit.data[i].x = kits[0].data[i].z
171
+ kit.data[i].y = kits[1].data[i].z
172
+ end
173
+ end
174
+ kit.autocreate
175
+ kit
176
+ else
177
+ netcdf_smart_reader.graphkit(options[:graphkit_name].sub(/^nc_/, ''), options)
178
+ end
158
179
  end
159
180
  end
160
181
 
@@ -111,6 +111,12 @@ class CodeRunner
111
111
  new_run.flux_runs[i].set(v, run.send(v)) if run.send(v) or new_run.flux_runs[i].send(v)
112
112
  }
113
113
  end
114
+ elsif @flux_option == "gryfx"
115
+ flux_runs.each_with_index do |run, i|
116
+ CodeRunner::Gryfx.rcp.variables.each{|v|
117
+ new_run.flux_runs[i].set(v, run.send(v)) if run.send(v) or new_run.flux_runs[i].send(v)
118
+ }
119
+ end
114
120
  end
115
121
  @naming_pars.delete(:preamble)
116
122
  SUBMIT_OPTIONS.each{|v| new_run.set(v, self.send(v)) unless new_run.send(v)}
@@ -128,8 +134,6 @@ class CodeRunner
128
134
  # This is unnecessary for single restart file.
129
135
  warning( "Restart is not on the same number of processors as the previous run: new is #{new_run.nprocs.inspect} and old is #{@nprocs.inspect}... this is only OK if you are using parallel netcdf and single restart files.") if flux_gs2? and not new_run.no_restart_gs2 and (!new_run.nprocs or new_run.nprocs != @nprocs)
130
136
  raise "Restart cannot have a different sized jacobian: new is #{new_run.n_flux_tubes_jac} and old is #{n_flux_tubes_jac}" unless new_run.n_flux_tubes_jac == n_flux_tubes_jac
131
- # @runner.parameters.each{|var, value| new_run.set(var,value)} if @runner.parameters
132
- # ep @runner.parameters
133
137
  new_run.run_name = nil
134
138
  new_run.naming_pars = @naming_pars
135
139
  new_run.update_submission_parameters(new_run.parameter_hash.inspect, false) if new_run.parameter_hash
@@ -163,6 +167,16 @@ class CodeRunner
163
167
  end
164
168
  end
165
169
  end
170
+ if (new_run.flux_gryfx? and flux_gryfx?) and not new_run.no_restart_gs2
171
+ for i in 0...n_flux_tubes
172
+ break if i >= new_run.n_flux_tubes
173
+ next if not FileTest.exist? flux_runs[i].directory + '/' + flux_runs[i].run_name + '.restart.cdf'
174
+ folder = flux_folder_name(i)
175
+ new_run.flux_runs[i].directory = new_run.directory + "/#{folder}"
176
+ FileUtils.makedirs(new_run.flux_runs[i].directory)
177
+ flux_runs[i].set_restart(new_run.flux_runs[i])
178
+ end
179
+ end
166
180
  new_run
167
181
  end
168
182
  # This is a hook which gets called just before submitting a simulation. It sets up the folder and generates any necessary input files.
@@ -407,7 +421,7 @@ class CodeRunner
407
421
  if not component
408
422
  #p "HEELO"
409
423
  #p [i, '3,', component, '4', @component_runs.size]
410
- component = @component_runs[i] = fclass.new(@runner, self).create_component
424
+ component = @component_runs[i] = fclass.new(@runner, self, i).create_component
411
425
  #component.instance_variable_set(:@output_file, output_file)
412
426
  #p [i, '3,', component, '4', @component_runs.size]
413
427
  if false
@@ -10,11 +10,15 @@ class CodeRunner
10
10
  class Trinity
11
11
  module TrinityComponent
12
12
  attr_accessor :trinity_run
13
- def initialize(runner, trinity_run)
13
+ def initialize(runner, trinity_run, trinity_id)
14
14
  super(runner)
15
15
  @trinity_run = trinity_run
16
+ @trinity_id = trinity_id
16
17
  self
17
18
  end
19
+ def generate_run_name
20
+ @run_name = @trinity_run.flux_run_name(@trinity_id)
21
+ end
18
22
  def output_file
19
23
  #@output_file ||= '../' + self.class.to_s
20
24
  '../' + @trinity_run.output_file
@@ -25,7 +29,7 @@ class CodeRunner
25
29
  #'aa'
26
30
  end
27
31
  def dup
28
- return self.class.new(@runner, @trinity_run).learn_from(self)
32
+ return self.class.new(@runner, @trinity_run, @trinity_id).learn_from(self)
29
33
  end
30
34
  def save
31
35
  #p ['output_file', output_file]
@@ -83,7 +87,7 @@ end)
83
87
  EOF2
84
88
 
85
89
  }
86
- FileUtils.mv(defaults_filename, central_defaults_filename)
90
+ #FileUtils.mv(defaults_filename, central_defaults_filename)
87
91
  FileUtils.rm(tmp_filename)
88
92
  CodeRunner.fetch_runner(C: rcp.code, m: (rcp.modlet? ? rcp.modlet : nil), D: name)
89
93
 
data/trinitycrmod.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: trinitycrmod 0.8.10 ruby lib
5
+ # stub: trinitycrmod 0.8.11 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "trinitycrmod"
9
- s.version = "0.8.10"
9
+ s.version = "0.8.11"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Edmund Highcock"]
14
- s.date = "2016-03-19"
14
+ s.date = "2016-04-01"
15
15
  s.description = "This module allows Trinity, the Multiscale Gyrokinetic Turbulent Transport solver for Fusion Reactors, to harness the power of CodeRunner, a framework for the automated running and analysis of simulations."
16
16
  s.email = "edmundhighcock@sourceforge.net"
17
17
  s.extra_rdoc_files = [
@@ -45,7 +45,7 @@ Gem::Specification.new do |s|
45
45
  ]
46
46
  s.homepage = "http://github.com/edmundhighcock/trinitycrmod"
47
47
  s.licenses = ["GPLv3"]
48
- s.rubygems_version = "2.4.8"
48
+ s.rubygems_version = "2.2.0"
49
49
  s.summary = "CodeRunner module for the Trinity simulation software."
50
50
 
51
51
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trinitycrmod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.10
4
+ version: 0.8.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edmund Highcock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-19 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coderunner
@@ -203,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
203
  version: '0'
204
204
  requirements: []
205
205
  rubyforge_project:
206
- rubygems_version: 2.4.8
206
+ rubygems_version: 2.2.0
207
207
  signing_key:
208
208
  specification_version: 4
209
209
  summary: CodeRunner module for the Trinity simulation software.