Enforce sum of phase concentrations to be the real concentration. More...
#include <SLKKSPhaseConcentration.h>
Public Types | |
| typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
| SLKKSPhaseConcentration (const InputParameters ¶meters) | |
| 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 Real | computeQpResidual () |
| virtual Real | computeQpJacobian () |
| virtual Real | computeQpOffDiagJacobian (unsigned int jvar) |
Protected Attributes | |
| Real | _a_u |
| sublattice fraction for the sublattice B concentration represented by the kernel variable | |
| const MaterialProperty< Real > & | _prop_h |
| Switching function \( h(\eta) \). | |
| const MaterialProperty< Real > & | _prop_dh |
| Derivative of the switching function \( \frac d{d\eta} h(\eta) \). | |
| unsigned int | _nca |
| sublattice A variables | |
| std::vector< const VariableValue * > | _ca |
| std::vector< Real > | _a_ca |
| const JvarMap & | _ca_map |
| unsigned int | _ncb |
| sublattice B variables | |
| std::vector< const VariableValue * > | _cb |
| std::vector< Real > | _a_cb |
| const JvarMap & | _cb_map |
| const VariableValue & | _c |
| global concentration variable | |
| unsigned int | _c_var |
| const VariableValue & | _eta |
| phase order parameter | |
| unsigned int | _eta_var |
Private Member Functions | |
| void | computeSums () |
| update the _casum and _cbsum members | |
| 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 |
| Real | _casum |
| updated by computeSums | |
| Real | _cbsum |
Enforce sum of phase concentrations to be the real concentration.
\( c=h(\eta)c_a+\left(1-h(\eta)\right)c_b\)
The non-linear variable for this Kernel is the concentration \( c_b \), while \( c_a \) and \( c \) are supplied as coupled variables. (compare this to KKSPhaseChemicalPotential, where the non-linear variable is the other phase concentration \( c_a \)!) D. Schwen et al. https://doi.org/10.1016/j.commatsci.2021.110466
Definition at line 30 of file SLKKSPhaseConcentration.h.
| SLKKSPhaseConcentration::SLKKSPhaseConcentration | ( | const InputParameters & | parameters | ) |
Definition at line 37 of file SLKKSPhaseConcentration.C.
|
protectedvirtual |
Definition at line 94 of file SLKKSPhaseConcentration.C.
|
protectedvirtual |
Definition at line 100 of file SLKKSPhaseConcentration.C.
|
protectedvirtual |
Definition at line 87 of file SLKKSPhaseConcentration.C.
|
private |
update the _casum and _cbsum members
Definition at line 123 of file SLKKSPhaseConcentration.C.
Referenced by computeQpOffDiagJacobian(), and computeQpResidual().
|
static |
Definition at line 15 of file SLKKSPhaseConcentration.C.
|
protected |
Definition at line 45 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian(), computeSums(), and SLKKSPhaseConcentration().
|
protected |
Definition at line 52 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian(), computeSums(), and SLKKSPhaseConcentration().
|
protected |
sublattice fraction for the sublattice B concentration represented by the kernel variable
Definition at line 57 of file SLKKSPhaseConcentration.h.
Referenced by computeQpJacobian(), computeSums(), and SLKKSPhaseConcentration().
|
protected |
global concentration variable
Definition at line 60 of file SLKKSPhaseConcentration.h.
Referenced by computeQpResidual().
|
protected |
Definition at line 61 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian().
|
protected |
Definition at line 44 of file SLKKSPhaseConcentration.h.
Referenced by computeSums(), and SLKKSPhaseConcentration().
|
protected |
Definition at line 46 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian().
|
private |
updated by computeSums
Definition at line 80 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian(), computeQpResidual(), and computeSums().
|
protected |
Definition at line 51 of file SLKKSPhaseConcentration.h.
Referenced by computeSums(), and SLKKSPhaseConcentration().
|
protected |
Definition at line 53 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian().
|
private |
Definition at line 81 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian(), computeQpResidual(), and computeSums().
|
protected |
phase order parameter
Definition at line 65 of file SLKKSPhaseConcentration.h.
|
protected |
Definition at line 66 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian().
|
protected |
sublattice A variables
Definition at line 43 of file SLKKSPhaseConcentration.h.
Referenced by computeSums(), and SLKKSPhaseConcentration().
|
protected |
sublattice B variables
Definition at line 50 of file SLKKSPhaseConcentration.h.
Referenced by computeSums(), and SLKKSPhaseConcentration().
|
protected |
Derivative of the switching function \( \frac d{d\eta} h(\eta) \).
Definition at line 73 of file SLKKSPhaseConcentration.h.
Referenced by computeQpOffDiagJacobian().
|
protected |
Switching function \( h(\eta) \).
Definition at line 70 of file SLKKSPhaseConcentration.h.
Referenced by computeQpJacobian(), computeQpOffDiagJacobian(), and computeQpResidual().