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

Class holding the data members for linear finite volume variables. More...

#include <MooseVariableDataLinearFV.h>

Inheritance diagram for MooseVariableDataLinearFV< 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< OutputGradientFieldVariableGradient
 
typedef MooseArray< OutputSecondFieldVariableSecond
 
typedef MooseArray< OutputType > FieldVariableCurl
 
typedef MooseArray< OutputDivergenceFieldVariableDivergence
 
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 DofValue
 
typedef Moose::ADType< DofValue >::type ADDofValue
 
typedef MooseArray< DofValueDofValues
 
typedef MooseArray< ADDofValueADDofValues
 

Public Member Functions

 MooseVariableDataLinearFV (const MooseLinearVariableFV< 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.
 
void setGeometry (Moose::GeometryType gm_type)
 Set the geometry type before calculating variables values.
 
void computeValues ()
 Compute the variable values.
 
void prepareIC ()
 Prepare the initial condition: initialize DOF indices and resize the DOF value array.
 
void setDofValues (const DenseVector< DofValue > &values)
 Set local DOF values to the entries of values .
 
void setDofValue (const DofValue &value, unsigned int index)
 Set local DOF value at index to value .
 
void getDofIndices (const Elem *elem, std::vector< dof_id_type > &dof_indices) const
 Get the dof indices for an element.
 
const std::vector< dof_id_type > & dofIndices () const
 Get the dof indices of the current element.
 
unsigned int numberOfDofs () const
 Get the number of dofs on the current element.
 
void clearDofIndices ()
 Clear the dof indices in the cache.
 
const FieldVariableValuesln (Moose::SolutionState state) const
 Local solution getter.
 
const FieldVariableGradientgradSln (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, unsigned int idx=0)
 Set nodal value.
 
void setNodalValue (const RealVectorValue &value, unsigned int idx)
 
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 DofValuesdofValues () const
 
const DofValuesdofValuesOld () const
 
const DofValuesdofValuesOlder () const
 
const DofValuesdofValuesPreviousNL () const
 
const OutputType & nodalValue (Moose::SolutionState state) const
 
const MooseArray< OutputType > & nodalValueArray (Moose::SolutionState state) const
 
const FieldVariableValuevectorTagValue (TagID tag) const
 
const FieldVariableGradientvectorTagGradient (TagID tag) const
 
const FieldVariableValuematrixTagValue (TagID tag) const
 
const DofValuesnodalVectorTagValue (TagID tag) const
 
const DofValuesnodalMatrixTagValue (TagID tag) const
 
const DofValuesvectorTagDofValue (TagID tag) const
 
const DofValuesvectorTagDofValue (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
 

Protected Member Functions

virtual const MooseLinearVariableFV< OutputType > & var () const override
 Get the corresponding variable.
 
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.
 

Private Member Functions

void initializeSolnVars ()
 
const std::vector< dof_id_type > & initDofIndices ()
 Fetch and return the dof indices of this variable on the current element.
 

Private Attributes

const MooseLinearVariableFV< OutputType > & _var
 A const reference to the owning MooseLinearVariableFV object.
 
const libMesh::FEType_fe_type
 Reference to the variable's finite element type.
 
const unsigned int _var_num
 The index of the variable in the system.
 
const Assembly_assembly
 Reference to the system assembly of the variable.
 
Moose::ElementType _element_type
 The element type this object is storing data for. This is either Element, Neighbor, or Lower.
 
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
 
const bool _displaced
 Whether this variable is being calculated on a displaced system.
 
const libMesh::QBase_qrule
 Pointer to the quadrature rule.
 

Friends

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

Detailed Description

template<typename OutputType>
class MooseVariableDataLinearFV< OutputType >

Class holding the data members for linear finite volume variables.

At the moment, this is only used when the user wants to use linear finite volume variables in the postprocessor/userobject and auxiliary systems. The solver-related functionalities rely on a different machinery.

Definition at line 51 of file MooseVariableDataLinearFV.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 Moose::DOFType<OutputType>::type MooseVariableDataBase< OutputType >::DofValue
inherited

Definition at line 46 of file MooseVariableDataBase.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> MooseVariableDataLinearFV< OutputType >::FieldVariableCurl

Definition at line 63 of file MooseVariableDataLinearFV.h.

◆ FieldVariableDivergence

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

Definition at line 64 of file MooseVariableDataLinearFV.h.

◆ FieldVariableGradient

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

Definition at line 61 of file MooseVariableDataLinearFV.h.

◆ FieldVariableSecond

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

Definition at line 62 of file MooseVariableDataLinearFV.h.

◆ FieldVariableValue

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

Definition at line 60 of file MooseVariableDataLinearFV.h.

◆ OutputDivergence

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

Definition at line 57 of file MooseVariableDataLinearFV.h.

◆ OutputGradient

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

Definition at line 55 of file MooseVariableDataLinearFV.h.

◆ OutputSecond

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

Definition at line 56 of file MooseVariableDataLinearFV.h.

◆ OutputShape

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

Definition at line 67 of file MooseVariableDataLinearFV.h.

◆ OutputShapeDivergence

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

Definition at line 72 of file MooseVariableDataLinearFV.h.

◆ OutputShapeGradient

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

Definition at line 70 of file MooseVariableDataLinearFV.h.

◆ OutputShapeSecond

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

Definition at line 71 of file MooseVariableDataLinearFV.h.

Constructor & Destructor Documentation

◆ MooseVariableDataLinearFV()

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

Definition at line 33 of file MooseVariableDataLinearFV.C.

40 _var(var),
41 _fe_type(_var.feType()),
42 _var_num(_var.number()),
44 _element_type(element_type),
45 _time_integrator(_sys.queryTimeIntegrator(_var_num)),
46 _elem(elem),
47 _displaced(dynamic_cast<const DisplacedSystem *>(&_sys) ? true : false),
48 _qrule(nullptr)
49{
50}
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.
virtual const MooseLinearVariableFV< OutputType > & var() const override
Get the corresponding variable.
const MooseLinearVariableFV< OutputType > & _var
A const reference to the owning MooseLinearVariableFV object.
const Elem *const & _elem
The current elem.
const bool _displaced
Whether this variable is being calculated on a displaced system.
const libMesh::QBase * _qrule
Pointer to the quadrature rule.
Moose::ElementType _element_type
The element type this object is storing data for. This is either Element, Neighbor,...
const TimeIntegrator *const _time_integrator
Pointer to time integrator.
const Assembly & _assembly
Reference to the system assembly of the variable.
const libMesh::FEType & _fe_type
Reference to the variable's finite element type.
const unsigned int _var_num
The index of the variable in the system.
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
unsigned int number() const
Gets the number of this system.
@ 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 441 of file MooseVariableDataBase.C.

442{
443 if (_has_dof_values)
444 {
445 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
446 residual.add_vector(&dof_values[0], _dof_indices);
447 }
448}
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 452 of file MooseVariableDataBase.C.

453{
454 if (_has_dof_values)
455 {
456 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
457 mooseAssert(_dof_indices.size() % _count == 0,
458 "Dof indices should be cleanly divisible by the variable count");
459 const auto n_shapes = _dof_indices.size() / _count;
460 for (const auto indx : index_range(_dof_indices))
461 {
462 const auto i = indx % n_shapes;
463 const auto j = indx / n_shapes;
464 residual.add(_dof_indices[indx], dof_values[i](j));
465 }
466 }
467}
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)

◆ assignNodalValue() [1/3]

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

Definition at line 736 of file MooseVariableDataBase.C.

737{
738 bool is_transient = _subproblem.isTransient();
740
741 auto & dof_values = _vector_tags_dof_u[_solution_tag];
742 _nodal_value = dof_values[0];
744
745 if (is_transient)
746 {
748 {
751 }
753 {
756 }
765 }
768}
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 772 of file MooseVariableDataBase.C.

773{
774 bool is_transient = _subproblem.isTransient();
775
776 auto n = _dof_indices.size();
778
779 auto & dof_values = _vector_tags_dof_u[_solution_tag];
780 for (decltype(n) i = 0; i < n; ++i)
781 _nodal_value(i) = dof_values[i];
783
784 if (is_transient)
785 {
787 {
788 auto & dof_values_old = _vector_tags_dof_u[_old_solution_tag];
789 for (decltype(n) i = 0; i < n; ++i)
790 _nodal_value_old(i) = dof_values_old[i];
792 }
794 {
795 auto & dof_values_older = _vector_tags_dof_u[_older_solution_tag];
796 for (decltype(n) i = 0; i < n; ++i)
797 _nodal_value_older(i) = dof_values_older[i];
799 }
801 for (decltype(n) i = 0; i < n; ++i)
804 for (decltype(n) i = 0; i < n; ++i)
807 for (decltype(n) i = 0; i < n; ++i)
810 for (decltype(n) i = 0; i < n; ++i)
812 }
814 {
815 auto & dof_values_previous_nl = _vector_tags_dof_u[_previous_nl_solution_tag];
816 for (decltype(n) i = 0; i < n; ++i)
817 _nodal_value_previous_nl(i) = dof_values_previous_nl[i];
818 }
819}

◆ clearDofIndices()

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

Clear the dof indices in the cache.

Definition at line 133 of file MooseVariableDataLinearFV.h.

134 {
135 _dof_indices.clear();
136 _prev_elem = nullptr;
137 }
const Elem * _prev_elem
used to keep track of when dof indices are out of date

◆ computeValues()

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

Compute the variable values.

Definition at line 108 of file MooseVariableDataLinearFV.C.

109{
112
113 unsigned int num_dofs = _dof_indices.size();
114
115 if (num_dofs > 0)
117 else
118 // We don't have any dofs. There's nothing to do
119 return;
120
121 mooseAssert(num_dofs == 1 && _vector_tags_dof_u[_solution_tag].size() == 1,
122 "There should only be one dof per elem for FV variables");
123
124 const auto nqp = _qrule->n_points();
125 auto && active_coupleable_matrix_tags =
127
128 for (const auto qp : make_range(nqp))
129 {
130 for (auto tag : _required_vector_tags)
132 _vector_tag_u[tag][qp] = _vector_tags_dof_u[tag][0];
133
134 for (auto tag : active_coupleable_matrix_tags)
136 _matrix_tag_u[tag][qp] = _matrix_tags_dof_u[tag][0];
137 }
138}
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
std::set< TagID > _required_vector_tags
The set of vector tags (residual + solution) we need to evaluate.
void getDofIndices(const Elem *elem, std::vector< dof_id_type > &dof_indices) const
Get the dof indices for an element.
const std::set< TagID > & getActiveFEVariableCoupleableMatrixTags(const THREAD_ID tid) const
Definition SubProblem.C:391
SubProblem & subproblem()
Definition SystemBase.h:102
unsigned int n_points() const
IntRange< T > make_range(T beg, T end)

◆ dofIndices()

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

Get the dof indices of the current element.

Definition at line 241 of file MooseVariableDataLinearFV.h.

242{
243 return const_cast<MooseVariableDataLinearFV<OutputType> *>(this)->initDofIndices();
244}
Class holding the data members for linear finite volume variables.
const std::vector< dof_id_type > & initDofIndices()
Fetch and return the dof indices of this variable on the current element.

◆ dofValues()

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

Definition at line 352 of file MooseVariableDataBase.C.

353{
355}
const DofValues & vectorTagDofValue(TagID tag) const
@ Current
Definition MooseTypes.h:263

◆ dofValuesOld()

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

Definition at line 359 of file MooseVariableDataBase.C.

360{
362}

◆ dofValuesOlder()

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

Definition at line 366 of file MooseVariableDataBase.C.

367{
369}

◆ dofValuesPreviousNL()

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

Definition at line 373 of file MooseVariableDataBase.C.

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

◆ 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 534 of file MooseVariableDataBase.C.

535{
536 bool is_transient = _subproblem.isTransient();
537
538 auto n = _dof_indices.size();
540
541 if (is_transient)
542 {
544 {
548 }
550 {
554 }
556 {
560 }
562 {
566 }
568 {
570 for (decltype(n) i = 0; i < n; ++i)
571 _dof_du_dot_du[i] = _sys.duDotDu(_var.number());
572 }
574 {
576 for (decltype(n) i = 0; i < n; ++i)
578 }
579 }
580
581 for (auto tag : _required_vector_tags)
583 if ((_subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_RESIDUAL &&
584 _subproblem.safeAccessTaggedVectors()) ||
585 _subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_SOLUTION)
586 {
587 // tag is defined on problem but may not be used by a system
588 // the grain tracker requires being able to read from solution vectors that we are also in
589 // the process of writing :-/
590 // Note: the extra vector tags are also still not closed when a TagVectorAux uses them
591 if (_sys.hasVector(tag) /* && _sys.getVector(tag).closed()*/)
592 {
593 auto & vec = _sys.getVector(tag);
594 _vector_tags_dof_u[tag].resize(n);
595 vec.get(_dof_indices, &_vector_tags_dof_u[tag][0]);
596 }
597 }
598
600 {
601 auto & active_coupleable_matrix_tags =
603
604 for (auto tag : active_coupleable_matrix_tags)
605 {
607 if (_sys.hasMatrix(tag) && _sys.matrixTagActive(tag))
608 {
609 mooseAssert(_sys.getMatrix(tag).closed(),
610 "Matrix with tag '" + std::to_string(tag) + "' should be closed");
611 auto & mat = _sys.getMatrix(tag);
612 _matrix_tags_dof_u[tag].resize(n);
613 for (unsigned i = 0; i < n; i++)
614 _matrix_tags_dof_u[tag][i] = mat(_dof_indices[i], _dof_indices[i]);
615 }
616 }
617 }
618}
void resize(unsigned int size)
Change the number of elements the array can store.
Definition MooseArray.h:216
const MooseVariableField< OutputType > & _var
A const reference to the owning MooseVariableField object.
std::vector< bool > _need_matrix_tag_dof_u
MooseArray< libMesh::Number > _dof_du_dotdot_du
derivatives of the solution value second time derivative with respect to the degrees of freedom
std::vector< bool > _need_vector_tag_dof_u
bool _need_grad_dot
gradient dot flags
MooseArray< libMesh::Number > _dof_du_dot_du
derivatives of the solution value time derivative with respect to the degrees of freedom
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:923
virtual NumericVector< Number > * solutionUDot()
Definition SystemBase.h:280
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition SystemBase.C:932
virtual bool matrixTagActive(TagID tag) const
If or not a matrix tag is active.
virtual NumericVector< Number > * solutionUDotOld()
Definition SystemBase.h:282
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:379
virtual NumericVector< Number > * solutionUDotDotOld()
Definition SystemBase.h:283
virtual Number & duDotDotDu()
Definition SystemBase.h:276
virtual NumericVector< Number > * solutionUDotDot()
Definition SystemBase.h:281
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 637 of file MooseVariableDataBase.C.

638{
639 bool is_transient = _subproblem.isTransient();
640
641 auto n = _dof_indices.size() / _count;
643
644 if (is_transient)
645 {
647 {
650 }
652 {
655 }
657 {
660 }
662 {
665 }
666 }
667
668 for (auto tag : _required_vector_tags)
669 if ((_subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_RESIDUAL &&
670 _subproblem.safeAccessTaggedVectors()) ||
671 _subproblem.vectorTagType(tag) == Moose::VECTOR_TAG_SOLUTION)
672 // tag is defined on problem but may not be used by a system
673 if (_sys.hasVector(tag))
674 {
675 mooseAssert(_sys.getVector(tag).closed(),
676 "Vector with tag '" + std::to_string(tag) + "' should be closed");
678 }
679
681 {
682 auto & active_coupleable_matrix_tags =
684 for (auto tag : active_coupleable_matrix_tags)
685 {
686 _matrix_tags_dof_u[tag].resize(n);
688 if (_sys.hasMatrix(tag) && _sys.matrixTagActive(tag))
689 {
690 mooseAssert(_sys.getMatrix(tag).closed(),
691 "Matrix with tag '" + std::to_string(tag) + "' should be closed");
692 auto & mat = _sys.getMatrix(tag);
693 for (unsigned i = 0; i < n; i++)
694 for (unsigned j = 0; j < _count; j++)
695 _matrix_tags_dof_u[tag][i](j) = mat(_dof_indices[i] + j, _dof_indices[i] + j);
696 }
697 }
698 }
699
701 {
703 for (decltype(n) i = 0; i < n; ++i)
704 _dof_du_dot_du[i] = _sys.duDotDu(_var.number());
705 }
707 {
709 for (decltype(n) i = 0; i < n; ++i)
711 }
712}
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 622 of file MooseVariableDataBase.C.

625{
626 dof_values.resize(nshapes);
627 for (const auto i : make_range(nshapes))
628 {
629 dof_values[i].resize(_count);
630 for (const auto j : make_range(_count))
631 dof_values[i](j) = sol(_dof_indices[j * nshapes + i]);
632 }
633}

◆ getContinuity()

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

Return the variable continuity.

Implements MooseVariableDataBase< OutputType >.

Definition at line 85 of file MooseVariableDataLinearFV.h.

85{ return libMesh::DISCONTINUOUS; }

◆ getDofIndices()

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

Get the dof indices for an element.

Parameters
elemThe element on which the dof indices shall be queried
dof_indicesThe container in which the dof indices will be copied

Definition at line 174 of file MooseVariableDataLinearFV.C.

176{
177 // Avoid calling the dof map routine (for performance)
178 const auto n_dofs = elem->n_dofs(_sys.number(), _var_num);
179 if (n_dofs)
180 {
181 mooseAssert(n_dofs == 1, "Should be just one dof");
182 dof_indices.resize(1);
183 dof_indices[0] = elem->dof_number(_sys.number(), _var_num, 0);
184 }
185 else
186 dof_indices.clear();
187}

◆ 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 327 of file MooseVariableDataBase.C.

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

◆ hasDoFsOnNodes()

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

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

Implements MooseVariableDataBase< OutputType >.

Definition at line 84 of file MooseVariableDataLinearFV.h.

84{ return false; }

◆ initDofIndices()

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

Fetch and return the dof indices of this variable on the current element.

Definition at line 99 of file MooseVariableDataLinearFV.C.

100{
101 // We might not have a valid element, so we don't use the element to get the dof
103 return _dof_indices;
104}
void initDofIndices(T &data, const Elem &elem)

◆ initializeSolnVars()

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

Definition at line 75 of file MooseVariableDataLinearFV.C.

76{
77 auto && active_coupleable_matrix_tags =
79 mooseAssert(_qrule, "We should have a non-null qrule");
80 const auto nqp = _qrule->n_points();
81
82 for (auto tag : _required_vector_tags)
84 {
85 _vector_tag_u[tag].resize(nqp);
86 assignForAllQps(0, _vector_tag_u[tag], nqp);
87 }
88
89 for (auto tag : active_coupleable_matrix_tags)
91 {
92 _matrix_tag_u[tag].resize(nqp);
93 assignForAllQps(0, _matrix_tag_u[tag], nqp);
94 }
95}

◆ 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 409 of file MooseVariableDataBase.C.

410{
411 if (_has_dof_values)
412 {
413 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
414 mooseAssert(dof_values.size() == _dof_indices.size(),
415 "Degree of freedom values size and degree of freedom indices sizes must match.");
416 residual.insert(&dof_values[0], _dof_indices);
417 }
418}
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 422 of file MooseVariableDataBase.C.

423{
424 if (_has_dof_values)
425 {
426 const auto & dof_values = _vector_tags_dof_u[_solution_tag];
427 mooseAssert(_dof_indices.size() % _count == 0,
428 "Dof indices should be cleanly divisible by the variable count");
429 const auto n_shapes = _dof_indices.size() / _count;
430 for (const auto indx : index_range(_dof_indices))
431 {
432 const auto i = indx % n_shapes;
433 const auto j = indx / n_shapes;
434 residual.set(_dof_indices[indx], dof_values[i](j));
435 }
436 }
437}
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 MooseVariableDataLinearFV< OutputType >::isNodal ( ) const
inlineoverridevirtual
Returns
Whether this data is associated with a nodal variable

Implements MooseVariableDataBase< OutputType >.

Definition at line 83 of file MooseVariableDataLinearFV.h.

83{ return false; }

◆ matrixTagValue()

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

Definition at line 230 of file MooseVariableDataBase.C.

231{
232 if (tag >= _matrix_tag_u.size())
233 {
234 _need_matrix_tag_u.resize(tag + 1, false);
235 const_cast<MooseVariableDataBase<OutputType> *>(this)->_matrix_tag_u.resize(tag + 1);
236 }
237
238 _var.requireQpComputations();
239
240 _need_matrix_tag_u[tag] = true;
241
242 if (_sys.hasMatrix(tag))
243 return _matrix_tag_u[tag];
244 else
245 mooseError("Tag ", tag, " is not associated with any matrix for variable ", _var.name());
246}
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311

◆ 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 257 of file MooseVariableDataBase.C.

258{
259 if (state > _max_state)
260 {
261 _sys.needSolutionState(state);
262 _max_state = state;
263 }
264}
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 121 of file MooseVariableDataBase.C.

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

◆ nodalValue()

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

Definition at line 471 of file MooseVariableDataBase.C.

472{
473 if (isNodal())
474 {
475 // Request the correct solution states and data members
476 vectorTagDofValue(state);
477 switch (state)
478 {
479 case Moose::Current:
480 return _nodal_value;
481
482 case Moose::Old:
483 return _nodal_value_old;
484
485 case Moose::Older:
486 return _nodal_value_older;
487
490
491 default:
492 // We should never get here but gcc requires that we have a default. See
493 // htpps://stackoverflow.com/questions/18680378/after-defining-case-for-all-enum-values-compiler-still-says-control-reaches-e
494 mooseError("Unknown SolutionState!");
495 }
496 }
497 else
498 mooseError("Nodal values can be requested only on nodal variables, variable '",
499 _var.name(),
500 "' is not nodal.");
501}

◆ nodalValueArray()

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

Definition at line 505 of file MooseVariableDataBase.C.

506{
507 if (isNodal())
508 {
509 // Request the correct solution states and data members
510 vectorTagDofValue(state);
511 switch (state)
512 {
513 case Moose::Current:
514 return _nodal_value_array;
515
516 case Moose::Old:
518
519 case Moose::Older:
521
522 default:
523 mooseError("No current support for PreviousNL for nodal value array");
524 }
525 }
526 else
527 mooseError("Nodal values can be requested only on nodal variables, variable '",
528 _var.name(),
529 "' is not nodal.");
530}

◆ nodalVectorTagValue()

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

Definition at line 98 of file MooseVariableDataBase.C.

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

◆ numberOfDofs()

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

Get the number of dofs on the current element.

Definition at line 248 of file MooseVariableDataLinearFV.h.

249{
250 return dofIndices().size();
251}
const std::vector< dof_id_type > & dofIndices() const
Get the dof indices of the current element.

◆ 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 250 of file MooseVariableDataBase.C.

251{
252 return _max_state;
253}

◆ 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 MooseVariableDataLinearFV< OutputType >::prepareIC ( )

Prepare the initial condition: initialize DOF indices and resize the DOF value array.

Definition at line 142 of file MooseVariableDataLinearFV.C.

143{
146}

◆ 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 147 of file MooseVariableDataBase.C.

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

◆ 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 MooseVariableDataLinearFV< OutputType >::setDofValue ( const DofValue value,
unsigned int  index 
)

Set local DOF value at index to value .

Definition at line 150 of file MooseVariableDataLinearFV.C.

151{
152 mooseAssert(index == 0, "We only ever have one dof value locally");
154 _has_dof_values = true;
155
156 auto & u = _vector_tag_u[_solution_tag];
157 // Update the qp values as well
158 for (const auto qp : index_range(u))
159 u[qp] = value;
160}
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)

