28#include "libmesh/numeric_vector.h"
37template <
typename OutputType>
42 params.
set<
bool>(
"fv") =
true;
48 "Default gradient computation method to register when a consumer requests gradients from "
49 "this variable. This may be a built-in method name like 'green-gauss' or "
50 "'green-gauss-venkatakrishnan', or the name of an object in [FVGradientMethods].");
54template <
typename OutputType>
57 _needs_cell_gradients(false),
58 _linear_system(dynamic_cast<
LinearSystem *>(&this->_sys)),
60 _gradient_reader(nullptr),
61 _default_gradient_method_name(this->template getParam<GradientMethodName>(
"gradient_method")),
62 _sys_num(this->_sys.number()),
63 _solution(this->_sys.currentSolution()),
66 _phi(this->_assembly.template fePhi<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
67 _grad_phi(this->_assembly.template feGradPhi<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
68 _phi_face(this->_assembly.template fePhiFace<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
69 _grad_phi_face(this->_assembly.template feGradPhiFace<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
71 this->_assembly.template fePhiFaceNeighbor<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
72 _grad_phi_face_neighbor(
73 this->_assembly.template feGradPhiFaceNeighbor<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
74 _phi_neighbor(this->_assembly.template fePhiNeighbor<
OutputShape>(FEType(CONSTANT, MONOMIAL))),
76 this->_assembly.template feGradPhiNeighbor<
OutputShape>(FEType(CONSTANT, MONOMIAL)))
80 "The assigned system is not a linear or an auxiliary system! Linear variables "
81 "can only be assigned to linear or auxiliary systems!");
82 _element_data = std::make_unique<MooseVariableDataLinearFV<OutputType>>(
84 _neighbor_data = std::make_unique<MooseVariableDataLinearFV<OutputType>>(
88 mooseError(
"MooseLinearVariableFV does not support threading at the moment!");
91template <
typename OutputType>
95 const auto & reader = requestCellGradients(_default_gradient_method_name, oldest_state);
97 _gradient_reader = &reader;
101template <
typename OutputType>
105 requestCellGradients();
108template <
typename OutputType>
111 const unsigned int oldest_state)
113 const auto & method = _linear_system ? _linear_system->resolveFVGradientMethod(method_name)
114 : _auxiliary_system->resolveFVGradientMethod(method_name);
116 return requestCellGradients(method, oldest_state);
119template <
typename OutputType>
122 const unsigned int oldest_state)
124 _needs_cell_gradients =
true;
125 _oldest_gradient_state_requested = std::max(_oldest_gradient_state_requested, oldest_state);
128 _linear_system ? _linear_system->registerFVGradient(this->_var_num, method, oldest_state)
129 : _auxiliary_system->registerFVGradient(this->_var_num, method, oldest_state);
131 const auto it = _gradient_readers_by_method.find(&method);
132 if (it != _gradient_readers_by_method.end())
135 auto reader = std::make_unique<LinearFVGradientReader>(std::move(new_reader));
137 auto & reader_ref = *reader;
138 _gradient_readers_by_method.emplace(&method, std::move(reader));
143template <
typename OutputType>
152template <
typename OutputType>
159 "The variable should be defined on the element's subdomain! This typically occurs when the "
160 "user wants to evaluate the elements right next to the boundary of two variables (block "
161 "boundary). The subdomain which is queried: " +
162 Moose::stringify(this->activeSubdomains()) +
" the subdomain of the element " +
169 const auto & global_soln = (state.
state == 0)
170 ? *this->_sys.currentSolution()
173 return global_soln(elem_info.
dofIndices()[this->_sys_num][this->_var_num]);
176template <
typename OutputType>
180 mooseAssert(_gradient_reader,
"Gradient requested without calling requestCellGradients().");
181 return _gradient_reader->gradient(elem_info, state);
184template <
typename OutputType>
187 const unsigned int component)
const
192template <
typename OutputType>
195 const unsigned int component,
198 mooseAssert(_gradient_reader,
199 "Gradient component requested without calling requestCellGradients().");
200 return _gradient_reader->component(elem_info, component, state);
203template <
typename OutputType>
207 mooseAssert(_gradient_reader,
"Gradient requested without calling requestCellGradients().");
208 return _gradient_reader->gradient(fi, state);
211template <
typename OutputType>
216 cacheBoundaryBCMap();
219template <
typename OutputType>
224 cacheBoundaryBCMap();
227template <
typename OutputType>
233 mooseAssert(fi,
"The face information must be non-null");
235 const auto face_type = fi->
faceType(std::make_pair(this->_var_num, this->_sys_num));
239 else if (
auto * bc_pointer = this->getBoundaryCondition(*fi->
boundaryIDs().begin()))
241 mooseAssert(fi->
boundaryIDs().size() == 1,
"We should only have one boundary on every face.");
242 bc_pointer->setupFaceData(fi, face_type);
243 return bc_pointer->computeBoundaryValue();
249 const auto & elem_info = *(face.
fi->
elemInfo());
250 return getElemValue(elem_info, state);
255 return getElemValue(elem_info, state);
261template <
typename OutputType>
269template <
typename OutputType>
273 timeIntegratorError();
281 timeIntegratorError();
284template <
typename OutputType>
288 _boundary_id_to_bc.clear();
289 std::vector<LinearFVBoundaryCondition *> bcs;
295 auto base_query = this->_subproblem.getMooseApp()
298 .template condition<AttribSystem>(
"LinearFVBoundaryCondition")
299 .template condition<AttribThread>(_tid)
300 .template condition<AttribVar>(_var_num)
301 .template condition<AttribSysNum>(this->_sys.number());
303 for (
const auto bnd_id : this->_mesh.getBoundaryIDs())
305 auto base_query_copy = base_query;
306 base_query_copy.template condition<AttribBoundaries>(std::set<BoundaryID>({bnd_id}))
308 mooseAssert(bcs.size() <= 1,
"cannot have multiple BCs on the same boundary");
310 _boundary_id_to_bc.emplace(bnd_id, bcs[0]);
314template <
typename OutputType>
318 const auto iter = _boundary_id_to_bc.find(bd_id);
319 if (iter == _boundary_id_to_bc.end())
325template <
typename OutputType>
329 return this->_assembly.elem();
332template <
typename OutputType>
337 if (
auto it = _boundary_id_to_bc.find(bnd_id); it != _boundary_id_to_bc.end())
351template <
typename OutputType>
354 std::vector<dof_id_type> & dof_indices)
const
357 const auto & elem_info = this->_mesh.elemInfo(elem->id());
358 dof_indices.push_back(elem_info.
dofIndices()[this->_sys_num][this->number()]);
361template <
typename OutputType>
365 _element_data->setDofValue(value, index);
368template <
typename OutputType>
372 _element_data->setDofValues(
values);
375template <
typename OutputType>
379 _element_data->clearDofIndices();
382template <
typename OutputType>
386 return _element_data->dofValues();
389template <
typename OutputType>
393 return _neighbor_data->dofValues();
396template <
typename OutputType>
400 return _element_data->dofValuesOld();
403template <
typename OutputType>
407 return _element_data->dofValuesOlder();
410template <
typename OutputType>
414 return _element_data->dofValuesPreviousNL();
417template <
typename OutputType>
421 return _neighbor_data->dofValuesOld();
424template <
typename OutputType>
428 return _neighbor_data->dofValuesOlder();
431template <
typename OutputType>
435 return _neighbor_data->dofValuesPreviousNL();
438template <
typename OutputType>
442 timeIntegratorError();
445template <
typename OutputType>
449 timeIntegratorError();
452template <
typename OutputType>
456 timeIntegratorError();
459template <
typename OutputType>
463 timeIntegratorError();
466template <
typename OutputType>
470 timeIntegratorError();
473template <
typename OutputType>
477 timeIntegratorError();
480template <
typename OutputType>
484 timeIntegratorError();
487template <
typename OutputType>
491 timeIntegratorError();
494template <
typename OutputType>
498 timeIntegratorError();
501template <
typename OutputType>
505 timeIntegratorError();
508template <
typename OutputType>
512 timeIntegratorError();
515template <
typename OutputType>
519 timeIntegratorError();
522template <
typename OutputType>
526 if (_compute_qp_data)
529 _element_data->computeValues();
533template <
typename OutputType>
537 if (_compute_qp_data)
540 _element_data->computeValues();
544template <
typename OutputType>
548 if (_compute_qp_data)
551 _neighbor_data->computeValues();
555template <
typename OutputType>
559 if (_compute_qp_data)
562 _neighbor_data->computeValues();
566template <
typename OutputType>
573template <
typename OutputType>
580template <
typename OutputType>
587template <
typename OutputType>
588const std::vector<dof_id_type> &
591 return _element_data->dofIndices();
594template <
typename OutputType>
595const std::vector<dof_id_type> &
598 return _neighbor_data->dofIndices();
601template <
typename OutputType>
608template <
typename OutputType>
612 unsigned int state = _oldest_gradient_state_requested;
613 state = std::max(state, _element_data->oldestSolutionStateRequested());
614 state = std::max(state, _neighbor_data->oldestSolutionStateRequested());
618template <
typename OutputType>
622 _element_data->prepareIC();
625template <
typename OutputType>
629 _element_data->clearDofIndices();
630 _neighbor_data->clearDofIndices();
633template <
typename OutputType>
640template <
typename OutputType>
647template <
typename OutputType>
654template <
typename OutputType>
655const std::vector<dof_id_type> &
661template <
typename OutputType>
668template <
typename OutputType>
672 _element_data->insert(vector);
675template <
typename OutputType>
679 mooseError(
"We don't support value insertion to residuals in MooseLinearVariableFV!");
682template <
typename OutputType>
686 mooseError(
"We don't support value addition to residuals in MooseLinearVariableFV!");
689template <
typename OutputType>
693 _element_data->setActiveTags(vtags);
694 _neighbor_data->setActiveTags(vtags);
697template <
typename OutputType>
704template <
typename OutputType>
711template <
typename OutputType>
718template <
typename OutputType>
725template <
typename OutputType>
729 return _element_data->vectorTagValue(tag);
732template <
typename OutputType>
736 return _element_data->vectorTagDofValue(tag);
739template <
typename OutputType>
743 return _element_data->matrixTagValue(tag);
746template <
typename OutputType>
750 mooseError(
"We don't currently implement second derivatives for FV");
753template <
typename OutputType>
757 mooseError(
"We don't currently implement curl for FV");
760template <
typename OutputType>
764 mooseError(
"We don't currently implement divergence for FV");
767template <
typename OutputType>
771 mooseError(
"We don't currently implement second derivatives for FV");
774template <
typename OutputType>
778 mooseError(
"We don't currently implement second derivatives for FV");
781template <
typename OutputType>
785 mooseError(
"We don't currently implement second derivatives for FV");
788template <
typename OutputType>
795template <
typename OutputType>
802template <
typename OutputType>
809template <
typename OutputType>
816template <
typename OutputType>
823template <
typename OutputType>
830template <
typename OutputType>
837template <
typename OutputType>
844template <
typename OutputType>
851template <
typename OutputType>
858template <
typename OutputType>
865template <
typename OutputType>
872template <
typename OutputType>
879template <
typename OutputType>
886template <
typename OutputType>
893template <
typename OutputType>
900template <
typename OutputType>
907template <
typename OutputType>
914template <
typename OutputType>
921template <
typename OutputType>
928template <
typename OutputType>
935template <
typename OutputType>
942template <
typename OutputType>
949template <
typename OutputType>
956template <
typename OutputType>
963template <
typename OutputType>
970template <
typename OutputType>
977template <
typename OutputType>
984template <
typename OutputType>
988 _element_data->sizeMatrixTagData();
DualNumber< Real, DNDerivativeType, true > ADReal
boundary_id_type BoundaryID
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
registerMooseObject("MooseApp", MooseLinearVariableFVReal)
typename OutputTools< typename Moose::ADType< T >::type >::VariableSecond ADTemplateVariableSecond
typename OutputTools< typename Moose::ADType< T >::type >::VariableValue ADTemplateVariableValue
typename OutputTools< typename Moose::ADType< T >::type >::VariableCurl ADTemplateVariableCurl
typename OutputTools< typename Moose::ADType< T >::type >::VariableGradient ADTemplateVariableGradient
std::array< Real, 2 > values
const Elem *const & elem() const
Return the current element.
const Elem *const & neighbor() const
Return the neighbor element.
A system that holds auxiliary variables.
Class used for caching additional information for elements such as the volume and centroid.
SubdomainID subdomain_id() const
We return the subdomain ID of the corresponding libmesh element.
const std::vector< std::vector< dof_id_type > > & dofIndices() const
Base class for linear finite-volume cell-gradient methods.
This data structure is used to store geometric and variable related metadata about each cell face in ...
VarFaceNeighbors faceType(const std::pair< unsigned int, unsigned int > &var_sys) const
Returns which side(s) the given variable-system number pair is defined on for this face.
const std::set< BoundaryID > & boundaryIDs() const
Const getter for every associated boundary ID.
const ElemInfo * elemInfo() const
const ElemInfo * neighborInfo() const
Class implementing a Dirichlet boundary condition for linear finite volume variables.
Base class for boundary conditions for linear FV systems.
Read-only view of one variable's cell-centered linear finite-volume gradient values.
Linear system to be solved.
void paramError(const std::string ¶m, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
virtual const DofValues & dofValues() const override
dof values getters
typename MooseVariableField< OutputType >::DofValues DofValues
virtual const FieldVariableGradient & gradSlnOldNeighbor() const override
virtual void getDofIndices(const Elem *elem, std::vector< dof_id_type > &dof_indices) const override
virtual const ADTemplateVariableGradient< OutputType > & adGradSlnDot() const override
AD grad of time derivative solution getter.
Real gradSlnComponent(const ElemInfo &elem_info, unsigned int component) const
Get one default gradient component at a cell center without materializing the full gradient.
virtual void clearAllDofIndices() override final
virtual const dof_id_type & nodalDofIndex() const override final
virtual const FieldVariablePhiSecond & secondPhi() const override final
Return the rank-2 tensor of second derivatives of the variable's elemental shape functions.
virtual const FieldVariableGradient & gradSlnNeighbor() const override
neighbor solution gradients
virtual const Elem *const & currentElem() const override
Current element this variable is evaluated at.
virtual const std::vector< dof_id_type > & dofIndicesNeighbor() const final
Get neighbor DOF indices for currently selected element.
const FieldVariablePhiValue & curlPhi() const override final
Curl of the shape functions.
virtual void add(libMesh::NumericVector< libMesh::Number > &vector) override
Add the currently cached degree of freedom values into the provided vector.
virtual bool isDirichletBoundaryFace(const FaceInfo &fi) const
If the variable has a dirichlet boundary condition at face described by fi .
virtual const ADTemplateVariableGradient< OutputType > & adGradSlnNeighborDot() const override
AD grad of time derivative neighbor solution getter.
virtual const DofValues & dofValuesOlderNeighbor() const override
virtual void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job.
const LinearFVGradientReader & requestCellGradients(unsigned int oldest_state=0)
Register the configured default gradient method with time-state storage.
virtual void insertLower(libMesh::NumericVector< libMesh::Number > &vector) override
Insert the currently cached degree of freedom values for a lower-dimensional element into the provide...
virtual void setNodalValue(const OutputType &value, unsigned int idx=0) override
virtual const ADTemplateVariableGradient< OutputType > & adGradSlnNeighbor() const override
AD grad neighbor solution getter.
virtual const ADTemplateVariableCurl< OutputType > & adCurlSln() const override
AD curl solution getter.
virtual const std::vector< dof_id_type > & dofIndicesLower() const override final
Get dof indices for the current lower dimensional element (this is meaningful when performing mortar ...
virtual const DofValues & dofValuesDotNeighbor() const override
virtual const DofValues & dofValuesNeighbor() const override
virtual const DofValues & vectorTagDofValue(TagID tag) const override
virtual void computeNeighborValues() override
Compute values at quadrature points for the neighbor.
virtual const FieldVariableValue & matrixTagValue(TagID tag) const override
typename MooseVariableField< OutputType >::DofValue DofValue
void computeCellGradients()
Backward-compatible interface for requesting cell gradients.
virtual const FieldVariablePhiSecond & secondPhiFaceNeighbor() const override final
Return the rank-2 tensor of second derivatives of the variable's shape functions on a neighboring ele...
virtual const DofValues & dofValuesDot() const override
virtual const ADTemplateVariableValue< OutputType > & adUDot() const override
AD time derivative getter.
virtual const FieldVariableValue & slnNeighbor() const override
Real getElemValue(const ElemInfo &elem_info, const StateArg &state) const
Get the solution value for the provided element and seed the derivative for the corresponding dof ind...
virtual const ADTemplateVariableValue< OutputType > & adSlnNeighbor() const override
AD neighbor solution getter.
virtual const FieldVariablePhiSecond & secondPhiFace() const override final
Return the rank-2 tensor of second derivatives of the variable's shape functions on an element face.
virtual const MooseArray< libMesh::Number > & dofValuesDuDotDu() const override
virtual void prepareIC() override
Prepare the initial condition.
virtual const DofValues & dofValuesPreviousNLNeighbor() const override
virtual const ADTemplateVariableValue< OutputType > & adUDotDotNeighbor() const override
AD neighbor second time derivative getter.
virtual DotType evaluateDot(const ElemArg &elem, const StateArg &) const override final
Evaluate the functor time derivative with a given element.
LinearSystem *const _linear_system
Owning concrete system pointers. One will be null.
virtual const FieldVariableValue & slnOldNeighbor() const override
virtual const DofValues & dofValuesDotDotOldNeighbor() const override
virtual const ADTemplateVariableCurl< OutputType > & adCurlSlnNeighbor() const override
AD curl neighbor solution getter.
typename MooseVariableField< OutputType >::FieldVariablePhiDivergence FieldVariablePhiDivergence
virtual const FieldVariableValue & slnOlder() const override
virtual void computeNodalNeighborValues() override final
Compute nodal values of this variable in the neighbor.
typename MooseVariableField< OutputType >::FieldVariableValue FieldVariableValue
virtual const DofValues & dofValuesDotOld() const override
virtual void computeNeighborValuesFace() override
Compute values at facial quadrature points for the neighbor.
virtual const ADTemplateVariableSecond< OutputType > & adSecondSln() const override
AD second solution getter.
virtual const MooseArray< libMesh::Number > & dofValuesDuDotDuNeighbor() const override
virtual void sizeMatrixTagData() override
Size data structures related to matrix tagging.
virtual const MooseArray< libMesh::Number > & dofValuesDuDotDotDuNeighbor() const override
virtual const DofValues & dofValuesPreviousNL() const override
virtual const std::vector< dof_id_type > & dofIndices() const final
Get local DoF indices.
virtual void insert(libMesh::NumericVector< libMesh::Number > &vector) override
Insert the currently cached degree of freedom values into the provided vector.
virtual void computeElemValues() override
Compute values at interior quadrature points.
virtual void setLowerDofValues(const DenseVector< DofValue > &values) override
Set local DOF values for a lower dimensional element and evaluate the values on quadrature points.
std::unique_ptr< MooseVariableDataLinearFV< OutputType > > _element_data
Holder for all the data associated with the "main" element.
virtual void clearDofIndices() override
Clear out the dof indices.
typename MooseVariableField< OutputType >::FieldVariableGradient FieldVariableGradient
virtual const FieldVariablePhiSecond & secondPhiNeighbor() const override final
Return the rank-2 tensor of second derivatives of the variable's shape functions on a neighboring ele...
typename MooseVariableField< OutputType >::ADDofValues ADDofValues
const FieldVariablePhiDivergence & divPhi() const override final
Divergence of the shape functions.
virtual const MooseArray< libMesh::Number > & dofValuesDuDotDotDu() const override
virtual const ADTemplateVariableGradient< OutputType > & adGradSln() const override
AD grad solution getter.
virtual const DofValues & dofValuesDotOldNeighbor() const override
MooseLinearVariableFV(const InputParameters ¶meters)
virtual const MooseArray< OutputType > & nodalValueOlderArray() const override
virtual const ADTemplateVariableValue< OutputType > & adUDotNeighbor() const override
AD neighbor time derivative getter.
virtual void computeNodalValues() override final
Compute nodal values of this variable.
virtual const FieldVariableGradient & gradSlnOld() const override
LinearFVBoundaryCondition * getBoundaryCondition(const BoundaryID bd_id) const
Get the boundary condition object which corresponds to the given boundary ID.
virtual const FieldVariableValue & sln() const override
virtual const dof_id_type & nodalDofIndexNeighbor() const override final
void cacheBoundaryBCMap()
Setup the boundary to Dirichlet BC map.
typename MooseVariableField< OutputType >::FieldVariablePhiValue FieldVariablePhiValue
virtual const DofValues & dofValuesOld() const override
virtual void setActiveTags(const std::set< TagID > &vtags) override
Set the active vector tags.
virtual bool isExtrapolatedBoundaryFace(const FaceInfo &fi, const Elem *elem, const Moose::StateArg &state) const override
Returns whether this (sided) face is an extrapolated boundary face for this functor.
virtual void setDofValue(const DofValue &, unsigned int) override
Degree of freedom value setters.
virtual const DofValues & dofValuesDotDotOld() const override
virtual const DofValues & nodalVectorTagValue(TagID) const override
virtual const FieldVariableGradient & gradSln() const override
element gradients
virtual const ADDofValues & adDofValuesNeighbor() const override
Return the AD neighbor dof values.
virtual void computeLowerDValues() override final
compute values at quadrature points on the lower dimensional element
virtual const ADTemplateVariableSecond< OutputType > & adSecondSlnNeighbor() const override
AD second neighbor solution getter.
virtual const DofValues & dofValuesDotDot() const override
virtual void setDofValues(const DenseVector< DofValue > &values) override
Set local DOF values and evaluate the values on quadrature points.
virtual const ADTemplateVariableValue< OutputType > & adSln() const override
AD solution getter.
virtual const ADDofValues & adDofValues() const override
Return the AD dof values.
virtual void timestepSetup() override
Gets called at the beginning of the timestep before this object is asked to do its job.
AuxiliarySystem *const _auxiliary_system
virtual const DofValues & dofValuesDotDotNeighbor() const override
virtual const DofValues & nodalMatrixTagValue(TagID tag) const override
virtual std::size_t phiLowerSize() const override final
Return the number of shape functions on the lower dimensional element for this variable.
virtual const FieldVariablePhiValue & phiLower() const override
Return the variable's shape functions on a lower-dimensional element.
virtual const FieldVariableValue & slnOld() const override
typename MooseVariableField< OutputType >::OutputShape OutputShape
virtual const DofValues & dofValuesOlder() const override
virtual void computeElemValuesFace() override
Compute values at facial quadrature points.
std::unique_ptr< MooseVariableDataLinearFV< OutputType > > _neighbor_data
Holder for all the data associated with the "neighbor" element.
virtual const MooseArray< OutputType > & nodalValueArray() const override
Methods for retrieving values of variables at the nodes in a MooseArray for AuxKernelBase.
static InputParameters validParams()
Input parameters for a linear finite-volume variable.
virtual const ADDofValues & adDofValuesDot() const override
Return the AD time derivatives at dofs.
virtual const ADTemplateVariableValue< OutputType > & adUDotDot() const override
AD second time derivative getter.
virtual const MooseArray< OutputType > & nodalValueOldArray() const override
virtual ValueType evaluate(const ElemArg &elem, const StateArg &) const override final
Evaluate the functor with a given element.
typename MooseVariableField< OutputType >::FieldVariablePhiSecond FieldVariablePhiSecond
virtual const DofValues & dofValuesOldNeighbor() const override
virtual const FieldVariableValue & vectorTagValue(TagID tag) const override
tag values getters
virtual unsigned int oldestSolutionStateRequested() const override final
The oldest solution state that is requested for this variable (0 = current, 1 = old,...
Assembly & _assembly
Assembly data.
SystemBase & _sys
System this variable is part of.
Class for stuff related to variables.
virtual void timestepSetup() override
Gets called at the beginning of the timestep before this object is asked to do its job.
static InputParameters validParams()
virtual const OutputTools< T >::VariableSecond & second()
The second derivative of the variable this object is operating on.
Moose::ADType< OutputType >::type ValueType
virtual void initialSetup()
Gets called at the beginning of the simulation before this object is asked to do its job.
void interpolate(InterpMethod m, T &result, const T2 &value1, const T3 &value2, const FaceInfo &fi, const bool one_is_elem)
Provides interpolation of face values for non-advection-specific purposes (although it can/will still...
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
std::string stringify(const T &t)
conversion to string
A structure that is used to evaluate Moose functors logically at an element/cell center.
A structure defining a "face" evaluation calling argument for Moose functors.
const FaceInfo * fi
a face information object which defines our location in space
State argument for evaluating functors.
SolutionIterationType iteration_type
The solution iteration type, e.g. time or nonlinear.
unsigned int state
The state.