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

#include <INSFVVelocityVariable.h>

Inheritance diagram for INSFVVelocityVariable:
[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 >::OutputData OutputData
 
typedef typename MooseVariableField< Real >::DoFValue DoFValue
 
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 DataFileName DataFileParameterType
 
typedef FunctorBase< T > FunctorType
 
typedef T ValueType
 
typedef typename FunctorReturnType< T, FunctorEvaluationKind::Gradient >::type GradientType
 
typedef ValueType DotType
 

Public Member Functions

 INSFVVelocityVariable (const InputParameters &params)
 
const VectorValue< ADReal > & adGradSln (const Elem *const elem, const StateArg &time, bool correct_skewness=false) const override
 
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
 
void requireQpComputations () const 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 OutputData &value, unsigned int index) override
 
virtual void setDofValue (const OutputData &value, unsigned int index)=0
 
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 DoFValuenodalVectorTagValue (TagID) const override
 
const DoFValuenodalMatrixTagValue (TagID) const override
 
const FieldVariableValuevectorTagValue (TagID tag) const override
 
const DoFValuevectorTagDofValue (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
 
const ADTemplateVariableGradient< Real > & adGradSln () const override
 
virtual VectorValue< ADRealadGradSln (const FaceInfo &fi, const StateArg &state, const bool correct_skewness=false) const
 
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< OutputData > &values) override
 
virtual void setDofValues (const DenseVector< OutputData > &values)=0
 
virtual void setLowerDofValues (const DenseVector< OutputData > &values) override
 
virtual void setLowerDofValues (const DenseVector< OutputData > &values)=0
 
OutputData getElementalValue (const Elem *elem, unsigned int idx=0) const
 
OutputData getElementalValueOld (const Elem *elem, unsigned int idx=0) const
 
OutputData 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 DoFValuedofValues () const override
 
const DoFValuedofValuesOld () const override
 
const DoFValuedofValuesOlder () const override
 
const DoFValuedofValuesPreviousNL () const override
 
const DoFValuedofValuesNeighbor () const override
 
const DoFValuedofValuesOldNeighbor () const override
 
const DoFValuedofValuesOlderNeighbor () const override
 
const DoFValuedofValuesPreviousNLNeighbor () const override
 
const DoFValuedofValuesDot () const override
 
const DoFValuedofValuesDotNeighbor () const override
 
const DoFValuedofValuesDotOld () const override
 
const DoFValuedofValuesDotOldNeighbor () const override
 
const DoFValuedofValuesDotDot () const override
 
const DoFValuedofValuesDotDotNeighbor () const override
 
const DoFValuedofValuesDotDotOld () const override
 
const DoFValuedofValuesDotDotOldNeighbor () 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 MooseArray< ADReal > & adDofValues () const override
 
const MooseArray< ADReal > & adDofValuesNeighbor () const override
 
const MooseArray< ADReal > & adDofValuesDot () 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
 
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
 
const std::string & name () const override
 
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)
 
bool isLowerD () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (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
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) 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 ()
 

Public Attributes

const ConsoleStream _console
 

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 ()
 
bool doDerivatives () const
 
virtual bool hasBlockMaterialPropertyHelper (const std::string &prop_name)
 
void initializeBlockRestrictable (const MooseObject *moose_object)
 
Moose::CoordinateSystemType getBlockCoordSystem ()
 
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
 
const libMesh::NumericVector< libMesh::Number > & getSolution (const Moose::StateArg &state) const
 

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
 
std::string _var_name
 
bool _use_dual
 
bool _is_lower_d
 
std::vector< std::string > _array_var_component_names
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
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 17 of file INSFVVelocityVariable.h.

Constructor & Destructor Documentation

◆ INSFVVelocityVariable()

INSFVVelocityVariable::INSFVVelocityVariable ( const InputParameters params)

Definition at line 63 of file INSFVVelocityVariable.C.

63  : INSFVVariable(params)
64 {
65 }
INSFVVariable(const InputParameters &params)
Definition: INSFVVariable.C:29

Member Function Documentation

◆ adGradSln()

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

Reimplemented from MooseVariableFV< Real >.

Definition at line 126 of file INSFVVelocityVariable.C.

Referenced by INSFVMixingLengthTurbulentViscosityAux::computeValue().

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

◆ 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
overrideprotectedvirtual

Reimplemented from MooseVariableFV< Real >.

Definition at line 68 of file INSFVVelocityVariable.C.

73 {
74  ADReal boundary_value;
75  bool elem_to_extrapolate_from_is_fi_elem;
76  std::tie(elem_to_extrapolate_from, elem_to_extrapolate_from_is_fi_elem) =
77  [this, &fi, elem_to_extrapolate_from]() -> std::pair<const Elem *, bool>
78  {
79  if (elem_to_extrapolate_from)
80  return {elem_to_extrapolate_from, elem_to_extrapolate_from == &fi.elem()};
81  else
82  {
83  const auto [elem_guaranteed_to_have_dofs,
84  other_elem,
85  elem_guaranteed_to_have_dofs_is_fi_elem] =
87  libmesh_ignore(other_elem);
88  return {elem_guaranteed_to_have_dofs, elem_guaranteed_to_have_dofs_is_fi_elem};
89  }
90  }();
91 
92  if (two_term_expansion && isFullyDevelopedFlowFace(fi))
93  {
94  const Point vector_to_face = elem_to_extrapolate_from_is_fi_elem
95  ? (fi.faceCentroid() - fi.elemCentroid())
96  : (fi.faceCentroid() - fi.neighborCentroid());
97  boundary_value = uncorrectedAdGradSln(fi, time, correct_skewness) * vector_to_face +
98  getElemValue(elem_to_extrapolate_from, time);
99  }
100  else
102  fi, two_term_expansion, correct_skewness, elem_to_extrapolate_from, time);
103 
104  return boundary_value;
105 }
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
DualNumber< Real, DNDerivativeType, true > ADReal
ADReal getElemValue(const Elem *elem, const StateArg &state) const
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 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 adGradSln(), getExtrapolatedBoundaryFaceValue(), and 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()

void INSFVVariable::requireQpComputations ( ) const
inlineoverridevirtualinherited

Reimplemented from MooseVariableFV< Real >.

Reimplemented in INSFVPressureNoQpComputation, and INSFVVelocityNoQpComputation.

Definition at line 30 of file INSFVVariable.h.

30 { _qp_calculations = true; }
bool _qp_calculations
Whether to pre-initialize variable data for use in traditional MOOSE quadrature point based objects...
Definition: INSFVVariable.h:62

◆ 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
overridevirtual

Reimplemented from MooseVariableFV< Real >.

Definition at line 108 of file INSFVVelocityVariable.C.

Referenced by getExtrapolatedBoundaryFaceValue().

111 {
112  VectorValue<ADReal> unc_grad;
114  {
115  const auto & cell_gradient = adGradSln(&fi.elem(), time, correct_skewness);
116  const auto & normal = fi.normal();
117  unc_grad = cell_gradient - (cell_gradient * normal) * normal;
118  }
119  else
120  unc_grad = INSFVVariable::uncorrectedAdGradSln(fi, time, correct_skewness);
121 
122  return unc_grad;
123 }
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 ( )
static

Definition at line 58 of file INSFVVelocityVariable.C.

Referenced by PINSFVSuperficialVelocityVariable::validParams().

59 {
61 }
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: