13#include "libmesh/mesh_function.h"
14#include "libmesh/exodusII_io.h"
15#include "libmesh/nemesis_io.h"
23 params.
addClassDescription(
"Process an XYZ file of atomic coordinates and filter atoms via "
24 "threshold or map variable values.");
28 "variable",
"Variable from the mesh file to use for mapping to or filtering of the atoms.");
30 params.
addParam<
MooseEnum>(
"raster_mode", modeEnum,
"Rasterization mode (MAP|FILTER).");
32 "Accept atoms with a variable value above this threshold in FILTER mode.");
38 _xyz_input(getParam<FileName>(
"xyz_input")),
39 _xyz_output(getParam<FileName>(
"xyz_output")),
40 _variable(getParam<
std::string>(
"variable")),
41 _raster_mode(getParam<
MooseEnum>(
"raster_mode")),
47 mooseError(
"Please specify 'threshold' parameter for raster_mode = FILTER");
64 "The imported variable '",
66 "' is vector-valued, but SolutionRasterizer supports only scalar-valued imported "
75 std::string line, dummy;
77 unsigned int current_line = 0;
78 unsigned int nfilter = 0, len0 = 0;
79 while (std::getline(stream_in, line))
84 stream_out << line <<
'\n';
88 if (current_line == 0)
93 std::istringstream iss(line);
95 if (iss >> dummy >>
x >>
y >> z)
104 stream_out << line <<
'\n';
121 std::ostringstream oss;
123 std::string newline0 = oss.str();
126 if (newline0.size() > len0)
128 mooseWarning(
"SolutionRasterizer could not update XYZ atom count in header.");
133 while (newline0.size() < len0)
137 std::ofstream stream_fix(
_xyz_output.c_str(), std::ios::binary | std::ios::in | std::ios::out);
138 stream_fix << newline0;
const std::vector< double > y
const std::vector< double > x
registerMooseObject("PhaseFieldApp", SolutionRasterizer)
void paramError(const std::string ¶m, Args... args) const
void mooseError(Args &&... args) const
void mooseWarning(Args &&... args) const
bool isParamValid(const std::string &name) const
This Userobject is the base class of Userobjects that generate one random number per timestep and qua...
SolutionRasterizer(const InputParameters ¶meters)
static InputParameters validParams()
virtual void initialSetup()
Initialize the System and Mesh objects for the solution being read.
Real pointValue(Real t, const Point &p, const unsigned int local_var_index, const std::set< subdomain_id_type > *subdomain_ids=nullptr) const
bool isVariableScalarValued(const std::string &var_name) const
virtual void initialSetup() override
static InputParameters validParams()