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 isNotKernelVariable (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 35 of file DerivativeMaterialInterface.h.

Constructor & Destructor Documentation

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

Definition at line 158 of file DerivativeMaterialInterface.h.

159  : T(parameters),
160  _dmi_fe_problem(*parameters.getCheckedPointerParam<FEProblemBase *>("_fe_problem_base"))
161 {
162 }
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
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...
FEProblemBase & _dmi_fe_problem
Reference to FEProblemBase.

Member Function Documentation

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 386 of file DerivativeMaterialInterface.h.

Referenced by DerivativeMaterialInterface< T >::validateCoupling(), and DerivativeMaterialInterface< T >::validateNonlinearCoupling().

389 {
390  std::vector<VariableName> c;
391  if (c1 != "")
392  {
393  c.push_back(c1);
394  if (c2 != "")
395  {
396  c.push_back(c2);
397  if (c3 != "")
398  c.push_back(c3);
399  }
400  }
401  return c;
402 }
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 221 of file DerivativeMaterialInterface.h.

223 {
224  return this->template declareProperty<U>(propertyName(base, c));
225 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.
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 230 of file DerivativeMaterialInterface.h.

234 {
235  if (c3 != "")
236  return this->template declareProperty<U>(propertyNameThird(base, c1, c2, c3));
237  if (c2 != "")
238  return this->template declareProperty<U>(propertyNameSecond(base, c1, c2));
239  return this->template declareProperty<U>(propertyNameFirst(base, c1));
240 }
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.
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.
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 191 of file DerivativeMaterialInterface.h.

192 {
193  // get the base property name
194  std::string prop_name = this->deducePropertyName(name);
195 
196  // Check if it's just a constant
197  const MaterialProperty<U> * default_property =
198  this->template defaultMaterialProperty<U>(prop_name);
199  if (default_property)
200  return *default_property;
201 
202  // if found return the requested property
203  return getDefaultMaterialPropertyByName<U>(prop_name);
204 }
Concrete definition of a parameter value for a specified type.
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 209 of file DerivativeMaterialInterface.h.

210 {
211  // if found return the requested property
212  if (haveMaterialProperty<U>(prop_name))
213  return this->template getMaterialPropertyByName<U>(prop_name);
214 
215  return this->template getZeroMaterialProperty<U>(prop_name);
216 }
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 245 of file DerivativeMaterialInterface.h.

247 {
248  // get the base property name
249  std::string prop_name = this->deducePropertyName(base);
250 
255  if (this->template defaultMaterialProperty<U>(prop_name))
256  return this->template getZeroMaterialProperty<U>(prop_name + "_zeroderivative");
257 
258  return getDefaultMaterialPropertyByName<U>(propertyName(prop_name, c));
259 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.
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 264 of file DerivativeMaterialInterface.h.

268 {
269  // get the base property name
270  std::string prop_name = this->deducePropertyName(base);
271 
276  if (this->template defaultMaterialProperty<U>(prop_name))
277  return this->template getZeroMaterialProperty<U>(prop_name + "_zeroderivative");
278 
279  if (c3 != "")
280  return getDefaultMaterialPropertyByName<U>(propertyNameThird(prop_name, c1, c2, c3));
281  if (c2 != "")
282  return getDefaultMaterialPropertyByName<U>(propertyNameSecond(prop_name, c1, c2));
283  return getDefaultMaterialPropertyByName<U>(propertyNameFirst(prop_name, c1));
284 }
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.
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.
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 289 of file DerivativeMaterialInterface.h.

291 {
292  return getDefaultMaterialPropertyByName<U>(propertyName(base, c));
293 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.
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 298 of file DerivativeMaterialInterface.h.

303 {
304  if (c3 != "")
305  return getDefaultMaterialPropertyByName<U>(propertyNameThird(base, c1, c2, c3));
306  if (c2 != "")
307  return getDefaultMaterialPropertyByName<U>(propertyNameSecond(base, c1, c2));
308  return getDefaultMaterialPropertyByName<U>(propertyNameFirst(base, c1));
309 }
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.
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.
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 177 of file DerivativeMaterialInterface.h.

178 {
179  // Call the correct method to test for material property declarations
180  BlockRestrictable * blk = dynamic_cast<BlockRestrictable *>(this);
181  BoundaryRestrictable * bnd = dynamic_cast<BoundaryRestrictable *>(this);
182  return ((bnd && bnd->boundaryRestricted() &&
183  bnd->template hasBoundaryMaterialProperty<U>(prop_name)) ||
184  (blk && blk->template hasBlockMaterialProperty<U>(prop_name)) ||
185  (this->template hasMaterialProperty<U>(prop_name)));
186 }
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.
template<class T >
bool DerivativeMaterialInterface< T >::isNotKernelVariable ( const VariableName &  name)
inlineprivate

Definition at line 447 of file DerivativeMaterialInterface.h.

Referenced by DerivativeMaterialInterface< T >::validateCouplingHelper().

448 {
449  // try to cast this to a Kernel pointer
450  KernelBase * k = dynamic_cast<KernelBase *>(this);
451 
452  // This interface is not templated on a class derived from Kernel
453  if (k == NULL)
454  return true;
455 
456  // We are templated on a kernel class, so we check if the kernel variable
457  return k->variable().name() != name;
458 }
const std::string & name() const
Get the variable name.
This is the common base class for the two main kernel types implemented in MOOSE, EigenKernel and Ker...
Definition: KernelBase.h:47
MooseVariable & variable()
Returns the variable number that this Kernel operates on.
Definition: KernelBase.C:156
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 7 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by DerivativeMaterialInterface< T >::declarePropertyDerivative(), DerivativeMaterialInterface< T >::getMaterialPropertyDerivative(), DerivativeMaterialInterface< T >::getMaterialPropertyDerivativeByName(), MaterialDerivativeTestAction::MaterialDerivativeTestAction(), DerivativeMaterialPropertyNameInterface::propertyNameSecond(), DerivativeMaterialPropertyNameInterface::propertyNameThird(), and DerivativeMaterialInterface< T >::validateCouplingHelper().

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

Referenced by DerivativeMaterialInterface< T >::declarePropertyDerivative(), DerivativeMaterialInterface< T >::getMaterialPropertyDerivative(), and DerivativeMaterialInterface< T >::getMaterialPropertyDerivativeByName().

49 {
50  return "d" + base + "/d" + c1;
51 }
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 54 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by DerivativeMaterialInterface< T >::declarePropertyDerivative(), DerivativeMaterialInterface< T >::getMaterialPropertyDerivative(), and DerivativeMaterialInterface< T >::getMaterialPropertyDerivativeByName().

57 {
58  return propertyName(base, {c1, c2});
59 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.
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 62 of file DerivativeMaterialPropertyNameInterface.C.

Referenced by DerivativeMaterialInterface< T >::declarePropertyDerivative(), DerivativeMaterialInterface< T >::getMaterialPropertyDerivative(), and DerivativeMaterialInterface< T >::getMaterialPropertyDerivativeByName().

66 {
67  return propertyName(base, {c1, c2, c3});
68 }
const MaterialPropertyName propertyName(const MaterialPropertyName &base, const std::vector< VariableName > &c) const
Helper functions to generate the material property names for the arbitrary derivatives.
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 354 of file DerivativeMaterialInterface.h.

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

411 {
412  validateCoupling<U>(base, buildVariableVector(c1, c2, c3), true);
413 }
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 != "") ...
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 314 of file DerivativeMaterialInterface.h.

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

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

422 {
423  validateCoupling<U>(base, buildVariableVector(c1, c2, c3), false);
424 }
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

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

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