◆ setDofValues()

template<typename OutputType >
void MooseVariableDataLinearFV< OutputType >::setDofValues ( const DenseVector< DofValue > &  values)

Set local DOF values to the entries of values .

Definition at line 164 of file MooseVariableDataLinearFV.C.

165{
166 auto & dof_values = _vector_tags_dof_u[_solution_tag];
167 for (unsigned int i = 0; i < values.size(); i++)
168 dof_values[i] = values(i);
169 _has_dof_values = true;
170}
std::array< Real, 2 > values
Definition MortarUtils.C:52

◆ setGeometry()

template<typename OutputType >
void MooseVariableDataLinearFV< 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 54 of file MooseVariableDataLinearFV.C.

55{
56 switch (gm_type)
57 {
58 case Moose::Volume:
59 {
61 // TODO: set integration multiplier to cell volume
62 break;
63 }
64 case Moose::Face:
65 {
67 // TODO: set integration multiplier to face area
68 break;
69 }
70 }
71}
const libMesh::QBase *const & qRuleFace() const
Returns the reference to the current quadrature being used on a current face.
Definition Assembly.h:322
const libMesh::QBase *const & qRule() const
Returns the reference to the current quadrature being used.
Definition Assembly.h:235

◆ setNodalValue() [1/2]

template<typename OutputType >
void MooseVariableDataBase< OutputType >::setNodalValue ( const OutputType &  value,
unsigned int  idx = 0 
)
inherited

