www.mooseframework.org
tensor_mechanics
src
userobjects
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
16
defineLegacyParams
(
EulerAngleFileReader
);
17
18
InputParameters
19
EulerAngleFileReader::validParams
()
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
34
EulerAngleFileReader::getGrainNum
()
const
35
{
36
return
_angles
.size();
37
}
38
39
const
EulerAngles
&
40
EulerAngleFileReader::getEulerAngles
(
unsigned
int
i)
const
41
{
42
mooseAssert(i <
getGrainNum
(),
"Requesting Euler angles for an invalid grain id"
);
43
return
_angles
[i];
44
}
45
46
void
47
EulerAngleFileReader::readFile
()
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 ¶meters)
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
Generated on Sat Jan 25 2020 12:04:47 for www.mooseframework.org by
1.8.16