https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
MooseVariableDataFV< OutputType > Class Template Reference

#include <MooseVariableDataFV.h>

Inheritance diagram for MooseVariableDataFV< OutputType >:
[legend]

Public Types

typedef libMesh::TensorTools::IncrementRank< OutputType >::type OutputGradient
 
typedef libMesh::TensorTools::IncrementRank< OutputGradient >::type OutputSecond
 
typedef libMesh::TensorTools::DecrementRank< OutputType >::type OutputDivergence
 
typedef MooseArray< OutputType > FieldVariableValue
 
typedef MooseArray< OutputGradient > FieldVariableGradient
 
typedef MooseArray< OutputSecond > FieldVariableSecond
 
typedef MooseArray< OutputType > FieldVariableCurl
 
typedef MooseArray< OutputDivergence > FieldVariableDivergence
 
typedef Moose::ShapeType< OutputType >::type OutputShape
 
typedef libMesh::TensorTools::IncrementRank< OutputShape >::type OutputShapeGradient
 
typedef libMesh::TensorTools::IncrementRank< OutputShapeGradient >::type OutputShapeSecond
 
typedef libMesh::TensorTools::DecrementRank< OutputShape >::type OutputShapeDivergence
 
typedef Moose::DOFType< OutputType >::type OutputData
 
typedef MooseArray< OutputData > DofValue
 
typedef Moose::ADType< DofValue >::type ADDofValue
 
typedef MooseArray< DofValue > DofValues
 
typedef MooseArray< ADDofValue > ADDofValues
 

Public Member Functions

 MooseVariableDataFV (const MooseVariableFV< OutputType > &var, SystemBase &sys, THREAD_ID tid, Moose::ElementType element_type, const Elem *const &elem)
 
bool isNodal () const override
 
bool hasDoFsOnNodes () const override
 Whether this data is associated with a variable that has DoFs on nodes.
 
libMesh::FEContinuity getContinuity () const override
 Return the variable continuity.
 
bool needsAD () const
 Returns whether this data structure needs automatic differentiation calculations.
 
void setGeometry (Moose::GeometryType gm_type)
 Set the geometry type before calculating variables values.
 
void computeValuesFace (const FaceInfo &fi)
 compute the variable values
 
void computeValues ()
 compute the variable values
 
void computeAD (const unsigned int num_dofs, const unsigned int nqp)
 compute AD things
 
const Elem *const & currentElem () const
 The current element.
 
void prepareIC ()
 prepare the initial condition
 
const FieldVariableValue & sln (Moose::SolutionState state) const
 Local solution value.
 
const FieldVariableGradient & gradSlnDot () const
 Local time derivative of solution gradient getter.
 
const FieldVariableGradient & gradSlnDotDot () const
 Local second time derivative of solution gradient getter.
 
const FieldVariableSecond & secondSln (Moose::SolutionState state) const
 Local solution second spatial derivative getter.
 
const FieldVariableCurl & curlSln (Moose::SolutionState state) const
 Local solution curl getter.
 
const ADTemplateVariableValue< OutputType > & adSln () const
 
const ADTemplateVariableGradient< OutputType > & adGradSln () const
 
const ADTemplateVariableGradient< OutputType > & adGradSlnDot () const
 
const ADTemplateVariableSecond< OutputType > & adSecondSln () const
 
const ADTemplateVariableValue< OutputType > & adUDot () const
 
const ADTemplateVariableValue< OutputType > & adUDotDot () const
 
const FieldVariableValue & uDot () const
 
const FieldVariableValue & uDotDot () const
 
const FieldVariableValue & uDotOld () const
 
const FieldVariableValue & uDotDotOld () const
 
const VariableValue & duDotDu () const
 
const VariableValue & duDotDotDu () const
 
void setDofValues (const DenseVector< OutputData > &values)
 Set local DOF values and evaluate the values on quadrature points.
 
OutputData getElementalValue (const Elem *elem, Moose::SolutionState state, unsigned int idx=0) const
 
void getDofIndices (const Elem *elem, std::vector< dof_id_type > &dof_indices) const
 
const std::vector< dof_id_type > & dofIndices () const
 
unsigned int numberOfDofs () const
 
void clearDofIndices ()
 
const DofValue & dofValuesDot () const
 
const DofValue & dofValuesDotOld () const
 
const DofValue & dofValuesDotDot () const
 
const DofValue & dofValuesDotDotOld () const
 
const MooseArray< libMesh::Number > & dofValuesDuDotDu () const
 
const MooseArray< libMesh::Number > & dofValuesDuDotDotDu () const
 
const MooseArray< ADReal > & adDofValues () const
 Return the AD dof values.
 
const MooseArray< ADReal > & adDofValuesDot () const
 Return the AD dof time derivatives.
 
const FieldVariableValue & increment () const
 Increment getter.
 
void computeIncrementAtQps (const libMesh::NumericVector< libMesh::Number > &increment_vec)
 Compute and store incremental change in solution at QPs based on increment_vec.
 
bool hasDirichletBC () const
 checks if a Dirichlet BC exists on this face
 
void meshChanged () override
 Called on this object when the mesh changes.
 
const FieldVariableGradient & gradSln (Moose::SolutionState state) const
 Local solution gradient getter.
 
unsigned int oldestSolutionStateRequested () const
 The oldest solution state that is requested for this variable (0 = current, 1 = old, 2 = older, etc).
 
void setNodalValue (const OutputType &value)
 Set nodal value.
 
void setNodalValue (const RealVectorValue &value)
 
void insert (libMesh::NumericVector< libMesh::Number > &residual)
 Set the current local DOF values to the input vector.
 
void insert (NumericVector< Number > &residual)
 
void add (libMesh::NumericVector< libMesh::Number > &residual)
 Add the current local DOF values to the input vector.
 
void add (NumericVector< Number > &residual)
 
const DofValues & dofValues () const
 
const DofValues & dofValuesOld () const
 
const DofValues & dofValuesOlder () const
 
const DofValues & dofValuesPreviousNL () const
 
const OutputType & nodalValue (Moose::SolutionState state) const
 
const MooseArray< OutputType > & nodalValueArray (Moose::SolutionState state) const
 
const FieldVariableValue & vectorTagValue (TagID tag) const
 
const FieldVariableGradient & vectorTagGradient (TagID tag) const
 
const FieldVariableValue & matrixTagValue (TagID tag) const
 
const DofValues & nodalVectorTagValue (TagID tag) const
 
const DofValues & nodalMatrixTagValue (TagID tag) const
 
const DofValues & vectorTagDofValue (TagID tag) const
 
const DofValues & vectorTagDofValue (Moose::SolutionState state) const
 
void setActiveTags (const std::set< TagID > &vtags)
 Set the active vector tags.
 
void prepareAux ()
 Clear aux state.
 
void sizeMatrixTagData ()
 size matrix tag data
 
void setDofValue (const OutputData &value, unsigned int index)
 dof value setters
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual const MooseVariableFV< OutputType > & var () const override
 
void insertSolutionTag (TagID tag_id)
 insert a solution tag into our tag containers
 
void needSolutionState (unsigned int state)
 Request that we have at least state number of older solution states/vectors.
 
void fetchDofValues ()
 Helper methods for assigning dof values from their corresponding solution values.
 
void fetchDofValues ()
 
void fetchDofValues ()
 
void zeroSizeDofValues ()
 
void getArrayDofValues (const libMesh::NumericVector< libMesh::Number > &sol, unsigned int n, MooseArray< RealEigenVector > &dof_values) const
 
void assignNodalValue ()
 
void assignNodalValue ()
 
void assignNodalValue ()
 
template<typename ReturnType , typename Functor >
const ReturnType & stateToTagHelper (Moose::SolutionState state, Functor functor)
 Helper method that converts a SolutionState argument into a corresponding tag ID, potentially requesting necessary additional solution states and assigning tag id data members, and then calls the provided functor with the tag ID.
 
void resizeVectorTagData (TagID tag)
 resize the vector tag need flags and data containers to accomodate this tag index
 

Protected Attributes

SystemBase & _sys
 The MOOSE system which ultimately holds the vectors and matrices relevant to this variable data.
 
const SubProblem & _subproblem
 The subproblem which we can query for information related to tagged vectors and matrices.
 
const THREAD_ID _tid
 The thread ID that this object is on.
 
const libMesh::DofMap & _dof_map
 The degree of freedom map from libMesh.
 
unsigned int _count
 Number of components of the associated variable.
 
bool _has_dof_values
 Whether we currently have degree of freedom values stored in our local containers (corresponding to the current element)
 
unsigned int _max_state
 The maximum number of older solution states our variable needs.
 
TagID _solution_tag
 The vector tag ID corresponding to the solution vector.
 
TagID _old_solution_tag
 The vector tag ID corresponding to the old solution vector.
 
TagID _older_solution_tag
 The vector tag ID corresponding to the older solution vector.
 
TagID _previous_nl_solution_tag
 The vector tag ID corresponding to the previous nonlinear iteration's solution vector.
 
std::vector< dof_id_type > _dof_indices
 The dof indices for the current element.
 
std::vector< bool > _need_vector_tag_dof_u
 
std::vector< bool > _need_matrix_tag_dof_u
 
std::vector< DofValues > _vector_tags_dof_u
 
std::vector< DofValues > _matrix_tags_dof_u
 
std::vector< FieldVariableValue > _vector_tag_u
 
std::vector< bool > _need_vector_tag_u
 
std::vector< FieldVariableGradient > _vector_tag_grad
 
std::vector< bool > _need_vector_tag_grad
 
std::vector< FieldVariableValue > _matrix_tag_u
 
std::vector< bool > _need_matrix_tag_u
 
OutputType _nodal_value
 Nodal values.
 
OutputType _nodal_value_old
 
OutputType _nodal_value_older
 
OutputType _nodal_value_previous_nl
 
MooseArray< OutputType > _nodal_value_array
 Nodal values as MooseArrays for use with AuxKernels.
 
MooseArray< OutputType > _nodal_value_old_array
 
MooseArray< OutputType > _nodal_value_older_array
 
bool _need_u_dot
 u dot flags
 
bool _need_u_dotdot
 
bool _need_u_dot_old
 
bool _need_u_dotdot_old
 
bool _need_du_dot_du
 
bool _need_du_dotdot_du
 
bool _need_grad_dot
 gradient dot flags
 
bool _need_grad_dotdot
 
bool _need_dof_values_dot
 local solution flags
 
bool _need_dof_values_dotdot
 
bool _need_dof_values_dot_old
 
bool _need_dof_values_dotdot_old
 
bool _need_dof_du_dot_du
 
bool _need_dof_du_dotdot_du
 
DofValues _dof_values_dot
 time derivative of the solution values
 
DofValues _dof_values_dotdot
 second time derivative of the solution values
 
DofValues _dof_values_dot_old
 the previous time step's solution value time derivative
 
DofValues _dof_values_dotdot_old
 the previous time step's solution value second time derivative
 
MooseArray< libMesh::Number > _dof_du_dot_du
 derivatives of the solution value time derivative with respect to the degrees of freedom
 
MooseArray< libMesh::Number > _dof_du_dotdot_du
 derivatives of the solution value second time derivative with respect to the degrees of freedom
 
OutputType _nodal_value_dot
 nodal values of u_dot
 
OutputType _nodal_value_dotdot
 nodal values of u_dotdot
 
OutputType _nodal_value_dot_old
 nodal values of u_dot_old
 
OutputType _nodal_value_dotdot_old
 nodal values of u_dotdot_old
 
std::set< TagID > _required_vector_tags
 The set of vector tags (residual + solution) we need to evaluate.
 
std::set< TagID > _solution_tags
 The set of solution tags we need to evaluate.
 
FEProblemBase & _mci_feproblem
 Reference to FEProblemBase instance.
 

Private Member Functions

void initializeSolnVars ()
 
