https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
INSFVVelocityNoQpComputation Class Referenceabstract

#include <INSFVVelocityNoQpComputation.h>

Inheritance diagram for INSFVVelocityNoQpComputation:
[legend]

Public Types

typedef typename MooseVariableField< Real >::OutputGradient OutputGradient
 
typedef typename MooseVariableField< Real >::OutputSecond OutputSecond
 
typedef typename MooseVariableField< Real >::OutputDivergence OutputDivergence
 
typedef typename MooseVariableField< Real >::FieldVariableValue FieldVariableValue
 
typedef typename MooseVariableField< Real >::FieldVariableGradient FieldVariableGradient
 
typedef typename MooseVariableField< Real >::FieldVariableSecond FieldVariableSecond
 
typedef typename MooseVariableField< Real >::FieldVariableCurl FieldVariableCurl
 
typedef typename MooseVariableField< Real >::FieldVariableDivergence FieldVariableDivergence
 
typedef typename MooseVariableField< Real >::OutputShape OutputShape
 
typedef typename MooseVariableField< Real >::OutputShapeGradient OutputShapeGradient
 
typedef typename MooseVariableField< Real >::OutputShapeSecond OutputShapeSecond
 
typedef typename MooseVariableField< Real >::OutputShapeDivergence OutputShapeDivergence
 
typedef typename MooseVariableField< Real >::FieldVariablePhiValue FieldVariablePhiValue
 
typedef typename MooseVariableField< Real >::FieldVariablePhiDivergence FieldVariablePhiDivergence
 
typedef typename MooseVariableField< Real >::FieldVariablePhiGradient FieldVariablePhiGradient
 
typedef typename MooseVariableField< Real >::FieldVariablePhiSecond FieldVariablePhiSecond
 
typedef Moose::ElemQpArg ElemQpArg
 
typedef Moose::ElemSideQpArg ElemSideQpArg
 
typedef Moose::ElemArg ElemArg
 
typedef Moose::FaceArg FaceArg
 
typedef Moose::StateArg StateArg
 
typedef Moose::NodeArg NodeArg
 
typedef Moose::ElemPointArg ElemPointArg
 
typedef MooseArray< std::vector< OutputShape > > FieldVariablePhiCurl
 
typedef MooseArray< std::vector< OutputShape > > FieldVariableTestValue
 
typedef MooseArray< std::vector< OutputShapeGradient > > FieldVariableTestGradient
 
typedef MooseArray< std::vector< OutputShapeSecond > > FieldVariableTestSecond
 
typedef MooseArray< std::vector< OutputShape > > FieldVariableTestCurl
 
typedef MooseArray< std::vector< OutputShapeDivergence > > FieldVariableTestDivergence
 
typedef typename MooseVariableDataBase< Real >::DofValue DofValue
 
typedef typename MooseVariableDataBase< Real >::DofValues DofValues
 
typedef typename MooseVariableDataBase< Real >::ADDofValue ADDofValue
 
typedef typename MooseVariableDataBase< Real >::ADDofValues ADDofValues
 
typedef DataFileName DataFileParameterType
 
typedef FunctorBase< TFunctorType
 
typedef T ValueType
 
typedef typename FunctorReturnType< T, FunctorEvaluationKind::Gradient >::type GradientType
 
typedef ValueType DotType
 

Public Member Functions

 INSFVVelocityNoQpComputation (const InputParameters &params)
 
virtual void requireQpComputations () const override
 Set a selection of routines that are use Qp values to error to make sure Qp values are not being computed. More...
 
const MooseArray< ADReal > & adDofValues () const override
 
virtual const DofValuesdofValues () const override
 
virtual const DofValuesdofValuesOld () const override
 
virtual const DofValuesdofValuesDot () const override
 
const VectorValue< ADReal > & adGradSln (const Elem *const elem, const StateArg &time, bool correct_skewness=false) const override
 
const ADTemplateVariableGradient< Real > & adGradSln () const override
 
virtual VectorValue< ADRealadGradSln (const FaceInfo &fi, const StateArg &state, const bool correct_skewness=false) const
 
VectorValue< ADRealuncorrectedAdGradSln (const FaceInfo &fi, const StateArg &time, const bool correct_skewness=false) const override
 
void computeFaceValues (const FaceInfo &) override
 
void computeElemValues () override
 
void computeElemValuesFace () override
 
void computeNeighborValuesFace () override
 
void computeNeighborValues () override
 
virtual void initialSetup () override
 
virtual void timestepSetup () override
 
virtual void meshChanged () override
 
bool isSeparatorBoundary (const FaceInfo &fi) const
 
bool isExtrapolatedBoundaryFace (const FaceInfo &fi, const Elem *elem, const Moose::StateArg &time) const override
 
virtual bool isExtrapolatedBoundaryFace (const FaceInfo &, const Elem *, const StateArg &) const
 
virtual bool isFV () const override
 
virtual void prepare () override final
 
virtual void prepareNeighbor () override final
 
virtual void prepareAux () override final
 
virtual void reinitNode () override final
 
virtual void reinitNodes (const std::vector< dof_id_type > &) override final
 
virtual void reinitNodesNeighbor (const std::vector< dof_id_type > &) override final
 
virtual void reinitAux () override final
 
virtual void reinitAuxNeighbor () override final
 
virtual void prepareLowerD () override final
 
virtual const dof_id_typenodalDofIndex () const override final
 
virtual const dof_id_typenodalDofIndexNeighbor () const override final
 
virtual std::size_t phiSize () const override final
 
virtual std::size_t phiFaceSize () const override final
 
virtual std::size_t phiNeighborSize () const override final
 
virtual std::size_t phiFaceNeighborSize () const override final
 
virtual std::size_t phiLowerSize () const override final
 
virtual void computeLowerDValues () override final
 
virtual void computeNodalNeighborValues () override final
 
virtual void computeNodalValues () override final
 
virtual const std::vector< dof_id_type > & dofIndicesLower () const override final
 
unsigned int numberOfDofs () const override final
 
virtual unsigned int numberOfDofsNeighbor () override final
 
virtual bool isNodal () const override final
 
bool hasDoFsOnNodes () const override final
 
libMesh::FEContinuity getContinuity () const override final
 
virtual bool isNodalDefined () const override final
 
virtual void setNodalValue (const Real &value, unsigned int idx=0) override
 
virtual void setDofValue (const DofValue &value, unsigned int index) override
 
void clearDofIndices () override
 
virtual void prepareIC () override
 
virtual const Elem *const & currentElem () const override
 
virtual void getDofIndices (const Elem *elem, std::vector< dof_id_type > &dof_indices) const override
 
virtual const std::vector< dof_id_type > & dofIndices () const final
 
virtual const std::vector< dof_id_type > & dofIndicesNeighbor () const final
 
Moose::FV::InterpMethod faceInterpolationMethod () const
 
void clearAllDofIndices () final
 
const DofValuesnodalVectorTagValue (TagID) const override
 
const DofValuesnodalMatrixTagValue (TagID) const override
 
const FieldVariableValuevectorTagValue (TagID tag) const override
 
const DofValuesvectorTagDofValue (TagID tag) const override
 
const FieldVariableValuematrixTagValue (TagID tag) const override
 
