https://mooseframework.inl.gov
PFCRFFMaterial.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 "PFCRFFMaterial.h"
11 
12 registerMooseObject("PhaseFieldApp", PFCRFFMaterial);
13 
16 {
18  params.addClassDescription("Defined the mobility, alpha and A constants for the RFF form of the "
19  "phase field crystal model");
20  params.addRequiredParam<unsigned int>(
21  "num_L", "specifies the number of complex L variables will be solved for");
22  return params;
23 }
24 
26  : Material(parameters),
27  _M(declareProperty<Real>("M")),
28  _alpha_R_0(declareProperty<Real>("alpha_R_0")),
29  _alpha_I_0(declareProperty<Real>("alpha_I_0")),
30  _A_R_0(declareProperty<Real>("A_R_0")),
31  _A_I_0(declareProperty<Real>("A_I_0")),
32  _alpha_R_1(declareProperty<Real>("alpha_R_1")),
33  _alpha_I_1(declareProperty<Real>("alpha_I_1")),
34  _A_R_1(declareProperty<Real>("A_R_1")),
35  _A_I_1(declareProperty<Real>("A_I_1")),
36  _alpha_R_2(declareProperty<Real>("alpha_R_2")),
37  _alpha_I_2(declareProperty<Real>("alpha_I_2")),
38  _A_R_2(declareProperty<Real>("A_R_2")),
39  _A_I_2(declareProperty<Real>("A_I_2")),
40  _alpha_R_3(declareProperty<Real>("alpha_R_3")),
41  _alpha_I_3(declareProperty<Real>("alpha_I_3")),
42  _A_R_3(declareProperty<Real>("A_R_3")),
43  _A_I_3(declareProperty<Real>("A_I_3")),
44  _alpha_R_4(declareProperty<Real>("alpha_R_4")),
45  _alpha_I_4(declareProperty<Real>("alpha_I_4")),
46  _A_R_4(declareProperty<Real>("A_R_4")),
47  _A_I_4(declareProperty<Real>("A_I_4")),
48  _num_L(getParam<unsigned int>("num_L"))
49 {
50 }
51 
52 void
54 {
55  // Mobility
56  _M[_qp] = 1.0;
57 
58  // Alpha and A constants
59  if (_num_L == 3)
60  {
61  // alpha constants
62  _alpha_R_0[_qp] = 2.352788316033853;
63  _alpha_I_0[_qp] = 0.0;
64  _alpha_R_1[_qp] = -4.371217046300305;
65  _alpha_I_1[_qp] = 6.153993830413678;
66  _alpha_R_2[_qp] = -4.371217046300305;
67  _alpha_I_2[_qp] = -6.153993830413678;
68 
69  // A constants
70  _A_R_0[_qp] = -1.254832460194660e2;
71  _A_I_0[_qp] = 4.141043034348927e-15;
72  _A_R_1[_qp] = 24.798843718179786;
73  _A_I_1[_qp] = 37.678064436502760;
74  _A_R_2[_qp] = 24.798843718179786;
75  _A_I_2[_qp] = -37.678064436502760;
76  }
77  else if (_num_L == 5)
78  {
79  // alpha constants
80  _alpha_R_0[_qp] = 2.429134088464706;
81  _alpha_I_0[_qp] = 0.0;
82  _alpha_R_1[_qp] = -3.972333899872749;
83  _alpha_I_1[_qp] = 6.499130135847140;
84  _alpha_R_2[_qp] = -3.972333899872749;
85  _alpha_I_2[_qp] = -6.499130135847140;
86  _alpha_R_3[_qp] = -18.943264072194637;
87  _alpha_I_3[_qp] = 9.349446845430961;
88  _alpha_R_4[_qp] = -18.943264072194637;
89  _alpha_I_4[_qp] = -9.349446845430961;
90 
91  // A constants
92  _A_R_0[_qp] = -1.282478656880326e02;
93  _A_I_0[_qp] = 9.910190130869531e-15;
94  _A_R_1[_qp] = 34.212475550662354;
95  _A_I_1[_qp] = 42.274652746493430;
96  _A_R_2[_qp] = 34.212475550666770;
97  _A_I_2[_qp] = -42.274652746496530;
98  _A_R_3[_qp] = 10.501019149011636;
99  _A_I_3[_qp] = -2.363585468012575;
100  _A_R_4[_qp] = 10.501019149026910;
101  _A_I_4[_qp] = 2.363585467971611;
102  }
103 }
104 
105 /*
106  _alpha_R_0[_qp] = 2.412;
107  _alpha_I_0[_qp] = 0.0;
108  _alpha_R_1[_qp] = -18.62;
109  _alpha_I_1[_qp] = 9.968;
110  _alpha_R_2[_qp] = -51.8;
111  _alpha_I_2[_qp] = -18.58;
112  _alpha_R_3[_qp] = -104.6;
113  _alpha_I_3[_qp] = -19.21;
114  _alpha_R_4[_qp] = -3.88;
115  _alpha_I_4[_qp] = 6.545;
116 
117  // A constants
118  _A_R_0[_qp] = -63.1;
119  _A_I_0[_qp] = 0.0;
120  _A_R_1[_qp] = 12.52;
121  _A_I_1[_qp] = -3.607;
122  _A_R_2[_qp] = 3.88;
123  _A_I_2[_qp] = 0.7762;
124  _A_R_3[_qp] = 0.9984;
125  _A_I_3[_qp] = 0.1591;
126  _A_R_4[_qp] = 36.7;
127  _A_I_4[_qp] = 42.66;
128 
129  else if (_num_L == 5)
130  {
131  // alpha constants
132  _alpha_R_0[_qp] = 2.4887266073084095552303551812656223773956298828125;
133  _alpha_I_0[_qp] = 0.0;
134  _alpha_R_1[_qp] = -19.2733746470461682065433706156909465789794921875;
135  _alpha_I_1[_qp] = -9.18277447910810451503493823111057281494140625;
136  _alpha_R_2[_qp] = -19.2733746470461682065433706156909465789794921875;
137  _alpha_I_2[_qp] = 9.18277447910810451503493823111057281494140625;
138  _alpha_R_3[_qp] = -3.8695517424123173633176975272363051772117614746094;
139  _alpha_I_3[_qp] = 6.7955256217773678528715208813082426786422729492188;
140  _alpha_R_4[_qp] = -3.8695517424123173633176975272363051772117614746094;
141  _alpha_I_4[_qp] = -6.7955256217773678528715208813082426786422729492188;
142 
143  // A constants
144  _A_R_0[_qp] = -133.2927098034036816898151300847530364990234375;
145  _A_I_0[_qp] = 0.0;
146  _A_R_1[_qp] = 10.728194854990965367846911249216645956039428710938;
147  _A_I_1[_qp] = 2.5027746492227604946378960448782891035079956054688;
148  _A_R_2[_qp] = 10.728194854990965367846911249216645956039428710938;
149  _A_I_2[_qp] = -2.5027746492227604946378960448782891035079956054688;
150  _A_R_3[_qp] = 35.9742594324134188354946672916412353515625;
151  _A_I_3[_qp] = 45.6070815722133602321264334022998809814453125;
152  _A_R_4[_qp] = 35.9742594324134188354946672916412353515625;
153  _A_I_4[_qp] = -45.6070815722133602321264334022998809814453125;
154  }
155 
156 */
MaterialProperty< Real > & _alpha_R_1
MaterialProperty< Real > & _A_R_4
registerMooseObject("PhaseFieldApp", PFCRFFMaterial)
MaterialProperty< Real > & _alpha_R_3
MaterialProperty< Real > & _A_I_1
MaterialProperty< Real > & _A_R_0
MaterialProperty< Real > & _A_I_3
virtual void computeQpProperties()
PFCRFFMaterial(const InputParameters &parameters)
MaterialProperty< Real > & _alpha_I_4
void addRequiredParam(const std::string &name, const std::string &doc_string)
unsigned int _qp
MaterialProperty< Real > & _alpha_R_2
MaterialProperty< Real > & _A_I_4
MaterialProperty< Real > & _A_R_1
static InputParameters validParams()
unsigned int _num_L
MaterialProperty< Real > & _A_R_3
MaterialProperty< Real > & _alpha_R_0
MaterialProperty< Real > & _M
MaterialProperty< Real > & _A_R_2
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialProperty< Real > & _A_I_2
MaterialProperty< Real > & _alpha_I_3
MaterialProperty< Real > & _alpha_R_4
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()
MaterialProperty< Real > & _alpha_I_0
MaterialProperty< Real > & _A_I_0
MaterialProperty< Real > & _alpha_I_1
void ErrorVector unsigned int
MaterialProperty< Real > & _alpha_I_2