void fetchADDofValues ()
 Helper methods for assigning nodal values from their corresponding solution values (dof values as they're referred to here in this class).
 
bool safeToComputeADUDot () const
 Helper method that tells us whether it's safe to compute _ad_u_dot.
 
const std::vector< dof_id_type > & initDofIndices ()
 

Private Attributes

const MooseVariableFV< OutputType > & _var
 A const reference to the owning MooseVariableFV object.
 
const libMesh::FEType & _fe_type
 
const unsigned int _var_num
 
const Assembly & _assembly
 
Moose::ElementType _element_type
 The element type this object is storing data for. This is either Element, Neighbor, or Lower.
 
libMesh::FEContinuity _continuity
 Continuity type of the variable.
 
FieldVariableValue _increment
 Increment in the variable used in dampers.
 
const ADReal _ad_zero
 A zero AD variable.
 
bool _need_second
 SolutionState second_u flags.
 
bool _need_second_old
 
bool _need_second_older
 
bool _need_second_previous_nl
 
bool _need_curl
 curl flags
 
bool _need_curl_old
 
bool _need_curl_older
 
bool _need_ad
 AD flags.
 
bool _need_ad_u
 
bool _need_ad_u_dot
 
bool _need_ad_u_dotdot
 
bool _need_ad_grad_u
 
bool _need_ad_grad_u_dot
 
bool _need_ad_second_u
 
FieldVariableGradient _grad_u_dot
 grad_u dots
 
FieldVariableGradient _grad_u_dotdot
 
FieldVariableSecond _second_u
 second_u
 
FieldVariableSecond _second_u_old
 
FieldVariableSecond _second_u_older
 
FieldVariableSecond _second_u_previous_nl
 
FieldVariableCurl _curl_u
 curl_u
 
FieldVariableCurl _curl_u_old
 
FieldVariableCurl _curl_u_older
 
ADTemplateVariableValue< OutputShape > _ad_u
 AD u.
 
ADTemplateVariableGradient< OutputShape > _ad_grad_u
 
ADTemplateVariableSecond< OutputShape > _ad_second_u
 
MooseArray< ADReal > _ad_dof_values
 
MooseArray< ADReal > _ad_dofs_dot
 
MooseArray< ADReal > _ad_dofs_dotdot
 
ADTemplateVariableValue< OutputShape > _ad_u_dot
 
ADTemplateVariableValue< OutputShape > _ad_u_dotdot
 
ADTemplateVariableGradient< OutputShape > _ad_grad_u_dot
 
FieldVariableValue _u_dot
 u_dot (time derivative)
 
FieldVariableValue _u_dotdot
 u_dotdot (second time derivative)
 
FieldVariableValue _u_dot_old
 u_dot_old (time derivative)
 
FieldVariableValue _u_dotdot_old
 u_dotdot_old (second time derivative)
 
VariableValue _du_dot_du
 derivative of u_dot wrt u
 
VariableValue _du_dotdot_du
 derivative of u_dotdot wrt u
 
const TimeIntegrator *const _time_integrator
 Pointer to time integrator.
 
const Elem *const & _elem
 The current elem.
 
const Elem * _prev_elem = nullptr
 used to keep track of when dof indices are out of date
 
bool _has_dirichlet_bc
 if this variable has a dirichlet bc defined on a particular face
 
const bool _displaced
 Whether this variable is being calculated on a displaced system.
 
const libMesh::QBase * _qrule
 The quadrature rule.
 
ADReal _ad_real_dummy = 0
 A dummy ADReal variable.
 
TheWarehouse::QueryCache _fv_elemental_kernel_query_cache
 Cached warehouse query for FVElementalKernels.
 
TheWarehouse::QueryCache _fv_flux_kernel_query_cache
 Cached warehouse query for FVFluxKernels.
 

Friends

void Moose::initDofIndices (MooseVariableDataFV< OutputType > &, const Elem &)
 

Detailed Description

template<typename OutputType>
class MooseVariableDataFV< OutputType >

Definition at line 69 of file MooseVariableDataFV.h.

Member Typedef Documentation

◆ ADDofValue

template<typename OutputType >
typedef Moose::ADType<DofValue>::type MooseVariableDataBase< OutputType >::ADDofValue
inherited

Definition at line 47 of file MooseVariableDataBase.h.

◆ ADDofValues

template<typename OutputType >
typedef MooseArray<ADDofValue> MooseVariableDataBase< OutputType >::ADDofValues
inherited

Definition at line 49 of file MooseVariableDataBase.h.

◆ DofValue

template<typename OutputType >
typedef MooseArray<OutputData> MooseVariableDataFV< OutputType >::DofValue

Definition at line 94 of file MooseVariableDataFV.h.

◆ DofValues

template<typename OutputType >
typedef MooseArray<DofValue> MooseVariableDataBase< OutputType >::DofValues
inherited

Definition at line 48 of file MooseVariableDataBase.h.

◆ FieldVariableCurl

template<typename OutputType >
typedef MooseArray<OutputType> MooseVariableDataFV< OutputType >::FieldVariableCurl

Definition at line 81 of file MooseVariableDataFV.h.

◆ FieldVariableDivergence

template<typename OutputType >
typedef MooseArray<OutputDivergence> MooseVariableDataFV< OutputType >::FieldVariableDivergence

Definition at line 82 of file MooseVariableDataFV.h.

◆ FieldVariableGradient

template<typename OutputType >
typedef MooseArray<OutputGradient> MooseVariableDataFV< OutputType >::FieldVariableGradient

Definition at line 79 of file MooseVariableDataFV.h.

◆ FieldVariableSecond

template<typename OutputType >
typedef MooseArray<OutputSecond> MooseVariableDataFV< OutputType >::FieldVariableSecond

Definition at line 80 of file MooseVariableDataFV.h.

◆ FieldVariableValue

template<typename OutputType >
typedef MooseArray<OutputType> MooseVariableDataFV< OutputType >::FieldVariableValue

Definition at line 78 of file MooseVariableDataFV.h.

◆ OutputData

template<typename OutputType >
typedef Moose::DOFType<OutputType>::type MooseVariableDataFV< OutputType >::OutputData

Definition at line 93 of file MooseVariableDataFV.h.

◆ OutputDivergence

template<typename OutputType >
typedef libMesh::TensorTools::DecrementRank<OutputType>::type MooseVariableDataFV< OutputType >::OutputDivergence

Definition at line 75 of file MooseVariableDataFV.h.

◆ OutputGradient

template<typename OutputType >
typedef libMesh::TensorTools::IncrementRank<OutputType>::type MooseVariableDataFV< OutputType >::OutputGradient

Definition at line 73 of file MooseVariableDataFV.h.

◆ OutputSecond

template<typename OutputType >
typedef libMesh::TensorTools::IncrementRank<OutputGradient>::type MooseVariableDataFV< OutputType >::OutputSecond

Definition at line 74 of file MooseVariableDataFV.h.

◆ OutputShape

template<typename OutputType >
typedef Moose::ShapeType<OutputType>::type MooseVariableDataFV< OutputType >::OutputShape

Definition at line 85 of file MooseVariableDataFV.h.

◆ OutputShapeDivergence

template<typename OutputType >
typedef libMesh::TensorTools::DecrementRank<OutputShape>::type MooseVariableDataFV< OutputType >::OutputShapeDivergence

Definition at line 90 of file MooseVariableDataFV.h.

◆ OutputShapeGradient

template<typename OutputType >
typedef libMesh::TensorTools::IncrementRank<OutputShape>::type MooseVariableDataFV< OutputType >::OutputShapeGradient

Definition at line 88 of file MooseVariableDataFV.h.

◆ OutputShapeSecond

template<typename OutputType >
typedef libMesh::TensorTools::IncrementRank<OutputShapeGradient>::type MooseVariableDataFV< OutputType >::OutputShapeSecond

Definition at line 89 of file MooseVariableDataFV.h.

Constructor & Destructor Documentation

◆ MooseVariableDataFV()

template<typename OutputType >
MooseVariableDataFV< OutputType >::MooseVariableDataFV ( const MooseVariableFV< OutputType > &  var,
SystemBase &  sys,
THREAD_ID  tid,
Moose::ElementType  element_type,
const Elem *const &  elem 
)

Definition at line 31 of file MooseVariableDataFV.C.

38 MeshChangedInterface(var.parameters()),
39 _var(var),
40 _fe_type(_var.feType()),
41 _var_num(_var.number()),
43 _element_type(element_type),
44 _ad_zero(0),
45 _need_second(false),
46 _need_second_old(false),
47 _need_second_older(false),
49 _need_curl(false),
50 _need_curl_old(false),
51 _need_curl_older(false),
52 // for FV variables, they use each other's ad_u values to compute ghost cell
53 // values - we don't have any way to propagate these inter-variable-data
54 // dependencies. So if something needs an ad_u value, that need isn't
55 // propagated through to both the element and the neighbor
56 // data structures. So instead just set _need_ad+_need_ad_u values to true always.
57 _need_ad(true),
58 _need_ad_u(true),
59 _need_ad_u_dot(false),
60 _need_ad_u_dotdot(false),
61 _need_ad_grad_u(false),
63 _need_ad_second_u(false),
64 _time_integrator(_sys.queryTimeIntegrator(_var_num)),
65 _elem(elem),
66 _displaced(dynamic_cast<const DisplacedSystem *>(&_sys) ? true : false),
67 _qrule(nullptr)
68{
70 _subproblem.getMooseApp().theWarehouse().query().template condition<AttribSystem>(
71 "FVElementalKernel");
73 _subproblem.getMooseApp().theWarehouse().query().template condition<AttribSystem>(
74 "FVFluxKernel");
75}
Interface for notifications that the mesh has changed.
TheWarehouse & theWarehouse()
Definition MooseApp.h:143
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition MooseBase.h:87
SystemBase & _sys
The MOOSE system which ultimately holds the vectors and matrices relevant to this variable data.
const THREAD_ID _tid
The thread ID that this object is on.
const SubProblem & _subproblem
The subproblem which we can query for information related to tagged vectors and matrices.
const ADReal _ad_zero
A zero AD variable.
const Assembly & _assembly
const Elem *const & _elem
The current elem.
Moose::ElementType _element_type
The element type this object is storing data for. This is either Element, Neighbor,...
virtual const MooseVariableFV< OutputType > & var() const override
bool _need_second
SolutionState second_u flags.
const libMesh::FEType & _fe_type
const bool _displaced
Whether this variable is being calculated on a displaced system.
const MooseVariableFV< OutputType > & _var
A const reference to the owning MooseVariableFV object.
const libMesh::QBase * _qrule
The quadrature rule.
const TimeIntegrator *const _time_integrator
Pointer to time integrator.
TheWarehouse::QueryCache _fv_flux_kernel_query_cache
Cached warehouse query for FVFluxKernels.
TheWarehouse::QueryCache _fv_elemental_kernel_query_cache
Cached warehouse query for FVElementalKernels.
const unsigned int _var_num
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
unsigned int number() const
Gets the number of this system.
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse.
@ VAR_SOLVER
Definition MooseTypes.h:770

Member Function Documentation

◆ add() [1/2]

template<typename OutputType >
void MooseVariableDataBase< OutputType >::add ( libMesh::NumericVector< libMesh::Number > &  residual)
inherited

Add the current local DOF values to the input vector.

Definition at line 468 of file MooseVariableDataBase.C.

469{
470 if (_has_dof_values)
471 {
472 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
473 residual.add_vector(&dof_values[0], _dof_indices);
474 }
475}
std::vector< dof_id_type > _dof_indices
The dof indices for the current element.
std::vector< DofValues > _vector_tags_dof_u
TagID _solution_tag
The vector tag ID corresponding to the solution vector.
bool _has_dof_values
Whether we currently have degree of freedom values stored in our local containers (corresponding to t...
virtual void add_vector(const T *v, const std::vector< numeric_index_type > &dof_indices)

◆ add() [2/2]

void MooseVariableDataBase< RealEigenVector >::add ( NumericVector< Number > &  residual)
inherited

Definition at line 479 of file MooseVariableDataBase.C.

480{
481 if (_has_dof_values)
482 {
483 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
484 mooseAssert(_dof_indices.size() % _count == 0,
485 "Dof indices should be cleanly divisible by the variable count");
486 const auto n_shapes = _dof_indices.size() / _count;
487 for (const auto indx : index_range(_dof_indices))
488 {
489 const auto i = indx % n_shapes;
490 const auto j = indx / n_shapes;
491 residual.add(_dof_indices[indx], dof_values[i](j));
492 }
493 }
494}
unsigned int _count
Number of components of the associated variable.
virtual void add(const numeric_index_type i, const T value)=0
auto index_range(const T &sizable)

◆ adDofValues()

template<typename OutputType >
const MooseArray< ADReal > & MooseVariableDataFV< OutputType >::adDofValues ( ) const

Return the AD dof values.

Definition at line 786 of file MooseVariableDataFV.C.

787{
788 _var.requireQpComputations();
789 _need_ad = true;
790 return _ad_dof_values;
791}
MooseArray< ADReal > _ad_dof_values

◆ adDofValuesDot()

template<typename OutputType >
const MooseArray< ADReal > & MooseVariableDataFV< OutputType >::adDofValuesDot ( ) const

Return the AD dof time derivatives.

Definition at line 795 of file MooseVariableDataFV.C.

796{
797 _var.requireQpComputations();
798 _need_ad = _need_ad_u_dot = true;
799 return _ad_dofs_dot;
800}
MooseArray< ADReal > _ad_dofs_dot

◆ adGradSln()

template<typename OutputType >
const ADTemplateVariableGradient< OutputType > & MooseVariableDataFV< OutputType >::adGradSln ( ) const
Returns
The automatic differentiation gradient indexable at quadrature points

Definition at line 813 of file MooseVariableDataFV.C.

814{
815 _var.requireQpComputations();
816 _need_ad = _need_ad_grad_u = true;
817 return _ad_grad_u;
818}
ADTemplateVariableGradient< OutputShape > _ad_grad_u

◆ adGradSlnDot()

template<typename OutputType >
const ADTemplateVariableGradient< OutputType > & MooseVariableDataFV< OutputType >::adGradSlnDot ( ) const
inline

Definition at line 185 of file MooseVariableDataFV.h.

186 {
187 mooseError("Gradient of time derivative not yet implemented for FV");
188 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311

◆ adSecondSln()

template<typename OutputType >
const ADTemplateVariableSecond< OutputType > & MooseVariableDataFV< OutputType >::adSecondSln ( ) const
Returns
The automatic differentiation matrix of second derivatives indexable at quadrature points

Definition at line 822 of file MooseVariableDataFV.C.

823{
824 _var.requireQpComputations();
826 return _ad_second_u;
827}
ADTemplateVariableSecond< OutputShape > _ad_second_u

◆ adSln()

template<typename OutputType >
const ADTemplateVariableValue< OutputType > & MooseVariableDataFV< OutputType >::adSln ( ) const
Returns
The automatic differentiation solution indexable at quadrature points

Definition at line 804 of file MooseVariableDataFV.C.

805{
806 _var.requireQpComputations();
807 _need_ad = _need_ad_u = true;
808 return _ad_u;
809}
ADTemplateVariableValue< OutputShape > _ad_u
AD u.

◆ adUDot()

template<typename OutputType >
const ADTemplateVariableValue< OutputType > & MooseVariableDataFV< OutputType >::adUDot ( ) const
inline

Definition at line 831 of file MooseVariableDataFV.C.

832{
833 _var.requireQpComputations();
834
835 _need_ad = _need_ad_u_dot = true;
836
837 if (!safeToComputeADUDot())
838 // We will just copy the value of _u_dot into _ad_u_dot
839 _need_u_dot = true;
840
841 return _ad_u_dot;
842}
bool safeToComputeADUDot() const
Helper method that tells us whether it's safe to compute _ad_u_dot.
ADTemplateVariableValue< OutputShape > _ad_u_dot

◆ adUDotDot()

template<typename OutputType >
const ADTemplateVariableValue< OutputType > & MooseVariableDataFV< OutputType >::adUDotDot ( ) const

Definition at line 486 of file MooseVariableDataFV.h.

487{
488 // Generally speaking, we need u dot information when computing u dot dot
489 adUDot();
490
492
493 if (!safeToComputeADUDot())
494 // We will just copy the value of _u_dotdot into _ad_u_dotdot
495 _need_u_dotdot = true;
496
497 return _ad_u_dotdot;
498}
ADTemplateVariableValue< OutputShape > _ad_u_dotdot
const ADTemplateVariableValue< OutputType > & adUDot() const

◆ assignNodalValue() [1/3]

template<typename OutputType >
void MooseVariableDataBase< OutputType >::assignNodalValue ( )
protectedinherited

Definition at line 763 of file MooseVariableDataBase.C.

764{
765 bool is_transient = _subproblem.isTransient();
767
768 auto & dof_values = _vector_tags_dof_u[_solution_tag];
769 _nodal_value = dof_values[0];
771
772 if (is_transient)
773 {
775 {
778 }
780 {
783 }
792 }
795}
OutputType _nodal_value_dotdot
nodal values of u_dotdot
OutputType _nodal_value_dot_old
nodal values of u_dot_old
bool _need_dof_values_dot
local solution flags
TagID _previous_nl_solution_tag
The vector tag ID corresponding to the previous nonlinear iteration's solution vector.
DofValues _dof_values_dotdot
second time derivative of the solution values
TagID _old_solution_tag
The vector tag ID corresponding to the old solution vector.
unsigned int oldestSolutionStateRequested() const
The oldest solution state that is requested for this variable (0 = current, 1 = old,...
OutputType _nodal_value_dotdot_old
nodal values of u_dotdot_old
TagID _older_solution_tag
The vector tag ID corresponding to the older solution vector.
DofValues _dof_values_dot_old
the previous time step's solution value time derivative
DofValues _dof_values_dot
time derivative of the solution values
MooseArray< OutputType > _nodal_value_old_array
DofValues _dof_values_dotdot_old
the previous time step's solution value second time derivative
MooseArray< OutputType > _nodal_value_array
Nodal values as MooseArrays for use with AuxKernels.
OutputType _nodal_value
Nodal values.
OutputType _nodal_value_dot
nodal values of u_dot
MooseArray< OutputType > _nodal_value_older_array
virtual bool isTransient() const =0
const TagID INVALID_TAG_ID
Definition MooseTypes.C:23
libmesh_assert(ctx)

◆ assignNodalValue() [2/3]

void MooseVariableDataBase< RealVectorValue >::assignNodalValue ( )
protectedinherited

◆ assignNodalValue() [3/3]

void MooseVariableDataBase< RealVectorValue >::assignNodalValue ( )
protectedinherited

Definition at line 799 of file MooseVariableDataBase.C.

800{
801 bool is_transient = _subproblem.isTransient();
802
803 auto n = _dof_indices.size();
805
806 auto & dof_values = _vector_tags_dof_u[_solution_tag];
807 for (decltype(n) i = 0; i < n; ++i)
808 _nodal_value(i) = dof_values[i];
810
811 if (is_transient)
812 {
814 {
815 auto & dof_values_old = _vector_tags_dof_u[_old_solution_tag];
816 for (decltype(n) i = 0; i < n; ++i)
817 _nodal_value_old(i) = dof_values_old[i];
819 }
821 {
822 auto & dof_values_older = _vector_tags_dof_u[_older_solution_tag];
823 for (decltype(n) i = 0; i < n; ++i)
824 _nodal_value_older(i) = dof_values_older[i];
826 }
828 for (decltype(n) i = 0; i < n; ++i)
831 for (decltype(n) i = 0; i < n; ++i)
834 for (decltype(n) i = 0; i < n; ++i)
837 for (decltype(n) i = 0; i < n; ++i)
839 }
841 {
842 auto & dof_values_previous_nl = _vector_tags_dof_u[_previous_nl_solution_tag];
843 for (decltype(n) i = 0; i < n; ++i)
844 _nodal_value_previous_nl(i) = dof_values_previous_nl[i];
845 }
846}

◆ clearDofIndices()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::clearDofIndices ( )
inline

Definition at line 240 of file MooseVariableDataFV.h.

241 {
242 _dof_indices.clear();
243 _prev_elem = nullptr;
244 }
const Elem * _prev_elem
used to keep track of when dof indices are out of date

◆ computeAD()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::computeAD ( const unsigned int  num_dofs,
const unsigned int  nqp 
)

compute AD things

Definition at line 511 of file MooseVariableDataFV.C.

512{
513 // This query and if check prevent running this code when we have FV
514 // variables, but no kernels. When this happens, maxVarNDofsPerElem is
515 // not computed (because no kernels) and is zero giving nonsense offsets for
516 // AD stuff. So we just skip all this when that is the case. Maybe there
517 // is a better way to do this - like just checking if getMaxVarNDofsPerElem
518 // returns zero?
519 std::vector<FVKernel *> ks;
521 if (ks.size() == 0)
522 {
524 if (ks.size() == 0)
525 return;
526 }
527
528 _ad_dof_values.resize(num_dofs);
529 if (_need_ad_u)
530 _ad_u.resize(nqp);
531
532 if (_need_ad_grad_u)
533 _ad_grad_u.resize(nqp);
534
536 _ad_second_u.resize(nqp);
537
538 if (_need_ad_u_dot)
539 {
540 _ad_dofs_dot.resize(num_dofs);
541 _ad_u_dot.resize(nqp);
542 }
543
545 {
546 _ad_dofs_dotdot.resize(num_dofs);
547 _ad_u_dotdot.resize(nqp);
548 }
549
551 assignForAllQps(0, _ad_second_u, nqp);
552
553 if (_need_ad_u_dot)
554 assignForAllQps(_ad_zero, _ad_u_dot, nqp);
555
557 assignForAllQps(_ad_zero, _ad_u_dotdot, nqp);
558
559 const bool do_derivatives =
560 ADReal::do_derivatives && _sys.number() == _subproblem.currentNlSysNum();
561
562 for (unsigned int i = 0; i < num_dofs; i++)
563 {
565
566 // NOTE! You have to do this AFTER setting the value!
567 if (do_derivatives)
568 Moose::derivInsert(_ad_dof_values[i].derivatives(), _dof_indices[i], 1.);
569
571 {
574 _dof_indices[i],
577 }
578 }
579
580 if (_need_ad_u)
581 assignForAllQps(_ad_dof_values[0], _ad_u, nqp);
582
583 if (_need_ad_grad_u)
584 assignForAllQps(
587 nqp);
588
589 if (_need_ad_u_dot)
590 {
592 {
593 assignForAllQps(_ad_dofs_dot[0], _ad_u_dot, nqp);
595 assignForAllQps(_ad_dofs_dotdot[0], _ad_u_dotdot, nqp);
596 }
597 else
598 {
599 assignForAllQps(_u_dot[0], _ad_u_dot, nqp);
601 assignForAllQps(_u_dotdot[0], _ad_u_dotdot, nqp);
602 }
603 }
604}
void resize(unsigned int size)
Change the number of elements the array can store.
Definition MooseArray.h:216
FieldVariableValue _u_dotdot
u_dotdot (second time derivative)
MooseArray< ADReal > _ad_dofs_dotdot
ADReal _ad_real_dummy
A dummy ADReal variable.
FieldVariableValue _u_dot
u_dot (time derivative)
const ADTemplateVariableGradient< OutputType > & adGradSln() const
This class provides variable solution values for other classes/objects to bind to when looping over f...
virtual unsigned int currentNlSysNum() const =0
virtual const NumericVector< Number > *const & currentSolution() const =0
The solution vector that is currently being operated on.
std::vector< T * > & queryInto(std::vector< T * > &results, Args &&... args)
queryInto executes the query and stores the results in the given vector.
virtual void computeADTimeDerivatives(ADReal &ad_u_dot, const dof_id_type &dof, ADReal &ad_u_dot_dot) const =0
method for computing local automatic differentiation time derivatives
const Real & dt() const
Returns the time step size.
StateArg currentState()
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N > > &derivs, libMesh::dof_id_type index, Real value)
Definition ADReal.h:21

◆ computeIncrementAtQps()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::computeIncrementAtQps ( const libMesh::NumericVector< libMesh::Number > &  increment_vec)

Compute and store incremental change in solution at QPs based on increment_vec.

◆ computeValues()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::computeValues ( )

compute the variable values

Definition at line 420 of file MooseVariableDataFV.C.

421{
424
425 unsigned int num_dofs = _dof_indices.size();
426
427 if (num_dofs > 0)
429 else
430 // We don't have any dofs. There's nothing to do
431 return;
432
433 mooseAssert(num_dofs == 1 && _vector_tags_dof_u[_solution_tag].size() == 1,
434 "There should only be one dof per elem for FV variables");
435
436 bool is_transient = _subproblem.isTransient();
437 const auto nqp = _qrule->n_points();
438 auto && active_coupleable_matrix_tags =
440
441 bool second_required =
443 bool curl_required = _need_curl || _need_curl_old;
444
445 for (const auto qp : make_range(nqp))
446 {
447 if (is_transient)
448 {
449 if (_need_u_dot)
450 _u_dot[qp] = _dof_values_dot[0];
451
452 if (_need_u_dotdot)
454
455 if (_need_u_dot_old)
457
460
461 if (_need_du_dot_du)
462 _du_dot_du[qp] = _dof_du_dot_du[0];
463
466 }
467
468 if (second_required)
469 {
470 if (_need_second)
471 _second_u[qp] = 0.;
472
474 _second_u_previous_nl[qp] = 0.;
475
476 if (is_transient)
477 {
479 _second_u_old[qp] = 0.;
480
482 _second_u_older[qp] = 0.;
483 }
484 }
485
486 if (curl_required)
487 {
488 if (_need_curl)
489 _curl_u[qp] = 0.;
490
491 if (is_transient && _need_curl_old)
492 _curl_u_old[qp] = 0.;
493 }
494
495 for (auto tag : _required_vector_tags)
497 _vector_tag_u[tag][qp] = _vector_tags_dof_u[tag][0];
498
499 for (auto tag : active_coupleable_matrix_tags)
501 _matrix_tag_u[tag][qp] = _matrix_tags_dof_u[tag][0];
502 }
503
504 // Automatic differentiation
505 if (_need_ad)
506 computeAD(num_dofs, nqp);
507}
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
std::vector< FieldVariableValue > _vector_tag_u
std::vector< FieldVariableValue > _matrix_tag_u
std::vector< bool > _need_matrix_tag_u
void fetchDofValues()
Helper methods for assigning dof values from their corresponding solution values.
std::vector< DofValues > _matrix_tags_dof_u
std::vector< bool > _need_vector_tag_u
MooseArray< libMesh::Number > _dof_du_dotdot_du
derivatives of the solution value second time derivative with respect to the degrees of freedom
std::set< TagID > _required_vector_tags
The set of vector tags (residual + solution) we need to evaluate.
MooseArray< libMesh::Number > _dof_du_dot_du
derivatives of the solution value time derivative with respect to the degrees of freedom
VariableValue _du_dotdot_du
derivative of u_dotdot wrt u
FieldVariableSecond _second_u_previous_nl
VariableValue _du_dot_du
derivative of u_dot wrt u
FieldVariableValue _u_dot_old
u_dot_old (time derivative)
FieldVariableValue _u_dotdot_old
u_dotdot_old (second time derivative)
FieldVariableCurl _curl_u
curl_u
void computeAD(const unsigned int num_dofs, const unsigned int nqp)
compute AD things
FieldVariableSecond _second_u_old
FieldVariableSecond _second_u
second_u
FieldVariableCurl _curl_u_old
const std::vector< dof_id_type > & initDofIndices()
FieldVariableSecond _second_u_older
const std::set< TagID > & getActiveFEVariableCoupleableMatrixTags(const THREAD_ID tid) const
Definition SubProblem.C:379
SubProblem & subproblem()
Definition SystemBase.h:102
unsigned int n_points() const
IntRange< T > make_range(T beg, T end)

◆ computeValuesFace()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::computeValuesFace ( const FaceInfo &  fi)

compute the variable values

Definition at line 381 of file MooseVariableDataFV.C.

382{
383 _has_dirichlet_bc = false;
385
386 // TODO: compute reconstructed values somehow. For now, just do the trivial
387 // reconstruction where we take the const cell value from the centroid and
388 // use that value on the face. How will users affect the reconstruction
389 // method used here? After reconstruction, we should cache the computed
390 // soln/gradients per element so we don't have to recompute them again for
391 // other faces that share an element with this face.
392 //
393 // TODO: Also we need to be able to track (AD) derivatives through the
394 // reconstruction process - how will we do that?
395
397
398 // TODO: maybe initialize a separate _grad_u_interface here that is
399 // only used for diffusion terms that need an interface gradient. Also -
400 // it would need cross-diffusion corrections for non-orthogonal meshes
401 // eventually. Or maybe we just leave this alone zero and have users
402 // calculate whatever grad_interface value they want and provide some
403 // helper functions for cross-diffusion correction.
404
405 // TODO: figure out how to store old/older values of reconstructed
406 // solutions/gradient states without having to re-reconstruct them from
407 // older dof/soln values.
408}
const libMesh::DofMap & _dof_map
The degree of freedom map from libMesh.
void computeValues()
compute the variable values
bool _has_dirichlet_bc
if this variable has a dirichlet bc defined on a particular face
void dof_indices(const Elem *const elem, std::vector< dof_id_type > &di) const

◆ curlSln()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableCurl & MooseVariableDataFV< OutputType >::curlSln ( Moose::SolutionState  state) const

Local solution curl getter.

Parameters
stateThe state of the simulation: current, old, older

Definition at line 240 of file MooseVariableDataFV.C.

241{
242 _var.requireQpComputations();
243 switch (state)
244 {
245 case Moose::Current:
246 {
247 _need_curl = true;
248 return _curl_u;
249 }
250
251 case Moose::Old:
252 {
253 _need_curl_old = true;
254 return _curl_u_old;
255 }
256
257 case Moose::Older:
258 {
259 _need_curl_older = true;
260 return _curl_u_older;
261 }
262
263 default:
264 mooseError("We don't currently support curl from the previous non-linear iteration");
265 }
266}
FieldVariableCurl _curl_u_older
@ Current
Definition MooseTypes.h:263

◆ currentElem()

template<typename OutputType >
const Elem *const & MooseVariableDataFV< OutputType >::currentElem ( ) const
inline

The current element.

Definition at line 139 of file MooseVariableDataFV.h.

139{ return _elem; }

◆ dofIndices()

template<typename OutputType >
const std::vector< dof_id_type > & MooseVariableDataFV< OutputType >::dofIndices ( ) const

Definition at line 502 of file MooseVariableDataFV.h.

503{
504 return const_cast<MooseVariableDataFV<OutputType> *>(this)->initDofIndices();
505}

◆ dofValues()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::dofValues ( ) const
inherited

Definition at line 354 of file MooseVariableDataBase.C.

355{
357}
const DofValues & vectorTagDofValue(TagID tag) const

◆ dofValuesDot()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::DofValue & MooseVariableDataFV< OutputType >::dofValuesDot ( ) const

Definition at line 669 of file MooseVariableDataFV.C.

670{
671 if (_sys.solutionUDot())
672 {
674 return _dof_values_dot;
675 }
676 else
678 "MooseVariableDataFV: Time derivative of solution (`u_dot`) is not stored. Please set "
679 "uDotRequested() to true in FEProblemBase before requesting `u_dot`.");
680}
virtual NumericVector< Number > * solutionUDot()
Definition SystemBase.h:289

◆ dofValuesDotDot()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::DofValue & MooseVariableDataFV< OutputType >::dofValuesDotDot ( ) const

Definition at line 684 of file MooseVariableDataFV.C.

685{
686 if (_sys.solutionUDotDot())
687 {
689 return _dof_values_dotdot;
690 }
691 else
693 "MooseVariableDataFV: Second time derivative of solution (`u_dotdot`) is not stored. "
694 "Please set uDotDotRequested() to true in FEProblemBase before requesting "
695 "`u_dotdot`.");
696}
virtual NumericVector< Number > * solutionUDotDot()
Definition SystemBase.h:290

◆ dofValuesDotDotOld()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::DofValue & MooseVariableDataFV< OutputType >::dofValuesDotDotOld ( ) const

Definition at line 715 of file MooseVariableDataFV.C.

716{
718 {
721 }
722 else
724 "MooseVariableDataFV: Old second time derivative of solution (`u_dotdot_old`) is not "
725 "stored. Please set uDotDotOldRequested() to true in FEProblemBase before "
726 "requesting `u_dotdot_old`.");
727}
virtual NumericVector< Number > * solutionUDotDotOld()
Definition SystemBase.h:292

◆ dofValuesDotOld()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::DofValue & MooseVariableDataFV< OutputType >::dofValuesDotOld ( ) const

Definition at line 700 of file MooseVariableDataFV.C.

701{
702 if (_sys.solutionUDotOld())
703 {
705 return _dof_values_dot_old;
706 }
707 else
708 mooseError("MooseVariableDataFV: Old time derivative of solution (`u_dot_old`) is not stored. "
709 "Please set uDotOldRequested() to true in FEProblemBase before requesting "
710 "`u_dot_old`.");
711}
virtual NumericVector< Number > * solutionUDotOld()
Definition SystemBase.h:291

◆ dofValuesDuDotDotDu()

template<typename OutputType >
const MooseArray< Number > & MooseVariableDataFV< OutputType >::dofValuesDuDotDotDu ( ) const

Definition at line 739 of file MooseVariableDataFV.C.

740{
742 return _dof_du_dotdot_du;
743}

◆ dofValuesDuDotDu()

template<typename OutputType >
const MooseArray< Number > & MooseVariableDataFV< OutputType >::dofValuesDuDotDu ( ) const

Definition at line 731 of file MooseVariableDataFV.C.

732{
733 _need_dof_du_dot_du = true;
734 return _dof_du_dot_du;
735}

◆ dofValuesOld()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::dofValuesOld ( ) const
inherited

