Fluid structure interaction suite
ParsedTools::Function< dim > Class Template Reference

A wrapper for the FunctionParser class. More...

#include <function.h>

Inheritance diagram for ParsedTools::Function< dim >:
[legend]

Public Member Functions

 Function (const std::string &section_name="", const std::string &expression="0", const std::string &function_description="Function expression", const std::map< std::string, double > &constants={}, const std::string &variable_names=FunctionParser< dim >::default_variable_names()+",t", const double h=1e-8)
 Build a Function based on ParameterAcceptor. More...
 
void update_constants (const std::map< std::string, double > &constants)
 Reinitialize the function with the new constants. More...
 
void update_expression (const std::string &expr)
 Reinitialize the function with the new expression. More...
 
- Public Member Functions inherited from ParameterAcceptor
 ParameterAcceptor (const std::string &section_name="")
 
unsigned int get_acceptor_id () const
 
virtual ~ParameterAcceptor () override
 
virtual void declare_parameters (ParameterHandler &prm)
 
virtual void parse_parameters (ParameterHandler &prm)
 
std::string get_section_name () const
 
std::vector< std::string > get_section_path () const
 
void add_parameter (const std::string &entry, ParameterType &parameter, const std::string &documentation="", ParameterHandler &prm_=prm, const Patterns::PatternBase &pattern=*Patterns::Tools::Convert< ParameterType >::to_pattern())
 
void enter_subsection (const std::string &subsection)
 
void leave_subsection ()
 
void enter_my_subsection (ParameterHandler &prm)
 
void leave_my_subsection (ParameterHandler &prm)
 
void serialize (Archive &ar, const unsigned int version)
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void serialize (Archive &ar, const unsigned int version)
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
- Public Member Functions inherited from FunctionParser< dim >
 FunctionParser (const unsigned int n_components=1, const double initial_time=0.0, const double h=1e-8)
 
 FunctionParser (const std::string &expression, const std::string &constants="", const std::string &variable_names=default_variable_names()+",t", const double h=1e-8)
 
 FunctionParser (const FunctionParser &)=delete
 
 FunctionParser (FunctionParser &&)=delete
 
FunctionParseroperator= (const FunctionParser &)=delete
 
FunctionParseroperator= (FunctionParser &&)=delete
 
virtual void initialize (const std::string &vars, const std::vector< std::string > &expressions, const ConstMap &constants, const bool time_dependent=false) override
 
void initialize (const std::string &vars, const std::string &expression, const ConstMap &constants, const bool time_dependent=false)
 
virtual double value (const Point< dim > &p, const unsigned int component=0) const override
 
const std::vector< std::string > & get_expressions () const
 
void set_formula (const DifferenceFormula formula=Euler)
 
void set_h (const double h)
 
virtual Tensor< 1, dim > gradient (const Point< dim > &p, const unsigned int component=0) const override
 
virtual void vector_gradient (const Point< dim > &p, std::vector< Tensor< 1, dim > > &gradients) const override
 
virtual void vector_gradient (const Point< dim > &p, std::vector< Tensor< 1, dim, RangeNumberType > > &gradients) const
 
