Skip to content

Commit

Permalink
Avoid static casts
Browse files Browse the repository at this point in the history
  • Loading branch information
lindsayad authored and oanaoana committed Dec 12, 2023
1 parent 930813f commit c5a247f
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 31 deletions.
6 changes: 3 additions & 3 deletions framework/include/variables/MooseVariableData.h
Expand Up @@ -152,7 +152,7 @@ class MooseVariableData : public MooseVariableDataBase<OutputType>
*/
const MappedArrayVariablePhiGradient & arrayGradPhi() const
{
mooseAssert(_var.fieldType() == Moose::VarFieldType::VAR_FIELD_ARRAY, "Not an array variable");
mooseAssert(var().fieldType() == Moose::VarFieldType::VAR_FIELD_ARRAY, "Not an array variable");
return _mapped_grad_phi;
}

Expand All @@ -166,7 +166,7 @@ class MooseVariableData : public MooseVariableDataBase<OutputType>
*/
const MappedArrayVariablePhiGradient & arrayGradPhiFace() const
{
mooseAssert(_var.fieldType() == Moose::VarFieldType::VAR_FIELD_ARRAY, "Not an array variable");
mooseAssert(var().fieldType() == Moose::VarFieldType::VAR_FIELD_ARRAY, "Not an array variable");
return _mapped_grad_phi_face;
}

Expand Down Expand Up @@ -665,7 +665,7 @@ class MooseVariableData : public MooseVariableDataBase<OutputType>
/// A dummy ADReal variable
ADReal _ad_real_dummy = 0;

using MooseVariableDataBase<OutputType>::_var;
using MooseVariableDataBase<OutputType>::var;
using MooseVariableDataBase<OutputType>::_sys;
using MooseVariableDataBase<OutputType>::_subproblem;
using MooseVariableDataBase<OutputType>::_need_vector_tag_dof_u;
Expand Down
12 changes: 9 additions & 3 deletions framework/include/variables/MooseVariableDataBase.h
Expand Up @@ -140,6 +140,11 @@ class MooseVariableDataBase
void prepareAux() { _has_dof_values = false; }

protected:
/**
* @returns The variable to which the data in this class belongs to
*/
virtual const MooseVariableField<OutputType> & var() const { return _var; }

/**
* insert a solution tag into our tag containers
*/
Expand Down Expand Up @@ -173,9 +178,6 @@ class MooseVariableDataBase
*/
void resizeVectorTagData(TagID tag);

/// A const reference to the owning MooseVariableField object
const MooseVariableField<OutputType> & _var;

/// The MOOSE system which ultimately holds the vectors and matrices relevant to this variable
/// data
SystemBase & _sys;
Expand Down Expand Up @@ -288,6 +290,10 @@ class MooseVariableDataBase

/// The set of solution tags we need to evaluate
std::set<TagID> _solution_tags;

private:
/// A const reference to the owning MooseVariableField object
const MooseVariableField<OutputType> & _var;
};

template <>
Expand Down
7 changes: 6 additions & 1 deletion framework/include/variables/MooseVariableDataFV.h
Expand Up @@ -267,6 +267,9 @@ class MooseVariableDataFV : public MooseVariableDataBase<OutputType>, public Mes

void meshChanged() override;

protected:
virtual const MooseVariableFV<OutputType> & var() const override { return _var; }

private:
void initializeSolnVars();

Expand All @@ -282,6 +285,9 @@ class MooseVariableDataFV : public MooseVariableDataBase<OutputType>, public Mes
*/
bool safeToComputeADUDot() const;

/// A const reference to the owning MooseVariableFV object
const MooseVariableFV<OutputType> & _var;

const FEType & _fe_type;

const unsigned int _var_num;
Expand Down Expand Up @@ -395,7 +401,6 @@ class MooseVariableDataFV : public MooseVariableDataBase<OutputType>, public Mes
/// Cached warehouse query for FVFluxKernels
TheWarehouse::QueryCache<> _fv_flux_kernel_query_cache;

using MooseVariableDataBase<OutputType>::_var;
using MooseVariableDataBase<OutputType>::_sys;
using MooseVariableDataBase<OutputType>::_subproblem;
using MooseVariableDataBase<OutputType>::_need_vector_tag_dof_u;
Expand Down
12 changes: 6 additions & 6 deletions framework/src/variables/MooseVariableData.C
Expand Up @@ -33,8 +33,8 @@ MooseVariableData<OutputType>::MooseVariableData(const MooseVariableField<Output
const Elem * const & elem)

: MooseVariableDataBase<OutputType>(var, sys, tid),
_fe_type(_var.feType()),
_var_num(_var.number()),
_fe_type(var.feType()),
_var_num(var.number()),
_assembly(_subproblem.assembly(_tid, var.kind() == Moose::VAR_NONLINEAR ? sys.number() : 0)),
_element_type(element_type),
_ad_zero(0),
Expand Down Expand Up @@ -1694,7 +1694,7 @@ MooseVariableData<OutputType>::nodalValueDot() const
}
else
mooseError("Nodal values can be requested only on nodal variables, variable '",
_var.name(),
var().name(),
"' is not nodal.");
}

Expand All @@ -1717,7 +1717,7 @@ MooseVariableData<OutputType>::nodalValueDotDot() const
}
else
mooseError("Nodal values can be requested only on nodal variables, variable '",
_var.name(),
var().name(),
"' is not nodal.");
}

Expand All @@ -1739,7 +1739,7 @@ MooseVariableData<OutputType>::nodalValueDotOld() const
}
else
mooseError("Nodal values can be requested only on nodal variables, variable '",
_var.name(),
var().name(),
"' is not nodal.");
}