Definition at line 361 of file MooseVariableDataBase.C.

362{
364}

◆ dofValuesOlder()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::dofValuesOlder ( ) const
inherited

Definition at line 368 of file MooseVariableDataBase.C.

369{
371}

◆ dofValuesPreviousNL()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::dofValuesPreviousNL ( ) const
inherited

Definition at line 375 of file MooseVariableDataBase.C.

376{
378}
@ PreviousNL
Definition MooseTypes.h:266

◆ duDotDotDu()

template<typename OutputType >
const VariableValue & MooseVariableDataFV< OutputType >::duDotDotDu ( ) const
inline

Definition at line 214 of file MooseVariableDataFV.h.

215 {
216 _need_du_dotdot_du = true;
217 return _du_dotdot_du;
218 }

◆ duDotDu()

template<typename OutputType >
const VariableValue & MooseVariableDataFV< OutputType >::duDotDu ( ) const
inline

Definition at line 208 of file MooseVariableDataFV.h.

209 {
210 _need_du_dot_du = true;
211 return _du_dot_du;
212 }

◆ fetchADDofValues()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::fetchADDofValues ( )
private

Helper methods for assigning nodal values from their corresponding solution values (dof values as they're referred to here in this class).

These methods are only truly meaningful for nodal basis families

Definition at line 747 of file MooseVariableDataFV.C.

748{
749 auto n = _dof_indices.size();
752
753 const bool do_derivatives =
754 ADReal::do_derivatives && _sys.number() == _subproblem.currentNlSysNum();
755
756 for (decltype(n) i = 0; i < n; ++i)
757 {
759 if (do_derivatives)
760 Moose::derivInsert(_ad_dof_values[i].derivatives(), _dof_indices[i], 1.);
761 }
762}

◆ fetchDofValues() [1/3]

template<typename OutputType >
void MooseVariableDataBase< OutputType >::fetchDofValues ( )
protectedinherited

Helper methods for assigning dof values from their corresponding solution values.

Definition at line 561 of file MooseVariableDataBase.C.

562{
563 bool is_transient = _subproblem.isTransient();
564
565 auto n = _dof_indices.size();
567
568 if (is_transient)
569 {
571 {
575 }
577 {
581 }
583 {
587 }
589 {
593 }
595 {
597 for (decltype(n) i = 0; i < n; ++i)
598 _dof_du_dot_du[i] = _sys.duDotDu(_var.number());
599 }
601 {
603 for (decltype(n) i = 0; i < n; ++i)
605 }
606 }
607
608 for (auto tag : _required_vector_tags)
610 if ((_subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_RESIDUAL &&
611 _subproblem.safeAccessTaggedVectors()) ||
612 _subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_SOLUTION)
613 {
614 // tag is defined on problem but may not be used by a system
615 // the grain tracker requires being able to read from solution vectors that we are also in
616 // the process of writing :-/
617 // Note: the extra vector tags are also still not closed when a TagVectorAux uses them
618 if (_sys.hasVector(tag) /* && _sys.getVector(tag).closed()*/)
619 {
620 auto & vec = _sys.getVector(tag);
621 _vector_tags_dof_u[tag].resize(n);
622 vec.get(_dof_indices, &_vector_tags_dof_u[tag][0]);
623 }
624 }
625
627 {
628 auto & active_coupleable_matrix_tags =
630
631 for (auto tag : active_coupleable_matrix_tags)
632 {
634 if (_sys.hasMatrix(tag) && _sys.matrixTagActive(tag))
635 {
636 mooseAssert(_sys.getMatrix(tag).closed(),
637 "Matrix with tag '" + std::to_string(tag) + "' should be closed");
638 auto & mat = _sys.getMatrix(tag);
639 _matrix_tags_dof_u[tag].resize(n);
640 for (unsigned i = 0; i < n; i++)
641 _matrix_tags_dof_u[tag][i] = mat(_dof_indices[i], _dof_indices[i]);
642 }
643 }
644 }
645}
const MooseVariableField< OutputType > & _var
A const reference to the owning MooseVariableField object.
std::vector< bool > _need_matrix_tag_dof_u
std::vector< bool > _need_vector_tag_dof_u
bool _need_grad_dot
gradient dot flags
std::vector< bool > _need_vector_tag_grad
virtual bool safeAccessTaggedMatrices() const
Is it safe to access the tagged matrices.
Definition SubProblem.h:739
virtual libMesh::SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition SystemBase.C:921
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition SystemBase.C:930
virtual bool matrixTagActive(TagID tag) const
If or not a matrix tag is active.
virtual const Number & duDotDu(unsigned int var_num=0) const
virtual bool hasMatrix(TagID tag) const
Check if the tagged matrix exists in the system.
Definition SystemBase.h:388
virtual Number & duDotDotDu()
Definition SystemBase.h:285
virtual void get(const std::vector< numeric_index_type > &index, T *values) const
virtual bool closed() const=0
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
@ VECTOR_TAG_SOLUTION
@ VECTOR_TAG_RESIDUAL

◆ fetchDofValues() [2/3]

void MooseVariableDataBase< RealEigenVector >::fetchDofValues ( )
protectedinherited

◆ fetchDofValues() [3/3]

void MooseVariableDataBase< RealEigenVector >::fetchDofValues ( )
protectedinherited

Definition at line 664 of file MooseVariableDataBase.C.

665{
666 bool is_transient = _subproblem.isTransient();
667
668 auto n = _dof_indices.size() / _count;
670
671 if (is_transient)
672 {
674 {
677 }
679 {
682 }
684 {
687 }
689 {
692 }
693 }
694
695 for (auto tag : _required_vector_tags)
696 if ((_subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_RESIDUAL &&
697 _subproblem.safeAccessTaggedVectors()) ||
698 _subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_SOLUTION)
699 // tag is defined on problem but may not be used by a system
700 if (_sys.hasVector(tag))
701 {
702 mooseAssert(_sys.getVector(tag).closed(),
703 "Vector with tag '" + std::to_string(tag) + "' should be closed");
705 }
706
708 {
709 auto & active_coupleable_matrix_tags =
711 for (auto tag : active_coupleable_matrix_tags)
712 {
713 _matrix_tags_dof_u[tag].resize(n);
715 if (_sys.hasMatrix(tag) && _sys.matrixTagActive(tag))
716 {
717 mooseAssert(_sys.getMatrix(tag).closed(),
718 "Matrix with tag '" + std::to_string(tag) + "' should be closed");
719 auto & mat = _sys.getMatrix(tag);
720 for (unsigned i = 0; i < n; i++)
721 for (unsigned j = 0; j < _count; j++)
722 _matrix_tags_dof_u[tag][i](j) = mat(_dof_indices[i] + j, _dof_indices[i] + j);
723 }
724 }
725 }
726
728 {
730 for (decltype(n) i = 0; i < n; ++i)
731 _dof_du_dot_du[i] = _sys.duDotDu(_var.number());
732 }
734 {
736 for (decltype(n) i = 0; i < n; ++i)
738 }
739}
void getArrayDofValues(const libMesh::NumericVector< libMesh::Number > &sol, unsigned int n, MooseArray< RealEigenVector > &dof_values) const
virtual bool closed() const

◆ getArrayDofValues()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::getArrayDofValues ( const libMesh::NumericVector< libMesh::Number > &  sol,
unsigned int  n,
MooseArray< RealEigenVector > &  dof_values 
) const
protectedinherited

Definition at line 649 of file MooseVariableDataBase.C.

652{
653 dof_values.resize(nshapes);
654 for (const auto i : make_range(nshapes))
655 {
656 dof_values[i].resize(_count);
657 for (const auto j : make_range(_count))
658 dof_values[i](j) = sol(_dof_indices[j * nshapes + i]);
659 }
660}

◆ getContinuity()

template<typename OutputType >
libMesh::FEContinuity MooseVariableDataFV< OutputType >::getContinuity ( ) const
inlineoverridevirtual

Return the variable continuity.

Implements MooseVariableDataBase< OutputType >.

Definition at line 104 of file MooseVariableDataFV.h.

104{ return libMesh::DISCONTINUOUS; }

◆ getDofIndices()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::getDofIndices ( const Elem *  elem,
std::vector< dof_id_type > &  dof_indices 
) const

Definition at line 661 of file MooseVariableDataFV.C.

663{
664 _dof_map.dof_indices(elem, dof_indices, _var_num);
665}

◆ getElementalValue()

template<typename OutputType >
MooseVariableDataFV< OutputType >::OutputData MooseVariableDataFV< OutputType >::getElementalValue ( const Elem *  elem,
Moose::SolutionState  state,
unsigned int  idx = 0 
) const

Definition at line 636 of file MooseVariableDataFV.C.

639{
640 std::vector<dof_id_type> dof_indices;
641 _dof_map.dof_indices(elem, dof_indices, _var_num);
642
643 switch (state)
644 {
645 case Moose::Current:
646 return (*_sys.currentSolution())(dof_indices[idx]);
647
648 case Moose::Old:
649 return _sys.solutionOld()(dof_indices[idx]);
650
651 case Moose::Older:
652 return _sys.solutionOlder()(dof_indices[idx]);
653
654 default:
655 mooseError("PreviousNL not currently supported for getElementalValue");
656 }
657}
NumericVector< Number > & solutionOld()
Definition SystemBase.h:213
NumericVector< Number > & solutionOlder()
Definition SystemBase.h:214
unsigned int idx(const ElemType type, const unsigned int nx, const unsigned int i, const unsigned int j)

◆ gradSln()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::FieldVariableGradient & MooseVariableDataBase< OutputType >::gradSln ( Moose::SolutionState  state) const
inherited

Local solution gradient getter.

Parameters
stateThe state of the simulation: current, old, older, previous nl

Definition at line 329 of file MooseVariableDataBase.C.

330{
331 auto functor = [this](TagID tag_id) -> const FieldVariableGradient &
332 { return vectorTagGradient(tag_id); };
333
334 _var.requireQpComputations();
335
336 return const_cast<MooseVariableDataBase<OutputType> *>(this)
337 ->stateToTagHelper<FieldVariableGradient>(state, functor);
338}
unsigned int TagID
Definition MooseTypes.h:238
MooseArray< OutputGradient > FieldVariableGradient
const FieldVariableGradient & vectorTagGradient(TagID tag) const

◆ gradSlnDot()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableGradient & MooseVariableDataFV< OutputType >::gradSlnDot ( ) const

Local time derivative of solution gradient getter.

Definition at line 171 of file MooseVariableDataFV.C.

172{
173 if (_sys.solutionUDot())
174 {
175 _var.requireQpComputations();
176 _need_grad_dot = true;
177 return _grad_u_dot;
178 }
179 else
180 mooseError("MooseVariableFE: Time derivative of solution (`u_dot`) is not stored. Please set "
181 "uDotRequested() to true in FEProblemBase before requesting `u_dot`.");
182}
FieldVariableGradient _grad_u_dot
grad_u dots

◆ gradSlnDotDot()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableGradient & MooseVariableDataFV< OutputType >::gradSlnDotDot ( ) const

Local second time derivative of solution gradient getter.

Definition at line 186 of file MooseVariableDataFV.C.

187{
188 if (_sys.solutionUDotDot())
189 {
190 _var.requireQpComputations();
191 _need_grad_dotdot = true;
192 return _grad_u_dotdot;
193 }
194 else
195 mooseError("MooseVariableFE: Second time derivative of solution (`u_dotdot`) is not stored. "
196 "Please set uDotDotRequested() to true in FEProblemBase before requesting "
197 "`u_dotdot`.");
198}
FieldVariableGradient _grad_u_dotdot

◆ hasDirichletBC()

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::hasDirichletBC ( ) const
inline

checks if a Dirichlet BC exists on this face

Definition at line 279 of file MooseVariableDataFV.h.

279{ return _has_dirichlet_bc; }

◆ hasDoFsOnNodes()

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::hasDoFsOnNodes ( ) const
inlineoverridevirtual

Whether this data is associated with a variable that has DoFs on nodes.

Implements MooseVariableDataBase< OutputType >.

Definition at line 103 of file MooseVariableDataFV.h.

103{ return false; }

◆ increment()

template<typename OutputType >
const FieldVariableValue & MooseVariableDataFV< OutputType >::increment ( ) const
inline

Increment getter.

Returns
The increment

Definition at line 271 of file MooseVariableDataFV.h.

271{ return _increment; }
FieldVariableValue _increment
Increment in the variable used in dampers.

◆ initDofIndices()

template<typename OutputType >
const std::vector< dof_id_type > & MooseVariableDataFV< OutputType >::initDofIndices ( )
private

Definition at line 412 of file MooseVariableDataFV.C.

413{
415 return _dof_indices;
416}
void initDofIndices(T &data, const Elem &elem)

◆ initializeSolnVars()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::initializeSolnVars ( )
private

Definition at line 270 of file MooseVariableDataFV.C.

271{
272 auto && active_coupleable_matrix_tags =
274 mooseAssert(_qrule, "We should have a non-null qrule");
275 const auto nqp = _qrule->n_points();
276
277 for (auto tag : _required_vector_tags)
279 {
280 _vector_tag_u[tag].resize(nqp);
281 assignForAllQps(0, _vector_tag_u[tag], nqp);
282 }
283
284 for (auto tag : active_coupleable_matrix_tags)
286 {
287 _matrix_tag_u[tag].resize(nqp);
288 assignForAllQps(0, _matrix_tag_u[tag], nqp);
289 }
290
291 if (_need_second)
292 {
293 _second_u.resize(nqp);
294 assignForAllQps(0, _second_u, nqp);
295 }
296
297 if (_need_curl)
298 {
299 _curl_u.resize(nqp);
300 assignForAllQps(0, _curl_u, nqp);
301 }
302
304 {
306 assignForAllQps(0, _second_u_previous_nl, nqp);
307 }
308
310 {
311 if (_need_u_dot)
312 {
313 _u_dot.resize(nqp);
314 assignForAllQps(0, _u_dot, nqp);
315 }
316
317 if (_need_u_dotdot)
318 {
319 _u_dotdot.resize(nqp);
320 assignForAllQps(0, _u_dotdot, nqp);
321 }
322
323 if (_need_u_dot_old)
324 {
325 _u_dot_old.resize(nqp);
326 assignForAllQps(0, _u_dot_old, nqp);
327 }
328
330 {
332 assignForAllQps(0, _u_dotdot_old, nqp);
333 }
334
335 if (_need_du_dot_du)
336 {
337 _du_dot_du.resize(nqp);
338 assignForAllQps(0, _du_dot_du, nqp);
339 }
340
342 {
343 _du_dotdot_du.resize(nqp);
344 assignForAllQps(0, _du_dotdot_du, nqp);
345 }
346
347 if (_need_grad_dot)
348 {
349 _grad_u_dot.resize(nqp);
350 assignForAllQps(0, _grad_u_dot, nqp);
351 }
352
354 {
356 assignForAllQps(0, _grad_u_dotdot, nqp);
357 }
358
360 {
362 assignForAllQps(0, _second_u_old, nqp);
363 }
364
365 if (_need_curl_old)
366 {
367 _curl_u_old.resize(nqp);
368 assignForAllQps(0, _curl_u_old, nqp);
369 }
370
372 {
374 assignForAllQps(0, _second_u_older, nqp);
375 }
376 }
377}

◆ insert() [1/2]

template<typename OutputType >
void MooseVariableDataBase< OutputType >::insert ( libMesh::NumericVector< libMesh::Number > &  residual)
inherited

Set the current local DOF values to the input vector.

Definition at line 436 of file MooseVariableDataBase.C.

437{
438 if (_has_dof_values)
439 {
440 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
441 mooseAssert(dof_values.size() == _dof_indices.size(),
442 "Degree of freedom values size and degree of freedom indices sizes must match.");
443 residual.insert(&dof_values[0], _dof_indices);
444 }
445}
virtual void insert(const T *v, const std::vector< numeric_index_type > &dof_indices)

◆ insert() [2/2]

void MooseVariableDataBase< RealEigenVector >::insert ( NumericVector< Number > &  residual)
inherited

Definition at line 449 of file MooseVariableDataBase.C.

450{
451 if (_has_dof_values)
452 {
453 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
454 mooseAssert(_dof_indices.size() % _count == 0,
455 "Dof indices should be cleanly divisible by the variable count");
456 const auto n_shapes = _dof_indices.size() / _count;
457 for (const auto indx : index_range(_dof_indices))
458 {
459 const auto i = indx % n_shapes;
460 const auto j = indx / n_shapes;
461 residual.set(_dof_indices[indx], dof_values[i](j));
462 }
463 }
464}
virtual void set(const numeric_index_type i, const T value)=0

◆ insertSolutionTag()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::insertSolutionTag ( TagID  tag_id)
protectedinherited

insert a solution tag into our tag containers

Definition at line 330 of file MooseVariableDataBase.h.

331{
332 _solution_tags.insert(tag_id);
333 _required_vector_tags.insert(tag_id);
334}
std::set< TagID > _solution_tags
The set of solution tags we need to evaluate.

Referenced by MooseVariableDataBase< OutputType >::MooseVariableDataBase().

◆ isNodal()

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::isNodal ( ) const
inlineoverridevirtual
Returns
Whether this data is associated with a nodal variable

Implements MooseVariableDataBase< OutputType >.

Definition at line 102 of file MooseVariableDataFV.h.

102{ return false; }

◆ matrixTagValue()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::FieldVariableValue & MooseVariableDataBase< OutputType >::matrixTagValue ( TagID  tag) const
inherited

Definition at line 232 of file MooseVariableDataBase.C.

233{
234 if (tag >= _matrix_tag_u.size())
235 {
236 _need_matrix_tag_u.resize(tag + 1, false);
237 const_cast<MooseVariableDataBase<OutputType> *>(this)->_matrix_tag_u.resize(tag + 1);
238 }
239
240 _var.requireQpComputations();
241
242 _need_matrix_tag_u[tag] = true;
243
244 if (_sys.hasMatrix(tag))
245 return _matrix_tag_u[tag];
246 else
247 mooseError("Tag ", tag, " is not associated with any matrix for variable ", _var.name());
248}

◆ meshChanged()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::meshChanged ( )
overridevirtual

Called on this object when the mesh changes.

Reimplemented from MeshChangedInterface.

Definition at line 779 of file MooseVariableDataFV.C.

780{
781 _prev_elem = nullptr;
782}

◆ needsAD()

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::needsAD ( ) const
inline

Returns whether this data structure needs automatic differentiation calculations.

Definition at line 109 of file MooseVariableDataFV.h.

109{ return _need_ad; }

◆ needSolutionState()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::needSolutionState ( unsigned int  state)
protectedinherited

Request that we have at least state number of older solution states/vectors.

Definition at line 259 of file MooseVariableDataBase.C.

260{
261 if (state > _max_state)
262 {
263 _sys.needSolutionState(state);
264 _max_state = state;
265 }
266}
unsigned int _max_state
The maximum number of older solution states our variable needs.
virtual void needSolutionState(const unsigned int state, Moose::SolutionIterationType iteration_type=Moose::SolutionIterationType::Time, libMesh::ParallelType parallel_type=GHOSTED)
Registers that the solution state state is needed.

◆ nodalMatrixTagValue()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::nodalMatrixTagValue ( TagID  tag) const
inherited

Definition at line 123 of file MooseVariableDataBase.C.

124{
125 if (isNodal())
126 {
127 if (tag >= _matrix_tags_dof_u.size())
128 {
129 _need_matrix_tag_dof_u.resize(tag + 1, false);
130 const_cast<MooseVariableDataBase<OutputType> *>(this)->_matrix_tags_dof_u.resize(tag + 1);
131 }
132
133 _need_matrix_tag_dof_u[tag] = true;
134
135 if (_sys.hasMatrix(tag))
136 return _matrix_tags_dof_u[tag];
137 else
139 "Tag ", tag, " is not associated with any matrix for nodal variable ", _var.name());
140 }
141 else
142 mooseError("Nodal values can be requested only on nodal variables, variable '",
143 _var.name(),
144 "' is not nodal.");
145}
virtual bool isNodal() const =0

