www.mooseframework.org
PFCTradMaterial.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 "PFCTradMaterial.h"
11 
12 registerMooseObject("PhaseFieldApp", PFCTradMaterial);
13 
16 {
18  params.addClassDescription(
19  "Polynomial coefficients for a phase field crystal correlation function");
20  MooseEnum order("FOURTH=4 EIGHTH=8");
22  "order", order, "This is the order of the polynomial used for correlation function");
23  return params;
24 }
25 
27  : Material(parameters),
28  _order(getParam<MooseEnum>("order")),
29  _M(declareProperty<Real>("M")),
30  _a(declareProperty<Real>("a")),
31  _b(declareProperty<Real>("b")),
32  _C0(declareProperty<Real>("C0")),
33  _C2(declareProperty<Real>("C2")),
34  _C4(declareProperty<Real>("C4")),
35  _C6(declareProperty<Real>("C6")),
36  _C8(declareProperty<Real>("C8"))
37 {
38 }
39 
40 void
42 {
43  const Real invSkm = 0.332;
44  const Real u_s = 0.72;
45 
46  _M[_qp] = 1.0;
47  _a[_qp] = 3.0 / (2.0 * u_s) * invSkm;
48  _b[_qp] = 4.0 / (30.0 * u_s * u_s) * invSkm;
49 
50  switch (_order)
51  {
52  case 4:
53  _C0[_qp] = -10.9153;
54  _C2[_qp] = 2.6; // Angstrom^2
55  _C4[_qp] = 0.1459; // Angstrom^4, would be negative but coefficient term is negative
56  break;
57 
58  case 8:
59  _C0[_qp] = -49.0;
60  // new parameter derived from Jaatinen's paper; using km = 2.985 A; updated 1/31/2015.
61  _C2[_qp] = 20.00313; // Angstrom^2
62  _C4[_qp] = 3.11883; // Angstrom^4, would be negative but coefficient term is negative
63  _C6[_qp] = 0.22554; // Angstrom^6
64  _C8[_qp] = 0.00643; // Angstrom^8, would be negative but coefficient term is negative
65  break;
66 
67  default:
68  mooseError("Unknown order value.");
69  }
70 }
MaterialProperty< Real > & _C0
MaterialProperty< Real > & _M
registerMooseObject("PhaseFieldApp", PFCTradMaterial)
MaterialProperty< Real > & _C2
MaterialProperty< Real > & _C4
const unsigned int _order
void addRequiredParam(const std::string &name, const std::string &doc_string)
unsigned int _qp
PFCTradMaterial(const InputParameters &parameters)
static InputParameters validParams()
static InputParameters validParams()
MaterialProperty< Real > & _C8
MaterialProperty< Real > & _b
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialProperty< Real > & _C6
void mooseError(Args &&... args) const
void addClassDescription(const std::string &doc_string)
MaterialProperty< Real > & _a
virtual void computeQpProperties()