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