◆ nodalValue()

template<typename OutputType >
const OutputType & MooseVariableDataBase< OutputType >::nodalValue ( Moose::SolutionState  state) const
inherited

Definition at line 498 of file MooseVariableDataBase.C.

499{
500 if (isNodal())
501 {
502 // Request the correct solution states and data members
503 vectorTagDofValue(state);
504 switch (state)
505 {
506 case Moose::Current:
507 return _nodal_value;
508
509 case Moose::Old:
510 return _nodal_value_old;
511
512 case Moose::Older:
513 return _nodal_value_older;
514
517
518 default:
519 // We should never get here but gcc requires that we have a default. See
520 // htpps://stackoverflow.com/questions/18680378/after-defining-case-for-all-enum-values-compiler-still-says-control-reaches-e
521 mooseError("Unknown SolutionState!");
522 }
523 }
524 else
525 mooseError("Nodal values can be requested only on nodal variables, variable '",
526 _var.name(),
527 "' is not nodal.");
528}

◆ nodalValueArray()

template<typename OutputType >
const MooseArray< OutputType > & MooseVariableDataBase< OutputType >::nodalValueArray ( Moose::SolutionState  state) const
inherited

Definition at line 532 of file MooseVariableDataBase.C.

533{
534 if (isNodal())
535 {
536 // Request the correct solution states and data members
537 vectorTagDofValue(state);
538 switch (state)
539 {
540 case Moose::Current:
541 return _nodal_value_array;
542
543 case Moose::Old:
545
546 case Moose::Older:
548
549 default:
550 mooseError("No current support for PreviousNL for nodal value array");
551 }
552 }
553 else
554 mooseError("Nodal values can be requested only on nodal variables, variable '",
555 _var.name(),
556 "' is not nodal.");
557}

◆ nodalVectorTagValue()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::nodalVectorTagValue ( TagID  tag) const
inherited

Definition at line 100 of file MooseVariableDataBase.C.

101{
102 if (isNodal())
103 {
104 if (tag >= _need_vector_tag_dof_u.size())
106
107 _need_vector_tag_dof_u[tag] = true;
108
109 if (_sys.hasVector(tag))
110 return _vector_tags_dof_u[tag];
111 else
113 "Tag ", tag, " is not associated with any vector for nodal variable ", _var.name());
114 }
115 else
116 mooseError("Nodal values can be requested only on nodal variables, variable '",
117 _var.name(),
118 "' is not nodal.");
119}
void resizeVectorTagData(TagID tag)
resize the vector tag need flags and data containers to accomodate this tag index

◆ numberOfDofs()

template<typename OutputType >
unsigned int MooseVariableDataFV< OutputType >::numberOfDofs ( ) const

