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
CrossTermBarrierFunctionMaterial Class Reference

CrossTermBarrierFunctionMaterial adds free energy contribution on the interfaces between arbitrary pairs of phases in a symmetric way. More...

#include <CrossTermBarrierFunctionMaterial.h>

Inheritance diagram for CrossTermBarrierFunctionMaterial:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 CrossTermBarrierFunctionMaterial (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)
 
unsigned int _g_order
 polynomial order of the switching function \( g(\eta) \)
 
std::vector< Real > _W_ij
 barrier function height matrix
 
unsigned int _num_eta
 order parameters
 
const std::vector< VariableName > _eta_names
 
const std::vector< const VariableValue * > _eta
 
MaterialProperty< Real > & _prop_g
 Barrier function and its derivatives.
 
std::vector< MaterialProperty< Real > * > _prop_dg
 
std::vector< std::vector< MaterialProperty< Real > * > > _prop_d2g
 
std::vector< const MaterialProperty< Real > * > _h
 Switching functions and their derivatives.
 
std::vector< std::vector< const MaterialProperty< Real > * > > _dh
 

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

CrossTermBarrierFunctionMaterial adds free energy contribution on the interfaces between arbitrary pairs of phases in a symmetric way.

Definition at line 20 of file CrossTermBarrierFunctionMaterial.h.

Constructor & Destructor Documentation

◆ CrossTermBarrierFunctionMaterial()

CrossTermBarrierFunctionMaterial::CrossTermBarrierFunctionMaterial ( const InputParameters parameters)

Definition at line 23 of file CrossTermBarrierFunctionMaterial.C.

26{
27 // error out if W_ij is not symmetric
28 for (unsigned int i = 0; i < _num_eta; ++i)
29 for (unsigned int j = 0; j < i; ++j)
30 if (_W_ij[_num_eta * i + j] != _W_ij[_num_eta * j + i])
31 paramError("W_ij", "Please supply a symmetric W_ij matrix");
32}
CrossTermBarrierFunctionBase is the base to a set of free energy penalties that set the phase interfa...
unsigned int _num_eta
order parameters
std::vector< Real > _W_ij
barrier function height matrix

Member Function Documentation

◆ computeQpProperties()

void CrossTermBarrierFunctionMaterial::computeQpProperties ( )
protectedvirtual

Reimplemented from CrossTermBarrierFunctionBase.

Definition at line 35 of file CrossTermBarrierFunctionMaterial.C.

36{
37 // Initialize properties to zero before accumulating
39
40 // Sum the components of our W_ij matrix to get constant used in our g function
41 for (unsigned int i = 0; i < _num_eta; ++i)
42 for (unsigned int j = i + 1; j < _num_eta; ++j)
43 {
44 const Real ni = (*_eta[i])[_qp];
45 const Real nj = (*_eta[j])[_qp];
46 const Real Wij = _W_ij[_num_eta * i + j];
47
48 switch (_g_order)
49 {
50 case 0: // SIMPLE
51 _prop_g[_qp] += 16.0 * Wij * (ni * ni * nj * nj);
52 // first derivatives
53 (*_prop_dg[i])[_qp] += 16.0 * Wij * (2 * ni * nj * nj);
54 (*_prop_dg[j])[_qp] += 16.0 * Wij * (2 * ni * ni * nj);
55 // second derivatives (diagonal)
56 (*_prop_d2g[i][i])[_qp] += 16.0 * Wij * (2 * nj * nj);
57 (*_prop_d2g[j][j])[_qp] += 16.0 * Wij * (2 * ni * ni);
58 // second derivatives (off-diagonal)
59 (*_prop_d2g[i][j])[_qp] = 16.0 * Wij * (4 * ni * nj);
60 break;
61
62 case 1: // LOW
63 _prop_g[_qp] += 4.0 * Wij * (ni * nj);
64 // first derivatives
65 (*_prop_dg[i])[_qp] += 4.0 * Wij * nj;
66 (*_prop_dg[j])[_qp] += 4.0 * Wij * ni;
67 // second derivatives (diagonal) vanish
68 // second derivatives (off-diagonal)
69 (*_prop_d2g[i][j])[_qp] = 4.0 * Wij;
70 break;
71
72 default:
73 mooseError("Internal error");
74 }
75 }
76}
void mooseError(Args &&... args)
MaterialProperty< Real > & _prop_g
Barrier function and its derivatives.
const std::vector< const VariableValue * > _eta
std::vector< MaterialProperty< Real > * > _prop_dg
unsigned int _g_order
polynomial order of the switching function
std::vector< std::vector< MaterialProperty< Real > * > > _prop_d2g
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ validParams()

InputParameters CrossTermBarrierFunctionMaterial::validParams ( )
static

Definition at line 15 of file CrossTermBarrierFunctionMaterial.C.

16{
19 "Free energy contribution symmetric across interfaces between arbitrary pairs of phases.");
20 return params;
21}
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _dh

std::vector<std::vector<const MaterialProperty<Real> *> > CrossTermBarrierFunctionBase::_dh
protectedinherited

Definition at line 53 of file CrossTermBarrierFunctionBase.h.

◆ _eta

const std::vector<const VariableValue *> CrossTermBarrierFunctionBase::_eta
protectedinherited

◆ _eta_names

const std::vector<VariableName> CrossTermBarrierFunctionBase::_eta_names
protectedinherited

◆ _function_name

std::string CrossTermBarrierFunctionBase::_function_name
protectedinherited

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

Definition at line 32 of file CrossTermBarrierFunctionBase.h.

Referenced by CrossTermBarrierFunctionBase::CrossTermBarrierFunctionBase().

◆ _g_order

unsigned int CrossTermBarrierFunctionBase::_g_order
protectedinherited

polynomial order of the switching function \( g(\eta) \)

Definition at line 35 of file CrossTermBarrierFunctionBase.h.

Referenced by AsymmetricCrossTermBarrierFunctionMaterial::computeQpProperties(), and computeQpProperties().

◆ _h

std::vector<const MaterialProperty<Real> *> CrossTermBarrierFunctionBase::_h
protectedinherited

Switching functions and their derivatives.

Definition at line 52 of file CrossTermBarrierFunctionBase.h.

◆ _num_eta

unsigned int CrossTermBarrierFunctionBase::_num_eta
protectedinherited

◆ _prop_d2g

std::vector<std::vector<MaterialProperty<Real> *> > CrossTermBarrierFunctionBase::_prop_d2g
protectedinherited

◆ _prop_dg

std::vector<MaterialProperty<Real> *> CrossTermBarrierFunctionBase::_prop_dg
protectedinherited

◆ _prop_g

MaterialProperty<Real>& CrossTermBarrierFunctionBase::_prop_g
protectedinherited

◆ _W_ij

std::vector<Real> CrossTermBarrierFunctionBase::_W_ij
protectedinherited

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