const FieldVariableValuevectorTagValueNeighbor (TagID tag)
 
const FieldVariableValuematrixTagValueNeighbor (TagID tag)
 
const FieldVariableValueuDot () const
 
const FieldVariableValuesln () const override
 
const FieldVariableValueslnOld () const override
 
const FieldVariableValueslnOlder () const override
 
const FieldVariableGradientgradSln () const override
 
const FieldVariableGradientgradSlnOld () const override
 
const FieldVariableValueuDotNeighbor () const
 
const FieldVariableValueslnNeighbor () const override
 
const FieldVariableValueslnOldNeighbor () const override
 
const FieldVariableGradientgradSlnNeighbor () const override
 
const FieldVariableGradientgradSlnOldNeighbor () const override
 
const VariableValueduDotDu () const
 
const VariableValueduDotDotDu () const
 
const VariableValueduDotDuNeighbor () const
 
const VariableValueduDotDotDuNeighbor () const
 
const ADTemplateVariableValue< Real > & adSln () const override
 
ADReal getBoundaryFaceValue (const FaceInfo &fi, const StateArg &state, bool correct_skewness=false) const
 
const ADTemplateVariableSecond< Real > & adSecondSln () const override
 
const ADTemplateVariableValue< Real > & adUDot () const override
 
const ADTemplateVariableValue< Real > & adUDotDot () const override
 
const ADTemplateVariableGradient< Real > & adGradSlnDot () const override
 
const ADTemplateVariableCurl< Real > & adCurlSln () const override
 
const ADTemplateVariableValue< Real > & adSlnNeighbor () const override
 
const ADTemplateVariableGradient< Real > & adGradSlnNeighbor () const override
 
const ADTemplateVariableSecond< Real > & adSecondSlnNeighbor () const override
 
const ADTemplateVariableValue< Real > & adUDotNeighbor () const override
 
const ADTemplateVariableValue< Real > & adUDotDotNeighbor () const override
 
const ADTemplateVariableGradient< Real > & adGradSlnNeighborDot () const override
 
const ADTemplateVariableCurl< Real > & adCurlSlnNeighbor () const override
 
virtual void setDofValues (const DenseVector< DofValue > &values) override
 
virtual void setLowerDofValues (const DenseVector< DofValue > &values) override
 
DofValue getElementalValue (const Elem *elem, unsigned int idx=0) const
 
DofValue getElementalValueOld (const Elem *elem, unsigned int idx=0) const
 
DofValue getElementalValueOlder (const Elem *elem, unsigned int idx=0) const
 
virtual void insert (libMesh::NumericVector< libMesh::Number > &vector) override
 
virtual void insertLower (libMesh::NumericVector< libMesh::Number > &vector) override
 
virtual void add (libMesh::NumericVector< libMesh::Number > &vector) override
 
const DofValuesdofValuesOlder () const override
 
const DofValuesdofValuesPreviousNL () const override
 
const DofValuesdofValuesNeighbor () const override
 
const DofValuesdofValuesOldNeighbor () const override
 
const DofValuesdofValuesOlderNeighbor () const override
 
const DofValuesdofValuesPreviousNLNeighbor () const override
 
const DofValuesdofValuesDotNeighbor () const override
 
const DofValuesdofValuesDotOld () const override
 
const DofValuesdofValuesDotOldNeighbor () const override
 
const DofValuesdofValuesDotDot () const override
 
const DofValuesdofValuesDotDotNeighbor () const override
 
const DofValuesdofValuesDotDotOld () const override
 
const DofValuesdofValuesDotDotOldNeighbor () const override
 
const MooseArray< libMesh::Number > & dofValuesDuDotDu () const override
 
const MooseArray< libMesh::Number > & dofValuesDuDotDuNeighbor () const override
 
const MooseArray< libMesh::Number > & dofValuesDuDotDotDu () const override
 
const MooseArray< libMesh::Number > & dofValuesDuDotDotDuNeighbor () const override
 
const ADDofValuesadDofValuesNeighbor () const override
 
const ADDofValuesadDofValuesDot () const override
 
Real getValue (const Elem *elem) const
 
OutputTools< Real >::OutputGradient getGradient (const Elem *elem) const
 
bool hasDirichletBC () const
 
std::pair< bool, const FVDirichletBCBase * > getDirichletBC (const FaceInfo &fi) const
 
std::pair< bool, std::vector< const FVFluxBC * > > getFluxBCs (const FaceInfo &fi) const
 
virtual void residualSetup () override
 
virtual void jacobianSetup () override
 
ADReal getElemValue (const Elem *elem, const StateArg &state) const
 
void setActiveTags (const std::set< TagID > &vtags) override
 
virtual bool isDirichletBoundaryFace (const FaceInfo &fi, const Elem *elem, const Moose::StateArg &state) const
 
bool supportsFaceArg () const override final
 
bool supportsElemSideQpArg () const override final
 
virtual void sizeMatrixTagData () override
 
const MooseArray< Real > & nodalValueArray () const override
 
const MooseArray< Real > & nodalValueOldArray () const override
 
const MooseArray< Real > & nodalValueOlderArray () const override
 
bool computingSecond () const override final
 
bool computingCurl () const override final
 
bool computingDiv () const override final
 
bool usesSecondPhiNeighbor () const override final
 
const FieldVariablePhiValuephi () const override final
 
const FieldVariablePhiGradientgradPhi () const override final
 
const FieldVariablePhiSecondsecondPhi () const override final
 
const FieldVariablePhiValuecurlPhi () const override final
 
const FieldVariablePhiDivergencedivPhi () const override final
 
const FieldVariablePhiValuephiFace () const override final
 
const FieldVariablePhiGradientgradPhiFace () const override final
 
const FieldVariablePhiSecondsecondPhiFace () const override final
 
const FieldVariablePhiValuephiFaceNeighbor () const override final
 
const FieldVariablePhiGradientgradPhiFaceNeighbor () const override final
 
const FieldVariablePhiSecondsecondPhiFaceNeighbor () const override final
 
const FieldVariablePhiValuephiNeighbor () const override final
 
const FieldVariablePhiGradientgradPhiNeighbor () const override final
 
const FieldVariablePhiSecondsecondPhiNeighbor () const override final
 
virtual const FieldVariablePhiValuephiLower () const override
 
unsigned int oldestSolutionStateRequested () const override final
 
const bool & getTwoTermBoundaryExpansion () const
 
virtual Moose::VarFieldType fieldType () const override
 
virtual bool isArray () const override
 
virtual bool isVector () const override
 
bool usesPhiNeighbor () const
 
bool usesGradPhiNeighbor () const
 
bool hasBlocks (const SubdomainName &name) const
 
bool hasBlocks (const std::vector< SubdomainName > &names) const
 
bool hasBlocks (const std::set< SubdomainName > &names) const
 
bool hasBlocks (const std::vector< SubdomainID > &ids) const
 
bool hasBlocks (const std::set< SubdomainID > &ids) const
 
bool hasBlocks (const SubdomainID id) const override
 
const std::string & componentName (const unsigned int comp) const
 
const std::set< SubdomainID > & activeSubdomains () const
 
bool activeOnSubdomain (SubdomainID subdomain) const
 
bool activeOnSubdomains (const std::set< SubdomainID > &subdomains) const
 