Definition at line 509 of file MooseVariableDataFV.h.

510{
511 return dofIndices().size();
512}
const std::vector< dof_id_type > & dofIndices() const

◆ oldestSolutionStateRequested()

template<typename OutputType >
unsigned int MooseVariableDataBase< OutputType >::oldestSolutionStateRequested ( ) const
inherited

The oldest solution state that is requested for this variable (0 = current, 1 = old, 2 = older, etc).

Definition at line 252 of file MooseVariableDataBase.C.

253{
254 return _max_state;
255}

◆ prepareAux()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::prepareAux ( )
inlineinherited

Clear aux state.

Definition at line 142 of file MooseVariableDataBase.h.

142{ _has_dof_values = false; }

◆ prepareIC()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::prepareIC ( )

prepare the initial condition

Definition at line 766 of file MooseVariableDataFV.C.

767{
768 // TODO: implement this function
771
772 mooseAssert(_qrule, "We should have a non-null qrule");
773 const auto nqp = _qrule->n_points();
774 _vector_tag_u[_solution_tag].resize(nqp);
775}

◆ resizeVectorTagData()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::resizeVectorTagData ( TagID  tag)
protectedinherited

resize the vector tag need flags and data containers to accomodate this tag index

Definition at line 149 of file MooseVariableDataBase.C.

150{
151 mooseAssert(_need_vector_tag_dof_u.size() == _need_vector_tag_u.size() &&
154 _need_vector_tag_dof_u.size() == _vector_tag_u.size() &&
156 "These sizes should be in sync.");
157
158 auto check_capacity = [tag](const auto & vector_to_check)
159 {
160 if (tag + 1 > vector_to_check.capacity())
161 mooseError("New size greater than tag capacity. This will cause reallocation which will "
162 "invalidate any stored references.");
163 };
164 check_capacity(_need_vector_tag_dof_u);
165 check_capacity(_need_vector_tag_u);
166 check_capacity(_need_vector_tag_grad);
167 check_capacity(_vector_tags_dof_u);
168 check_capacity(_vector_tag_u);
169 check_capacity(_vector_tag_grad);
170
171 _need_vector_tag_dof_u.resize(tag + 1, false);
172 _need_vector_tag_u.resize(tag + 1, false);
173 _need_vector_tag_grad.resize(tag + 1, false);
174 _vector_tags_dof_u.resize(tag + 1);
175 _vector_tag_u.resize(tag + 1);
176 _vector_tag_grad.resize(tag + 1);
177}
std::vector< FieldVariableGradient > _vector_tag_grad

◆ safeToComputeADUDot()

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::safeToComputeADUDot ( ) const
inlineprivate

Helper method that tells us whether it's safe to compute _ad_u_dot.

Definition at line 473 of file MooseVariableDataFV.h.

474{
475 // If we don't have a time integrator then we have no way to calculate _ad_u_dot because we rely
476 // on calls to TimeIntegrator::computeADTimeDerivatives. Another potential situation where
477 // _ad_u_dot computation is potentially troublesome is if we are an auxiliary variable which uses
478 // the auxiliary system copy of the time integrator. Some derived time integrator classes do setup
479 // in their solve() method, and that solve() method only happens for the nonlinear system copy of
480 // the time integrator.
481 return _time_integrator && (_var.kind() == Moose::VAR_SOLVER);
482}

◆ secondSln()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableSecond & MooseVariableDataFV< OutputType >::secondSln ( Moose::SolutionState  state) const

Local solution second spatial derivative getter.

Parameters
stateThe state of the simulation: current, old, older, previous nl

Definition at line 202 of file MooseVariableDataFV.C.

203{
204 _var.requireQpComputations();
205 switch (state)
206 {
207 case Moose::Current:
208 {
209 _need_second = true;
210 return _second_u;
211 }
212
213 case Moose::Old:
214 {
215 _need_second_old = true;
216 return _second_u_old;
217 }
218
219 case Moose::Older:
220 {
221 _need_second_older = true;
222 return _second_u_older;
223 }
224
226 {
229 }
230
231 default:
232 // We should never get here but gcc requires that we have a default. See
233 // htpps://stackoverflow.com/questions/18680378/after-defining-case-for-all-enum-values-compiler-still-says-control-reaches-e
234 mooseError("Unknown SolutionState!");
235 }
236}

◆ setActiveTags()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::setActiveTags ( const std::set< TagID > &  vtags)
inherited

Set the active vector tags.

Parameters
vtagsAdditional vector tags that this variable will need to query at dof indices for, in addition to our own required solution tags

Definition at line 314 of file MooseVariableDataBase.h.

315{
317 for (const auto tag : vtags)
319
320 if (!_required_vector_tags.empty())
321 {
322 const auto largest_tag_id = *_required_vector_tags.rbegin();
323 if (largest_tag_id >= _need_vector_tag_dof_u.size())
324 resizeVectorTagData(largest_tag_id);
325 }
326}
void insert(libMesh::NumericVector< libMesh::Number > &residual)
Set the current local DOF values to the input vector.

◆ setDofValue()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::setDofValue ( const OutputData &  value,
unsigned int  index 
)

dof value setters

Definition at line 608 of file MooseVariableDataFV.C.

609{
610 mooseAssert(index == 0, "We only ever have one dof value locally");
612 _has_dof_values = true;
613
614 auto & u = _vector_tag_u[_solution_tag];
615 // Update the qp values as well
616 for (const auto qp : index_range(u))
617 u[qp] = value;
618
619 if (_need_ad_u)
620 for (const auto qp : index_range(_ad_u))
621 _ad_u[qp] = value;
622}
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)

◆ setDofValues()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::setDofValues ( const DenseVector< OutputData > &  values)

Set local DOF values and evaluate the values on quadrature points.

Definition at line 626 of file MooseVariableDataFV.C.

627{
628 auto & dof_values = _vector_tags_dof_u[_solution_tag];
629 for (unsigned int i = 0; i < values.size(); i++)
630 dof_values[i] = values(i);
631 _has_dof_values = true;
632}
std::array< Real, 2 > values
Definition MortarUtils.C:52

◆ setGeometry()

template<typename OutputType >
void MooseVariableDataFV< OutputType >::setGeometry ( Moose::GeometryType  gm_type)

Set the geometry type before calculating variables values.

Parameters
gm_typeThe type type of geometry; either Volume or Face

Definition at line 79 of file MooseVariableDataFV.C.

80{
81 switch (gm_type)
82 {
83 case Moose::Volume:
84 {
86 // TODO: set integration multiplier to cell volume
87 break;
88 }
89 case Moose::Face:
90 {
92 // TODO: set integration multiplier to face area
93 break;
94 }
95 }
96}
const libMesh::QBase *const & qRuleFace() const
Returns the reference to the current quadrature being used on a current face.
Definition Assembly.h:313
const libMesh::QBase *const & qRule() const
Returns the reference to the current quadrature being used.
Definition Assembly.h:226

◆ setNodalValue() [1/2]

template<typename OutputType >
void MooseVariableDataBase< OutputType >::setNodalValue ( const OutputType &  value)
inherited

Set nodal value.

Definition at line 382 of file MooseVariableDataBase.C.

383{
384 // dof_values here is indexed per shape function, with each entry holding all _count array
385 // components packed into a single OutputType value. setNodalValue writes only one shape
386 // function's value, so it is only valid for a variable with a single shape function, e.g. a
387 // nodal Lagrange variable or a CONSTANT-order elemental variable; a variable with more than
388 // one shape function must use setDofValues instead. A subparametric variable, e.g. the pressure
389 // of a Taylor-Hood pair, has nodes on its elements that carry none of its degrees of freedom;
390 // callers query isNodalDefined() to skip those nodes before reaching this method.
391 mooseAssert(_dof_indices.size() == _count,
392 "setNodalValue is only valid for a variable with one shape function per node");
393 auto & dof_values = _vector_tags_dof_u[_solution_tag];
394 dof_values.resize(/*n_shapes=*/1);
395 dof_values[0] = value; // update variable nodal value
396 _has_dof_values = true;
398
399 // Update the qp values as well
400 auto & u = _vector_tag_u[_solution_tag];
401 for (unsigned int qp = 0; qp < u.size(); qp++)
402 u[qp] = value;
403}

◆ setNodalValue() [2/2]

void MooseVariableDataBase< RealVectorValue >::setNodalValue ( const RealVectorValue &  value)
inherited

Definition at line 407 of file MooseVariableDataBase.C.

408{
409 // Unlike the generic implementation above, a vector-valued variable is never an array
410 // variable, so _count is always 1 and dof_values is indexed per component of the vector
411 // rather than per shape function -- each shape function contributes one raw degree of
412 // freedom per component given the finite element family and order constraints we set below.
413 mooseAssert(_count == 1, "Vector-valued variables cannot be array variables");
414 mooseAssert(
415 _var.feType().family == LAGRANGE_VEC ||
416 (_var.feType().family == MONOMIAL_VEC && _var.feType().order == CONSTANT &&
417 (!_var.feType().p_refinement || !_subproblem.doingPRefinement())),
418 "setNodalValue only makes sense for LAGRANGE_VEC or non-p-refined CONSTANT MONOMIAL_VEC "
419 "vector variables");
420 mooseAssert(_dof_indices.size() <= _var.sys().mesh().getMesh().mesh_dimension(),
421 "The number of dof indices for a vector variable should be at most the mesh manifold "
422 "dimension. We cannot use an exact equality because it's possible the vector "
423 "variable could live on a lower-dimensional manifold.");
424
425 auto & dof_values = _vector_tags_dof_u[_solution_tag];
426 dof_values.resize(_dof_indices.size());
427 for (const auto i : index_range(dof_values))
428 dof_values[i] = value(i);
429
430 _has_dof_values = true;
432}
bool doingPRefinement() const

◆ sizeMatrixTagData()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::sizeMatrixTagData ( )
inherited

size matrix tag data

Definition at line 87 of file MooseVariableDataBase.C.

88{
89 auto num_matrix_tags = _subproblem.numMatrixTags();
90
91 _matrix_tags_dof_u.resize(num_matrix_tags);
92 _need_matrix_tag_dof_u.resize(num_matrix_tags, false);
93
94 _need_matrix_tag_u.resize(num_matrix_tags, false);
95 _matrix_tag_u.resize(num_matrix_tags);
96}
virtual unsigned int numMatrixTags() const
The total number of tags.
Definition SubProblem.h:248

◆ sln()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableValue & MooseVariableDataFV< OutputType >::sln ( Moose::SolutionState  state) const

Local solution value.

Definition at line 163 of file MooseVariableDataFV.C.

164{
165 _var.requireQpComputations();
167}
const FieldVariableValue & sln(Moose::SolutionState state) const
Local solution getter.

◆ stateToTagHelper()

template<typename OutputType >
template<typename ReturnType , typename Functor >
const ReturnType & MooseVariableDataBase< OutputType >::stateToTagHelper ( Moose::SolutionState  state,
Functor  functor 
)
protectedinherited

Helper method that converts a SolutionState argument into a corresponding tag ID, potentially requesting necessary additional solution states and assigning tag id data members, and then calls the provided functor with the tag ID.

Definition at line 271 of file MooseVariableDataBase.C.

273{
274 if (state > 0)
275 {
276 // We need to request all states that are between current and the requested state
277 stateToTagHelper<ReturnType>(Moose::SolutionState(static_cast<int>(state) - 1), functor);
278 needSolutionState(cast_int<unsigned int>(state));
279 }
280
281 switch (state)
282 {
283 case Moose::Current:
285
286 case Moose::Old:
287 {
290 return functor(_old_solution_tag);
291 }
292
293 case Moose::Older:
294 {
297 return functor(_older_solution_tag);
298 }
299
301 {
304 return functor(_previous_nl_solution_tag);
305 }
306
307 default:
308 // We should never get here but gcc requires that we have a default. See
309 // htpps://stackoverflow.com/questions/18680378/after-defining-case-for-all-enum-values-compiler-still-says-control-reaches-e
310 mooseError("Unknown SolutionState!");
311 }
312}
void insertSolutionTag(TagID tag_id)
insert a solution tag into our tag containers
void needSolutionState(unsigned int state)
Request that we have at least state number of older solution states/vectors.
virtual TagID getVectorTagID(const TagName &tag_name) const
Get a TagID from a TagName.
Definition SubProblem.C:192
const TagName OLDER_SOLUTION_TAG
Definition MooseTypes.C:27
const TagName PREVIOUS_NL_SOLUTION_TAG
Definition MooseTypes.C:28
SolutionState
Definition MooseTypes.h:262
const TagName OLD_SOLUTION_TAG
Definition MooseTypes.C:26
const TagName SOLUTION_TAG
Definition MooseTypes.C:25

◆ uDot()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableValue & MooseVariableDataFV< OutputType >::uDot ( ) const

Definition at line 100 of file MooseVariableDataFV.C.

101{
102 if (_sys.solutionUDot())
103 {
104 _var.requireQpComputations();
105 _need_u_dot = true;
106 return _u_dot;
107 }
108 else
109 mooseError("MooseVariableFE: Time derivative of solution (`u_dot`) is not stored. Please set "
110 "uDotRequested() to true in FEProblemBase before requesting `u_dot`.");
111}

◆ uDotDot()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableValue & MooseVariableDataFV< OutputType >::uDotDot ( ) const

Definition at line 115 of file MooseVariableDataFV.C.

116{
117 if (_sys.solutionUDotDot())
118 {
119 _var.requireQpComputations();
120 _need_u_dotdot = true;
121 return _u_dotdot;
122 }
123 else
124 mooseError("MooseVariableFE: Second time derivative of solution (`u_dotdot`) is not stored. "
125 "Please set uDotDotRequested() to true in FEProblemBase before requesting "
126 "`u_dotdot`.");
127}

