www.mooseframework.org
SmoothCircleFromFileIC.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 "SmoothCircleFromFileIC.h"
11 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<SmoothCircleBaseIC>();
19  params.addClassDescription("Multiple smooth circles read from a text file");
20  params.addRequiredParam<FileName>("file_name", "File containing circle centers and radii");
21 
22  return params;
23 }
24 
25 SmoothCircleFromFileIC::SmoothCircleFromFileIC(const InputParameters & parameters)
26  : SmoothCircleBaseIC(parameters),
27  _data(0),
28  _file_name(getParam<FileName>("file_name")),
29  _txt_reader(_file_name, &_communicator),
30  _n_circles(0)
31 {
32  // Read names and vectors from file
33  _txt_reader.read();
34  _col_names = _txt_reader.getNames();
35  _data = _txt_reader.getData();
36  _n_circles = _data[0].size();
37 
38  // Check that the file has all the correct information
39  for (unsigned int i = 0; i < _col_names.size(); ++i)
40  {
41  // Check that columns have uniform lengths
42  if (_data[i].size() != _n_circles)
43  mooseError("Columns in ", _file_name, " do not have uniform lengths.");
44 
45  // Determine which columns correspond to which parameters.
46  if (_col_names[i] == "x")
47  _col_map[X] = i;
48  else if (_col_names[i] == "y")
49  _col_map[Y] = i;
50  else if (_col_names[i] == "z")
51  _col_map[Z] = i;
52  else if (_col_names[i] == "r")
53  _col_map[R] = i;
54  }
55 
56  // Check that the required columns are present
57  if (_col_map[X] == -1)
58  mooseError("No column in ", _file_name, " labeled 'x'.");
59  if (_col_map[Y] == -1)
60  mooseError("No column in ", _file_name, " labeled 'y'.");
61  if (_col_map[Z] == -1)
62  mooseError("No column in ", _file_name, " labeled 'z'.");
63  if (_col_map[R] == -1)
64  mooseError("No column in ", _file_name, " labeled 'r'.");
65 }
66 
67 void
69 {
70  _radii.assign(_data[_col_map[R]].begin(), _data[_col_map[R]].end());
71 }
72 
73 void
75 {
76  _centers.resize(_n_circles);
77  for (unsigned int i = 0; i < _n_circles; ++i)
78  {
79  _centers[i](0) = _data[_col_map[X]][i];
80  _centers[i](1) = _data[_col_map[Y]][i];
81  _centers[i](2) = _data[_col_map[Z]][i];
82  }
83 }
registerMooseObject
registerMooseObject("PhaseFieldApp", SmoothCircleFromFileIC)
SmoothCircleBaseIC::_centers
std::vector< Point > _centers
Definition: SmoothCircleBaseIC.h:54
SmoothCircleFromFileIC::_txt_reader
MooseUtils::DelimitedFileReader _txt_reader
Definition: SmoothCircleFromFileIC.h:49
SmoothCircleFromFileIC::computeCircleRadii
virtual void computeCircleRadii()
Definition: SmoothCircleFromFileIC.C:68
validParams< SmoothCircleBaseIC >
InputParameters validParams< SmoothCircleBaseIC >()
Definition: SmoothCircleBaseIC.C:18
validParams< SmoothCircleFromFileIC >
InputParameters validParams< SmoothCircleFromFileIC >()
Definition: SmoothCircleFromFileIC.C:16
SmoothCircleFromFileIC::Y
Definition: SmoothCircleFromFileIC.h:41
SmoothCircleFromFileIC::_col_map
std::array< int, 4 > _col_map
Definition: SmoothCircleFromFileIC.h:46
SmoothCircleBaseIC
SmoothcircleBaseIC is the base class for all initial conditions that create circles.
Definition: SmoothCircleBaseIC.h:26
SmoothCircleFromFileIC::computeCircleCenters
virtual void computeCircleCenters()
Definition: SmoothCircleFromFileIC.C:74
SmoothCircleFromFileIC::_data
std::vector< std::vector< Real > > _data
Definition: SmoothCircleFromFileIC.h:47
SmoothCircleFromFileIC.h
SmoothCircleBaseIC::_radii
std::vector< Real > _radii
Definition: SmoothCircleBaseIC.h:55
SmoothCircleFromFileIC::R
Definition: SmoothCircleFromFileIC.h:43
SmoothCircleFromFileIC::_file_name
FileName _file_name
Definition: SmoothCircleFromFileIC.h:48
SmoothCircleFromFileIC::Z
Definition: SmoothCircleFromFileIC.h:42
SmoothCircleFromFileIC
Reads multiple circles from a text file with the columns labeled x y z r.
Definition: SmoothCircleFromFileIC.h:29
SmoothCircleFromFileIC::X
Definition: SmoothCircleFromFileIC.h:40
SmoothCircleFromFileIC::_col_names
std::vector< std::string > _col_names
Definition: SmoothCircleFromFileIC.h:50
SmoothCircleFromFileIC::SmoothCircleFromFileIC
SmoothCircleFromFileIC(const InputParameters &parameters)
Definition: SmoothCircleFromFileIC.C:25
SmoothCircleFromFileIC::_n_circles
unsigned int _n_circles
Definition: SmoothCircleFromFileIC.h:51