virtual void gradient_list (const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
 
virtual void gradient_list (const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim, RangeNumberType > > &gradients, const unsigned int component=0) const
 
virtual void vector_gradient_list (const std::vector< Point< dim > > &points, std::vector< std::vector< Tensor< 1, dim > > > &gradients) const override
 
virtual void vector_gradient_list (const std::vector< Point< dim > > &points, std::vector< std::vector< Tensor< 1, dim, RangeNumberType > > > &gradients) const
 
virtual void vector_value (const Point< dim > &p, Vector< RangeNumberType > &values) const
 
virtual void value_list (const std::vector< Point< dim > > &points, std::vector< RangeNumberType > &values, const unsigned int component=0) const
 
virtual void vector_value_list (const std::vector< Point< dim > > &points, std::vector< Vector< RangeNumberType > > &values) const
 
virtual void vector_values (const std::vector< Point< dim > > &points, std::vector< std::vector< RangeNumberType > > &values) const
 
virtual void vector_gradients (const std::vector< Point< dim > > &points, std::vector< std::vector< Tensor< 1, dim, RangeNumberType > > > &gradients) const
 
virtual RangeNumberType laplacian (const Point< dim > &p, const unsigned int component=0) const
 
virtual void vector_laplacian (const Point< dim > &p, Vector< RangeNumberType > &values) const
 
virtual void laplacian_list (const std::vector< Point< dim > > &points, std::vector< RangeNumberType > &values, const unsigned int component=0) const
 
virtual void vector_laplacian_list (const std::vector< Point< dim > > &points, std::vector< Vector< RangeNumberType > > &values) const
 
virtual SymmetricTensor< 2, dim, RangeNumberType > hessian (const Point< dim > &p, const unsigned int component=0) const
 
virtual void vector_hessian (const Point< dim > &p, std::vector< SymmetricTensor< 2, dim, RangeNumberType > > &values) const
 
virtual void hessian_list (const std::vector< Point< dim > > &points, std::vector< SymmetricTensor< 2, dim, RangeNumberType > > &values, const unsigned int component=0) const
 
virtual void vector_hessian_list (const std::vector< Point< dim > > &points, std::vector< std::vector< SymmetricTensor< 2, dim, RangeNumberType > > > &values) const
 
virtual std::size_t memory_consumption () const
 
Number get_time () const
 
virtual void set_time (const Number new_time)
 
virtual void advance_time (const Number delta_t)
 
void serialize (Archive &ar, const unsigned int version)
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void init_muparser () const
 
double do_value (const Point< dim > &p, const double time, unsigned int component) const
 
void do_all_values (const Point< dim > &p, const double time, ArrayView< double > &values) const
 
- Public Member Functions inherited from AutoDerivativeFunction< int dim >
 AutoDerivativeFunction (const double h, const unsigned int n_components=1, const double initial_time=0.0)
 
virtual ~AutoDerivativeFunction () override=default
 
void set_formula (const DifferenceFormula formula=Euler)
 
void set_h (const double h)
 
Number get_time () const
 
void serialize (Archive &ar, const unsigned int version)
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
- Public Member Functions inherited from Function< int dim, typename RangeNumberType >
 Function (const unsigned int n_components=1, const time_type initial_time=0.0)
 
 Function (const Function &f)=default
 
virtual ~Function () override=0
 
Functionoperator= (const Function &f)
 
Number get_time () const
 
void serialize (Archive &ar, const unsigned int version)
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
- Public Member Functions inherited from FunctionTime< typename Number >
 FunctionTime (const Number initial_time=Number(0.0))
 
virtual ~FunctionTime ()=default
 
Number get_time () const
 

Private Member Functions

void reinit ()
 Reset the Function object using the expression, the constants, and the variables stored in this class. More...
 

Private Attributes

std::string expression
 The actual FunctionParser expression. More...
 
std::map< std::string, double > constants
 Constants that can be used in the expression. More...
 
const std::string variable_names
 Keep variable names around to re-initialize the FunctionParser class. More...
 

Additional Inherited Members

- Public Types inherited from FunctionParser< dim >
enum  DifferenceFormula
 
typedef std::map< std::string, double > ConstMap
 
typedef typename FunctionTime< typename numbers::NumberTraits< RangeNumberType >::real_type >::time_type time_type
 
- Public Types inherited from AutoDerivativeFunction< int dim >
enum  DifferenceFormula
 
typedef typename FunctionTime< typename numbers::NumberTraits< RangeNumberType >::real_type >::time_type time_type
 
- Public Types inherited from Function< int dim, typename RangeNumberType >
typedef typename FunctionTime< typename numbers::NumberTraits< RangeNumberType >::real_type >::time_type time_type
 
- Public Types inherited from FunctionTime< typename Number >
typedef Number time_type
 
- Static Public Member Functions inherited from ParameterAcceptor
static void initialize (const std::string &filename="", const std::string &output_filename="", const ParameterHandler::OutputStyle output_style_for_output_filename=ParameterHandler::Short, ParameterHandler &prm=ParameterAcceptor::prm, const ParameterHandler::OutputStyle output_style_for_filename=ParameterHandler::DefaultStyle)
 
static void initialize (std::istream &input_stream, ParameterHandler &prm=ParameterAcceptor::prm)
 
static void clear ()
 
static void parse_all_parameters (ParameterHandler &prm=ParameterAcceptor::prm)
 
static void declare_all_parameters (ParameterHandler &prm=ParameterAcceptor::prm)
 
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Static Public Member Functions inherited from FunctionParser< dim >
static std::string default_variable_names ()
 
static ::ExceptionBaseExcParseError (int arg1, std::string arg2)
 
static ::ExceptionBaseExcInvalidExpressionSize (int arg1, int arg2)
 
static DifferenceFormula get_formula_of_order (const unsigned int ord)
 
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Static Public Member Functions inherited from AutoDerivativeFunction< int dim >
static DifferenceFormula get_formula_of_order (const unsigned int ord)
 
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Static Public Member Functions inherited from Function< int dim, typename RangeNumberType >
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Public Attributes inherited from ParameterAcceptor
boost::signals2::signal< void()> declare_parameters_call_back
 
boost::signals2::signal< void()> parse_parameters_call_back
 
- Public Attributes inherited from FunctionParser< dim >
 Euler
 
 UpwindEuler
 
 FourthOrder
 
const unsigned int n_components
 
std::vector< std::string > expressions
 
- Public Attributes inherited from AutoDerivativeFunction< int dim >
 Euler
 
 UpwindEuler
 
 FourthOrder
 
const unsigned int n_components
 
- Public Attributes inherited from Function< int dim, typename RangeNumberType >
const unsigned int n_components
 
- Static Public Attributes inherited from ParameterAcceptor
static ParameterHandler prm
 
- Static Public Attributes inherited from FunctionParser< dim >
static constexpr unsigned int dimension
 
- Static Public Attributes inherited from AutoDerivativeFunction< int dim >
static constexpr unsigned int dimension
 
- Static Public Attributes inherited from Function< int dim, typename RangeNumberType >
static constexpr unsigned int dimension
 
- Protected Attributes inherited from ParameterAcceptor
const std::string section_name
 
std::vector< std::string > subsections
 

Detailed Description

template<int dim>
class ParsedTools::Function< dim >

A wrapper for the FunctionParser class.

Definition at line 28 of file function.h.

Constructor & Destructor Documentation

◆ Function()

template<int dim>
Function< dim >::Function ( const std::string &  section_name = "",
const std::string &  expression = "0",
const std::string &  function_description = "Function< dim > expression",
const std::map< std::string, double > &  constants = {},
const std::string &  variable_names = FunctionParser<dim>::default_variable_names() + ",t",
const double  h = 1e-8 
)

Build a Function based on ParameterAcceptor.

An example usage of this class is the following:

ParsedTools::Function<dim> my_function("Rhs function","2*x+y");
auto value = my_function.value(some_point);
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
A wrapper for the FunctionParser class.
Definition: function.h:30

The above snippet of code will delcare the ParameterAcceptor::prm ParameterHandler with the following entries:

subsection RHS function
set Function expression = "2*x+y"
end
Parameters
section_nameThe name of ParameterAcceptor section
expressionThe expression of the function
function_descriptionHow the expression is declared in the parameter file
constantsA map of constants we can use in the function expression
variable_namesComma separated names of the independent dvariables in the expression. Either dim or dim+1 (for time dependent problems) names must be given.
hThe step size for finite difference approximation of derivatives

Definition at line 24 of file function.cc.

References ParameterHandler::add_action(), ParameterAcceptor::add_parameter(), ParsedTools::Function< dim >::constants, ParameterAcceptor::enter_my_subsection(), ParameterAcceptor::leave_my_subsection(), ParameterAcceptor::prm, ParsedTools::Function< dim >::reinit(), ParameterAcceptor::sep, ParsedTools::Function< dim >::update_constants(), and ParsedTools::Function< dim >::variable_names.

Member Function Documentation

◆ update_constants()

template<int dim>
void Function< dim >::update_constants ( const std::map< std::string, double > &  constants)

Reinitialize the function with the new constants.

Definition at line 83 of file function.cc.

References numbers::E, numbers::LN10, numbers::LN2, numbers::LOG10E, numbers::LOG2E, numbers::PI, numbers::PI_2, numbers::PI_4, numbers::SQRT1_2, and numbers::SQRT2.

Referenced by ParsedTools::Function< dim >::Function().

◆ update_expression()

template<int dim>
void Function< dim >::update_expression ( const std::string &  expr)

Reinitialize the function with the new expression.

Definition at line 104 of file function.cc.

◆ reinit()

template<int dim>
void Function< dim >::reinit
private

Reset the Function object using the expression, the constants, and the variables stored in this class.

Definition at line 70 of file function.cc.

References FunctionParser< int dim >::initialize(), and Utilities::split_string_list().

Referenced by ParsedTools::Function< dim >::Function().

Member Data Documentation

◆ expression

template<int dim>
std::string ParsedTools::Function< dim >::expression
private

The actual FunctionParser expression.

Definition at line 93 of file function.h.

◆ constants

template<int dim>
std::map<std::string, double> ParsedTools::Function< dim >::constants
private

Constants that can be used in the expression.

Definition at line 98 of file function.h.

Referenced by ParsedTools::Function< dim >::Function().

◆ variable_names

template<int dim>
const std::string ParsedTools::Function< dim >::variable_names
private

Keep variable names around to re-initialize the FunctionParser class.

Definition at line 103 of file function.h.

Referenced by ParsedTools::Function< dim >::Function().


The documentation for this class was generated from the following files: