https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
MultiBarrierFunctionMaterial Class Reference

Double well phase transformation barrier free energy contribution. More...

#include <MultiBarrierFunctionMaterial.h>

Inheritance diagram for MultiBarrierFunctionMaterial:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 MultiBarrierFunctionMaterial (const InputParameters &parameters)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeQpProperties ()
 

Protected Attributes

std::string _function_name
 name of the function of eta (used to generate the material property names)
 
MooseEnum _g_order
 Polynomial order of the barrier function \( g(\eta) \).
 
bool _well_only
 zero out g contribution in the eta interval [0:1]
 
const unsigned int _num_eta
 order parameters
 
const std::vector< const VariableValue * > _eta
 
MaterialProperty< Real > & _prop_g
 Barrier functions and their drivatives.
 
std::vector< MaterialProperty< Real > * > _prop_dg
 
std::vector< MaterialProperty< Real > * > _prop_d2g
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

Double well phase transformation barrier free energy contribution.

\( g(\vec\eta) = \sum_i \eta_i^2(1-\eta_i)^2 \)

Definition at line 21 of file MultiBarrierFunctionMaterial.h.

Constructor & Destructor Documentation

◆ MultiBarrierFunctionMaterial()

MultiBarrierFunctionMaterial::MultiBarrierFunctionMaterial ( const InputParameters parameters)

Definition at line 32 of file MultiBarrierFunctionMaterial.C.

34 _function_name(getParam<std::string>("function_name")),
35 _g_order(getParam<MooseEnum>("g_order")),
36 _well_only(getParam<bool>("well_only")),
37 _num_eta(coupledComponents("etas")),
38 _eta(coupledValues("etas")),
39 _prop_g(declareProperty<Real>(_function_name)),
42{
43 // declare derivative properties, fetch eta values
44 for (unsigned int i = 0; i < _num_eta; ++i)
45 {
46 const VariableName & eta_name = coupledName("etas", i);
47 if (!isCoupledConstant(eta_name))
48 {
49 _prop_dg[i] = &declarePropertyDerivative<Real>(_function_name, eta_name);
50 _prop_d2g[i] = &declarePropertyDerivative<Real>(_function_name, eta_name, eta_name);
51 }
52 }
53}
const unsigned int _num_eta
order parameters
bool _well_only
zero out g contribution in the eta interval [0:1]
const std::vector< const VariableValue * > _eta
MaterialProperty< Real > & _prop_g
Barrier functions and their drivatives.
std::vector< MaterialProperty< Real > * > _prop_dg
std::vector< MaterialProperty< Real > * > _prop_d2g
std::string _function_name
name of the function of eta (used to generate the material property names)
MooseEnum _g_order
Polynomial order of the barrier function .

Member Function Documentation

◆ computeQpProperties()

void MultiBarrierFunctionMaterial::computeQpProperties ( )
protectedvirtual

Definition at line 56 of file MultiBarrierFunctionMaterial.C.

57{
58 Real g = 0.0;
59
60 for (unsigned int i = 0; i < _num_eta; ++i)
61 {
62 const Real n = (*_eta[i])[_qp];
63
64 if (_well_only && n >= 0.0 && n <= 1.0 && _prop_dg[i])
65 {
66 (*_prop_dg[i])[_qp] = 0.0;
67 (*_prop_d2g[i])[_qp] = 0.0;
68 continue;
69 }
70
71 switch (_g_order)
72 {
73 case 0: // SIMPLE
74 g += n * n * (1.0 - n) * (1.0 - n);
75 if (_prop_dg[i])
76 {
77 (*_prop_dg[i])[_qp] = 2.0 * n * (n - 1.0) * (2.0 * n - 1.0);
78 (*_prop_d2g[i])[_qp] = 12.0 * (n * n - n) + 2.0;
79 }
80 break;
81 }
82 }
83
84 _prop_g[_qp] = g;
85}
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ validParams()

InputParameters MultiBarrierFunctionMaterial::validParams ( )
static

Definition at line 15 of file MultiBarrierFunctionMaterial.C.

16{
18 params.addClassDescription("Double well phase transformation barrier free energy contribution.");
19 params.addParam<std::string>("function_name", "g", "actual name for g(eta_i)");
20 MooseEnum h_order("SIMPLE=0", "SIMPLE");
21 params.addParam<MooseEnum>(
22 "g_order", h_order, "Polynomial order of the switching function h(eta)");
23 params.addParam<bool>("well_only",
24 false,
25 "Make the g zero in [0:1] so it only contributes to "
26 "enforcing the eta range and not to the phase "
27 "transformation barrier.");
28 params.addRequiredCoupledVar("etas", "eta_i order parameters, one for each h");
29 return params;
30}
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()

Member Data Documentation

◆ _eta

const std::vector<const VariableValue *> MultiBarrierFunctionMaterial::_eta
protected

Definition at line 42 of file MultiBarrierFunctionMaterial.h.

Referenced by computeQpProperties().

◆ _function_name

std::string MultiBarrierFunctionMaterial::_function_name
protected

name of the function of eta (used to generate the material property names)

Definition at line 32 of file MultiBarrierFunctionMaterial.h.

Referenced by MultiBarrierFunctionMaterial().

◆ _g_order

MooseEnum MultiBarrierFunctionMaterial::_g_order
protected

Polynomial order of the barrier function \( g(\eta) \).

Definition at line 35 of file MultiBarrierFunctionMaterial.h.

Referenced by computeQpProperties().

◆ _num_eta

const unsigned int MultiBarrierFunctionMaterial::_num_eta
protected

order parameters

Definition at line 41 of file MultiBarrierFunctionMaterial.h.

Referenced by computeQpProperties(), and MultiBarrierFunctionMaterial().

◆ _prop_d2g

std::vector<MaterialProperty<Real> *> MultiBarrierFunctionMaterial::_prop_d2g
protected

◆ _prop_dg

std::vector<MaterialProperty<Real> *> MultiBarrierFunctionMaterial::_prop_dg
protected

◆ _prop_g

MaterialProperty<Real>& MultiBarrierFunctionMaterial::_prop_g
protected

Barrier functions and their drivatives.

Definition at line 45 of file MultiBarrierFunctionMaterial.h.

Referenced by computeQpProperties().

◆ _well_only

bool MultiBarrierFunctionMaterial::_well_only
protected

zero out g contribution in the eta interval [0:1]

Definition at line 38 of file MultiBarrierFunctionMaterial.h.

Referenced by computeQpProperties().


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