virtual bool needsGradientVectorStorage () const
 
const std::string & arrayVariableComponent (const unsigned int i) const
 
unsigned int number () const
 
const libMesh::FETypefeType () const
 
SystemBasesys ()
 
const SystemBasesys () const
 
bool useDual () const
 
const std::vector< dof_id_type > & allDofIndices () const
 
unsigned int totalVarDofs ()
 
Moose::VarKindType kind () const
 
void scalingFactor (const std::vector< Real > &factor)
 
Real scalingFactor () const
 
const std::vector< Real > & arrayScalingFactor () const
 
libMesh::Order order () const
 
unsigned int count () const
 
const libMesh::DofMapdofMap () const
 
std::vector< dof_id_typecomponentDofIndices (const std::vector< dof_id_type > &dof_indices, unsigned int component) const
 
bool eigen () const
 
void eigen (bool eigen)
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const TgetParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const TqueryParam (const std::string &name) const
 
const TgetRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool haveParameter (const std::string &name) const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
const std::vector< SubdomainName > & blocks () const
 
unsigned int numBlocks () const
 
virtual const std::set< SubdomainID > & blockIDs () const
 
unsigned int blocksMaxDimension () const
 
bool isBlockSubset (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::vector< SubdomainID > &ids) const
 
bool hasBlockMaterialProperty (const std::string &prop_name)
 
const std::set< SubdomainID > & meshBlockIDs () const
 
virtual bool blockRestricted () const
 
virtual void checkVariable (const MooseVariableFieldBase &variable) const
 
void buildOutputHideVariableList (std::set< std::string > variable_names)
 
const std::set< OutputName > & getOutputs ()
 
virtual void subdomainSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
virtual void customSetup (const ExecFlagType &exec_type) override
 
const ExecFlagEnumgetExecuteOnEnum () const
 
FunctorReturnType< T, FET >::type genericEvaluate (const Space &r, const State &state) const
 
const MooseFunctorName & functorName () const
 
void setCacheClearanceSchedule (const std::set< ExecFlagType > &clearance_schedule)
 
bool isInternalFace (const FaceInfo &) const
 
virtual bool isConstant () const
 
virtual bool hasFaceSide (const FaceInfo &fi, const bool fi_elem_side) const override
 
void checkFace (const Moose::FaceArg &face) const
 
ValueType operator() (const ElemArg &elem, const StateArg &state) const
 
ValueType operator() (const FaceArg &face, const StateArg &state) const
 
ValueType operator() (const ElemQpArg &qp, const StateArg &state) const
 
ValueType operator() (const ElemSideQpArg &qp, const StateArg &state) const
 
ValueType operator() (const ElemPointArg &elem_point, const StateArg &state) const
 
ValueType operator() (const NodeArg &node, const StateArg &state) const
 
ValueType operator() (const ElemArg &elem, const StateArg &state) const
 
ValueType operator() (const FaceArg &face, const StateArg &state) const
 
ValueType operator() (const ElemQpArg &qp, const StateArg &state) const
 
ValueType operator() (const ElemSideQpArg &qp, const StateArg &state) const
 
ValueType operator() (const ElemPointArg &elem_point, const StateArg &state) const
 
ValueType operator() (const NodeArg &node, const StateArg &state) const
 
ValueType operator() (const ElemArg &elem, const StateArg &state) const
 
ValueType operator() (const FaceArg &face, const StateArg &state) const
 
ValueType operator() (const ElemQpArg &qp, const StateArg &state) const
 
ValueType operator() (const ElemSideQpArg &qp, const StateArg &state) const
 
ValueType operator() (const ElemPointArg &elem_point, const StateArg &state) const
 
ValueType operator() (const NodeArg &node, const StateArg &state) const
 
GradientType gradient (const ElemArg &elem, const StateArg &state) const
 
GradientType gradient (const FaceArg &face, const StateArg &state) const
 
GradientType gradient (const ElemQpArg &qp, const StateArg &state) const
 
GradientType gradient (const ElemSideQpArg &qp, const StateArg &state) const
 
GradientType gradient (const ElemPointArg &elem_point, const StateArg &state) const
 
GradientType gradient (const NodeArg &node, const StateArg &state) const
 
GradientType gradient (const ElemArg &elem, const StateArg &state) const
 
GradientType gradient (const FaceArg &face, const StateArg &state) const
 
GradientType gradient (const ElemQpArg &qp, const StateArg &state) const
 
GradientType gradient (const ElemSideQpArg &qp, const StateArg &state) const
 
GradientType gradient (const ElemPointArg &elem_point, const StateArg &state) const
 
GradientType gradient (const NodeArg &node, const StateArg &state) const
 
GradientType gradient (const ElemArg &elem, const StateArg &state) const
 
GradientType gradient (const FaceArg &face, const StateArg &state) const
 
GradientType gradient (const ElemQpArg &qp, const StateArg &state) const
 
GradientType gradient (const ElemSideQpArg &qp, const StateArg &state) const
 
GradientType gradient (const ElemPointArg &elem_point, const StateArg &state) const
 
GradientType gradient (const NodeArg &node, const StateArg &state) const
 
DotType dot (const ElemArg &elem, const StateArg &state) const
 
DotType dot (const FaceArg &face, const StateArg &state) const
 
DotType dot (const ElemQpArg &qp, const StateArg &state) const
 
DotType dot (const ElemSideQpArg &qp, const StateArg &state) const
 
DotType dot (const ElemPointArg &elem_point, const StateArg &state) const
 
DotType dot (const NodeArg &node, const StateArg &state) const
 
DotType dot (const ElemArg &elem, const StateArg &state) const
 
DotType dot (const FaceArg &face, const StateArg &state) const
 
DotType dot (const ElemQpArg &qp, const StateArg &state) const
 
DotType dot (const ElemSideQpArg &qp, const StateArg &state) const
 
DotType dot (const ElemPointArg &elem_point, const StateArg &state) const
 
DotType dot (const NodeArg &node, const StateArg &state) const
 
DotType dot (const ElemArg &elem, const StateArg &state) const
 
DotType dot (const FaceArg &face, const StateArg &state) const
 
DotType dot (const ElemQpArg &qp, const StateArg &state) const
 
DotType dot (const ElemSideQpArg &qp, const StateArg &state) const
 
DotType dot (const ElemPointArg &elem_point, const StateArg &state) const
 
DotType dot (const NodeArg &node, const StateArg &state) const
 
GradientType gradDot (const ElemArg &elem, const StateArg &state) const
 
GradientType gradDot (const FaceArg &face, const StateArg &state) const
 
GradientType gradDot (const ElemQpArg &qp, const StateArg &state) const
 
GradientType gradDot (const ElemSideQpArg &qp, const StateArg &state) const
 
GradientType gradDot (const ElemPointArg &elem_point, const StateArg &state) const
 
GradientType gradDot (const NodeArg &node, const StateArg &state) const
 
GradientType gradDot (const ElemArg &elem, const StateArg &state) const
 
GradientType gradDot (const FaceArg &face, const StateArg &state) const
 
GradientType gradDot (const ElemQpArg &qp, const StateArg &state) const
 
GradientType gradDot (const ElemSideQpArg &qp, const StateArg &state) const
 