Expand All @@ -1762,7 +1762,7 @@ MooseVariableData<OutputType>::nodalValueDotDotOld() const
}
else
mooseError("Nodal values can be requested only on nodal variables, variable '",
_var.name(),
var().name(),
"' is not nodal.");
}

Expand Down
16 changes: 7 additions & 9 deletions framework/src/variables/MooseVariableDataBase.C
Expand Up @@ -18,8 +18,7 @@ template <typename OutputType>
MooseVariableDataBase<OutputType>::MooseVariableDataBase(const MooseVariableField<OutputType> & var,
SystemBase & sys,
THREAD_ID tid)
: _var(var),
_sys(sys),
: _sys(sys),
_subproblem(_sys.subproblem()),
_tid(tid),
_dof_map(_sys.dofMap()),
Expand All @@ -43,7 +42,8 @@ MooseVariableDataBase<OutputType>::MooseVariableDataBase(const MooseVariableFiel
_need_dof_values_dot_old(false),
_need_dof_values_dotdot_old(false),
_need_dof_du_dot_du(false),
_need_dof_du_dotdot_du(false)
_need_dof_du_dotdot_du(false),
_var(var)
{
auto num_vector_tags = _subproblem.numVectorTags();
// Additional solution tags corresponding to older-than-current solution states may be requested
Expand Down Expand Up @@ -300,9 +300,8 @@ template <typename OutputType>
const typename MooseVariableDataBase<OutputType>::FieldVariableValue &
MooseVariableDataBase<OutputType>::sln(Moose::SolutionState state) const
{
auto functor = [this](TagID tag_id) -> const FieldVariableValue & {
return vectorTagValue(tag_id);
};
auto functor = [this](TagID tag_id) -> const FieldVariableValue &
{ return vectorTagValue(tag_id); };

return const_cast<MooseVariableDataBase<OutputType> *>(this)
->stateToTagHelper<FieldVariableValue>(state, functor);
Expand All @@ -312,9 +311,8 @@ template <typename OutputType>
const typename MooseVariableDataBase<OutputType>::FieldVariableGradient &
MooseVariableDataBase<OutputType>::gradSln(Moose::SolutionState state) const
{
auto functor = [this](TagID tag_id) -> const FieldVariableGradient & {
return vectorTagGradient(tag_id);
};
auto functor = [this](TagID tag_id) -> const FieldVariableGradient &
{ return vectorTagGradient(tag_id); };

return const_cast<MooseVariableDataBase<OutputType> *>(this)
->stateToTagHelper<FieldVariableGradient>(state, functor);
Expand Down
19 changes: 10 additions & 9 deletions framework/src/variables/MooseVariableDataFV.C
Expand Up @@ -36,6 +36,7 @@ MooseVariableDataFV<OutputType>::MooseVariableDataFV(const MooseVariableFV<Outpu

: MooseVariableDataBase<OutputType>(var, sys, tid),
MeshChangedInterface(var.parameters()),
_var(var),
_fe_type(_var.feType()),
_var_num(_var.number()),
_assembly(_subproblem.assembly(_tid, var.kind() == Moose::VAR_NONLINEAR ? sys.number() : 0)),
Expand Down Expand Up @@ -100,7 +101,7 @@ MooseVariableDataFV<OutputType>::uDot() const
{
if (_sys.solutionUDot())
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
_need_u_dot = true;
return _u_dot;
}
Expand All @@ -115,7 +116,7 @@ MooseVariableDataFV<OutputType>::uDotDot() const
{
if (_sys.solutionUDotDot())
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
_need_u_dotdot = true;
return _u_dotdot;
}
Expand All @@ -131,7 +132,7 @@ MooseVariableDataFV<OutputType>::uDotOld() const
{
if (_sys.solutionUDotOld())
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
_need_u_dot_old = true;
return _u_dot_old;
}
Expand All @@ -147,7 +148,7 @@ MooseVariableDataFV<OutputType>::uDotDotOld() const
{
if (_sys.solutionUDotDotOld())
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
_need_u_dotdot_old = true;
return _u_dotdot_old;
}
Expand All @@ -161,7 +162,7 @@ template <typename OutputType>
const typename MooseVariableDataFV<OutputType>::FieldVariableValue &
MooseVariableDataFV<OutputType>::sln(Moose::SolutionState state) const
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
return MooseVariableDataBase<OutputType>::sln(state);
}

Expand All @@ -171,7 +172,7 @@ MooseVariableDataFV<OutputType>::gradSlnDot() const
{
if (_sys.solutionUDot())
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
_need_grad_dot = true;
return _grad_u_dot;
}
Expand All @@ -186,7 +187,7 @@ MooseVariableDataFV<OutputType>::gradSlnDotDot() const
{
if (_sys.solutionUDotDot())
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
_need_grad_dotdot = true;
return _grad_u_dotdot;
}
Expand All @@ -200,7 +201,7 @@ template <typename OutputType>
const typename MooseVariableDataFV<OutputType>::FieldVariableSecond &
MooseVariableDataFV<OutputType>::secondSln(Moose::SolutionState state) const
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
switch (state)
{
case Moose::Current:
Expand Down Expand Up @@ -238,7 +239,7 @@ template <typename OutputType>
const typename MooseVariableDataFV<OutputType>::FieldVariableCurl &
MooseVariableDataFV<OutputType>::curlSln(Moose::SolutionState state) const
{
static_cast<const MooseVariableFV<OutputType> *>(&_var)->requireQpComputations();
_var.requireQpComputations();
switch (state)
{
case Moose::Current:
Expand Down

0 comments on commit c5a247f

Please sign in to comment.