class CTioga2::Data::Backends::MathBackend
Public Class Methods
new()
click to toggle source
Calls superclass method
CTioga2::Data::Backends::Backend::new
# File lib/ctioga2/data/backends/backends/math.rb, line 50 def initialize super() @samples = 100 @x_range = -10.0..10.0 @t_range = -10.0..10.0 @log = false end
Public Instance Methods
query_dataset(set)
click to toggle source
This is called by the architecture to get the data. It first splits the set name into func@range.
# File lib/ctioga2/data/backends/backends/math.rb, line 60 def query_dataset(set) if set =~ /(.*)@(.*)/ set = $1 range = $2 end name = "#{set}" if set.split_at_toplevel(/:/).size > 1 # parametric if range set_param_from_string(:t_range, range) end varname = "t" values = make_dvector(@t_range, @samples, @log) else if range set_param_from_string(:x_range, range) end varname = "x" values = make_dvector(@x_range, @samples, @log) set = "x:#{set}" end return Dataset.dataset_from_spec(name, set) do |b| get_data_column(b, varname, values) end end
Protected Instance Methods
get_data_column(column, variable, values)
click to toggle source
Uses compute_formula to get data from
# File lib/ctioga2/data/backends/backends/math.rb, line 112 def get_data_column(column, variable, values) column.gsub!(/\b#{variable}\b/, "(column[0])") return Ruby.compute_formula(column, [values]) end
make_dvector(range, nb_points, log = @log)
click to toggle source
Turns a Range and a number of points into a Dvector
# File lib/ctioga2/data/backends/backends/math.rb, line 91 def make_dvector(range, nb_points, log = @log) n = nb_points -1 a = Dvector.new(nb_points) { |i| i.to_f/(n.to_f) } # a is in [0:1] inclusive... if log delta = range.last/range.first # delta is positive necessarily a *= delta.log a.exp! a *= range.first else delta = range.last - range.first a *= delta a += range.first end return a end