www.mooseframework.org
OutputEulerAngles.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 "OutputEulerAngles.h"
11 #include "GrainTracker.h"
12 #include "EulerAngleProvider.h"
13 
14 registerMooseObject("PhaseFieldApp", OutputEulerAngles);
15 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<AuxKernel>();
21  params.addClassDescription("Output Euler angles from user object to an AuxVariable.");
22  params.addRequiredParam<UserObjectName>("euler_angle_provider",
23  "Name of Euler angle provider user object");
24  params.addRequiredParam<UserObjectName>("grain_tracker",
25  "The GrainTracker UserObject to get values from.");
26  MooseEnum euler_angles("phi1 Phi phi2");
27  params.addRequiredParam<MooseEnum>("output_euler_angle", euler_angles, "Euler angle to output");
28  return params;
29 }
30 
31 OutputEulerAngles::OutputEulerAngles(const InputParameters & parameters)
32  : AuxKernel(parameters),
33  _euler(getUserObject<EulerAngleProvider>("euler_angle_provider")),
34  _grain_tracker(getUserObject<GrainTracker>("grain_tracker")),
35  _output_euler_angle(getParam<MooseEnum>("output_euler_angle"))
36 {
37 }
38 
39 void
41 {
42  // ID of unique grain at current point
43  const auto grain_id =
44  _grain_tracker.getEntityValue((isNodal() ? _current_node->id() : _current_elem->id()),
46  0);
47 
48  // Recover euler angles for current grain
49  RealVectorValue angles;
50  if (grain_id >= 0)
51  angles = _euler.getEulerAngles(grain_id);
52 
53  // Return specific euler angle
54  _value = angles(_output_euler_angle);
55 }
56 
57 Real
59 {
60  return _value;
61 }
GrainTracker::getEntityValue
virtual Real getEntityValue(dof_id_type node_id, FieldType field_type, std::size_t var_index=0) const override
Definition: GrainTracker.C:120
FeatureFloodCount::FieldType::UNIQUE_REGION
EulerAngleProvider.h
OutputEulerAngles
Output euler angles from user object to an AuxVariable.
Definition: OutputEulerAngles.h:27
OutputEulerAngles::_euler
const EulerAngleProvider & _euler
Object providing the Euler angles.
Definition: OutputEulerAngles.h:37
OutputEulerAngles::computeValue
virtual Real computeValue()
Definition: OutputEulerAngles.C:58
GrainTracker
Definition: GrainTracker.h:24
EulerAngleProvider
Abstract base class for user objects that implement the Euler Angle provider interface.
Definition: EulerAngleProvider.h:24
validParams< OutputEulerAngles >
InputParameters validParams< OutputEulerAngles >()
Definition: OutputEulerAngles.C:18
OutputEulerAngles::_output_euler_angle
MooseEnum _output_euler_angle
Number of grains.
Definition: OutputEulerAngles.h:43
OutputEulerAngles::_value
Real _value
precalculated element value
Definition: OutputEulerAngles.h:46
OutputEulerAngles::precalculateValue
virtual void precalculateValue()
Definition: OutputEulerAngles.C:40
registerMooseObject
registerMooseObject("PhaseFieldApp", OutputEulerAngles)
GrainTracker.h
OutputEulerAngles.h
OutputEulerAngles::OutputEulerAngles
OutputEulerAngles(const InputParameters &parameters)
Definition: OutputEulerAngles.C:31
EulerAngleProvider::getEulerAngles
virtual const EulerAngles & getEulerAngles(unsigned int) const =0
OutputEulerAngles::_grain_tracker
const GrainTracker & _grain_tracker
Grain tracker object.
Definition: OutputEulerAngles.h:40