https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
19class MooseApp;
20class FEProblemBase;
21class Function;
23
28{
29public:
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
70private:
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};
unsigned int THREAD_ID
Definition MooseTypes.h:237
System that manages ChainControls.
Wraps libMesh::ParsedFunction for use in ChainControls.
std::vector< ChainControlData< bool > * > getBoolChainControlData()
Get list of boolean-valued control data objects.
std::vector< unsigned int > _scalar_indices
_input_values index for each scalar variable value
std::vector< ChainControlData< bool > * > _bool_control_data_values
bool control data values
void updateFunctionValues(Real t, const Point &pt)
Updates function values in wrapped function.
std::vector< ChainControlData< Real > * > _real_control_data_values
Real control data values.
const std::vector< std::string > & _symbol_names
Symbols used in the function expression string.
const THREAD_ID _tid
Thread id passed from owning object.
void updateChainControlDataValues()
Updates control data values in wrapped function.
std::vector< ChainControlData< Real > * > getRealChainControlData()
Get list of Real-valued control data objects.
std::vector< unsigned int > _real_control_data_indices
_input_values index for each Real control data value
void initializeFunctionInputs()
Gets initial value, address, and input index for each function input.
std::vector< Real > _initial_values
Initial value for each function input.
Real evaluate(Real t, const Point &p)
Evaluates the libMesh::ParsedFunction.
const std::string & _function_str
Function expression.
ChainControlDataSystem & _chain_control_data_system
Chain control data system.
void updateScalarVariableValues()
Updates scalar values in wrapped function.
std::vector< const Function * > _function_values
Function values.
std::vector< Real * > _input_values
libMesh::ParsedFunction input values
std::vector< const VariableValue * > _scalar_values
Scalar variable values.
std::vector< unsigned int > _function_indices
_input_values index for each function value
const std::vector< std::string > & _symbol_values
Values pairing with symbol_names.
std::unique_ptr< ParsedFunction< Real > > _function_ptr
Wrapped libMesh::ParsedFunction.
std::vector< unsigned int > _bool_control_data_indices
_input_values index for each bool control data value
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Base class for function objects.
Definition Function.h:30
Base class for MOOSE-based applications.
Definition MooseApp.h:110