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