Set nodal value.

Definition at line 380 of file MooseVariableDataBase.C.

381{
382 auto & dof_values = _vector_tags_dof_u[_solution_tag];
383 mooseAssert(idx < dof_values.size(), "idx is out of the bounds of degree of freedom values");
384 dof_values[idx] = value; // update variable nodal value
385 _has_dof_values = true;
387
388 // Update the qp values as well
389 auto & u = _vector_tag_u[_solution_tag];
390 for (unsigned int qp = 0; qp < u.size(); qp++)
391 u[qp] = value;
392}
unsigned int idx(const ElemType type, const unsigned int nx, const unsigned int i, const unsigned int j)

◆ setNodalValue() [2/2]

void MooseVariableDataBase< RealVectorValue >::setNodalValue ( const RealVectorValue &  value,
unsigned int  idx 
)
inherited

Definition at line 396 of file MooseVariableDataBase.C.

398{
399 auto & dof_values = _vector_tags_dof_u[_solution_tag];
400 for (decltype(idx) i = 0; i < dof_values.size(); ++i, ++idx)
401 dof_values[idx] = value(i);
402
403 _has_dof_values = true;
405}

◆ sizeMatrixTagData()

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

size matrix tag data

Definition at line 85 of file MooseVariableDataBase.C.

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