GradientType gradDot (const ElemPointArg &elem_point, const StateArg &state) const
 
GradientType gradDot (const NodeArg &node, const StateArg &state) const
 
GradientType gradDot (const ElemArg &elem, const StateArg &state) const
 
GradientType gradDot (const FaceArg &face, const StateArg &state) const
 
GradientType gradDot (const ElemQpArg &qp, const StateArg &state) const
 
GradientType gradDot (const ElemSideQpArg &qp, const StateArg &state) const
 
GradientType gradDot (const ElemPointArg &elem_point, const StateArg &state) const
 
GradientType gradDot (const NodeArg &node, const StateArg &state) const
 
const MooseArray< GenericReal< is_ad > > & genericDofValues () const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 

Protected Member Functions

ADReal getExtrapolatedBoundaryFaceValue (const FaceInfo &fi, bool two_term_expansion, bool correct_skewness, const Elem *elem_side_to_extrapolate_from, const StateArg &time) const override
 
bool isFullyDevelopedFlowFace (const FaceInfo &fi) const
 Returns whether the passed-in FaceInfo corresponds to a fully-developed flow face. More...
 
void cacheSeparatorBoundaries ()
 Caches the separator boundaries. More...
 
virtual ADReal getDirichletBoundaryFaceValue (const FaceInfo &fi, const Elem *elem, const Moose::StateArg &state) const
 
void clearCaches ()
 
const libMesh::NumericVector< libMesh::Number > & getSolution (const Moose::StateArg &state) const
 
bool doDerivatives () const
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
virtual bool hasBlockMaterialPropertyHelper (const std::string &prop_name)
 
void initializeBlockRestrictable (const MooseObject *moose_object)
 
void initializeKokkosBlockRestrictable ()
 
Moose::CoordinateSystemType getBlockCoordSystem ()
 
KOKKOS_FUNCTION dof_id_type numKokkosBlockElements () const
 
KOKKOS_FUNCTION dof_id_type numKokkosBlockNodes () const
 
KOKKOS_FUNCTION dof_id_type numKokkosBlockSides () const
 
KOKKOS_FUNCTION ContiguousElementID kokkosBlockElementID (Moose::Kokkos::ThreadID tid) const
 
KOKKOS_FUNCTION ContiguousElementID kokkosBlockNodeID (Moose::Kokkos::ThreadID tid) const
 
KOKKOS_FUNCTION auto kokkosBlockElementSideID (Moose::Kokkos::ThreadID tid) const
 
virtual GradientType evaluateGradient (const ElemSideQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemPointArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const NodeArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemSideQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemPointArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const NodeArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const FaceArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemSideQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const ElemPointArg &, const StateArg &) const
 
virtual GradientType evaluateGradient (const NodeArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemSideQpArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemPointArg &, const StateArg &) const
 
virtual DotType evaluateDot (const NodeArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemSideQpArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemPointArg &, const StateArg &) const
 
virtual DotType evaluateDot (const NodeArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemArg &, const StateArg &) const
 
virtual DotType evaluateDot (const FaceArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemQpArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemSideQpArg &, const StateArg &) const
 
virtual DotType evaluateDot (const ElemPointArg &, const StateArg &) const
 
virtual DotType evaluateDot (const NodeArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const FaceArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemSideQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemPointArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const NodeArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const FaceArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemSideQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemPointArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const NodeArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const FaceArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemSideQpArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const ElemPointArg &, const StateArg &) const
 
virtual GradientType evaluateGradDot (const NodeArg &, const StateArg &) const
 
virtual ValueType evaluate (const ElemArg &elem, const StateArg &state) const=0
 
virtual ValueType evaluate (const FaceArg &face, const StateArg &state) const=0
 
virtual ValueType evaluate (const ElemQpArg &qp, const StateArg &state) const=0
 
virtual ValueType evaluate (const ElemSideQpArg &side_qp, const StateArg &state) const=0
 
virtual ValueType evaluate (const ElemPointArg &elem_point, const StateArg &state) const=0
 
virtual ValueType evaluate (const NodeArg &node, const StateArg &state) const=0
 

Protected Attributes

std::unordered_map< BoundaryID, const INSFVHydraulicSeparatorInterface * > _boundary_id_to_separator
 A container for quick access of hydraulic separator BCs associated with this variable. More...
 
 usingMooseVariableFieldMembers
 
std::unique_ptr< MooseVariableDataFV< Real > > _element_data
 
std::unique_ptr< MooseVariableDataFV< Real > > _neighbor_data
 
std::unordered_map< const Elem *, VectorValue< ADReal > > _elem_to_grad
 
bool _two_term_boundary_expansion
 
VectorValue< ADReal_temp_cell_gradient
 
const bool _cache_cell_gradients
 
Moose::FV::InterpMethod _face_interp_method
 
SystemBase_sys
 
libMesh::FEType _fe_type
 
unsigned int _var_num
 
unsigned int _index
 
bool _is_eigen
 
Moose::VarKindType _var_kind
 
SubProblem_subproblem
 
const libMesh::Variable_variable
 
Assembly_assembly
 
const libMesh::DofMap_dof_map
 
std::vector< dof_id_type_dof_indices
 
MooseMesh_mesh
 
THREAD_ID _tid
 
const unsigned int _count
 
std::vector< Real_scaling_factor
 
bool _use_dual
 
bool _is_lower_d
 
std::vector< std::string > _array_var_component_names
 
const bool & _enabled
 
MooseApp_app
 
Factory_factory
 
ActionFactory_action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters_pars
 
const MaterialData_blk_material_data
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
FEProblemBase_mci_feproblem
 
const TimeIntegrator *const _time_integrator
 
ADReal _ad_real_dummy
 
const Parallel::Communicator & _communicator
 

Detailed Description

Definition at line 16 of file INSFVVelocityNoQpComputation.h.

Constructor & Destructor Documentation

◆ INSFVVelocityNoQpComputation()

INSFVVelocityNoQpComputation::INSFVVelocityNoQpComputation ( const InputParameters params)

Definition at line 14 of file INSFVVelocityNoQpComputation.C.

15  : INSFVVelocityVariable(params)
16 {
17 }
INSFVVelocityVariable(const InputParameters &params)

Member Function Documentation

◆ adDofValues()

const MooseArray<ADReal>& INSFVVelocityNoQpComputation::adDofValues ( ) const
inlineoverridevirtual

Reimplemented from MooseVariableFV< Real >.

Definition at line 28 of file INSFVVelocityNoQpComputation.h.

29  {
30  mooseError("Qp-calculations should not be requested");
31  }
void mooseError(Args &&... args) const

◆ adGradSln()

const VectorValue< ADReal > & INSFVVelocityVariable::adGradSln ( const Elem *const  elem,
const StateArg time,
bool  correct_skewness = false 
) const
overridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 128 of file INSFVVelocityVariable.C.

Referenced by INSFVMixingLengthTurbulentViscosityAux::computeValue().

