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

CHSplitFlux computes flux as non-linear variable via residual = flux + mobility * gradient(chemical potential) Kernel is associated with a component (direction) that needs to be specified in the input file. More...

#include <CHSplitFlux.h>

Inheritance diagram for CHSplitFlux:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 CHSplitFlux (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 computeQpResidual ()
 
virtual Real computeQpJacobian ()
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar)
 

Protected Attributes

const unsigned int _component
 
const unsigned int _mu_var
 
const VariableGradient_grad_mu
 
const MaterialProperty< RealTensorValue > & _mobility
 
const bool _has_coupled_c
 
const unsigned int _c_var
 
const MaterialProperty< RealTensorValue > *const _dmobility_dc
 

Detailed Description

CHSplitFlux computes flux as non-linear variable via residual = flux + mobility * gradient(chemical potential) Kernel is associated with a component (direction) that needs to be specified in the input file.

Definition at line 21 of file CHSplitFlux.h.

Constructor & Destructor Documentation

◆ CHSplitFlux()

CHSplitFlux::CHSplitFlux ( const InputParameters parameters)

Definition at line 26 of file CHSplitFlux.C.

28  _component(getParam<unsigned int>("component")),
29  _mu_var(coupled("mu")),
30  _grad_mu(coupledGradient("mu")),
31  _mobility(getMaterialProperty<RealTensorValue>("mobility_name")),
32  _has_coupled_c(isCoupled("c")),
33  _c_var(_has_coupled_c ? coupled("c") : 0),
35  "mobility_name", coupledName("c", 0))
36  : NULL)
37 {
38 }
const MaterialProperty< RealTensorValue > *const _dmobility_dc
Definition: CHSplitFlux.h:41
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative(const std::string &base, const std::vector< VariableName > &c)
TensorValue< Real > RealTensorValue
const unsigned int _component
Definition: CHSplitFlux.h:33
const VariableGradient & _grad_mu
Definition: CHSplitFlux.h:35
const bool _has_coupled_c
Definition: CHSplitFlux.h:38
const MaterialProperty< RealTensorValue > & _mobility
Definition: CHSplitFlux.h:36
const unsigned int _mu_var
Definition: CHSplitFlux.h:34
const unsigned int _c_var
Definition: CHSplitFlux.h:39

Member Function Documentation

◆ computeQpJacobian()

Real CHSplitFlux::computeQpJacobian ( )
protectedvirtual

Definition at line 47 of file CHSplitFlux.C.

48 {
49  return _test[_i][_qp] * _phi[_j][_qp];
50 }

◆ computeQpOffDiagJacobian()

Real CHSplitFlux::computeQpOffDiagJacobian ( unsigned int  jvar)
protectedvirtual

Definition at line 53 of file CHSplitFlux.C.

54 {
55  if (jvar == _mu_var)
56  return _test[_i][_qp] * _mobility[_qp].row(_component) * _grad_phi[_j][_qp];
57  else if (_has_coupled_c && jvar == _c_var)
58  return _test[_i][_qp] * (*_dmobility_dc)[_qp].row(_component) * _grad_mu[_qp] * _phi[_j][_qp];
59  else
60  return 0.0;
61 }
const unsigned int _component
Definition: CHSplitFlux.h:33
const VariableGradient & _grad_mu
Definition: CHSplitFlux.h:35
const bool _has_coupled_c
Definition: CHSplitFlux.h:38
const MaterialProperty< RealTensorValue > & _mobility
Definition: CHSplitFlux.h:36
const unsigned int _mu_var
Definition: CHSplitFlux.h:34
const unsigned int _c_var
Definition: CHSplitFlux.h:39

◆ computeQpResidual()

Real CHSplitFlux::computeQpResidual ( )
protectedvirtual

Definition at line 41 of file CHSplitFlux.C.

42 {
43  return _test[_i][_qp] * (_u[_qp] + _mobility[_qp].row(_component) * _grad_mu[_qp]);
44 }
const unsigned int _component
Definition: CHSplitFlux.h:33
const VariableGradient & _grad_mu
Definition: CHSplitFlux.h:35
const MaterialProperty< RealTensorValue > & _mobility
Definition: CHSplitFlux.h:36

◆ validParams()

InputParameters CHSplitFlux::validParams ( )
static

Definition at line 15 of file CHSplitFlux.C.

16 {
18  params.addClassDescription("Computes flux $j$ as nodal variable $j = -M\\nabla\\mu$");
19  params.addRequiredParam<unsigned int>("component", "Flux component");
20  params.addRequiredParam<MaterialPropertyName>("mobility_name", "Mobility property name");
21  params.addRequiredCoupledVar("mu", "Chemical Potential");
22  params.addCoupledVar("c", "Concentration");
23  return params;
24 }
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
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

◆ _c_var

const unsigned int CHSplitFlux::_c_var
protected

Definition at line 39 of file CHSplitFlux.h.

Referenced by computeQpOffDiagJacobian().

◆ _component

const unsigned int CHSplitFlux::_component
protected

Definition at line 33 of file CHSplitFlux.h.

Referenced by computeQpOffDiagJacobian(), and computeQpResidual().

◆ _dmobility_dc

const MaterialProperty<RealTensorValue>* const CHSplitFlux::_dmobility_dc
protected

Definition at line 41 of file CHSplitFlux.h.

◆ _grad_mu

const VariableGradient& CHSplitFlux::_grad_mu
protected

Definition at line 35 of file CHSplitFlux.h.

Referenced by computeQpOffDiagJacobian(), and computeQpResidual().

◆ _has_coupled_c

const bool CHSplitFlux::_has_coupled_c
protected

Definition at line 38 of file CHSplitFlux.h.

Referenced by computeQpOffDiagJacobian().

◆ _mobility

const MaterialProperty<RealTensorValue>& CHSplitFlux::_mobility
protected

Definition at line 36 of file CHSplitFlux.h.

Referenced by computeQpOffDiagJacobian(), and computeQpResidual().

◆ _mu_var

const unsigned int CHSplitFlux::_mu_var
protected

Definition at line 34 of file CHSplitFlux.h.

Referenced by computeQpOffDiagJacobian().


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