◆ sln()

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

Local solution getter.

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

Definition at line 314 of file MooseVariableDataBase.C.

315{
316 auto functor = [this](TagID tag_id) -> const FieldVariableValue &
317 { return vectorTagValue(tag_id); };
318
319 _var.requireQpComputations();
320
321 return const_cast<MooseVariableDataBase<OutputType> *>(this)
322 ->stateToTagHelper<FieldVariableValue>(state, functor);
323}
const FieldVariableValue & vectorTagValue(TagID tag) const
MooseArray< OutputType > FieldVariableValue

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

◆ 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 269 of file MooseVariableDataBase.C.

271{
272 if (state > 0)
273 {
274 // We need to request all states that are between current and the requested state
275 stateToTagHelper<ReturnType>(Moose::SolutionState(static_cast<int>(state) - 1), functor);
276 needSolutionState(cast_int<unsigned int>(state));
277 }
278
279 switch (state)
280 {
281 case Moose::Current:
283
284 case Moose::Old:
285 {
288 return functor(_old_solution_tag);
289 }
290
291 case Moose::Older:
292 {
295 return functor(_older_solution_tag);
296 }
297
299 {
302 return functor(_previous_nl_solution_tag);
303 }
304
305 default:
306 // We should never get here but gcc requires that we have a default. See
307 // htpps://stackoverflow.com/questions/18680378/after-defining-case-for-all-enum-values-compiler-still-says-control-reaches-e
308 mooseError("Unknown SolutionState!");
309 }
310}
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:204
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