131 {
132  VectorValue<ADReal> * value_pointer = &_temp_cell_gradient;
133 
134  // We ensure that no caching takes place when we compute skewness-corrected
135  // quantities.
136  if (_cache_cell_gradients && !correct_skewness && time.state == 0)
137  {
138  auto it = _elem_to_grad.find(elem);
139 
140  if (it != _elem_to_grad.end())
141  return it->second;
142  }
143 
144  ADReal elem_value = getElemValue(elem, time);
145 
146  // We'll save off the extrapolated boundary faces (ebf) for later assignment to the cache (these
147  // are the keys). The boolean in the pair will denote whether the ebf face is a fully developed
148  // flow (e.g. fdf) face
149  std::vector<std::pair<const FaceInfo *, bool>> ebf_faces;
150 
151  try
152  {
153  VectorValue<ADReal> & grad = *value_pointer;
154 
155  bool volume_set = false;
156  Real volume = 0;
157 
158  // If we are performing a two term Taylor expansion for extrapolated boundary faces (faces on
159  // boundaries that do not have associated Dirichlet conditions), then the element gradient
160  // depends on the boundary face value and the boundary face value depends on the element
161  // gradient, so we have a system of equations to solve. Here is the system:
162  //
163  // \nabla \phi_C - \frac{1}{V} \sum_{ebf} \phi_{ebf} \vec{S_f} =
164  // \frac{1}{V} \sum_{of} \phi_{of} \vec{S_f} eqn.
165  // 1
166  //
167  // \phi_{ebf} - \vec{d_{Cf}} \cdot \nabla \phi_C = \phi_C eqn.
168  // 2
169  //
170  // where $C$ refers to the cell centroid, $ebf$ refers to an extrapolated boundary face, $of$
171  // refers to "other faces", e.g. non-ebf faces, and $f$ is a general face. $d_{Cf}$ is the
172  // vector drawn from the element centroid to the face centroid, and $\vec{S_f}$ is the surface
173  // vector, e.g. the face area times the outward facing normal
174  //
175  // NOTE: On fully developed flow boundaries, we modify our equation set slightly. In equation
176  // 2,
177  // $\nabla \phi_C$ is replaced with $\nabla \phi_{ebf,fdf}$ where $fdf$ denotes fully
178  // developed flow. Moreover, we introduce a third equation:
179  //
180  // \nabla \phi_{ebf,fdf} - \nabla \phi_C + (\nabla \phi_C \cdot \hat{n}) \hat{n} = 0 eqn.
181  // 3
182  //
183  // These modifications correspond to Moukalled's equations 15.140 and 15.141, but with
184  // $\hat{e_b}$ replaced with $\hat{n}$ because we believe the equation as written doesn't
185  // reflect the intent of the text, which is to guarantee a zero normal gradient in the
186  // direction of the surface normal
187 
188  // ebf eqns: element gradient coefficients, e.g. eqn. 2, LHS term 2 coefficient. *Note* that
189  // each element of the std::vector could correspond to a cell centroid gradient or to a face
190  // gradient computed on a fully developed flow face
191  std::vector<VectorValue<Real>> ebf_grad_coeffs;
192  // ebf eqns: rhs b values. These will actually correspond to the elem_value so we can use a
193  // pointer and avoid copying. This is the RHS of eqn. 2
194  std::vector<const ADReal *> ebf_b;
195 
196  // elem grad eqns: ebf coefficients, e.g. eqn. 1, LHS term 2 coefficients
197  std::vector<VectorValue<Real>> grad_ebf_coeffs;
198  // elem grad eqns: rhs b value, e.g. eqn. 1 RHS
199  VectorValue<ADReal> grad_b = 0;
200 
201  // eqn. 3 coefficients for cell centroid gradient, e.g. the coefficients that fall out of term
202  // 2 on the LHS of eqn. 3
203  std::vector<TensorValue<Real>> fdf_grad_centroid_coeffs;
204 
205  const unsigned int lm_dim = LIBMESH_DIM;
206 
207  auto action_functor = [&volume_set,
208  &volume,
209  &elem_value,
210 #ifndef NDEBUG
211  &elem,
212 #endif
213  &ebf_faces,
214  &ebf_grad_coeffs,
215  &ebf_b,
216  &grad_ebf_coeffs,
217  &grad_b,
218  &fdf_grad_centroid_coeffs,
219  correct_skewness,
220  &time,
221  this](const Elem & functor_elem,
222  const Elem * const neighbor,
223  const FaceInfo * const fi,
224  const Point & surface_vector,
225  Real coord,
226  const bool elem_has_info)
227  {
228  mooseAssert(fi, "We need a FaceInfo for this action_functor");
229  mooseAssert(elem == &functor_elem,
230  "Just a sanity check that the element being passed in is the one we passed out.");
231 
232  if (isExtrapolatedBoundaryFace(*fi, &functor_elem, time))
233  {
235  {
236  const bool fdf_face = isFullyDevelopedFlowFace(*fi);
237  ebf_faces.push_back(std::make_pair(fi, fdf_face));
238 
239  // eqn. 2
240  ebf_grad_coeffs.push_back(-1. * (elem_has_info
241  ? (fi->faceCentroid() - fi->elemCentroid())
242  : (fi->faceCentroid() - fi->neighborCentroid())));
243  ebf_b.push_back(&elem_value);
244 
245  // eqn. 1
246  grad_ebf_coeffs.push_back(-surface_vector);
247 
248  // eqn. 3
249  if (fdf_face)
250  {
251  // Will be nice in C++17 we'll get a returned reference from this method
252  fdf_grad_centroid_coeffs.emplace_back();
253  auto & current_coeffs = fdf_grad_centroid_coeffs.back();
254  const auto normal = fi->normal();
255  for (const auto i : make_range(lm_dim))
256  for (const auto j : make_range(lm_dim))
257  {
258  auto & current_coeff = current_coeffs(i, j);
259  current_coeff = normal(i) * normal(j);
260  if (i == j)
261  current_coeff -= 1.;
262  }
263  }
264  }
265  else
266  // We are doing a one-term expansion for the extrapolated boundary faces, in which case
267  // we have no eqn. 2 and we have no second term in the LHS of eqn. 1. Instead we apply
268  // the element centroid value as the face value (one-term expansion) in the RHS of eqn.
269  // 1
270  grad_b += surface_vector * elem_value;
271  }
272  else if (isInternalFace(*fi))
273  grad_b +=
274  surface_vector * (*this)(Moose::FaceArg({fi,
276  true,
277  correct_skewness,
278  nullptr,
279  nullptr}),
280  time);
281  else
282  {
283  mooseAssert(isDirichletBoundaryFace(*fi, &functor_elem, time),
284  "We've run out of face types");
285  grad_b += surface_vector * getDirichletBoundaryFaceValue(*fi, &functor_elem, time);
286  }
287 
288  if (!volume_set)
289  {
290  // We use the FaceInfo volumes because those values have been pre-computed and cached.
291  // An explicit call to elem->volume() here would incur unnecessary expense
292  if (elem_has_info)
293  {
295  this->_subproblem, functor_elem.subdomain_id(), fi->elemCentroid(), coord);
296  volume = fi->elemVolume() * coord;
297  }
298  else
299  {
301  this->_subproblem, neighbor->subdomain_id(), fi->neighborCentroid(), coord);
302  volume = fi->neighborVolume() * coord;
303  }
304 
305  volume_set = true;
306  }
307  };
308 
309  Moose::FV::loopOverElemFaceInfo(*elem, this->_mesh, this->_subproblem, action_functor);
310 
311  mooseAssert(volume_set && volume > 0, "We should have set the volume");
312  grad_b /= volume;
313 
314  const auto coord_system = this->_subproblem.getCoordSystem(elem->subdomain_id());
315  if (coord_system == Moose::CoordinateSystemType::COORD_RZ)
316  {
317  const auto r_coord = this->_subproblem.getAxisymmetricRadialCoord();
318  grad_b(r_coord) -= elem_value / elem->vertex_average()(r_coord);
319  }
320 
321  mooseAssert(
322  coord_system != Moose::CoordinateSystemType::COORD_RSPHERICAL,
323  "We have not yet implemented the correct translation from gradient to divergence for "
324  "spherical coordinates yet.");
325 
326  mooseAssert(
327  ebf_faces.size() < UINT_MAX,
328  "You've created a mystical element that has more faces than can be held by unsigned "
329  "int. I applaud you.");
330  const auto num_ebfs = static_cast<unsigned int>(ebf_faces.size());
331 
332  // test for simple case
333  if (num_ebfs == 0)
334  grad = grad_b;
335  else
336  {
337  // We have to solve a system
338  const unsigned int sys_dim =
339  lm_dim + num_ebfs + lm_dim * static_cast<unsigned int>(fdf_grad_centroid_coeffs.size());
340  DenseVector<ADReal> x(sys_dim), b(sys_dim);
341  DenseMatrix<ADReal> A(sys_dim, sys_dim);
342 
343  // eqn. 1
344  for (const auto lm_dim_index : make_range(lm_dim))
345  {
346  // LHS term 1 coeffs
347  A(lm_dim_index, lm_dim_index) = 1;
348 
349  // LHS term 2 coeffs
350  for (const auto ebf_index : make_range(num_ebfs))
351  A(lm_dim_index, lm_dim + ebf_index) = grad_ebf_coeffs[ebf_index](lm_dim_index) / volume;
352 
353  // RHS
354  b(lm_dim_index) = grad_b(lm_dim_index);
355  }
356 
357  unsigned int num_fdf_faces = 0;
358 
359  // eqn. 2
360  for (const auto ebf_index : make_range(num_ebfs))
361  {
362  // LHS term 1 coeffs
363  A(lm_dim + ebf_index, lm_dim + ebf_index) = 1;
364 
365  const bool fdf_face = ebf_faces[ebf_index].second;
366  const unsigned int starting_j_index =
367  fdf_face ? lm_dim + num_ebfs + num_fdf_faces * lm_dim : 0;
368 
369  num_fdf_faces += fdf_face;
370 
371  // LHS term 2 coeffs
372  for (const auto lm_dim_index : make_range(lm_dim))
373  A(lm_dim + ebf_index, starting_j_index + lm_dim_index) =
374  ebf_grad_coeffs[ebf_index](lm_dim_index);
375 
376  // RHS
377  b(lm_dim + ebf_index) = *ebf_b[ebf_index];
378  }
379 
380  mooseAssert(num_fdf_faces == fdf_grad_centroid_coeffs.size(),
381  "Bad math in INSFVVelocityVariable::adGradlnSln(const Elem *). Please contact a "
382  "MOOSE developer");
383 
384  // eqn. 3
385  for (const auto fdf_face_index : make_range(num_fdf_faces))
386  {
387  const auto starting_i_index = lm_dim + num_ebfs + fdf_face_index * lm_dim;
388 
389  for (const auto lm_dim_i_index : make_range(lm_dim))
390  {
391  auto i_index = starting_i_index + lm_dim_i_index;
392  A(i_index, i_index) = 1;
393 
394  for (const auto lm_dim_j_index : make_range(lm_dim))
395  // j_index = lm_dim_j_index
396  A(i_index, lm_dim_j_index) =
397  fdf_grad_centroid_coeffs[fdf_face_index](lm_dim_i_index, lm_dim_j_index);
398  }
399  }
400 
401  A.lu_solve(b, x);
402  for (const auto lm_dim_index : make_range(lm_dim))
403  grad(lm_dim_index) = x(lm_dim_index);
404  }
405 
406  if (_cache_cell_gradients && !correct_skewness)
407  {
408  auto pr = _elem_to_grad.emplace(elem, std::move(grad));
409  mooseAssert(pr.second, "Insertion should have just happened.");
410  return pr.first->second;
411  }
412  else
413  return grad;
414  }
415  catch (std::exception & e)
416  {
417  // Don't ignore any *real* errors; we only handle matrix
418  // singularity here
419  if (!strstr(e.what(), "singular"))
420  throw;
421 
422  // Retry without two-term
423  mooseAssert(_two_term_boundary_expansion,
424  "I believe we should only get singular systems when two-term boundary expansion is "
425  "being used");
426  const_cast<INSFVVelocityVariable *>(this)->_two_term_boundary_expansion = false;
427  const auto & grad = adGradSln(elem, time, correct_skewness);
428 
429  // Two term boundary expansion should only fail at domain corners. We want to keep trying it
430  // at other boundary locations
431  const_cast<INSFVVelocityVariable *>(this)->_two_term_boundary_expansion = true;
432 
433  return grad;
434  }
435 }
void loopOverElemFaceInfo(const Elem &elem, const MooseMesh &mesh, ActionFunctor &act, const Moose::CoordinateSystemType coord_type, const unsigned int rz_radial_coord=libMesh::invalid_uint)
unsigned int getAxisymmetricRadialCoord() const
const bool _cache_cell_gradients
void coordTransformFactor(const SubProblem &s, SubdomainID sub_id, const P &point, C &factor, SubdomainID neighbor_sub_id=libMesh::Elem::invalid_subdomain_id)
VectorValue< ADReal > _temp_cell_gradient
ADReal getElemValue(const Elem *elem, const StateArg &state) const
DualNumber< Real, DNDerivativeType, false > ADReal
bool isExtrapolatedBoundaryFace(const FaceInfo &fi, const Elem *elem, const Moose::StateArg &time) const override
Definition: INSFVVariable.C:92
virtual bool isDirichletBoundaryFace(const FaceInfo &fi, const Elem *elem, const Moose::StateArg &state) const
bool isInternalFace(const FaceInfo &) const
SubProblem & _subproblem
const std::vector< double > x
Real volume(const MeshBase &mesh, unsigned int dim=libMesh::invalid_uint)
std::string grad(const std::string &var)
Definition: NS.h:92
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)
virtual ADReal getDirichletBoundaryFaceValue(const FaceInfo &fi, const Elem *elem, const Moose::StateArg &state) const
Moose::CoordinateSystemType getCoordSystem(SubdomainID sid) const
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
bool isFullyDevelopedFlowFace(const FaceInfo &fi) const
Returns whether the passed-in FaceInfo corresponds to a fully-developed flow face.
std::unordered_map< const Elem *, VectorValue< ADReal > > _elem_to_grad
const ADTemplateVariableGradient< Real > & adGradSln() const override

