PatternedMesh::PatternedMesh(const InputParameters & parameters) : MooseMesh(parameters), _files(getParam<std::vector<MeshFileName> >("files")), _pattern(getParam<std::vector<std::vector<unsigned int> > >("pattern")), _x_width(getParam<Real>("x_width")), _y_width(getParam<Real>("y_width")), _z_width(getParam<Real>("z_width")) { // The PatternedMesh class only works with ReplicatedMesh errorIfDistributedMesh("PatternedMesh"); _meshes.reserve(_files.size()); // Read in all of the meshes for (auto i = beginIndex(_files); i < _files.size(); ++i) { _meshes.emplace_back(libmesh_make_unique<ReplicatedMesh>(_communicator)); auto & mesh = _meshes.back(); mesh->read(_files[i]); } _original_mesh = dynamic_cast<ReplicatedMesh *>(&getMesh()); if (!_original_mesh) mooseError("PatternedMesh does not support DistributedMesh"); // Create a mesh for all n-1 rows, the first row is the original mesh _row_meshes.reserve(_pattern.size() - 1); for (auto i = beginIndex(_pattern); i < _pattern.size() - 1; ++i) _row_meshes.emplace_back(libmesh_make_unique<ReplicatedMesh>(_communicator)); }
StripeMesh::StripeMesh(const InputParameters & parameters) : GeneratedMesh(parameters), _n_stripes(getParam<unsigned int>("stripes")) { // The StripeMesh class only works with ReplicatedMesh errorIfDistributedMesh("StripeMesh"); }
StitchedMesh::StitchedMesh(const InputParameters & parameters) : MooseMesh(parameters), _files(getParam<std::vector<MeshFileName>>("files")), _clear_stitched_boundary_ids(getParam<bool>("clear_stitched_boundary_ids")), _stitch_boundaries(getParam<std::vector<BoundaryName>>("stitch_boundaries")) { if (_files.empty()) mooseError("Must specify at least one mesh file for StitchedMesh"); // The StitchedMesh class only works with ReplicatedMesh errorIfDistributedMesh("StitchedMesh"); // Get the original mesh _original_mesh = dynamic_cast<ReplicatedMesh *>(&getMesh()); if (!_original_mesh) mooseError("StitchedMesh does not support DistributedMesh"); if (_stitch_boundaries.size() % 2 != 0) mooseError("There must be an even amount of stitch_boundaries in ", name()); _stitch_boundaries_pairs.reserve(_stitch_boundaries.size() / 2); // Make pairs out of the boundary names for (auto i = beginIndex(_stitch_boundaries); i < _stitch_boundaries.size(); i += 2) _stitch_boundaries_pairs.emplace_back(_stitch_boundaries[i], _stitch_boundaries[i + 1]); }
TiledMesh::TiledMesh(const InputParameters & parameters) : MooseMesh(parameters), _x_width(getParam<Real>("x_width")), _y_width(getParam<Real>("y_width")), _z_width(getParam<Real>("z_width")) { // The TiledMesh class only works with ReplicatedMesh errorIfDistributedMesh("TiledMesh"); }