◆ var()

template<typename OutputType >
const MooseLinearVariableFV< OutputType > & MooseVariableDataLinearFV< OutputType >::var ( ) const
overrideprotectedvirtual

Get the corresponding variable.

Reimplemented from MooseVariableDataBase< OutputType >.

Definition at line 191 of file MooseVariableDataLinearFV.C.

192{
193 return _var;
194}

◆ vectorTagDofValue() [1/2]

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

Definition at line 340 of file MooseVariableDataBase.C.

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

◆ vectorTagDofValue() [2/2]

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

Definition at line 196 of file MooseVariableDataBase.C.

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

◆ vectorTagGradient()

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

Definition at line 213 of file MooseVariableDataBase.C.

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

◆ vectorTagValue()

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

Definition at line 179 of file MooseVariableDataBase.C.

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

◆ zeroSizeDofValues()

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

Definition at line 716 of file MooseVariableDataBase.C.

717{
719 {
726 }
727
728 for (auto & dof_values : _vector_tags_dof_u)
729 dof_values.resize(0);
730
731 _has_dof_values = false;
732}

Friends And Related Symbol Documentation

◆ Moose::initDofIndices

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

Member Data Documentation

◆ _assembly

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

Reference to the system assembly of the variable.

Definition at line 158 of file MooseVariableDataLinearFV.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.