◆ cacheSeparatorBoundaries()

void INSFVVariable::cacheSeparatorBoundaries ( )
protectedinherited

Caches the separator boundaries.

Definition at line 35 of file INSFVVariable.C.

Referenced by INSFVVariable::initialSetup(), INSFVVariable::meshChanged(), and INSFVVariable::timestepSetup().

36 {
38  std::vector<FVFluxBC *> bcs;
39 
40  const auto base_query = this->_subproblem.getMooseApp()
41  .theWarehouse()
42  .query()
43  .template condition<AttribSystem>("FVFluxBC")
44  .template condition<AttribThread>(_tid);
45 
46  for (const auto bnd_id : this->_mesh.getBoundaryIDs())
47  {
48  auto base_query_copy = base_query;
49  base_query_copy.template condition<AttribBoundaries>(std::set<BoundaryID>({bnd_id}))
50  .queryInto(bcs);
51  for (const auto bc : bcs)
52  {
53  const auto separator = dynamic_cast<const INSFVHydraulicSeparatorInterface *>(bc);
54  if (separator)
55  _boundary_id_to_separator.emplace(bnd_id, separator);
56  }
57  }
58 }
MooseApp & getMooseApp() const
std::unordered_map< BoundaryID, const INSFVHydraulicSeparatorInterface * > _boundary_id_to_separator
A container for quick access of hydraulic separator BCs associated with this variable.
Definition: INSFVVariable.h:56
SubProblem & _subproblem
Query query()
A base class which serves as a tag for hydraulic separators.
TheWarehouse & theWarehouse()
std::vector< BoundaryID > getBoundaryIDs(const Elem *const elem, const unsigned short int side) const

