21 InputParameters params = validParams<GeneratedMesh>();
22 params.addClassDescription(
"Mesh generated from a specified DREAM.3D EBSD data file.");
23 params.addRequiredParam<FileName>(
"filename",
"The name of the file containing the EBSD data");
24 params.addParam<
unsigned int>(
25 "uniform_refine", 0,
"Number of coarsening levels available in adaptive mesh refinement.");
28 params.suppressParameter<MooseEnum>(
"dim");
29 params.set<MooseEnum>(
"dim") = MooseEnum(
"1=1 2 3",
"1");
30 params.suppressParameter<
unsigned int>(
"nx");
31 params.suppressParameter<
unsigned int>(
"ny");
32 params.suppressParameter<
unsigned int>(
"nz");
33 params.suppressParameter<Real>(
"xmin");
34 params.suppressParameter<Real>(
"ymin");
35 params.suppressParameter<Real>(
"zmin");
36 params.suppressParameter<Real>(
"xmax");
37 params.suppressParameter<Real>(
"ymax");
38 params.suppressParameter<Real>(
"zmax");
44 : GeneratedMesh(parameters), _filename(getParam<FileName>(
"filename"))
46 if (_nx != 1 || _ny != 1 || _nz != 1)
47 mooseWarning(
"Do not specify mesh geometry information, it is read from the EBSD file.");
55 std::ifstream stream_in(
_filename.c_str());
58 paramError(
"filename",
"Can't open EBSD file: ",
_filename);
61 std::vector<std::string> labels = {
62 "x_step",
"x_dim",
"y_step",
"y_dim",
"z_step",
"z_dim",
"x_min",
"y_min",
"z_min"};
67 std::vector<Real> label_vals(labels.size(), 0.0);
70 while (std::getline(stream_in, line))
77 if (line.find(
"#") == 0)
80 std::transform(line.begin(), line.end(), line.begin(), ::tolower);
82 for (
unsigned i = 0; i < labels.size(); ++i)
83 if (line.find(labels[i]) != std::string::npos)
86 std::istringstream iss(line);
87 iss >> dummy >> dummy >> label_vals[i];
114 for (dim = 3; dim > 0 &&
_geometry.
n[dim - 1] == 0; --dim)
118 for (
unsigned i = 0; i < dim; ++i)
121 mooseError(
"Error reading header, EBSD grid size is zero.");
123 mooseError(
"Error reading header, EBSD data step size is zero.");
127 mooseError(
"Error reading header, EBSD data is zero dimensional.");
137 unsigned int uniform_refine = getParam<unsigned int>(
"uniform_refine");
140 std::array<unsigned int, 3> nr;
154 for (
unsigned int i = 0; i < uniform_refine; ++i)
158 mooseError(
"EBSDMesh error. Requested uniform_refine levels not possible.");
166 GeneratedMesh::buildMesh();