22 :
Coupleable(moose_object, nodal, is_fv), _neighbor_nodal(neighbor_nodal)
29 const auto * var = getVarHelper<MooseVariableField<Real>>(var_name, comp);
31 return (
_c_is_implicit) ? var->dofValuesNeighbor() : var->dofValuesOldNeighbor();
33 return (
_c_is_implicit) ? var->slnNeighbor() : var->slnOldNeighbor();
36std::vector<const VariableValue *>
39 auto func = [
this, &var_name](
unsigned int comp)
41 return coupledVectorHelper<const VariableValue *>(var_name, func);
44std::vector<const VariableValue *>
47 auto func = [
this, &var_name](
unsigned int comp)
49 return coupledVectorHelper<const VariableValue *>(var_name, func);
52std::vector<const VariableValue *>
55 auto func = [
this, &var_name](
unsigned int comp)
57 return coupledVectorHelper<const VariableValue *>(var_name, func);
63 const auto * var = getVarHelper<MooseVariableField<Real>>(var_name, comp);
69 mooseError(
"adCoupledNeighborValue cannot be used for nodal compute objects at this time");
71 mooseError(
"adCoupledNeighborValue returns a data structure with derivatives. Explicit schemes "
72 "use old solution data which do not have derivatives so adCoupledNeighborValue is "
73 "not appropriate. Please use coupledNeighborValue instead");
75 return var->adSlnNeighbor();
81 const auto * var = getVarHelper<MooseVariableField<Real>>(var_name, comp);
85 "adCoupledNeighborValueDot returns a data structure with derivatives. Explicit schemes "
86 "use old solution data which do not have derivatives so adCoupledNeighborValueDot is "
87 "not appropriate. Please use coupledNeighborValueDot instead");
90 mooseError(
"adCoupledNeighborValueDot cannot be used for nodal compute objects at this time");
92 return var->adUDotNeighbor();
95std::vector<const ADVariableValue *>
98 auto func = [
this, &var_name](
unsigned int comp)
100 return coupledVectorHelper<const ADVariableValue *>(var_name, func);
105 unsigned int comp)
const
107 auto var = getVarHelper<MooseVariableField<RealVectorValue>>(var_name, comp);
114 "adCoupledVectorNeighborValue cannot be used for nodal compute objects at this time");
117 "adCoupledVectorNeighborValue returns a data structure with derivatives. Explicit schemes "
118 "use old solution data which do not have derivatives so adCoupledVectorNeighborValue is "
119 "not appropriate. Please use coupledNeighborValue instead");
121 return var->adSlnNeighbor();
127 const auto * var =
getVar(var_name, comp);
129 return var->dofValuesDotNeighbor();
131 return var->uDotNeighbor();
137 const auto * var =
getVar(var_name, comp);
139 return var->dofValuesDuDotDuNeighbor();
141 return var->duDotDuNeighbor();
149 const auto * var =
getVar(var_name, comp);
151 return (
_c_is_implicit) ? var->dofValuesOldNeighbor() : var->dofValuesOlderNeighbor();
153 return (
_c_is_implicit) ? var->slnOldNeighbor() : var->slnOlderNeighbor();
161 const auto * var =
getVar(var_name, comp);
165 return var->dofValuesOlderNeighbor();
167 mooseError(
"Older values not available for explicit schemes");
172 return var->slnOlderNeighbor();
174 mooseError(
"Older values not available for explicit schemes");
182 mooseError(
"Nodal variables do not have gradients");
184 const auto * var = getVarHelper<MooseVariableField<Real>>(var_name, comp);
185 return (
_c_is_implicit) ? var->gradSlnNeighbor() : var->gradSlnOldNeighbor();
188std::vector<const VariableGradient *>
191 auto func = [
this, &var_name](
unsigned int comp)
193 return coupledVectorHelper<const VariableGradient *>(var_name, func);
198 unsigned int comp)
const
201 mooseError(
"Nodal variables do not have gradients");
204 const auto * var =
getVar(var_name, comp);
205 return (
_c_is_implicit) ? var->gradSlnOldNeighbor() : var->gradSlnOlderNeighbor();
210 unsigned int comp)
const
213 mooseError(
"Nodal variables do not have gradients");
216 const auto * var =
getVar(var_name, comp);
218 return var->gradSlnOlderNeighbor();
220 mooseError(
"Older values not available for explicit schemes");
227 mooseError(
"Nodal variables do not have gradients");
230 "adCoupledNeighborGradient returns a data structure with derivatives. Explicit schemes "
231 "use old solution data which do not have derivatives so adCoupledNeighborGradient is "
232 "not appropriate. Please use coupledNeighborGradient instead");
234 const auto * var = getVarHelper<MooseVariableField<Real>>(var_name, comp);
235 return var->adGradSlnNeighbor();
240 unsigned int comp)
const
243 mooseError(
"Gradients are non-sensical with nodal compute objects");
246 return (
_c_is_implicit) ? var->gradSlnNeighbor() : var->gradSlnOldNeighbor();
251 unsigned int comp)
const
254 mooseError(
"Gradients are non-sensical with nodal compute objects");
258 return (
_c_is_implicit) ? var->gradSlnOldNeighbor() : var->gradSlnOlderNeighbor();
263 unsigned int comp)
const
266 mooseError(
"Gradients are non-sensical with nodal compute objects");
271 return var->gradSlnOlderNeighbor();
273 mooseError(
"Older values not available for explicit schemes");
281 return (
_c_is_implicit) ? var->dofValuesNeighbor() : var->dofValuesOldNeighbor();
283 return (
_c_is_implicit) ? var->slnNeighbor() : var->slnOldNeighbor();
288 unsigned int comp)
const
291 mooseError(
"Gradients are non-sensical with nodal compute objects");
294 return (
_c_is_implicit) ? var->gradSlnNeighbor() : var->gradSlnOldNeighbor();
299 unsigned int comp)
const
302 mooseError(
"Gradients are non-sensical with nodal compute objects");
306 return (
_c_is_implicit) ? var->gradSlnOldNeighbor() : var->gradSlnOlderNeighbor();
311 unsigned int comp)
const
314 mooseError(
"Gradients are non-sensical with nodal compute objects");
319 return var->gradSlnOlderNeighbor();
321 mooseError(
"Older values not available for explicit schemes");
328 mooseError(
"Nodal variables do not have second derivatives");
330 const auto * var =
getVar(var_name, comp);
331 return (
_c_is_implicit) ? var->secondSlnNeighbor() : var->secondSlnOldNeighbor();
338 mooseError(
"nodal objects should not call coupledDofValues");
340 const auto * var =
getVar(var_name, comp);
341 return (
_c_is_implicit) ? var->dofValuesNeighbor() : var->dofValuesOldNeighbor();
346 unsigned int comp)
const
349 mooseError(
"nodal objects should not call coupledDofValuesOld");
352 const auto * var =
getVar(var_name, comp);
353 return (
_c_is_implicit) ? var->dofValuesOldNeighbor() : var->dofValuesOlderNeighbor();
358 unsigned int comp)
const
361 mooseError(
"nodal objects should not call coupledDofValuesOlder");
364 const auto * var =
getVar(var_name, comp);
366 return var->dofValuesOlderNeighbor();
368 mooseError(
"Older values not available for explicit schemes");
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
OutputTools< Real >::VariableGradient VariableGradient
OutputTools< RealEigenVector >::VariableValue ArrayVariableValue
OutputTools< Real >::VariableValue VariableValue
OutputTools< RealEigenVector >::VariableGradient ArrayVariableGradient
OutputTools< Real >::VariableSecond VariableSecond
OutputTools< RealVectorValue >::VariableGradient VectorVariableGradient
Interface for objects that needs coupling capabilities.
const ADVariableValue * getADDefaultValue(const std::string &var_name) const
Helper method to return (and insert if necessary) the default value for Automatic Differentiation for...
bool _c_is_implicit
True if implicit value is required.
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
Extract pointer to a coupled variable.
void validateExecutionerType(const std::string &name, const std::string &fn_name) const
Checks to make sure that the current Executioner has set "_is_transient" when old/older values are co...
VectorMooseVariable * getVectorVar(const std::string &var_name, unsigned int comp)
Extract pointer to a coupled vector variable.
ArrayMooseVariable * getArrayVar(const std::string &var_name, unsigned int comp)
Extract pointer to a coupled array variable.
const ADVectorVariableValue * getADDefaultVectorValue(const std::string &var_name) const
Helper method to return (and insert if necessary) the default vector value for Automatic Differentiat...
Every object that can be built by the factory should be derived from this class.
virtual std::vector< const VariableGradient * > coupledNeighborGradients(const std::string &var_name) const
virtual const VariableValue & coupledNeighborDofValuesOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< const ADVariableValue * > adCoupledNeighborValues(const std::string &var_name) const
virtual const ADVariableGradient & adCoupledNeighborGradient(const std::string &var_name, unsigned int comp=0) const
Get the coupled neighbor variable gradient for var_name with derivative information for automatic dif...
virtual const ArrayVariableGradient & coupledArrayNeighborGradientOlder(const std::string &var_name, unsigned int comp=0) const
NeighborCoupleable(const MooseObject *moose_object, bool nodal, bool neighbor_nodal, bool is_fv=false)
Constructing the object.
virtual const VariableValue & coupledNeighborValue(const std::string &var_name, unsigned int comp=0) const
virtual const ADVariableValue & adCoupledNeighborValue(const std::string &var_name, unsigned int comp=0) const
Get the coupled neighbor variable value for var_name with derivative information for automatic differ...
virtual const ArrayVariableGradient & coupledArrayNeighborGradient(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborDofValuesOld(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborValueOld(const std::string &var_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledNeighborValuesOld(const std::string &var_name) const
virtual const ADVariableValue & adCoupledNeighborValueDot(const std::string &var_name, unsigned int comp=0) const
Get the time derivative of the coupled neighbor variable value for var_name with derivative informati...
virtual const VariableValue & coupledNeighborValueOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledNeighborValuesOlder(const std::string &var_name) const
virtual const VectorVariableGradient & coupledVectorNeighborGradientOlder(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledNeighborGradientOld(const std::string &var_name, unsigned int comp=0) const
virtual const ADVectorVariableValue & adCoupledVectorNeighborValue(const std::string &var_name, unsigned int comp=0) const
Get the coupled neighbor vector variable value for var_name with derivative information for automatic...
virtual const VectorVariableGradient & coupledVectorNeighborGradientOld(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableValue & coupledArrayNeighborValue(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableGradient & coupledArrayNeighborGradientOld(const std::string &var_name, unsigned int comp=0) const
virtual const VariableSecond & coupledNeighborSecond(const std::string &var_name, unsigned int i=0) const
virtual const VectorVariableGradient & coupledVectorNeighborGradient(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborValueDotDu(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledNeighborGradientOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledNeighborValues(const std::string &var_name) const
virtual const VariableValue & coupledNeighborDofValues(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborValueDot(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledNeighborGradient(const std::string &var_name, unsigned int comp=0) const