Beispiel #1
0
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));
}
Beispiel #2
0
StripeMesh::StripeMesh(const InputParameters & parameters) :
    GeneratedMesh(parameters),
    _n_stripes(getParam<unsigned int>("stripes"))
{
  // The StripeMesh class only works with ReplicatedMesh
  errorIfDistributedMesh("StripeMesh");
}
Beispiel #3
0
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]);
}
Beispiel #4
0
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");
}