www.mooseframework.org
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
KKSSplitCHCRes Class Reference

SplitCHBulk child class that takes all the necessary data from a KKSBaseMaterial. More...

#include <KKSSplitCHCRes.h>

Inheritance diagram for KKSSplitCHCRes:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 KKSSplitCHCRes (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 Real computeDFDC (PFFunctionType type)
 Note that per product and chain rules: \( \frac{d}{du_j}\left(F(u)\nabla u\right) = \nabla u \frac {dF(u)}{du}\frac{du}{du_j} + F(u)\frac{d\nabla u}{du_j} \) which is: \( \nabla u \frac {dF(u)}{du} \phi_j + F(u) \nabla \phi_j \). More...
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar)
 
virtual Real computeQpResidual ()
 
virtual void initialSetup ()
 

Private Attributes

const MaterialProperty< Real > & _dFadca
 chemical potential More...
 
std::vector< const MaterialProperty< Real > * > _d2Fadcadarg
 Second derivatives of fa with respect to all ca and coupled variables. More...
 
unsigned int _w_var
 Chemical potential. More...
 
const VariableValue_w
 
unsigned int _ca_var
 Phase concnetration variable. More...
 
VariableName _ca_name
 

Detailed Description

SplitCHBulk child class that takes all the necessary data from a KKSBaseMaterial.

We calculate \( \frac{\partial F_a}{\partial c_a} \). This takes advantage of the KKS identity

\( dF/dc = dF_a/dc_a (= dF_b/dc_b) \)

The non-linear variable for this Kernel is the concentration 'c'. The user picks one phase free energy \( F_a \) (f_base) and its corresponding phase concentration \( c_a \)

Definition at line 30 of file KKSSplitCHCRes.h.

Constructor & Destructor Documentation

◆ KKSSplitCHCRes()

KKSSplitCHCRes::KKSSplitCHCRes ( const InputParameters parameters)

Definition at line 33 of file KKSSplitCHCRes.C.

35  _ca_var(coupled("ca")),
36  _ca_name(coupledName("ca", 0)),
37  _dFadca(getMaterialPropertyDerivative<Real>("fa_name", _ca_name)),
38  _d2Fadcadarg(_n_args),
39  _w_var(coupled("w")),
40  _w(coupledValue("w"))
41 {
42  // get the second derivative material property
43  for (unsigned int i = 0; i < _n_args; ++i)
44  _d2Fadcadarg[i] = &getMaterialPropertyDerivative<Real>("fa_name", _ca_name, i);
45 }
unsigned int _ca_var
Phase concnetration variable.
const VariableValue & _w
const MaterialProperty< Real > & _dFadca
chemical potential
std::vector< const MaterialProperty< Real > * > _d2Fadcadarg
Second derivatives of fa with respect to all ca and coupled variables.
VariableName _ca_name
unsigned int _w_var
Chemical potential.

Member Function Documentation

◆ computeDFDC()

Real KKSSplitCHCRes::computeDFDC ( PFFunctionType  type)
protectedvirtual

Note that per product and chain rules: \( \frac{d}{du_j}\left(F(u)\nabla u\right) = \nabla u \frac {dF(u)}{du}\frac{du}{du_j} + F(u)\frac{d\nabla u}{du_j} \) which is: \( \nabla u \frac {dF(u)}{du} \phi_j + F(u) \nabla \phi_j \).

Definition at line 71 of file KKSSplitCHCRes.C.

72 {
73  switch (type)
74  {
75  case Residual:
76  return _dFadca[_qp]; // dFa/dca ( = dFb/dcb = dF/dc)
77 
78  case Jacobian:
79  return 0.0;
80  }
81 
82  mooseError("Invalid type passed in");
83 }
void mooseError(Args &&... args)
const MaterialProperty< Real > & _dFadca
chemical potential

◆ computeQpOffDiagJacobian()

Real KKSSplitCHCRes::computeQpOffDiagJacobian ( unsigned int  jvar)
protectedvirtual

Definition at line 86 of file KKSSplitCHCRes.C.

87 {
88  // treat w variable explicitly
89  if (jvar == _w_var)
90  return -_phi[_j][_qp] * _test[_i][_qp];
91 
92  // get the coupled variable jvar is referring to
93  const unsigned int cvar = mapJvarToCvar(jvar);
94  return _phi[_j][_qp] * _test[_i][_qp] * (*_d2Fadcadarg[cvar])[_qp];
95 }
std::vector< const MaterialProperty< Real > * > _d2Fadcadarg
Second derivatives of fa with respect to all ca and coupled variables.
unsigned int _w_var
Chemical potential.

◆ computeQpResidual()

Real KKSSplitCHCRes::computeQpResidual ( )
protectedvirtual

Definition at line 55 of file KKSSplitCHCRes.C.

56 {
58  residual += -_w[_qp] * _test[_i][_qp];
59 
60  return residual;
61 }
virtual Real computeQpResidual()
Definition: SplitCHBase.C:39
const VariableValue & _w
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ initialSetup()

void KKSSplitCHCRes::initialSetup ( )
protectedvirtual

Definition at line 48 of file KKSSplitCHCRes.C.

49 {
50  validateNonlinearCoupling<Real>("fa_name");
51  validateDerivativeMaterialPropertyBase<Real>("fa_name");
52 }

◆ validParams()

InputParameters KKSSplitCHCRes::validParams ( )
static

Definition at line 15 of file KKSSplitCHCRes.C.

16 {
18  params.addClassDescription(
19  "KKS model kernel for the split Bulk Cahn-Hilliard term. This kernel operates on the "
20  "physical concentration 'c' as the non-linear variable");
21  params.addRequiredParam<MaterialPropertyName>(
22  "fa_name",
23  "Base name of an arbitrary phase free energy function F (f_base in the corresponding "
24  "KKSBaseMaterial)");
25  params.addRequiredCoupledVar(
26  "ca", "phase concentration corresponding to the non-linear variable of this kernel");
27  params.addCoupledVar("args_a", "Vector of additional arguments to Fa");
28  params.addRequiredCoupledVar("w",
29  "Chemical potential non-linear helper variable for the split solve");
30  return params;
31 }
void addRequiredParam(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
Definition: SplitCHBase.C:13
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _ca_name

VariableName KKSSplitCHCRes::_ca_name
private

Definition at line 46 of file KKSSplitCHCRes.h.

Referenced by KKSSplitCHCRes().

◆ _ca_var

unsigned int KKSSplitCHCRes::_ca_var
private

Phase concnetration variable.

Definition at line 45 of file KKSSplitCHCRes.h.

◆ _d2Fadcadarg

std::vector<const MaterialProperty<Real> *> KKSSplitCHCRes::_d2Fadcadarg
private

Second derivatives of fa with respect to all ca and coupled variables.

Definition at line 53 of file KKSSplitCHCRes.h.

Referenced by computeQpOffDiagJacobian(), and KKSSplitCHCRes().

◆ _dFadca

const MaterialProperty<Real>& KKSSplitCHCRes::_dFadca
private

chemical potential

Definition at line 50 of file KKSSplitCHCRes.h.

Referenced by computeDFDC().

◆ _w

const VariableValue& KKSSplitCHCRes::_w
private

Definition at line 57 of file KKSSplitCHCRes.h.

Referenced by computeQpResidual().

◆ _w_var

unsigned int KKSSplitCHCRes::_w_var
private

Chemical potential.

Definition at line 56 of file KKSSplitCHCRes.h.

Referenced by computeQpOffDiagJacobian().


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