◆ computeElemValues()

void INSFVVariable::computeElemValues ( )
inlineoverridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 73 of file INSFVVariable.h.

74 {
75  if (_qp_calculations)
77  else
78  _element_data->setGeometry(Moose::Volume);
79 }
bool _qp_calculations
Whether to pre-initialize variable data for use in traditional MOOSE quadrature point based objects...
Definition: INSFVVariable.h:62
std::unique_ptr< MooseVariableDataFV< Real > > _element_data
virtual void computeElemValues() override

◆ computeElemValuesFace()

void INSFVVariable::computeElemValuesFace ( )
inlineoverridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 82 of file INSFVVariable.h.

83 {
84  if (_qp_calculations)
86 }
bool _qp_calculations
Whether to pre-initialize variable data for use in traditional MOOSE quadrature point based objects...
Definition: INSFVVariable.h:62
virtual void computeElemValuesFace() override

◆ computeFaceValues()

void INSFVVariable::computeFaceValues ( const FaceInfo fi)
inlineoverridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 66 of file INSFVVariable.h.

67 {
68  if (_qp_calculations)
70 }
bool _qp_calculations
Whether to pre-initialize variable data for use in traditional MOOSE quadrature point based objects...
Definition: INSFVVariable.h:62
virtual void computeFaceValues(const FaceInfo &fi) override

◆ computeNeighborValues()

void INSFVVariable::computeNeighborValues ( )
inlineoverridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 96 of file INSFVVariable.h.

97 {
98  if (_qp_calculations)
100 }
virtual void computeNeighborValues() override
bool _qp_calculations
Whether to pre-initialize variable data for use in traditional MOOSE quadrature point based objects...
Definition: INSFVVariable.h:62

◆ computeNeighborValuesFace()

void INSFVVariable::computeNeighborValuesFace ( )
inlineoverridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 89 of file INSFVVariable.h.

90 {
91  if (_qp_calculations)
93 }
bool _qp_calculations
Whether to pre-initialize variable data for use in traditional MOOSE quadrature point based objects...
Definition: INSFVVariable.h:62
virtual void computeNeighborValuesFace() override

◆ dofValues()

virtual const DofValues& INSFVVelocityNoQpComputation::dofValues ( ) const
inlineoverridevirtual

Reimplemented from MooseVariableFV< Real >.

Definition at line 32 of file INSFVVelocityNoQpComputation.h.

33  {
34  mooseError("Qp-calculations should not be requested");
35  }
void mooseError(Args &&... args) const

◆ dofValuesDot()

virtual const DofValues& INSFVVelocityNoQpComputation::dofValuesDot ( ) const
inlineoverridevirtual

Reimplemented from MooseVariableFV< Real >.

Definition at line 40 of file INSFVVelocityNoQpComputation.h.

41  {
42  mooseError("Qp-calculations should not be requested");
43  }
void mooseError(Args &&... args) const

◆ dofValuesOld()

virtual const DofValues& INSFVVelocityNoQpComputation::dofValuesOld ( ) const
inlineoverridevirtual

Reimplemented from MooseVariableFV< Real >.

Definition at line 36 of file INSFVVelocityNoQpComputation.h.

37  {
38  mooseError("Qp-calculations should not be requested");
39  }
void mooseError(Args &&... args) const

◆ getExtrapolatedBoundaryFaceValue()

ADReal INSFVVelocityVariable::getExtrapolatedBoundaryFaceValue ( const FaceInfo fi,
bool  two_term_expansion,
bool  correct_skewness,
const Elem *  elem_side_to_extrapolate_from,
const StateArg time 
) const
overrideprotectedvirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 70 of file INSFVVelocityVariable.C.

75 {
76  ADReal boundary_value;
77  bool elem_to_extrapolate_from_is_fi_elem;
78  std::tie(elem_to_extrapolate_from, elem_to_extrapolate_from_is_fi_elem) =
79  [this, &fi, elem_to_extrapolate_from]() -> std::pair<const Elem *, bool>
80  {
81  if (elem_to_extrapolate_from)
82  return {elem_to_extrapolate_from, elem_to_extrapolate_from == &fi.elem()};
83  else
84  {
85  const auto [elem_guaranteed_to_have_dofs,
86  other_elem,
87  elem_guaranteed_to_have_dofs_is_fi_elem] =
89  libmesh_ignore(other_elem);
90  return {elem_guaranteed_to_have_dofs, elem_guaranteed_to_have_dofs_is_fi_elem};
91  }
92  }();
93 
94  if (two_term_expansion && isFullyDevelopedFlowFace(fi))
95  {
96  const Point vector_to_face = elem_to_extrapolate_from_is_fi_elem
97  ? (fi.faceCentroid() - fi.elemCentroid())
98  : (fi.faceCentroid() - fi.neighborCentroid());
99  boundary_value = uncorrectedAdGradSln(fi, time, correct_skewness) * vector_to_face +
100  getElemValue(elem_to_extrapolate_from, time);
101  }
102  else
104  fi, two_term_expansion, correct_skewness, elem_to_extrapolate_from, time);
105 
106  return boundary_value;
107 }
std::tuple< const Elem *, const Elem *, bool > determineElemOneAndTwo(const FaceInfo &fi, const FVVar &var)
const Elem & elem() const
const Point & faceCentroid() const
const Point & neighborCentroid() const
ADReal getElemValue(const Elem *elem, const StateArg &state) const
DualNumber< Real, DNDerivativeType, false > ADReal
void libmesh_ignore(const Args &...)
const Point & elemCentroid() const
VectorValue< ADReal > uncorrectedAdGradSln(const FaceInfo &fi, const StateArg &time, const bool correct_skewness=false) const override
virtual ADReal getExtrapolatedBoundaryFaceValue(const FaceInfo &fi, bool two_term_expansion, bool correct_skewness, const Elem *elem_side_to_extrapolate_from, const StateArg &state) const
bool isFullyDevelopedFlowFace(const FaceInfo &fi) const
Returns whether the passed-in FaceInfo corresponds to a fully-developed flow face.

