1 #ifndef FUNC_BASE_HEADER_INPU 2 #define FUNC_BASE_HEADER_INPU 4 #include "input_file.hpp" 8 typedef std::complex<double> complex;
12 typedef STD_TR1::shared_ptr< function_Object> ref;
13 typedef STD_TR1::shared_ptr< const function_Object> const_ref;
17 double operator()(
const double d)
const 19 return value((d-x0)/range_) * scale_ + y0;
22 double x_min()
const {
return x0;};
23 double x_max()
const {
return x0 + range_;};
25 double y_min()
const {
return y0;};
26 double y_max()
const {
return y0 + scale_;};
28 double range()
const {
return range_;};
29 double scale()
const {
return scale_;};
39 virtual void init_func() = 0;
40 virtual double value(
const double d)
const = 0;
45 typedef STD_TR1::shared_ptr< function_complex_Object> ref;
46 typedef STD_TR1::shared_ptr< const function_complex_Object> const_ref;
50 complex operator()(
const double d)
const 52 return value((d-x0)/range_) * scale_ + y0;
55 double x_min()
const {
return x0;};
56 double x_max()
const {
return x0 + range_;};
58 double y_min()
const {
return y0;};
59 double y_max()
const {
return y0 + scale_;};
61 double range()
const {
return range_;};
62 double scale()
const {
return scale_;};
72 virtual void init_func() = 0;
73 virtual complex value(
const double d)
const = 0;
82 typedef STD_TR1::shared_ptr< function2d_Object> ref;
83 typedef STD_TR1::shared_ptr< const function2d_Object> const_ref;
89 double operator()(
const double x1,
const double x2)
const 91 return value(x1 - start_x1_,x2 - start_x2_);
102 virtual void init_func() = 0;
103 virtual double value(
const double x1,
const double x2)
const = 0;
109 typedef STD_TR1::shared_ptr< function_complex2d_Object> ref;
110 typedef STD_TR1::shared_ptr< const function_complex2d_Object> const_ref;
115 complex operator()(
const double x1,
const double x2)
const 117 return value(x1-start_x1_,x2-start_x2_);
128 virtual void init_func() = 0;
129 virtual complex value(
const double x1,
const double x2)
const = 0;
145 typedef STD_TR1::shared_ptr< vector_Object> ref;
146 typedef STD_TR1::shared_ptr< const vector_Object> const_ref;
154 return data[i % data.size()];
158 size_t size()
const {
return data.size();};
161 void output(std::ostream&)
const;
167 void set_complex_vector_real(std::vector<complex>&)
const;
169 void set_complex_vector_imag(std::vector<complex>&)
const;
172 void set_element(
const size_t i,
double d)
const{
177 mutable bool lazy_initialized;
179 mutable std::vector<double> data;
182 void init_from_clone( loadable_Object::const_ref );
184 void do_lazy_init()
const{
if (!lazy_initialized){ lazy_initialized =
true; lazy_init();}};
186 virtual void init_vector() = 0;
187 virtual void lazy_init()
const;
188 virtual size_t determine_size();
201 STD_TR1::shared_ptr<std::vector<double> > enum_data;
203 virtual size_t determine_size();
204 const char* name()
const {
return "Enumeration_vector";};
221 const char* name()
const {
return "vector_function";};
Definition: exceptions.hpp:255
Definition: funcs_base.hpp:80
size_t size() const
Number of elements in vector.
Definition: funcs_base.hpp:158
Vector using an Enumeration to set its values.
Definition: funcs_base.hpp:197
const std::vector< double > & provide_vector() const
Return the internal container object, use with care.
Definition: funcs_base.hpp:164
Definition: funcs_base.hpp:107
Base class for a 1D Vector.
Definition: funcs_base.hpp:143
Definition: funcs_base.hpp:10
double operator[](const size_t i) const
indexed access to vector elements
Definition: funcs_base.hpp:151
An abstract base class supporting xml_file_reading of input parameters.
Definition: input_file.hpp:79
Vector using a function to set its values.
Definition: funcs_base.hpp:217
Definition: funcs_base.hpp:43