◆ _displaced

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

Whether this variable is being calculated on a displaced system.

Definition at line 180 of file MooseVariableDataLinearFV.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.

◆ _elem

template<typename OutputType >
const Elem* const& MooseVariableDataLinearFV< 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 169 of file MooseVariableDataLinearFV.h.

◆ _element_type

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

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

Definition at line 161 of file MooseVariableDataLinearFV.h.

◆ _fe_type

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

Reference to the variable's finite element type.

Definition at line 152 of file MooseVariableDataLinearFV.h.

◆ _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().

◆ _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.

◆ _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_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* MooseVariableDataLinearFV< OutputType >::_prev_elem = nullptr
mutableprivate

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

Definition at line 172 of file MooseVariableDataLinearFV.h.

Referenced by MooseVariableDataLinearFV< 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* MooseVariableDataLinearFV< OutputType >::_qrule
private

Pointer to the quadrature rule.

Definition at line 183 of file MooseVariableDataLinearFV.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.

◆ _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 MooseVariableDataLinearFV< OutputType >::_time_integrator
private

Pointer to time integrator.

Definition at line 164 of file MooseVariableDataLinearFV.h.

◆ _var

template<typename OutputType >
const MooseLinearVariableFV<OutputType>& MooseVariableDataLinearFV< OutputType >::_var
private

A const reference to the owning MooseLinearVariableFV object.

Definition at line 149 of file MooseVariableDataLinearFV.h.

◆ _var_num

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

The index of the variable in the system.

Definition at line 155 of file MooseVariableDataLinearFV.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: