www.mooseframework.org
CHSplitConcentration.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<Kernel>();
19  params.addClassDescription(
20  "Concentration kernel in Split Cahn-Hilliard that solves chemical potential in a weak form");
21  params.addRequiredParam<MaterialPropertyName>("mobility", "Mobility property name");
22  params.addRequiredCoupledVar("chemical_potential_var", "Chemical potential variable");
23  return params;
24 }
25 
26 CHSplitConcentration::CHSplitConcentration(const InputParameters & parameters)
27  : DerivativeMaterialInterface<Kernel>(parameters),
28  _mobility_name(getParam<MaterialPropertyName>("mobility")),
29  _mobility(getMaterialProperty<RealTensorValue>(_mobility_name)),
30  _dmobility_dc(getMaterialPropertyDerivative<RealTensorValue>(_mobility_name, name())),
31  _mu_var(coupled("chemical_potential_var")),
32  _grad_mu(coupledGradient("chemical_potential_var"))
33 {
34 }
35 
36 Real
38 {
39  const RealVectorValue a = _mobility[_qp] * _grad_mu[_qp];
40  return _grad_test[_i][_qp] * a;
41 }
42 
43 Real
45 {
46  const RealVectorValue a = _dmobility_dc[_qp] * _grad_mu[_qp];
47  return _grad_test[_i][_qp] * a * _phi[_j][_qp];
48 }
49 
50 Real
52 {
53  if (jvar == _mu_var)
54  {
55  const RealVectorValue a = _mobility[_qp] * _grad_phi[_j][_qp];
56  return _grad_test[_i][_qp] * a;
57  }
58  else
59  return 0.0;
60 }
CHSplitConcentration::CHSplitConcentration
CHSplitConcentration(const InputParameters &parameters)
Definition: CHSplitConcentration.C:26
CHSplitConcentration::_dmobility_dc
const MaterialProperty< RealTensorValue > & _dmobility_dc
Definition: CHSplitConcentration.h:38
CHSplitConcentration.h
CHSplitConcentration::_mobility
const MaterialProperty< RealTensorValue > & _mobility
Definition: CHSplitConcentration.h:37
CHSplitConcentration::computeQpResidual
virtual Real computeQpResidual()
Definition: CHSplitConcentration.C:37
name
const std::string name
Definition: Setup.h:21
CHSplitConcentration::_mu_var
const unsigned int _mu_var
Chemical potential variable.
Definition: CHSplitConcentration.h:41
CHSplitConcentration::_grad_mu
const VariableGradient & _grad_mu
Definition: CHSplitConcentration.h:42
CHSplitConcentration::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int)
Definition: CHSplitConcentration.C:51
validParams< CHSplitConcentration >
InputParameters validParams< CHSplitConcentration >()
Definition: CHSplitConcentration.C:16
CHSplitConcentration::computeQpJacobian
virtual Real computeQpJacobian()
Definition: CHSplitConcentration.C:44
CHSplitConcentration
Solves Cahn-Hilliard equation using chemical potential as non-linear variable.
Definition: CHSplitConcentration.h:24
registerMooseObject
registerMooseObject("PhaseFieldApp", CHSplitConcentration)