www.mooseframework.org
EulerAngleFileReader.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 "EulerAngleFileReader.h"
11 
12 #include <fstream>
13 
14 registerMooseObject("TensorMechanicsApp", EulerAngleFileReader);
15 
17 
18 InputParameters
20 {
21  InputParameters params = EulerAngleProvider::validParams();
22  params.addClassDescription("Read Euler angle data from a file and provide it to other objects.");
23  params.addRequiredParam<FileName>("file_name", "Euler angle data file name");
24  return params;
25 }
26 
27 EulerAngleFileReader::EulerAngleFileReader(const InputParameters & params)
28  : EulerAngleProvider(params), _file_name(getParam<FileName>("file_name"))
29 {
30  readFile();
31 }
32 
33 unsigned int
35 {
36  return _angles.size();
37 }
38 
39 const EulerAngles &
41 {
42  mooseAssert(i < getGrainNum(), "Requesting Euler angles for an invalid grain id");
43  return _angles[i];
44 }
45 
46 void
48 {
49  // Read in Euler angles from _file_name
50  std::ifstream inFile(_file_name.c_str());
51  if (!inFile)
52  mooseError("Can't open ", _file_name);
53 
54  // Skip first 4 lines
55  for (unsigned int i = 0; i < 4; ++i)
56  inFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
57 
58  // The angle files contain a fourth column with weights that we ignore in this version
59  Real weight;
60 
61  // Loop over grains
62  EulerAngles a;
63  while (inFile >> a.phi1 >> a.Phi >> a.phi2 >> weight)
64  _angles.push_back(EulerAngles(a));
65 }
defineLegacyParams
defineLegacyParams(EulerAngleFileReader)
EulerAngleFileReader::_file_name
FileName _file_name
Definition: EulerAngleFileReader.h:41
EulerAngleFileReader.h
EulerAngles::phi1
Real phi1
Definition: EulerAngles.h:25
EulerAngles::Phi
Real Phi
Definition: EulerAngles.h:25
EulerAngleProvider::validParams
static InputParameters validParams()
Definition: EulerAngleProvider.C:15
EulerAngleFileReader::_angles
std::vector< EulerAngles > _angles
Definition: EulerAngleFileReader.h:42
EulerAngleProvider
Abstract base class for user objects that implement the Euler Angle provider interface.
Definition: EulerAngleProvider.h:24
EulerAngleFileReader::validParams
static InputParameters validParams()
Definition: EulerAngleFileReader.C:19
EulerAngleFileReader::getEulerAngles
virtual const EulerAngles & getEulerAngles(unsigned int) const
Definition: EulerAngleFileReader.C:40
EulerAngleFileReader::EulerAngleFileReader
EulerAngleFileReader(const InputParameters &parameters)
Definition: EulerAngleFileReader.C:27
registerMooseObject
registerMooseObject("TensorMechanicsApp", EulerAngleFileReader)
EulerAngleFileReader::getGrainNum
virtual unsigned int getGrainNum() const
Definition: EulerAngleFileReader.C:34
EulerAngles
Euler angle triplet.
Definition: EulerAngles.h:22
EulerAngles::phi2
Real phi2
Definition: EulerAngles.h:25
EulerAngleFileReader::readFile
void readFile()
Definition: EulerAngleFileReader.C:47
EulerAngleFileReader
Read a set of Euler angles from a file.
Definition: EulerAngleFileReader.h:24