www.mooseframework.org
CHBulkPFCTrad.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 "CHBulkPFCTrad.h"
11 
12 registerMooseObject("PhaseFieldApp", CHBulkPFCTrad);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = CHBulk<Real>::validParams();
19  params.addClassDescription(
20  "Cahn-Hilliard kernel for a polynomial phase field crystal free energy.");
21  return params;
22 }
23 
24 CHBulkPFCTrad::CHBulkPFCTrad(const InputParameters & parameters)
25  : CHBulk<Real>(parameters),
26  _C0(getMaterialProperty<Real>("C0")),
27  _a(getMaterialProperty<Real>("a")),
28  _b(getMaterialProperty<Real>("b"))
29 {
30 }
31 
34 {
35  Real d2fdc2 = 1.0 - _C0[_qp] - _a[_qp] * _u[_qp] + _b[_qp] * _u[_qp] * _u[_qp];
36 
37  switch (type)
38  {
39  case Residual:
40  return d2fdc2 * _grad_u[_qp];
41 
42  case Jacobian:
43  {
44  Real d3fdc3 = -_a[_qp] + 2.0 * _b[_qp] * _u[_qp];
45  return d2fdc2 * _grad_phi[_j][_qp] + d3fdc3 * _grad_u[_qp] * _phi[_j][_qp];
46  }
47  }
48 
49  mooseError("Invalid type passed in");
50 }
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
CHBulkPFCTrad
Definition: CHBulkPFCTrad.h:20
CHBulk< Real >::Jacobian
Definition: CHBulk.h:40
CHBulk< Real >::Residual
Definition: CHBulk.h:41
CHBulkPFCTrad.h
CHBulkPFCTrad::_C0
const MaterialProperty< Real > & _C0
Definition: CHBulkPFCTrad.h:29
CHBulk::validParams
static InputParameters validParams()
Definition: CHBulk.h:75
CHBulkPFCTrad::_b
const MaterialProperty< Real > & _b
Definition: CHBulkPFCTrad.h:31
CHBulkPFCTrad::computeGradDFDCons
virtual RealGradient computeGradDFDCons(PFFunctionType type)
Definition: CHBulkPFCTrad.C:33
registerMooseObject
registerMooseObject("PhaseFieldApp", CHBulkPFCTrad)
CHBulkPFCTrad::CHBulkPFCTrad
CHBulkPFCTrad(const InputParameters &parameters)
Definition: CHBulkPFCTrad.C:24
validParams< CHBulkPFCTrad >
InputParameters validParams< CHBulkPFCTrad >()
Definition: CHBulkPFCTrad.C:16
CHBulkPFCTrad::_a
const MaterialProperty< Real > & _a
Definition: CHBulkPFCTrad.h:30
CHBulk
This is the Cahn-Hilliard equation base class that implements the bulk or local energy term of the eq...
Definition: CHBulk.h:25