◆ uDotDotOld()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableValue & MooseVariableDataFV< OutputType >::uDotDotOld ( ) const

Definition at line 147 of file MooseVariableDataFV.C.

148{
150 {
151 _var.requireQpComputations();
152 _need_u_dotdot_old = true;
153 return _u_dotdot_old;
154 }
155 else
156 mooseError("MooseVariableFE: Old second time derivative of solution (`u_dotdot_old`) is not "
157 "stored. Please set uDotDotOldRequested() to true in FEProblemBase before "
158 "requesting `u_dotdot_old`");
159}

◆ uDotOld()

template<typename OutputType >
const MooseVariableDataFV< OutputType >::FieldVariableValue & MooseVariableDataFV< OutputType >::uDotOld ( ) const

Definition at line 131 of file MooseVariableDataFV.C.

132{
133 if (_sys.solutionUDotOld())
134 {
135 _var.requireQpComputations();
136 _need_u_dot_old = true;
137 return _u_dot_old;
138 }
139 else
140 mooseError("MooseVariableFE: Old time derivative of solution (`u_dot_old`) is not stored. "
141 "Please set uDotOldRequested() to true in FEProblemBase before requesting "
142 "`u_dot_old`.");
143}

◆ validParams()

InputParameters MeshChangedInterface::validParams ( )
staticinherited

Definition at line 15 of file MeshChangedInterface.C.

16{
18 return params;
19}
InputParameters emptyInputParameters()
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.

Referenced by AuxKernelBase::validParams(), AuxScalarKernel::validParams(), LinearSystemContributionObject::validParams(), ResidualObject::validParams(), and FVInterfaceKernel::validParams().

◆ var()

template<typename OutputType >
virtual const MooseVariableFV< OutputType > & MooseVariableDataFV< OutputType >::var ( ) const
inlineoverrideprotectedvirtual
Returns
The variable to which the data in this class belongs to

Reimplemented from MooseVariableDataBase< OutputType >.

Definition at line 284 of file MooseVariableDataFV.h.

284{ return _var; }

◆ vectorTagDofValue() [1/2]

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::vectorTagDofValue ( Moose::SolutionState  state) const
inherited

Definition at line 342 of file MooseVariableDataBase.C.

343{
344 auto functor = [this](TagID tag_id) -> const DofValues & { return vectorTagDofValue(tag_id); };
345
346 _var.requireQpComputations();
347
348 return const_cast<MooseVariableDataBase<OutputType> *>(this)->stateToTagHelper<DofValues>(
349 state, functor);
350}
MooseArray< DofValue > DofValues

◆ vectorTagDofValue() [2/2]

template<typename OutputType >
const MooseVariableDataBase< OutputType >::DofValues & MooseVariableDataBase< OutputType >::vectorTagDofValue ( TagID  tag) const
inherited

Definition at line 198 of file MooseVariableDataBase.C.

199{
200 if (tag >= _need_vector_tag_dof_u.size())
202
203 _var.requireQpComputations();
204
205 _need_vector_tag_dof_u[tag] = true;
206
207 if (_sys.hasVector(tag))
208 return _vector_tags_dof_u[tag];
209 else
210 mooseError("Tag ", tag, " is not associated with any vector for variable ", _var.name());
211}

◆ vectorTagGradient()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::FieldVariableGradient & MooseVariableDataBase< OutputType >::vectorTagGradient ( TagID  tag) const
inherited

Definition at line 215 of file MooseVariableDataBase.C.

216{
217 if (tag >= _need_vector_tag_grad.size())
219
220 _var.requireQpComputations();
221
222 _need_vector_tag_grad[tag] = true;
223
224 if (_sys.hasVector(tag))
225 return _vector_tag_grad[tag];
226 else
227 mooseError("Tag ", tag, " is not associated with any vector for variable ", _var.name());
228}

◆ vectorTagValue()

template<typename OutputType >
const MooseVariableDataBase< OutputType >::FieldVariableValue & MooseVariableDataBase< OutputType >::vectorTagValue ( TagID  tag) const
inherited

Definition at line 181 of file MooseVariableDataBase.C.

182{
183 if (tag >= _need_vector_tag_u.size())
185
186 _var.requireQpComputations();
187
188 _need_vector_tag_u[tag] = true;
189
190 if (_sys.hasVector(tag))
191 return _vector_tag_u[tag];
192 else
193 mooseError("Tag ", tag, " is not associated with any vector for variable ", _var.name());
194}

◆ zeroSizeDofValues()

template<typename OutputType >
void MooseVariableDataBase< OutputType >::zeroSizeDofValues ( )
protectedinherited

Definition at line 743 of file MooseVariableDataBase.C.

744{
746 {
753 }
754
755 for (auto & dof_values : _vector_tags_dof_u)
756 dof_values.resize(0);
757
758 _has_dof_values = false;
759}

Friends And Related Symbol Documentation

◆ Moose::initDofIndices

template<typename OutputType >
void Moose::initDofIndices ( MooseVariableDataFV< OutputType > &  ,
const Elem &   
)
friend

Member Data Documentation

◆ _ad_dof_values

template<typename OutputType >
MooseArray<ADReal> MooseVariableDataFV< OutputType >::_ad_dof_values
private

Definition at line 361 of file MooseVariableDataFV.h.

◆ _ad_dofs_dot

template<typename OutputType >
MooseArray<ADReal> MooseVariableDataFV< OutputType >::_ad_dofs_dot
private

Definition at line 362 of file MooseVariableDataFV.h.

◆ _ad_dofs_dotdot

template<typename OutputType >
MooseArray<ADReal> MooseVariableDataFV< OutputType >::_ad_dofs_dotdot
private

Definition at line 363 of file MooseVariableDataFV.h.

◆ _ad_grad_u

template<typename OutputType >
ADTemplateVariableGradient<OutputShape> MooseVariableDataFV< OutputType >::_ad_grad_u
private

Definition at line 359 of file MooseVariableDataFV.h.

◆ _ad_grad_u_dot

template<typename OutputType >
ADTemplateVariableGradient<OutputShape> MooseVariableDataFV< OutputType >::_ad_grad_u_dot
private

Definition at line 366 of file MooseVariableDataFV.h.

◆ _ad_real_dummy

template<typename OutputType >
ADReal MooseVariableDataFV< OutputType >::_ad_real_dummy = 0
private

A dummy ADReal variable.

Definition at line 410 of file MooseVariableDataFV.h.

◆ _ad_second_u

template<typename OutputType >
ADTemplateVariableSecond<OutputShape> MooseVariableDataFV< OutputType >::_ad_second_u
private

Definition at line 360 of file MooseVariableDataFV.h.

◆ _ad_u

template<typename OutputType >
ADTemplateVariableValue<OutputShape> MooseVariableDataFV< OutputType >::_ad_u
private

AD u.

Definition at line 358 of file MooseVariableDataFV.h.

◆ _ad_u_dot

template<typename OutputType >
ADTemplateVariableValue<OutputShape> MooseVariableDataFV< OutputType >::_ad_u_dot
private

Definition at line 364 of file MooseVariableDataFV.h.

◆ _ad_u_dotdot

template<typename OutputType >
ADTemplateVariableValue<OutputShape> MooseVariableDataFV< OutputType >::_ad_u_dotdot
private

Definition at line 365 of file MooseVariableDataFV.h.

◆ _ad_zero

template<typename OutputType >
const ADReal MooseVariableDataFV< OutputType >::_ad_zero
private

A zero AD variable.

Definition at line 320 of file MooseVariableDataFV.h.

◆ _assembly

template<typename OutputType >
const Assembly& MooseVariableDataFV< OutputType >::_assembly
private

Definition at line 308 of file MooseVariableDataFV.h.

◆ _continuity

template<typename OutputType >
libMesh::FEContinuity MooseVariableDataFV< OutputType >::_continuity
private

Continuity type of the variable.

Definition at line 314 of file MooseVariableDataFV.h.

◆ _count

template<typename OutputType >
unsigned int MooseVariableDataBase< OutputType >::_count
protectedinherited

Number of components of the associated variable.

Definition at line 202 of file MooseVariableDataBase.h.

◆ _curl_u

template<typename OutputType >
FieldVariableCurl MooseVariableDataFV< OutputType >::_curl_u
private

curl_u

Definition at line 353 of file MooseVariableDataFV.h.

◆ _curl_u_old

template<typename OutputType >
FieldVariableCurl MooseVariableDataFV< OutputType >::_curl_u_old
private

Definition at line 354 of file MooseVariableDataFV.h.

◆ _curl_u_older

template<typename OutputType >
FieldVariableCurl MooseVariableDataFV< OutputType >::_curl_u_older
private

Definition at line 355 of file MooseVariableDataFV.h.

◆ _displaced

template<typename OutputType >
const bool MooseVariableDataFV< OutputType >::_displaced
private

Whether this variable is being calculated on a displaced system.

Definition at line 404 of file MooseVariableDataFV.h.

◆ _dof_du_dot_du

template<typename OutputType >
MooseArray<libMesh::Number> MooseVariableDataBase< OutputType >::_dof_du_dot_du
protectedinherited

derivatives of the solution value time derivative with respect to the degrees of freedom

Definition at line 281 of file MooseVariableDataBase.h.

◆ _dof_du_dotdot_du

template<typename OutputType >
MooseArray<libMesh::Number> MooseVariableDataBase< OutputType >::_dof_du_dotdot_du
protectedinherited

derivatives of the solution value second time derivative with respect to the degrees of freedom

Definition at line 284 of file MooseVariableDataBase.h.

◆ _dof_indices

template<typename OutputType >
std::vector<dof_id_type> MooseVariableDataBase< OutputType >::_dof_indices
protectedinherited

◆ _dof_map

template<typename OutputType >
const libMesh::DofMap& MooseVariableDataBase< OutputType >::_dof_map
protectedinherited

The degree of freedom map from libMesh.

Definition at line 199 of file MooseVariableDataBase.h.

◆ _dof_values_dot

template<typename OutputType >
DofValues MooseVariableDataBase< OutputType >::_dof_values_dot
protectedinherited

time derivative of the solution values

Definition at line 273 of file MooseVariableDataBase.h.

◆ _dof_values_dot_old

template<typename OutputType >
DofValues MooseVariableDataBase< OutputType >::_dof_values_dot_old
protectedinherited

the previous time step's solution value time derivative

Definition at line 277 of file MooseVariableDataBase.h.

◆ _dof_values_dotdot

template<typename OutputType >
DofValues MooseVariableDataBase< OutputType >::_dof_values_dotdot
protectedinherited

second time derivative of the solution values

Definition at line 275 of file MooseVariableDataBase.h.

◆ _dof_values_dotdot_old

template<typename OutputType >
DofValues MooseVariableDataBase< OutputType >::_dof_values_dotdot_old
protectedinherited

the previous time step's solution value second time derivative

Definition at line 279 of file MooseVariableDataBase.h.

◆ _du_dot_du

template<typename OutputType >
VariableValue MooseVariableDataFV< OutputType >::_du_dot_du
private

derivative of u_dot wrt u

Definition at line 383 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::duDotDu().

◆ _du_dotdot_du

template<typename OutputType >
VariableValue MooseVariableDataFV< OutputType >::_du_dotdot_du
private

derivative of u_dotdot wrt u

Definition at line 386 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::duDotDotDu().

◆ _elem

template<typename OutputType >
const Elem* const& MooseVariableDataFV< OutputType >::_elem
private

The current elem.

This has to be a reference because the current elem will be constantly changing. If we initialized this to point to one elem, then in the next calculation we would be pointing to the wrong place!

Definition at line 394 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::currentElem().

◆ _element_type

template<typename OutputType >
Moose::ElementType MooseVariableDataFV< OutputType >::_element_type
private

The element type this object is storing data for. This is either Element, Neighbor, or Lower.

Definition at line 311 of file MooseVariableDataFV.h.

◆ _fe_type

template<typename OutputType >
const libMesh::FEType& MooseVariableDataFV< OutputType >::_fe_type
private

Definition at line 304 of file MooseVariableDataFV.h.

◆ _fv_elemental_kernel_query_cache

template<typename OutputType >
TheWarehouse::QueryCache MooseVariableDataFV< OutputType >::_fv_elemental_kernel_query_cache
private

Cached warehouse query for FVElementalKernels.

Definition at line 413 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::MooseVariableDataFV().

◆ _fv_flux_kernel_query_cache

template<typename OutputType >
TheWarehouse::QueryCache MooseVariableDataFV< OutputType >::_fv_flux_kernel_query_cache
private

Cached warehouse query for FVFluxKernels.

Definition at line 415 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::MooseVariableDataFV().

◆ _grad_u_dot

template<typename OutputType >
FieldVariableGradient MooseVariableDataFV< OutputType >::_grad_u_dot
private

grad_u dots

Definition at line 343 of file MooseVariableDataFV.h.

◆ _grad_u_dotdot

template<typename OutputType >
FieldVariableGradient MooseVariableDataFV< OutputType >::_grad_u_dotdot
private

Definition at line 344 of file MooseVariableDataFV.h.

◆ _has_dirichlet_bc

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_has_dirichlet_bc
private

if this variable has a dirichlet bc defined on a particular face

Definition at line 401 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::hasDirichletBC().

◆ _has_dof_values

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_has_dof_values
protectedinherited

Whether we currently have degree of freedom values stored in our local containers (corresponding to the current element)

Definition at line 206 of file MooseVariableDataBase.h.

Referenced by MooseVariableDataBase< OutputType >::prepareAux().

◆ _increment

template<typename OutputType >
FieldVariableValue MooseVariableDataFV< OutputType >::_increment
private

Increment in the variable used in dampers.

Definition at line 317 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::increment().

◆ _matrix_tag_u

