www.mooseframework.org
GrainTextureVectorPostprocessor.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 "EulerAngleProvider.h"
12 #include "Assembly.h"
13 
15 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<ElementVectorPostprocessor>();
21  params += validParams<SamplerBase>();
22  params.addClassDescription("Gives out info on the grain boundary properties");
23  params.addRequiredParam<UserObjectName>("euler_angle_provider",
24  "The EulerAngleProvider User object");
25  params.addRequiredCoupledVar("unique_grains", "The grain number");
26  params.addRequiredParam<unsigned int>("grain_num", "the number of grains");
27  return params;
28 }
29 
31  : ElementVectorPostprocessor(parameters),
32  SamplerBase(parameters, this, _communicator),
33  _euler(getUserObject<EulerAngleProvider>("euler_angle_provider")),
34  _unique_grains(coupledValue("unique_grains")),
35  _grain_num(getParam<unsigned int>("grain_num")),
36  _sample(4)
37 {
39  mooseError("Euler angle provider has too few angles.");
40 
41  std::vector<std::string> output_variables(4);
42  output_variables[0] = "unique_grain";
43  output_variables[1] = "euler_angle_z";
44  output_variables[2] = "euler_angle_x\'";
45  output_variables[3] = "euler_angle_z\"";
46  SamplerBase::setupVariables(output_variables);
47 }
48 
49 void
51 {
52  SamplerBase::initialize();
53 }
54 
55 void
57 {
58  _sample[0] =
59  _unique_grains[0] + 1; // Index starts at 0, but we want to display first grain as grain 1.
60 
61  const EulerAngles & angle = _euler.getEulerAngles(_unique_grains[0]);
62  _sample[1] = angle.phi1; // Get the Z rotation
63  _sample[2] = angle.Phi; // Get the X' rotation
64  _sample[3] = angle.phi2; // Get the Z'' rotation
65  SamplerBase::addSample(_current_elem->centroid() /* x,y,z coordinates of elem centroid */,
66  _current_elem->id(),
67  _sample);
68 }
69 
70 void
72 {
74  static_cast<const GrainTextureVectorPostprocessor &>(y);
75  SamplerBase::threadJoin(vpp);
76 }
77 
78 void
80 {
81  SamplerBase::finalize();
82 }
GrainTextureVectorPostprocessor::initialize
virtual void initialize()
Definition: GrainTextureVectorPostprocessor.C:50
GrainTextureVectorPostprocessor::threadJoin
virtual void threadJoin(const UserObject &uo)
Definition: GrainTextureVectorPostprocessor.C:71
EulerAngleProvider.h
EulerAngles::phi1
Real phi1
Definition: EulerAngles.h:25
validParams< GrainTextureVectorPostprocessor >
InputParameters validParams< GrainTextureVectorPostprocessor >()
Definition: GrainTextureVectorPostprocessor.C:18
EulerAngles::Phi
Real Phi
Definition: EulerAngles.h:25
GrainTextureVectorPostprocessor::_euler
const EulerAngleProvider & _euler
Definition: GrainTextureVectorPostprocessor.h:38
GrainTextureVectorPostprocessor::execute
virtual void execute()
Definition: GrainTextureVectorPostprocessor.C:56
GrainTextureVectorPostprocessor::_grain_num
const unsigned int _grain_num
Definition: GrainTextureVectorPostprocessor.h:40
registerMooseObject
registerMooseObject("PhaseFieldApp", GrainTextureVectorPostprocessor)
EulerAngleProvider
Abstract base class for user objects that implement the Euler Angle provider interface.
Definition: EulerAngleProvider.h:24
GrainTextureVectorPostprocessor::GrainTextureVectorPostprocessor
GrainTextureVectorPostprocessor(const InputParameters &parameters)
Definition: GrainTextureVectorPostprocessor.C:30
EulerAngleProvider::getGrainNum
virtual unsigned int getGrainNum() const =0
GrainTextureVectorPostprocessor::_unique_grains
const VariableValue & _unique_grains
Definition: GrainTextureVectorPostprocessor.h:39
GrainTextureVectorPostprocessor.h
GrainTextureVectorPostprocessor
GrainTextureVectorPostprocessor is a VectorPostprocessor that outputs the the coordinates,...
Definition: GrainTextureVectorPostprocessor.h:27
GrainTextureVectorPostprocessor::finalize
virtual void finalize()
Definition: GrainTextureVectorPostprocessor.C:79
EulerAngles
Euler angle triplet.
Definition: EulerAngles.h:22
EulerAngles::phi2
Real phi2
Definition: EulerAngles.h:25
EulerAngleProvider::getEulerAngles
virtual const EulerAngles & getEulerAngles(unsigned int) const =0
GrainTextureVectorPostprocessor::_sample
std::vector< Real > _sample
Definition: GrainTextureVectorPostprocessor.h:41