https://mooseframework.inl.gov
ChainControlParsedFunctionWrapper.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "MooseError.h"
13 #include "MooseTypes.h"
14 #include "ChainControlData.h"
15 #include "libmesh/parsed_function.h"
16 #include <string>
17 #include <vector>
18 
19 class MooseApp;
20 class FEProblemBase;
21 class Function;
23 
28 {
29 public:
40  FEProblemBase & fe_problem,
41  const std::string & function_str,
42  const std::vector<std::string> & symbol_names,
43  const std::vector<std::string> & symbol_values,
44  const THREAD_ID tid = 0);
45 
52  Real evaluate(Real t, const Point & p);
53 
57  std::vector<ChainControlData<Real> *> getRealChainControlData()
58  {
60  }
61 
65  std::vector<ChainControlData<bool> *> getBoolChainControlData()
66  {
68  }
69 
70 private:
75 
77  const std::string & _function_str;
79  const std::vector<std::string> & _symbol_names;
81  const std::vector<std::string> & _symbol_values;
82 
84  std::vector<Real> _initial_values;
85 
87  std::unique_ptr<ParsedFunction<Real>> _function_ptr;
88 
90  std::vector<unsigned int> _real_control_data_indices;
92  std::vector<ChainControlData<Real> *> _real_control_data_values;
93 
95  std::vector<unsigned int> _bool_control_data_indices;
97  std::vector<ChainControlData<bool> *> _bool_control_data_values;
98 
100  std::vector<unsigned int> _scalar_indices;
102  std::vector<const VariableValue *> _scalar_values;
103 
105  std::vector<unsigned int> _function_indices;
107  std::vector<const Function *> _function_values;
108 
110  std::vector<Real *> _input_values;
111 
114 
117 
122 
127 
134  void updateFunctionValues(Real t, const Point & pt);
135 
140 };
std::vector< ChainControlData< Real > * > _real_control_data_values
Real control data values.
std::vector< const Function * > _function_values
Function values.
std::vector< const VariableValue * > _scalar_values
Scalar variable values.
void updateChainControlDataValues()
Updates control data values in wrapped function.
Base class for function objects.
Definition: Function.h:36
void initializeFunctionInputs()
Gets initial value, address, and input index for each function input.
ChainControlDataSystem & _chain_control_data_system
Chain control data system.
std::vector< ChainControlData< bool > * > _bool_control_data_values
bool control data values
const THREAD_ID _tid
Thread id passed from owning object.
std::vector< unsigned int > _scalar_indices
_input_values index for each scalar variable value
std::vector< unsigned int > _real_control_data_indices
_input_values index for each Real control data value
Base class for MOOSE-based applications.
Definition: MooseApp.h:85
const std::vector< std::string > & _symbol_names
Symbols used in the function expression string.
Real evaluate(Real t, const Point &p)
Evaluates the libMesh::ParsedFunction.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
std::unique_ptr< ParsedFunction< Real > > _function_ptr
Wrapped libMesh::ParsedFunction.
void updateFunctionValues(Real t, const Point &pt)
Updates function values in wrapped function.
ChainControlParsedFunctionWrapper(MooseApp &moose_app, FEProblemBase &fe_problem, const std::string &function_str, const std::vector< std::string > &symbol_names, const std::vector< std::string > &symbol_values, const THREAD_ID tid=0)
Constructor.
std::vector< unsigned int > _bool_control_data_indices
_input_values index for each bool control data value
std::vector< Real * > _input_values
libMesh::ParsedFunction input values
const std::string & _function_str
Function expression.
std::vector< unsigned int > _function_indices
_input_values index for each function value
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void updateScalarVariableValues()
Updates scalar values in wrapped function.
System that manages ChainControls.
std::vector< ChainControlData< bool > * > getBoolChainControlData()
Get list of boolean-valued control data objects.
std::vector< ChainControlData< Real > * > getRealChainControlData()
Get list of Real-valued control data objects.
std::vector< Real > _initial_values
Initial value for each function input.
const std::vector< std::string > & _symbol_values
Values pairing with symbol_names.
Wraps libMesh::ParsedFunction for use in ChainControls.
unsigned int THREAD_ID
Definition: MooseTypes.h:209