◆ initialSetup()

void INSFVVariable::initialSetup ( )
overridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Reimplemented in BernoulliPressureVariable.

Definition at line 75 of file INSFVVariable.C.

Referenced by BernoulliPressureVariable::initialSetup().

76 {
79 }
virtual void initialSetup() override
void cacheSeparatorBoundaries()
Caches the separator boundaries.
Definition: INSFVVariable.C:35

◆ isExtrapolatedBoundaryFace()

bool INSFVVariable::isExtrapolatedBoundaryFace ( const FaceInfo fi,
const Elem *  elem,
const Moose::StateArg time 
) const
overridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Reimplemented in PiecewiseConstantVariable.

Definition at line 92 of file INSFVVariable.C.

Referenced by INSFVVelocityVariable::adGradSln().

95 {
96  if (isDirichletBoundaryFace(fi, elem, time))
97  return false;
98  if (!isInternalFace(fi))
99  // We are neither a Dirichlet nor an internal face
100  return true;
101 
102  // If we got here, then we're definitely on an internal face
103  if (isSeparatorBoundary(fi))
104  return true;
105 
106  return false;
107 }
bool isSeparatorBoundary(const FaceInfo &fi) const
Definition: INSFVVariable.C:82
virtual bool isDirichletBoundaryFace(const FaceInfo &fi, const Elem *elem, const Moose::StateArg &state) const
bool isInternalFace(const FaceInfo &) const

◆ isFullyDevelopedFlowFace()

bool INSFVVariable::isFullyDevelopedFlowFace ( const FaceInfo fi) const
protectedinherited

Returns whether the passed-in FaceInfo corresponds to a fully-developed flow face.

Definition at line 110 of file INSFVVariable.C.

Referenced by INSFVVelocityVariable::adGradSln(), INSFVVelocityVariable::getExtrapolatedBoundaryFaceValue(), and INSFVVelocityVariable::uncorrectedAdGradSln().

111 {
112  const auto & face_type = fi.faceType(std::make_pair(this->number(), this->sys().number()));
113 
114  mooseAssert(face_type != FaceInfo::VarFaceNeighbors::NEITHER,
115  "I'm concerned that if you're calling this method with a FaceInfo that doesn't have "
116  "this variable defined on either side, that you are doing something dangerous.");
117 
118  // If we're defined on both sides of the face, then we're not a boundary face
119  if (face_type == FaceInfo::VarFaceNeighbors::BOTH)
120  return false;
121 
122  std::vector<INSFVFullyDevelopedFlowBC *> bcs;
123 
124  this->_subproblem.getMooseApp()
125  .theWarehouse()
126  .query()
127  .template condition<AttribINSFVBCs>(INSFVBCs::INSFVFullyDevelopedFlowBC)
128  .template condition<AttribBoundaries>(fi.boundaryIDs())
129  .queryInto(bcs);
130 
131  return !bcs.empty();
132 }
const std::set< BoundaryID > & boundaryIDs() const
unsigned int number() const
MooseApp & getMooseApp() const
SubProblem & _subproblem
Query query()
TheWarehouse & theWarehouse()
VarFaceNeighbors faceType(const std::pair< unsigned int, unsigned int > &var_sys) const

◆ isSeparatorBoundary()

bool INSFVVariable::isSeparatorBoundary ( const FaceInfo fi) const
inherited

Definition at line 82 of file INSFVVariable.C.

Referenced by BernoulliPressureVariable::isDirichletBoundaryFace(), BernoulliPressureVariable::isExtrapolatedBoundaryFace(), and INSFVVariable::isExtrapolatedBoundaryFace().

83 {
84  for (const auto bid : fi.boundaryIDs())
85  if (_boundary_id_to_separator.count(bid))
86  return true;
87 
88  return false;
89 }
const std::set< BoundaryID > & boundaryIDs() const
std::unordered_map< BoundaryID, const INSFVHydraulicSeparatorInterface * > _boundary_id_to_separator
A container for quick access of hydraulic separator BCs associated with this variable.
Definition: INSFVVariable.h:56

◆ meshChanged()

void INSFVVariable::meshChanged ( )
overridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 68 of file INSFVVariable.C.

69 {
72 }
virtual void meshChanged() override
void cacheSeparatorBoundaries()
Caches the separator boundaries.
Definition: INSFVVariable.C:35

◆ requireQpComputations()

virtual void INSFVVelocityNoQpComputation::requireQpComputations ( ) const
inlineoverridevirtual

Set a selection of routines that are use Qp values to error to make sure Qp values are not being computed.

This is an optimization of INSFVVariables that we do not want to remove accidentally.

Reimplemented from INSFVVariable.

Definition at line 24 of file INSFVVelocityNoQpComputation.h.

25  {
26  mooseError("Qp-calculations should not be requested");
27  }
void mooseError(Args &&... args) const

◆ timestepSetup()

void INSFVVariable::timestepSetup ( )
overridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 61 of file INSFVVariable.C.

62 {
65 }
virtual void timestepSetup() override
void cacheSeparatorBoundaries()
Caches the separator boundaries.
Definition: INSFVVariable.C:35

◆ uncorrectedAdGradSln()

VectorValue< ADReal > INSFVVelocityVariable::uncorrectedAdGradSln ( const FaceInfo fi,
const StateArg time,
const bool  correct_skewness = false 
) const
overridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Definition at line 110 of file INSFVVelocityVariable.C.

Referenced by INSFVVelocityVariable::getExtrapolatedBoundaryFaceValue().

113 {
114  VectorValue<ADReal> unc_grad;
116  {
117  const auto & cell_gradient = adGradSln(&fi.elem(), time, correct_skewness);
118  const auto & normal = fi.normal();
119  unc_grad = cell_gradient - (cell_gradient * normal) * normal;
120  }
121  else
122  unc_grad = INSFVVariable::uncorrectedAdGradSln(fi, time, correct_skewness);
123 
124  return unc_grad;
125 }
const Elem & elem() const
virtual VectorValue< ADReal > uncorrectedAdGradSln(const FaceInfo &fi, const StateArg &state, const bool correct_skewness=false) const
const Point & normal() const
bool isFullyDevelopedFlowFace(const FaceInfo &fi) const
Returns whether the passed-in FaceInfo corresponds to a fully-developed flow face.
const ADTemplateVariableGradient< Real > & adGradSln() const override

◆ validParams()

InputParameters INSFVVelocityVariable::validParams ( )
staticinherited

Definition at line 60 of file INSFVVelocityVariable.C.

Referenced by PINSFVSuperficialVelocityVariable::validParams().

61 {
63 }
static InputParameters validParams()
Definition: INSFVVariable.C:24

Member Data Documentation

◆ _boundary_id_to_separator

std::unordered_map<BoundaryID, const INSFVHydraulicSeparatorInterface *> INSFVVariable::_boundary_id_to_separator
protectedinherited

A container for quick access of hydraulic separator BCs associated with this variable.

Definition at line 56 of file INSFVVariable.h.

Referenced by INSFVVariable::cacheSeparatorBoundaries(), and INSFVVariable::isSeparatorBoundary().


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