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 {
30  _random.seed(0, getParam<unsigned int>("seed"));
31 }
32 
33 void
35 {
36  EulerAngles angle;
37  auto grain_num = _grain_tracker.getTotalFeatureCount();
38  for (auto i = _angles.size(); i < grain_num; ++i)
39  {
40  angle.random(_random);
41  _angles.push_back(angle);
42  }
43 }
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)
void seed(std::size_t i, unsigned int seed)
static InputParameters validParams()
std::vector< EulerAngles > & _angles
void addRequiredParam(const std::string &name, const std::string &doc_string)
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()
void random()
Definition: EulerAngles.C:84
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)