www.mooseframework.org
Public Member Functions | Private Member Functions | Private Attributes | List of all members
DerivativeMaterialInterface< T > Class Template Reference

Interface class ("Veneer") to provide generator methods for derivative material property names. More...

#include <DerivativeMaterialInterface.h>

Inheritance diagram for DerivativeMaterialInterface< T >:
[legend]

Public Member Functions

 DerivativeMaterialInterface (const InputParameters &parameters)
 
template<typename U >
const MaterialProperty< U > & getDefaultMaterialProperty (const std::string &name)
 Fetch a material property if it exists, otherwise return getZeroMaterialProperty. More...
 
template<typename U >
const MaterialProperty< U > & getDefaultMaterialPropertyByName (const std::string &name)
 Fetch a material property by name if it exists, otherwise return getZeroMaterialProperty. More...
 
template<typename U >
void validateDerivativeMaterialPropertyBase (const std::string &base)
 Check if the material property base exists. More...
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< VariableName > &c) const
 Helper functions to generate the material property names for the arbitrary derivatives. More...
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const VariableName &c1) const
 Helper functions to generate the material property names for the first derivatives. More...
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2) const
 Helper functions to generate the material property names for the second derivatives. More...
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2, const VariableName &c3) const
 Helper functions to generate the material property names for the third derivatives. More...
 
template<typename U >
MaterialProperty< U > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 Methods for declaring derivative material properties. More...
 
template<typename U >
MaterialProperty< U > & declarePropertyDerivative (const std::string &base, const VariableName &c1, const VariableName &c2="", const VariableName &c3="")
 
template<typename U >
const MaterialProperty< U > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 Methods for retreiving derivative material properties. More...
 
template<typename U >
const MaterialProperty< U > & getMaterialPropertyDerivative (const std::string &base, const VariableName &c1, const VariableName &c2="", const VariableName &c3="")
 
template<typename U >
const MaterialProperty< U > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 Methods for retreiving derivative material properties. More...
 
template<typename U >
const MaterialProperty< U > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2="", const VariableName &c3="")
 
template<typename U >
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 check if derivatives of the passed in material property exist w.r.t a variable that is not coupled in to the current object More...
 
template<typename U >
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
template<typename U >
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 

Private Member Functions

template<typename U >
bool haveMaterialProperty (const std::string &prop_name)
 Check if a material property is present with the applicable restrictions. More...
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 helper method to combine multiple VariableNames into a vector (if they are != "") More...
 
template<typename U >
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 helper method to compile list of missing coupled variables for a given system More...
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 Reference to FEProblemBase. More...
 

Detailed Description

template<class T>
class DerivativeMaterialInterface< T >

Interface class ("Veneer") to provide generator methods for derivative material property names.

Definition at line 32 of file DerivativeMaterialInterface.h.

Constructor & Destructor Documentation

◆ DerivativeMaterialInterface()

template<class T >
DerivativeMaterialInterface< T >::DerivativeMaterialInterface ( const InputParameters parameters)

Definition at line 155 of file DerivativeMaterialInterface.h.

156  : T(parameters),
157  _dmi_fe_problem(*parameters.getCheckedPointerParam<FEProblemBase *>("_fe_problem_base"))
158 {
159 }
T getCheckedPointerParam(const std::string &name, const std::string &error_string="") const
Verifies that the requested parameter exists and is not NULL and returns it to the caller...
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
FEProblemBase & _dmi_fe_problem
Reference to FEProblemBase.

Member Function Documentation

◆ buildVariableVector()

template<class T >
std::vector< VariableName > DerivativeMaterialInterface< T >::buildVariableVector ( const VariableName &  c1,
const VariableName &  c2,
const VariableName &  c3 
)
private

helper method to combine multiple VariableNames into a vector (if they are != "")

Definition at line 383 of file DerivativeMaterialInterface.h.

386 {
387  std::vector<VariableName> c;
388  if (c1 != "")
389  {
390  c.push_back(c1);
391  if (c2 != "")
392  {
393  c.push_back(c2);
394  if (c3 != "")
395  c.push_back(c3);
396  }
397  }
398  return c;
399 }

◆ declarePropertyDerivative() [1/2]

template<class T >
template<typename U >
MaterialProperty< U > & DerivativeMaterialInterface< T >::declarePropertyDerivative ( const std::string &  base,
const std::vector< VariableName > &  c 
)

Methods for declaring derivative material properties.

Template Parameters
UThe material property type
Parameters
baseThe name of the property to take the derivative of
cThe variable(s) to take the derivatives with respect to

Definition at line 218 of file DerivativeMaterialInterface.h.

220 {
221  return this->template declareProperty<U>(propertyName(base, c));
222 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.

◆ declarePropertyDerivative() [2/2]

template<class T >
template<typename U >
MaterialProperty< U > & DerivativeMaterialInterface< T >::declarePropertyDerivative ( const std::string &  base,
const VariableName &  c1,
const VariableName &  c2 = "",
const VariableName &  c3 = "" 
)

Definition at line 227 of file DerivativeMaterialInterface.h.

231 {
232  if (c3 != "")
233  return this->template declareProperty<U>(propertyNameThird(base, c1, c2, c3));
234  if (c2 != "")
235  return this->template declareProperty<U>(propertyNameSecond(base, c1, c2));
236  return this->template declareProperty<U>(propertyNameFirst(base, c1));
237 }
const MaterialPropertyName propertyNameThird(const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2, const VariableName &c3) const
Helper functions to generate the material property names for the third derivatives.
const MaterialPropertyName propertyNameFirst(const MaterialPropertyName &base, const VariableName &c1) const
Helper functions to generate the material property names for the first derivatives.
const MaterialPropertyName propertyNameSecond(const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2) const
Helper functions to generate the material property names for the second derivatives.

◆ getDefaultMaterialProperty()

template<class T >
template<typename U >
const MaterialProperty< U > & DerivativeMaterialInterface< T >::getDefaultMaterialProperty ( const std::string &  name)

Fetch a material property if it exists, otherwise return getZeroMaterialProperty.

Parameters
nameThe input parameter key of type MaterialPropertyName

Definition at line 188 of file DerivativeMaterialInterface.h.

189 {
190  // get the base property name
191  std::string prop_name = this->deducePropertyName(name);
192 
193  // Check if it's just a constant
194  const MaterialProperty<U> * default_property =
195  this->template defaultMaterialProperty<U>(prop_name);
196  if (default_property)
197  return *default_property;
198 
199  // if found return the requested property
200  return getDefaultMaterialPropertyByName<U>(prop_name);
201 }
Concrete definition of a parameter value for a specified type.

◆ getDefaultMaterialPropertyByName()

template<class T >
template<typename U >
const MaterialProperty< U > & DerivativeMaterialInterface< T >::getDefaultMaterialPropertyByName ( const std::string &  name)

Fetch a material property by name if it exists, otherwise return getZeroMaterialProperty.

Definition at line 206 of file DerivativeMaterialInterface.h.

207 {
208  // if found return the requested property
209  if (haveMaterialProperty<U>(prop_name))
210  return this->template getMaterialPropertyByName<U>(prop_name);
211 
212  return this->template getZeroMaterialProperty<U>(prop_name);
213 }

◆ getMaterialPropertyDerivative() [1/2]

template<class T >
template<typename U >
const MaterialProperty< U > & DerivativeMaterialInterface< T >::getMaterialPropertyDerivative ( const std::string &  base,
const std::vector< VariableName > &  c 
)

Methods for retreiving derivative material properties.

Template Parameters
UThe material property type
Parameters
baseThe name of the property to take the derivative of
cThe variable(s) to take the derivatives with respect to

Check if base is a default property and shortcut to returning zero, as derivatives of constants are zero.

Definition at line 242 of file DerivativeMaterialInterface.h.

Referenced by FunctionMaterialPropertyDescriptor::value().

244 {
245  // get the base property name
246  std::string prop_name = this->deducePropertyName(base);
247 
252  if (this->template defaultMaterialProperty<U>(prop_name))
253  return this->template getZeroMaterialProperty<U>(prop_name + "_zeroderivative");
254 
255  return getDefaultMaterialPropertyByName<U>(propertyName(prop_name, c));
256 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.

◆ getMaterialPropertyDerivative() [2/2]

template<class T >
template<typename U >
const MaterialProperty< U > & DerivativeMaterialInterface< T >::getMaterialPropertyDerivative ( const std::string &  base,
const VariableName &  c1,
const VariableName &  c2 = "",
const VariableName &  c3 = "" 
)

Check if base is a default property and shortcut to returning zero, as derivatives of constants are zero.

Definition at line 261 of file DerivativeMaterialInterface.h.

265 {
266  // get the base property name
267  std::string prop_name = this->deducePropertyName(base);
268 
273  if (this->template defaultMaterialProperty<U>(prop_name))
274  return this->template getZeroMaterialProperty<U>(prop_name + "_zeroderivative");
275 
276  if (c3 != "")
277  return getDefaultMaterialPropertyByName<U>(propertyNameThird(prop_name, c1, c2, c3));
278  if (c2 != "")
279  return getDefaultMaterialPropertyByName<U>(propertyNameSecond(prop_name, c1, c2));
280  return getDefaultMaterialPropertyByName<U>(propertyNameFirst(prop_name, c1));
281 }
const MaterialPropertyName propertyNameThird(const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2, const VariableName &c3) const
Helper functions to generate the material property names for the third derivatives.
const MaterialPropertyName propertyNameFirst(const MaterialPropertyName &base, const VariableName &c1) const
Helper functions to generate the material property names for the first derivatives.
const MaterialPropertyName propertyNameSecond(const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2) const
Helper functions to generate the material property names for the second derivatives.

◆ getMaterialPropertyDerivativeByName() [1/2]

template<class T >
template<typename U >
const MaterialProperty< U > & DerivativeMaterialInterface< T >::getMaterialPropertyDerivativeByName ( const MaterialPropertyName &  base,
const std::vector< VariableName > &  c 
)

Methods for retreiving derivative material properties.

Template Parameters
UThe material property type
Parameters
baseThe name of the property to take the derivative of
cThe variable(s) to take the derivatives with respect to

Definition at line 286 of file DerivativeMaterialInterface.h.

288 {
289  return getDefaultMaterialPropertyByName<U>(propertyName(base, c));
290 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.

◆ getMaterialPropertyDerivativeByName() [2/2]

template<class T >
template<typename U >
const MaterialProperty< U > & DerivativeMaterialInterface< T >::getMaterialPropertyDerivativeByName ( const MaterialPropertyName &  base,
const VariableName &  c1,
const VariableName &  c2 = "",
const VariableName &  c3 = "" 
)

Definition at line 295 of file DerivativeMaterialInterface.h.

300 {
301  if (c3 != "")
302  return getDefaultMaterialPropertyByName<U>(propertyNameThird(base, c1, c2, c3));
303  if (c2 != "")
304  return getDefaultMaterialPropertyByName<U>(propertyNameSecond(base, c1, c2));
305  return getDefaultMaterialPropertyByName<U>(propertyNameFirst(base, c1));
306 }
const MaterialPropertyName propertyNameThird(const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2, const VariableName &c3) const
Helper functions to generate the material property names for the third derivatives.
const MaterialPropertyName propertyNameFirst(const MaterialPropertyName &base, const VariableName &c1) const
Helper functions to generate the material property names for the first derivatives.
const MaterialPropertyName propertyNameSecond(const MaterialPropertyName &base, const VariableName &c1, const VariableName &c2) const
Helper functions to generate the material property names for the second derivatives.

◆ haveMaterialProperty()

template<class T >
template<typename U >
bool DerivativeMaterialInterface< T >::haveMaterialProperty ( const std::string &  prop_name)
private

Check if a material property is present with the applicable restrictions.

Definition at line 174 of file DerivativeMaterialInterface.h.

175 {
176  // Call the correct method to test for material property declarations
177  BlockRestrictable * blk = dynamic_cast<BlockRestrictable *>(this);
178  BoundaryRestrictable * bnd = dynamic_cast<BoundaryRestrictable *>(this);
179  return ((bnd && bnd->boundaryRestricted() &&
180  bnd->template hasBoundaryMaterialProperty<U>(prop_name)) ||
181  (blk && blk->template hasBlockMaterialProperty<U>(prop_name)) ||
182  (this->template hasMaterialProperty<U>(prop_name)));
183 }
virtual bool boundaryRestricted() const
Returns true if this object has been restricted to a boundary.
/class BoundaryRestrictable /brief Provides functionality for limiting the object to certain boundary...
An interface that restricts an object to subdomains via the &#39;blocks&#39; input parameter.

◆ isNotObjectVariable()

template<class T >
bool DerivativeMaterialInterface< T >::isNotObjectVariable ( const VariableName &  name)
inlineprivate

Definition at line 444 of file DerivativeMaterialInterface.h.

445 {
446  // try to cast this to a Kernel pointer
447  KernelBase * kernel_ptr = dynamic_cast<KernelBase *>(this);
448  if (kernel_ptr != nullptr)
449  return kernel_ptr->variable().name() != name;
450 
451  // try to cast this to a BoundaryCondition pointer
452  BoundaryCondition * bc_ptr = dynamic_cast<BoundaryCondition *>(this);
453  if (bc_ptr != nullptr)
454  return bc_ptr->variable().name() != name;
455 
456  // This interface is not templated on a class derived from either Kernel or BC
457  return true;
458 }
virtual MooseVariableFEBase & variable()=0
Returns the variable number that this Kernel operates on.
virtual MooseVariableFEBase & variable()=0
Get a reference to the MooseVariableFE.
This is the common base class for the two main kernel types implemented in MOOSE, EigenKernel and Ker...
Definition: KernelBase.h:45
Base class for creating new types of boundary conditions.
const std::string & name() const
Get the variable name.

◆ propertyName()

const MaterialPropertyName DerivativeMaterialPropertyNameInterface::propertyName ( const MaterialPropertyName &  base,
const std::vector< VariableName > &  c 
) const
inherited

Helper functions to generate the material property names for the arbitrary derivatives.

Definition at line 15 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by FunctionMaterialPropertyDescriptor::getPropertyName(), DerivativeMaterialPropertyNameInterface::propertyNameSecond(), and DerivativeMaterialPropertyNameInterface::propertyNameThird().

17 {
18  // to obtain well defined names we sort alphabetically
19  std::vector<VariableName> a(c);
20  std::sort(a.begin(), a.end());
21 
22  // derivative order
23  unsigned int order = a.size();
24  if (order == 0)
25  return base;
26 
27  // build the property name as a stringstream
28  std::stringstream name;
29 
30  // build numerator
31  name << 'd';
32  if (order > 1)
33  name << '^' << order;
34  name << base << '/';
35 
36  // build denominator with 'pretty' names using exponents rather than repeat multiplication
37  unsigned int exponent = 1;
38  for (unsigned i = 1; i <= order; ++i)
39  {
40  if (i == order || a[i - 1] != a[i])
41  {
42  name << 'd' << a[i - 1];
43  if (exponent > 1)
44  name << '^' << exponent;
45  exponent = 1;
46  }
47  else
48  exponent++;
49  }
50 
51  return name.str();
52 }

◆ propertyNameFirst()

const MaterialPropertyName DerivativeMaterialPropertyNameInterface::propertyNameFirst ( const MaterialPropertyName &  base,
const VariableName &  c1 
) const
inherited

Helper functions to generate the material property names for the first derivatives.

Definition at line 55 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by DerivativeFunctionMaterialBase::initialSetup().

57 {
58  return "d" + base + "/d" + c1;
59 }

◆ propertyNameSecond()

const MaterialPropertyName DerivativeMaterialPropertyNameInterface::propertyNameSecond ( const MaterialPropertyName &  base,
const VariableName &  c1,
const VariableName &  c2 
) const
inherited

Helper functions to generate the material property names for the second derivatives.

Definition at line 62 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by DerivativeFunctionMaterialBase::initialSetup().

65 {
66  return propertyName(base, {c1, c2});
67 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.

◆ propertyNameThird()

const MaterialPropertyName DerivativeMaterialPropertyNameInterface::propertyNameThird ( const MaterialPropertyName &  base,
const VariableName &  c1,
const VariableName &  c2,
const VariableName &  c3 
) const
inherited

Helper functions to generate the material property names for the third derivatives.

Definition at line 70 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by DerivativeFunctionMaterialBase::initialSetup().

74 {
75  return propertyName(base, {c1, c2, c3});
76 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.

◆ validateCoupling() [1/2]

template<class T >
template<typename U >
void DerivativeMaterialInterface< T >::validateCoupling ( const MaterialPropertyName &  base,
const std::vector< VariableName > &  c,
bool  validate_aux = true 
)

check if derivatives of the passed in material property exist w.r.t a variable that is not coupled in to the current object

Definition at line 351 of file DerivativeMaterialInterface.h.

354 {
355  // get the base property name
356  std::string prop_name = this->deducePropertyName(base);
357  // list of potentially missing coupled variables
358  std::vector<VariableName> missing;
359 
360  // iterate over all variables in the both the non-linear and auxiliary system (optional)
361  validateCouplingHelper<U>(
362  prop_name, c, _dmi_fe_problem.getNonlinearSystemBase().system(), missing);
363  if (validate_aux)
364  validateCouplingHelper<U>(prop_name, c, _dmi_fe_problem.getAuxiliarySystem().system(), missing);
365 
366  if (missing.size() > 0)
367  {
368  // join list of missing variable names
369  std::string list = missing[0];
370  for (unsigned int i = 1; i < missing.size(); ++i)
371  list += ", " + missing[i];
372 
373  mooseWarning("Missing coupled variables {",
374  list,
375  "} (add them to args parameter of ",
376  this->name(),
377  ")");
378  }
379 }
NonlinearSystemBase & getNonlinearSystemBase()
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition: MooseError.h:220
FEProblemBase & _dmi_fe_problem
Reference to FEProblemBase.
AuxiliarySystem & getAuxiliarySystem()
virtual System & system() override
Get the reference to the libMesh system.
virtual System & system() override
Get the reference to the libMesh system.

◆ validateCoupling() [2/2]

template<class T >
template<typename U >
void DerivativeMaterialInterface< T >::validateCoupling ( const MaterialPropertyName &  base,
const VariableName &  c1 = "",
const VariableName &  c2 = "",
const VariableName &  c3 = "" 
)

Definition at line 404 of file DerivativeMaterialInterface.h.

408 {
409  validateCoupling<U>(base, buildVariableVector(c1, c2, c3), true);
410 }
std::vector< VariableName > buildVariableVector(const VariableName &c1, const VariableName &c2, const VariableName &c3)
helper method to combine multiple VariableNames into a vector (if they are != "") ...

◆ validateCouplingHelper()

template<class T >
template<typename U >
void DerivativeMaterialInterface< T >::validateCouplingHelper ( const MaterialPropertyName &  base,
const std::vector< VariableName > &  c,
const System &  system,
std::vector< VariableName > &  missing 
)
private

helper method to compile list of missing coupled variables for a given system

Definition at line 311 of file DerivativeMaterialInterface.h.

315 {
316  unsigned int ncoupled = this->_coupled_moose_vars.size();
317 
318  // iterate over all variables in the current system (in groups)
319  for (unsigned int i = 0; i < system.n_variable_groups(); ++i)
320  {
321  const VariableGroup & vg = system.variable_group(i);
322  for (unsigned int j = 0; j < vg.n_variables(); ++j)
323  {
324  std::vector<VariableName> cj(c);
325  VariableName jname = vg.name(j);
326  cj.push_back(jname);
327 
328  // if the derivative exists make sure the variable is coupled
329  if (haveMaterialProperty<U>(propertyName(base, cj)))
330  {
331  // kernels and BCs to not have the variable they are acting on in coupled_moose_vars
332  bool is_missing = isNotObjectVariable(jname);
333 
334  for (unsigned int k = 0; k < ncoupled; ++k)
335  if (this->_coupled_moose_vars[k]->name() == jname)
336  {
337  is_missing = false;
338  break;
339  }
340 
341  if (is_missing)
342  missing.push_back(jname);
343  }
344  }
345  }
346 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.
nl system()
bool isNotObjectVariable(const VariableName &name)

◆ validateDerivativeMaterialPropertyBase()

template<class T >
template<typename U >
void DerivativeMaterialInterface< T >::validateDerivativeMaterialPropertyBase ( const std::string &  base)

Check if the material property base exists.

Print a warning if it doesn't. This is useful in materials that pull in only derivative properties, which are optional. If the base property name has a typo all derivatives will be set to zero without the user ever knowing.

Definition at line 426 of file DerivativeMaterialInterface.h.

427 {
428  // resolve the input parameter name base to the actual material property name
429  const MaterialPropertyName prop_name = this->template getParam<MaterialPropertyName>(base);
430 
431  // check if the material property does not exist on the blocks of the current object,
432  // and check if it is not a plain number in the input file
433  if (!haveMaterialProperty<U>(prop_name) &&
434  this->template defaultMaterialProperty<U>(prop_name) == 0)
435  mooseWarning("The material property '",
436  prop_name,
437  "' does not exist. The kernel '",
438  this->name(),
439  "' only needs its derivatives, but this may indicate a typo in the input file.");
440 }
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition: MooseError.h:220

◆ validateNonlinearCoupling()

template<class T >
template<typename U >
void DerivativeMaterialInterface< T >::validateNonlinearCoupling ( const MaterialPropertyName &  base,
const VariableName &  c1 = "",
const VariableName &  c2 = "",
const VariableName &  c3 = "" 
)

Definition at line 415 of file DerivativeMaterialInterface.h.

419 {
420  validateCoupling<U>(base, buildVariableVector(c1, c2, c3), false);
421 }
std::vector< VariableName > buildVariableVector(const VariableName &c1, const VariableName &c2, const VariableName &c3)
helper method to combine multiple VariableNames into a vector (if they are != "") ...

Member Data Documentation

◆ _dmi_fe_problem

template<class T>
FEProblemBase& DerivativeMaterialInterface< T >::_dmi_fe_problem
private

Reference to FEProblemBase.

Definition at line 151 of file DerivativeMaterialInterface.h.


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