34 #include "libmesh/boundary_info.h"
35 #include "libmesh/parsed_fem_function.h"
54 libMesh::Order(this->
_order),
70 if (tdf->expression() ==
"0")
71 std::cout <<
"Warning! Zero time_deriv function specified!" << std::endl;
81 if (mrf->expression() ==
"0")
82 std::cout <<
"Warning! Zero mass_residual function specified!" << std::endl;
121 libMesh::DenseSubMatrix<libMesh::Number> &Kss =
124 libMesh::DenseSubVector<libMesh::Number> &Fs =
127 const libMesh::Number time_deriv =
128 (*time_deriv_function)(context, libMesh::Point(0),
133 if (compute_jacobian)
137 libMesh::DenseSubVector<libMesh::Number> &Us =
138 const_cast<libMesh::DenseSubVector<libMesh::Number>&
>
141 const libMesh::Number s = Us(0);
143 libMesh::Number time_deriv_jacobian =
144 (*time_deriv_function)(context, libMesh::Point(0),
148 time_deriv_jacobian -=
149 (*time_deriv_function)(context, libMesh::Point(0),
153 time_deriv_jacobian /= (2*this->
_epsilon);
155 Kss(0,0) += time_deriv_jacobian *
156 context.get_elem_solution_derivative();
167 libMesh::DenseSubMatrix<libMesh::Number> &Kss =
170 libMesh::DenseSubVector<libMesh::Number> &Fs =
173 const libMesh::Number mass_res =
174 (*mass_residual_function)(context, libMesh::Point(0),
179 if (compute_jacobian)
183 libMesh::DenseSubVector<libMesh::Number> &Us =
184 const_cast<libMesh::DenseSubVector<libMesh::Number>&
>
187 const libMesh::Number s = Us(0);
189 libMesh::Number mass_residual_jacobian =
190 (*mass_residual_function)(context, libMesh::Point(0),
194 mass_residual_jacobian -=
195 (*mass_residual_function)(context, libMesh::Point(0),
199 mass_residual_jacobian /= (2*this->
_epsilon);
201 Kss(0,0) -= mass_residual_jacobian *
202 context.get_elem_solution_rate_derivative();
213 libMesh::DenseSubMatrix<libMesh::Number> &Kss =
216 libMesh::DenseSubVector<libMesh::Number> &Fs =
219 const libMesh::Number constraint =
220 (*constraint_function)(context, libMesh::Point(0),
225 if (compute_jacobian)
229 libMesh::DenseSubVector<libMesh::Number> &Us =
230 const_cast<libMesh::DenseSubVector<libMesh::Number>&
>
233 const libMesh::Number s = Us(0);
235 libMesh::Number constraint_jacobian =
236 (*constraint_function)(context, libMesh::Point(0),
240 constraint_jacobian -=
241 (*constraint_function)(context, libMesh::Point(0),
245 constraint_jacobian /= (2*this->
_epsilon);
247 Kss(0,0) += constraint_jacobian *
248 context.get_elem_solution_derivative();
virtual void set_parameter(libMesh::Number ¶m_variable, const GetPot &input, const std::string ¶m_name, libMesh::Number param_default)
Each subclass can simultaneously read a parameter value from.
GRINS::ICHandlingBase * _ic_handler
std::string _scalar_ode_var_name
static PhysicsName scalar_ode()
Physics abstract base class. Defines API for physics to be added to MultiphysicsSystem.
libMesh::UniquePtr< libMesh::FEMFunctionBase< libMesh::Number > > mass_residual_function
Base class for reading and handling initial conditions for physics classes.
const std::string scalar_ode_var_name_default
arbitrary scalar ODE variable name
void read_input_options(const GetPot &input)
Read options from GetPot input file.
virtual void init_context(AssemblyContext &context)
Prepare the context for evaluations.
virtual void nonlocal_mass_residual(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Mass matrix part(s) for scalar variables.
virtual void nonlocal_constraint(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Constraint part(s) of physics for scalar variables.
virtual void set_time_evolving_vars(libMesh::FEMSystem *system)
Sets scalar variable(s) to be time-evolving.
libMesh::UniquePtr< libMesh::FEMFunctionBase< libMesh::Number > > time_deriv_function
virtual void init_variables(libMesh::FEMSystem *system)
Initialization of variables.
virtual void nonlocal_time_derivative(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Time dependent part(s) of physics for scalar variables.
VariableIndex scalar_ode_var() const
VariableIndex _scalar_ode_var
libMesh::UniquePtr< libMesh::FEMFunctionBase< libMesh::Number > > constraint_function