lib/trinitycrmod/trinity_gs2.rb in trinitycrmod-0.7.3 vs lib/trinitycrmod/trinity_gs2.rb in trinitycrmod-0.7.4
- old
+ new
@@ -5,12 +5,12 @@
#def _dump_data
#Marshal.dump(nil)
#end
#end
class CodeRunner
- class Gs2
- class TrinityComponent < Gs2
+ class Trinity
+ module TrinityComponent
attr_accessor :trinity_run
def initialize(runner, trinity_run)
super(runner)
@trinity_run = trinity_run
self
@@ -38,34 +38,41 @@
#p self.instance_variables.find_all{|v| instance_variable_get(v).class.to_s =~ /NumRu::NetCDF/}
super
@trinity_run = trinrun
end
end
- end
- class Trinity
+ class TrinityComponent::Gs2 < CodeRunner::Gs2
+ include TrinityComponent
+ end
+
+ class TrinityComponent::Gryfx < CodeRunner::Gryfx
+ include TrinityComponent
+ end
+
# This function creates a new Trinity defaults file, with Trinity parameters taken from
# trinity_input_file, and GS2 parameters taken from gs2_input_file. The file is then moved
# to the CodeRunner central defaults location, the current folder is configured to use
# the defaults file.
- def self.use_new_defaults_file_with_gs2(name = ARGV[-3], trinity_input_file = ARGV[-2], gs2_input_file = ARGV[-1])
- raise "Please specify a name, a trinity input file and a gs2 input file" if name == "use_new_gs2_defaults_file"
+ def self.use_new_defaults_file_with_flux(name = ARGV[-4], trinity_input_file = ARGV[-3], flux_input_file = ARGV[-2], fluxcode=ARGV[-1])
+ raise "Please specify a name, a trinity input file and a flux code input file" if name == "use_new_defaults_file_with_flux"
defaults_filename = "#{name}_defaults.rb"
- tmp_filename = "#{name}_gs2tmp_defaults.rb"
+ tmp_filename = "#{name}_flxtmp_defaults.rb"
central_defaults_filename = rcp.user_defaults_location + "/" + defaults_filename
- FileUtils.rm(name + '_defaults.rb') if FileTest.exist?(name + '_defaults.rb')
- FileUtils.rm(central_defaults_filename) if FileTest.exist?(central_defaults_filename)
+ #FileUtils.rm(name + '_defaults.rb') if FileTest.exist?(name + '_defaults.rb')
+ #FileUtils.rm(central_defaults_filename) if FileTest.exist?(central_defaults_filename)
FileUtils.rm(tmp_filename) if FileTest.exist?(tmp_filename)
raise "Defaults file: #{central_defaults_filename} already exists" if FileTest.exist? central_defaults_filename
+ flxclass = flux_class(fluxcode)
make_new_defaults_file(name, trinity_input_file)
- CodeRunner::Gs2.make_new_defaults_file(name + '_gs2tmp', gs2_input_file)
+ flxclass.make_new_defaults_file(name + '_flxtmp', flux_input_file)
File.open(defaults_filename, 'a'){|file| file.puts <<EOF2
@set_flux_defaults_procs.push(Proc.new do
-gs2_runs.each do |run|
+flux_runs.each do |run|
run.instance_eval do
#{File.read(tmp_filename).gsub(/\A|\n/, "\n ")}
end
end
end)
@@ -80,12 +87,13 @@
end
# Generates the component runs for GS2 and returns the hash
# Raises an error if flux_option != "gs2"
- def gs2_runs
- raise FluxOptionError.new("gs2_runs called and flux_option != gs2") if not flux_gs2?
+ def flux_runs
+ raise FluxOptionError.new("flux_runs called and flux_option != gs2 or gryfx") if not flux_gs2? or flux_gryfx?
+
#puts "2@COMMMMMMMMMMMMMPOOOOOOOOOOOOOONNNETN", @component_runs
generate_component_runs if not (@component_runs and @component_runs.size == n_flux_tubes)
#p ["@COMMMMMMMMMMMMMPOOOOOOOOOOOOOONNNETN", @component_runs]
@component_runs
@@ -97,18 +105,18 @@
##@gs2_run_list[key] ||= @gs2_run_list[:base].dup
##end
#@gs2_run_list[key]
end
- # Override standard CodeRunner method to allow for Gs2 variables
+ # Override standard CodeRunner method to allow for flux code variables
def evaluate_defaults_file(filename)
text = File.read(filename)
instance_eval(text)
text.scan(/^\s*@(\w+)/) do
var_name = $~[1].to_sym
next if var_name == :defaults_file_description
- unless rcp.variables.include? var_name or (flux_gs2? and Gs2.rcp.variables.include? var_name)
+ unless rcp.variables.include? var_name or (flux_gs2? and Gs2.rcp.variables.include? var_name) or (flux_gryfx? and Gryfx.rcp.variables.include? var_name)
warning("---#{var_name}---, specified in #{File.expand_path(filename)}, is not a variable. This could be an error")
end
end
end
@@ -121,25 +129,40 @@
sz = run_times.size.to_f
return run_times.pieces((sz / n_flux_tubes.to_f).ceil)
end
+ def self.flux_class(code)
+ case code
+ when "gs2"
+ CodeRunner::Trinity::TrinityComponent::Gs2
+ when "gryfx"
+ CodeRunner::Trinity::TrinityComponent::Gryfx
+ end
+ end
+ def flux_class
+ self.class.flux_class(@flux_option)
+ end
# Is the flux tube code being used gs2?
def flux_gs2?
@flux_option == "gs2"
end
+ # Is the flux tube code being used gryfx?
+ def flux_gryfx?
+ @flux_option == "gryfx"
+ end
- def gs2_run_name(i)
+ def flux_run_name(i)
if i >= n_flux_tubes_jac
jn = i - n_flux_tubes_jac + 1
run_name = "calibrate_" + @run_name + (jn).to_s
else
jn = i + 1
run_name = @run_name + (jn).to_s
end
run_name
end
- def gs2_folder_name(i)
+ def flux_folder_name(i)
if i >= n_flux_tubes_jac
jn = i - n_flux_tubes_jac + 1
folder = "calibrate_#{jn}"
else
jn = i + 1