template<typename OutputType >
std::vector<FieldVariableValue> MooseVariableDataBase< OutputType >::_matrix_tag_u
protectedinherited

Definition at line 238 of file MooseVariableDataBase.h.

◆ _matrix_tags_dof_u

template<typename OutputType >
std::vector<DofValues> MooseVariableDataBase< OutputType >::_matrix_tags_dof_u
protectedinherited

Definition at line 232 of file MooseVariableDataBase.h.

◆ _max_state

template<typename OutputType >
unsigned int MooseVariableDataBase< OutputType >::_max_state
protectedinherited

The maximum number of older solution states our variable needs.

Definition at line 209 of file MooseVariableDataBase.h.

◆ _mci_feproblem

FEProblemBase& MeshChangedInterface::_mci_feproblem
protectedinherited

Reference to FEProblemBase instance.

Definition at line 44 of file MeshChangedInterface.h.

Referenced by MeshChangedInterface::MeshChangedInterface().

◆ _need_ad

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad
mutableprivate

AD flags.

Definition at line 334 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::needsAD().

◆ _need_ad_grad_u

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad_grad_u
mutableprivate

Definition at line 338 of file MooseVariableDataFV.h.

◆ _need_ad_grad_u_dot

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad_grad_u_dot
mutableprivate

Definition at line 339 of file MooseVariableDataFV.h.

◆ _need_ad_second_u

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad_second_u
mutableprivate

Definition at line 340 of file MooseVariableDataFV.h.

◆ _need_ad_u

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad_u
mutableprivate

Definition at line 335 of file MooseVariableDataFV.h.

◆ _need_ad_u_dot

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad_u_dot
mutableprivate

Definition at line 336 of file MooseVariableDataFV.h.

◆ _need_ad_u_dotdot

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_ad_u_dotdot
mutableprivate

Definition at line 337 of file MooseVariableDataFV.h.

◆ _need_curl

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_curl
mutableprivate

curl flags

Definition at line 329 of file MooseVariableDataFV.h.

◆ _need_curl_old

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_curl_old
mutableprivate

Definition at line 330 of file MooseVariableDataFV.h.

◆ _need_curl_older

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_curl_older
mutableprivate

Definition at line 331 of file MooseVariableDataFV.h.

◆ _need_dof_du_dot_du

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_dof_du_dot_du
mutableprotectedinherited

Definition at line 269 of file MooseVariableDataBase.h.

◆ _need_dof_du_dotdot_du

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_dof_du_dotdot_du
mutableprotectedinherited

Definition at line 270 of file MooseVariableDataBase.h.

◆ _need_dof_values_dot

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_dof_values_dot
mutableprotectedinherited

local solution flags

Definition at line 265 of file MooseVariableDataBase.h.

◆ _need_dof_values_dot_old

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_dof_values_dot_old
mutableprotectedinherited

Definition at line 267 of file MooseVariableDataBase.h.

◆ _need_dof_values_dotdot

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_dof_values_dotdot
mutableprotectedinherited

Definition at line 266 of file MooseVariableDataBase.h.

◆ _need_dof_values_dotdot_old

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_dof_values_dotdot_old
mutableprotectedinherited

Definition at line 268 of file MooseVariableDataBase.h.

◆ _need_du_dot_du

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_du_dot_du
mutableprotectedinherited

◆ _need_du_dotdot_du

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_du_dotdot_du
mutableprotectedinherited

◆ _need_grad_dot

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_grad_dot
mutableprotectedinherited

gradient dot flags

Definition at line 261 of file MooseVariableDataBase.h.

Referenced by MooseVariableData< OutputType >::adGradSlnDot().

◆ _need_grad_dotdot

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_grad_dotdot
mutableprotectedinherited

Definition at line 262 of file MooseVariableDataBase.h.

◆ _need_matrix_tag_dof_u

template<typename OutputType >
std::vector<bool> MooseVariableDataBase< OutputType >::_need_matrix_tag_dof_u
mutableprotectedinherited

Definition at line 227 of file MooseVariableDataBase.h.

◆ _need_matrix_tag_u

template<typename OutputType >
std::vector<bool> MooseVariableDataBase< OutputType >::_need_matrix_tag_u
mutableprotectedinherited

Definition at line 239 of file MooseVariableDataBase.h.

◆ _need_second

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_second
mutableprivate

SolutionState second_u flags.

Definition at line 323 of file MooseVariableDataFV.h.

◆ _need_second_old

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_second_old
mutableprivate

Definition at line 324 of file MooseVariableDataFV.h.

◆ _need_second_older

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_second_older
mutableprivate

Definition at line 325 of file MooseVariableDataFV.h.

◆ _need_second_previous_nl

template<typename OutputType >
bool MooseVariableDataFV< OutputType >::_need_second_previous_nl
mutableprivate

Definition at line 326 of file MooseVariableDataFV.h.

◆ _need_u_dot

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_u_dot
mutableprotectedinherited

u dot flags

Definition at line 253 of file MooseVariableDataBase.h.

◆ _need_u_dot_old

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_u_dot_old
mutableprotectedinherited

Definition at line 255 of file MooseVariableDataBase.h.

◆ _need_u_dotdot

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_u_dotdot
mutableprotectedinherited

Definition at line 254 of file MooseVariableDataBase.h.

◆ _need_u_dotdot_old

template<typename OutputType >
bool MooseVariableDataBase< OutputType >::_need_u_dotdot_old
mutableprotectedinherited

Definition at line 256 of file MooseVariableDataBase.h.

◆ _need_vector_tag_dof_u

template<typename OutputType >
std::vector<bool> MooseVariableDataBase< OutputType >::_need_vector_tag_dof_u
mutableprotectedinherited

◆ _need_vector_tag_grad

template<typename OutputType >
std::vector<bool> MooseVariableDataBase< OutputType >::_need_vector_tag_grad
mutableprotectedinherited

◆ _need_vector_tag_u

template<typename OutputType >
std::vector<bool> MooseVariableDataBase< OutputType >::_need_vector_tag_u
mutableprotectedinherited

◆ _nodal_value

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value
protectedinherited

Nodal values.

Definition at line 242 of file MooseVariableDataBase.h.

◆ _nodal_value_array

template<typename OutputType >
MooseArray<OutputType> MooseVariableDataBase< OutputType >::_nodal_value_array
protectedinherited

Nodal values as MooseArrays for use with AuxKernels.

Definition at line 248 of file MooseVariableDataBase.h.

Referenced by MooseVariableDataBase< OutputType >::MooseVariableDataBase().

◆ _nodal_value_dot

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_dot
protectedinherited

nodal values of u_dot

Definition at line 287 of file MooseVariableDataBase.h.

◆ _nodal_value_dot_old

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_dot_old
protectedinherited

nodal values of u_dot_old

Definition at line 291 of file MooseVariableDataBase.h.

◆ _nodal_value_dotdot

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_dotdot
protectedinherited

nodal values of u_dotdot

Definition at line 289 of file MooseVariableDataBase.h.

◆ _nodal_value_dotdot_old

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_dotdot_old
protectedinherited

nodal values of u_dotdot_old

Definition at line 293 of file MooseVariableDataBase.h.

◆ _nodal_value_old

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_old
protectedinherited

Definition at line 243 of file MooseVariableDataBase.h.

◆ _nodal_value_old_array

template<typename OutputType >
MooseArray<OutputType> MooseVariableDataBase< OutputType >::_nodal_value_old_array
protectedinherited

◆ _nodal_value_older

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_older
protectedinherited

Definition at line 244 of file MooseVariableDataBase.h.

◆ _nodal_value_older_array

template<typename OutputType >
MooseArray<OutputType> MooseVariableDataBase< OutputType >::_nodal_value_older_array
protectedinherited

◆ _nodal_value_previous_nl

template<typename OutputType >
OutputType MooseVariableDataBase< OutputType >::_nodal_value_previous_nl
protectedinherited

Definition at line 245 of file MooseVariableDataBase.h.

◆ _old_solution_tag

template<typename OutputType >
TagID MooseVariableDataBase< OutputType >::_old_solution_tag
protectedinherited

The vector tag ID corresponding to the old solution vector.

Definition at line 215 of file MooseVariableDataBase.h.

◆ _older_solution_tag

template<typename OutputType >
TagID MooseVariableDataBase< OutputType >::_older_solution_tag
protectedinherited

The vector tag ID corresponding to the older solution vector.

Definition at line 218 of file MooseVariableDataBase.h.

◆ _prev_elem

template<typename OutputType >
const Elem* MooseVariableDataFV< OutputType >::_prev_elem = nullptr
mutableprivate

used to keep track of when dof indices are out of date

Definition at line 396 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::clearDofIndices().

◆ _previous_nl_solution_tag

template<typename OutputType >
TagID MooseVariableDataBase< OutputType >::_previous_nl_solution_tag
protectedinherited

The vector tag ID corresponding to the previous nonlinear iteration's solution vector.

Definition at line 221 of file MooseVariableDataBase.h.

◆ _qrule

template<typename OutputType >
const libMesh::QBase* MooseVariableDataFV< OutputType >::_qrule
private

The quadrature rule.

Definition at line 407 of file MooseVariableDataFV.h.

◆ _required_vector_tags

template<typename OutputType >
std::set<TagID> MooseVariableDataBase< OutputType >::_required_vector_tags
protectedinherited

The set of vector tags (residual + solution) we need to evaluate.

Definition at line 296 of file MooseVariableDataBase.h.

◆ _second_u

template<typename OutputType >
FieldVariableSecond MooseVariableDataFV< OutputType >::_second_u
private

second_u

Definition at line 347 of file MooseVariableDataFV.h.

◆ _second_u_old

template<typename OutputType >
FieldVariableSecond MooseVariableDataFV< OutputType >::_second_u_old
private

Definition at line 348 of file MooseVariableDataFV.h.

◆ _second_u_older

template<typename OutputType >
FieldVariableSecond MooseVariableDataFV< OutputType >::_second_u_older
private

Definition at line 349 of file MooseVariableDataFV.h.

◆ _second_u_previous_nl

template<typename OutputType >
FieldVariableSecond MooseVariableDataFV< OutputType >::_second_u_previous_nl
private

Definition at line 350 of file MooseVariableDataFV.h.

◆ _solution_tag

template<typename OutputType >
TagID MooseVariableDataBase< OutputType >::_solution_tag
protectedinherited

The vector tag ID corresponding to the solution vector.

Definition at line 212 of file MooseVariableDataBase.h.

◆ _solution_tags

template<typename OutputType >
std::set<TagID> MooseVariableDataBase< OutputType >::_solution_tags
protectedinherited

The set of solution tags we need to evaluate.

Definition at line 299 of file MooseVariableDataBase.h.

◆ _subproblem

template<typename OutputType >
const SubProblem& MooseVariableDataBase< OutputType >::_subproblem
protectedinherited

The subproblem which we can query for information related to tagged vectors and matrices.

Definition at line 193 of file MooseVariableDataBase.h.

Referenced by MooseVariableDataBase< OutputType >::MooseVariableDataBase(), and MooseVariableDataFV< OutputType >::MooseVariableDataFV().

◆ _sys

template<typename OutputType >
SystemBase& MooseVariableDataBase< OutputType >::_sys
protectedinherited

The MOOSE system which ultimately holds the vectors and matrices relevant to this variable data.

Definition at line 190 of file MooseVariableDataBase.h.

Referenced by MooseVariableData< OutputType >::MooseVariableData().

◆ _tid

template<typename OutputType >
const THREAD_ID MooseVariableDataBase< OutputType >::_tid
protectedinherited

The thread ID that this object is on.

Definition at line 196 of file MooseVariableDataBase.h.

◆ _time_integrator

template<typename OutputType >
const TimeIntegrator* const MooseVariableDataFV< OutputType >::_time_integrator
private

Pointer to time integrator.

Definition at line 389 of file MooseVariableDataFV.h.

◆ _u_dot

template<typename OutputType >
FieldVariableValue MooseVariableDataFV< OutputType >::_u_dot
private

u_dot (time derivative)

Definition at line 371 of file MooseVariableDataFV.h.

◆ _u_dot_old

template<typename OutputType >
FieldVariableValue MooseVariableDataFV< OutputType >::_u_dot_old
private

u_dot_old (time derivative)

Definition at line 377 of file MooseVariableDataFV.h.

◆ _u_dotdot

template<typename OutputType >
FieldVariableValue MooseVariableDataFV< OutputType >::_u_dotdot
private

u_dotdot (second time derivative)

Definition at line 374 of file MooseVariableDataFV.h.

◆ _u_dotdot_old

template<typename OutputType >
FieldVariableValue MooseVariableDataFV< OutputType >::_u_dotdot_old
private

u_dotdot_old (second time derivative)

Definition at line 380 of file MooseVariableDataFV.h.

◆ _var

template<typename OutputType >
const MooseVariableFV<OutputType>& MooseVariableDataFV< OutputType >::_var
private

A const reference to the owning MooseVariableFV object.

Definition at line 302 of file MooseVariableDataFV.h.

Referenced by MooseVariableDataFV< OutputType >::var().

◆ _var_num

template<typename OutputType >
const unsigned int MooseVariableDataFV< OutputType >::_var_num
private

Definition at line 306 of file MooseVariableDataFV.h.

◆ _vector_tag_grad

template<typename OutputType >
std::vector<FieldVariableGradient> MooseVariableDataBase< OutputType >::_vector_tag_grad
protectedinherited

◆ _vector_tag_u

template<typename OutputType >
std::vector<FieldVariableValue> MooseVariableDataBase< OutputType >::_vector_tag_u
protectedinherited

◆ _vector_tags_dof_u

template<typename OutputType >
std::vector<DofValues> MooseVariableDataBase< OutputType >::_vector_tags_dof_u
protectedinherited

The documentation for this class was generated from the following files: