www.mooseframework.org
BarrierFunctionMaterial.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 
11 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<OrderParameterFunctionMaterial>();
19  params.addClassDescription("Helper material to provide g(eta) and its derivative in a "
20  "polynomial.\nSIMPLE: eta^2*(1-eta)^2\nLOW: eta*(1-eta)"
21  "\nHIGH: eta^2*(1-eta^2)^2");
22  MooseEnum g_order("SIMPLE=0 LOW HIGH", "SIMPLE");
23  params.addParam<MooseEnum>("g_order", g_order, "Polynomial order of the barrier function g(eta)");
24  params.addParam<bool>("well_only",
25  false,
26  "Make the g zero in [0:1] so it only contributes to "
27  "enforcing the eta range and not to the phase "
28  "transformation barrier.");
29  params.set<std::string>("function_name") = std::string("g");
30  return params;
31 }
32 
33 BarrierFunctionMaterial::BarrierFunctionMaterial(const InputParameters & parameters)
34  : OrderParameterFunctionMaterial(parameters),
35  _g_order(getParam<MooseEnum>("g_order")),
36  _well_only(getParam<bool>("well_only"))
37 {
38 }
39 
40 void
42 {
43  const Real n = _eta[_qp];
44 
45  if (_well_only && n >= 0.0 && n <= 1.0)
46  {
47  _prop_f[_qp] = 0.0;
48  _prop_df[_qp] = 0.0;
49  _prop_d2f[_qp] = 0.0;
50  return;
51  }
52 
53  switch (_g_order)
54  {
55  case 0: // SIMPLE
56  _prop_f[_qp] = n * n * (1.0 - n) * (1.0 - n);
57  _prop_df[_qp] = 2.0 * n * (n - 1.0) * (2.0 * n - 1.0);
58  _prop_d2f[_qp] = 12.0 * (n * n - n) + 2.0;
59  break;
60 
61  case 1: // LOW
62  _prop_f[_qp] = n * (1.0 - n);
63  _prop_df[_qp] = 1.0 - 2.0 * n;
64  _prop_d2f[_qp] = -2.0;
65  break;
66 
67  case 2: // HIGH
68  _prop_f[_qp] = n * n * (1.0 - n * n) * (1.0 - n * n);
69  _prop_df[_qp] = n * (2.0 - n * n * (8.0 + 6.0 * n * n));
70  _prop_d2f[_qp] = 2.0 - n * n * (24.0 + 30.0 * n * n);
71  break;
72 
73  default:
74  mooseError("Internal error");
75  }
76 }
BarrierFunctionMaterial::_g_order
MooseEnum _g_order
Polynomial order of the switching function .
Definition: BarrierFunctionMaterial.h:36
OrderParameterFunctionMaterial::_prop_f
MaterialProperty< Real > & _prop_f
Material property to store .
Definition: OrderParameterFunctionMaterial.h:41
OrderParameterFunctionMaterial
Material base class for materials that provide the switching function or the double well function .
Definition: OrderParameterFunctionMaterial.h:26
BarrierFunctionMaterial
Material class to provide the double well function for the KKS system.
Definition: BarrierFunctionMaterial.h:27
BarrierFunctionMaterial::_well_only
bool _well_only
zero out g contribution in the eta interval [0:1]
Definition: BarrierFunctionMaterial.h:39
OrderParameterFunctionMaterial::_eta
const VariableValue & _eta
Coupled variable value for the order parameter .
Definition: OrderParameterFunctionMaterial.h:33
BarrierFunctionMaterial::BarrierFunctionMaterial
BarrierFunctionMaterial(const InputParameters &parameters)
Definition: BarrierFunctionMaterial.C:33
validParams< OrderParameterFunctionMaterial >
InputParameters validParams< OrderParameterFunctionMaterial >()
Definition: OrderParameterFunctionMaterial.C:14
BarrierFunctionMaterial::computeQpProperties
virtual void computeQpProperties()
Definition: BarrierFunctionMaterial.C:41
validParams< BarrierFunctionMaterial >
InputParameters validParams< BarrierFunctionMaterial >()
Definition: BarrierFunctionMaterial.C:16
registerMooseObject
registerMooseObject("PhaseFieldApp", BarrierFunctionMaterial)
BarrierFunctionMaterial.h
OrderParameterFunctionMaterial::_prop_df
MaterialProperty< Real > & _prop_df
Material property to store the derivative .
Definition: OrderParameterFunctionMaterial.h:44
OrderParameterFunctionMaterial::_prop_d2f
MaterialProperty< Real > & _prop_d2f
Material property to store the second derivative .
Definition: OrderParameterFunctionMaterial.h:47