https://mooseframework.inl.gov
RandomEulerAngleProvider.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 "GrainTrackerInterface.h"
12 
14 
17 {
19  params.addClassDescription("Assign random Euler angles for each grain.");
20  params.addRequiredParam<UserObjectName>("grain_tracker_object",
21  "The FeatureFloodCount UserObject to get values from.");
22  params.addParam<unsigned int>("seed", 0, "Seed value for the random number generator");
23  return params;
24 }
25 
27  : EulerAngleProvider(params),
28  _grain_tracker(getUserObject<GrainTrackerInterface>("grain_tracker_object")),
29  _angles(declareRestartableData<std::vector<EulerAngles>>("random_angles", 0))
30 {
31  _random.seed(0, getParam<unsigned int>("seed"));
32 }
33 
34 void
36 {
37  EulerAngles angle;
38  auto grain_num = _grain_tracker.getTotalFeatureCount();
39  for (auto i = _angles.size(); i < grain_num; ++i)
40  {
41  angle.random(_random);
42  _angles.push_back(angle);
43  }
44 }
45 
46 unsigned int
48 {
49  return _angles.size();
50 }
51 
52 const EulerAngles &
54 {
55  mooseAssert(i < getGrainNum(), "Requesting Euler angles for an invalid grain id");
56  return _angles[i];
57 }
virtual void initialize() override
This class defines the interface for the GrainTracking objects.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
std::vector< EulerAngles > & _angles
void seed(std::size_t i, unsigned int seed)
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
virtual unsigned int getGrainNum() const override
virtual std::size_t getTotalFeatureCount() const =0
Returns a number large enough to contain the largest ID for all grains in use.
static InputParameters validParams()
virtual const EulerAngles & getEulerAngles(unsigned int) const override
void random()
Definition: EulerAngles.C:73
RandomEulerAngleProvider(const InputParameters &parameters)
Assign random Euler angles to each grains.
Euler angle triplet.
Definition: EulerAngles.h:24
void addClassDescription(const std::string &doc_string)
Abstract base class for user objects that implement the Euler Angle provider interface.
const GrainTrackerInterface & _grain_tracker
registerMooseObject("PhaseFieldApp", RandomEulerAngleProvider)