www.mooseframework.org
BicrystalCircleGrainICAction.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 #include "Factory.h"
12 #include "FEProblem.h"
13 #include "Conversion.h"
14 
15 registerMooseAction("PhaseFieldApp", BicrystalCircleGrainICAction, "add_ic");
16 
17 template <>
18 InputParameters
20 {
21  InputParameters params = validParams<Action>();
22  params.addClassDescription("Bicrystal with a circular grain and an embedding outer grain");
23  params.addRequiredParam<std::string>("var_name_base", "specifies the base name of the variables");
24  params.addRequiredParam<unsigned int>("op_num", "Number of grains, should be 2");
25  params.addRequiredParam<Real>("radius", "Void radius");
26  params.addRequiredParam<Real>("x", "The x coordinate of the circle grain center");
27  params.addRequiredParam<Real>("y", "The y coordinate of the circle grain center");
28  params.addParam<Real>("z", 0.0, "The z coordinate of the circle grain center");
29  params.addParam<Real>(
30  "int_width", 0.0, "The interfacial width of the void surface. Defaults to sharp interface");
31  params.addParam<bool>(
32  "3D_sphere", true, "in 3D, whether the smaller grain is a spheres or columnar grain");
33  return params;
34 }
35 
37  : Action(params),
38  _var_name_base(getParam<std::string>("var_name_base")),
39  _op_num(getParam<unsigned int>("op_num")),
40  _radius(getParam<Real>("radius")),
41  _x(getParam<Real>("x")),
42  _y(getParam<Real>("y")),
43  _z(getParam<Real>("z")),
44  _int_width(getParam<Real>("int_width")),
45  _3D_sphere(getParam<bool>("3D_sphere"))
46 {
47  if (_op_num != 2)
48  paramError("op_num", "op_num must equal 2 for bicrystal ICs");
49 }
50 
51 void
53 {
54  // Loop through the number of order parameters
55  for (unsigned int op = 0; op < _op_num; op++)
56  {
57  // Create variable names
58  std::string var_name = _var_name_base + Moose::stringify(op);
59 
60  // Set parameters for SmoothCircleIC
61  InputParameters poly_params = _factory.getValidParams("SmoothCircleIC");
62  poly_params.set<VariableName>("variable") = var_name;
63  poly_params.set<Real>("x1") = _x;
64  poly_params.set<Real>("y1") = _y;
65  poly_params.set<Real>("z1") = _z;
66  poly_params.set<Real>("radius") = _radius;
67  poly_params.set<Real>("int_width") = _int_width;
68  poly_params.set<bool>("3D_spheres") = _3D_sphere;
69  if (op == 0)
70  {
71  // Values for circle grain
72  poly_params.set<Real>("invalue") = 1.0;
73  poly_params.set<Real>("outvalue") = 0.0;
74  }
75  else
76  {
77  // Values for matrix grain
78  poly_params.set<Real>("invalue") = 0.0;
79  poly_params.set<Real>("outvalue") = 1.0;
80  }
81 
82  // Add initial condition
83  _problem->addInitialCondition(
84  "SmoothCircleIC", "BicrystalCircleGrainIC_" + Moose::stringify(op), poly_params);
85  }
86 }
BicrystalCircleGrainICAction::_y
const Real _y
Definition: BicrystalCircleGrainICAction.h:30
BicrystalCircleGrainICAction::BicrystalCircleGrainICAction
BicrystalCircleGrainICAction(const InputParameters &params)
Definition: BicrystalCircleGrainICAction.C:36
BicrystalCircleGrainICAction::_radius
const Real _radius
Definition: BicrystalCircleGrainICAction.h:29
BicrystalCircleGrainICAction::_z
const Real _z
Definition: BicrystalCircleGrainICAction.h:30
BicrystalCircleGrainICAction
Bicrystal with a circular grain and an embedding outer grain.
Definition: BicrystalCircleGrainICAction.h:18
BicrystalCircleGrainICAction::_op_num
const unsigned int _op_num
Definition: BicrystalCircleGrainICAction.h:27
registerMooseAction
registerMooseAction("PhaseFieldApp", BicrystalCircleGrainICAction, "add_ic")
BicrystalCircleGrainICAction::_x
const Real _x
Definition: BicrystalCircleGrainICAction.h:30
BicrystalCircleGrainICAction::_3D_sphere
const bool _3D_sphere
Definition: BicrystalCircleGrainICAction.h:33
BicrystalCircleGrainICAction::_int_width
const Real _int_width
Definition: BicrystalCircleGrainICAction.h:31
BicrystalCircleGrainICAction.h
BicrystalCircleGrainICAction::act
virtual void act()
Definition: BicrystalCircleGrainICAction.C:52
BicrystalCircleGrainICAction::_var_name_base
const std::string _var_name_base
Definition: BicrystalCircleGrainICAction.h:26
validParams< BicrystalCircleGrainICAction >
InputParameters validParams< BicrystalCircleGrainICAction >()
Definition: BicrystalCircleGrainICAction.C:19