https://mooseframework.inl.gov
CHSplitConcentration.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #include "CHSplitConcentration.h"
11 
13 
16 {
18  params.addClassDescription(
19  "Concentration kernel in Split Cahn-Hilliard that solves chemical potential in a weak form");
20  params.addRequiredParam<MaterialPropertyName>("mobility", "Mobility property name");
21  params.addRequiredCoupledVar("chemical_potential_var", "Chemical potential variable");
22  return params;
23 }
24 
26  : DerivativeMaterialInterface<Kernel>(parameters),
27  _mobility_name(getParam<MaterialPropertyName>("mobility")),
28  _mobility(getMaterialProperty<RealTensorValue>(_mobility_name)),
29  _dmobility_dc(getMaterialPropertyDerivative<RealTensorValue>(_mobility_name, name())),
30  _mu_var(coupled("chemical_potential_var")),
31  _grad_mu(coupledGradient("chemical_potential_var"))
32 {
33 }
34 
35 Real
37 {
38  const RealVectorValue a = _mobility[_qp] * _grad_mu[_qp];
39  return _grad_test[_i][_qp] * a;
40 }
41 
42 Real
44 {
45  const RealVectorValue a = _dmobility_dc[_qp] * _grad_mu[_qp];
46  return _grad_test[_i][_qp] * a * _phi[_j][_qp];
47 }
48 
49 Real
51 {
52  if (jvar == _mu_var)
53  {
54  const RealVectorValue a = _mobility[_qp] * _grad_phi[_j][_qp];
55  return _grad_test[_i][_qp] * a;
56  }
57  else
58  return 0.0;
59 }
const MaterialProperty< RealTensorValue > & _mobility
virtual Real computeQpResidual()
static InputParameters validParams()
const MaterialProperty< RealTensorValue > & _dmobility_dc
registerMooseObject("PhaseFieldApp", CHSplitConcentration)
Solves Cahn-Hilliard equation using chemical potential as non-linear variable.
const VariableGradient & _grad_mu
void addRequiredParam(const std::string &name, const std::string &doc_string)
TensorValue< Real > RealTensorValue
const std::string name
Definition: Setup.h:20
static InputParameters validParams()
CHSplitConcentration(const InputParameters &parameters)
virtual Real computeQpOffDiagJacobian(unsigned int)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
const unsigned int _mu_var
Chemical potential variable.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
virtual Real computeQpJacobian()