Skip to content

Commit

Permalink
MooseMesh::_mesh is now a pointer, in preparation for letting it dyna…
Browse files Browse the repository at this point in the history
…mically choose between being a SerialMesh or ParallelMesh.

Refs #2105.

r20578
  • Loading branch information
John Peterson authored and permcody committed Feb 14, 2014
1 parent 844e731 commit fe82ced
Show file tree
Hide file tree
Showing 6 changed files with 157 additions and 127 deletions.
9 changes: 5 additions & 4 deletions framework/include/mesh/MooseMesh.h
Expand Up @@ -314,14 +314,15 @@ class MooseMesh : public MooseObject
unsigned int getPatchSize();

/**
* Implicit conversion operator from MooseMesh -> libMesh::Mesh.
* Implicit conversion operator from MooseMesh -> libMesh::MeshBase.
*/
operator libMesh::Mesh &();
operator libMesh::MeshBase &();

/**
* Accessor for the underlying libMesh Mesh object.
*/
MeshBase & getMesh();
const MeshBase & getMesh() const;

/**
* Not implemented -- always returns NULL.
Expand Down Expand Up @@ -529,8 +530,8 @@ class MooseMesh : public MooseObject
bool isBoundaryNode(unsigned int node_id);

protected:
/// Underlying libMesh mesh object
libMesh::Mesh _mesh;
/// Pointer to underlying libMesh mesh object
libMesh::MeshBase* _mesh;

/// Convienence enums
enum {
Expand Down
14 changes: 7 additions & 7 deletions framework/src/mesh/FileMesh.C
Expand Up @@ -45,7 +45,7 @@ FileMesh::FileMesh(const std::string & name, InputParameters parameters) :
_file_name(getParam<MeshFileName>("file")),
_exreader(NULL)
{
_mesh.set_mesh_dimension(getParam<MooseEnum>("dim"));
getMesh().set_mesh_dimension(getParam<MooseEnum>("dim"));
_is_parallel = getParam<bool>("nemesis");
}

Expand Down Expand Up @@ -90,23 +90,23 @@ FileMesh::init()

if (_app.setFileRestart() && (_file_name.rfind(".exd") < _file_name.size() || _file_name.rfind(".e") < _file_name.size()))
{
_exreader = new ExodusII_IO(_mesh);
_exreader = new ExodusII_IO(getMesh());
_exreader->read(_file_name);
}
else
_mesh.read(_file_name);
getMesh().read(_file_name);
}

_mesh.skip_partitioning(getParam<bool>("skip_partitioning"));
getMesh().skip_partitioning(getParam<bool>("skip_partitioning"));

Moose::setup_perf_log.pop("Read Mesh","Setup");
}

void
FileMesh::read(const std::string & file_name)
{
if (dynamic_cast<ParallelMesh *>(&_mesh) && !_is_parallel)
_mesh.read(file_name, NULL, false);
if (dynamic_cast<ParallelMesh *>(&getMesh()) && !_is_parallel)
getMesh().read(file_name, NULL, false);
else
_mesh.read(file_name, NULL, true);
getMesh().read(file_name, NULL, true);
}
21 changes: 18 additions & 3 deletions framework/src/mesh/GeneratedMesh.C
Expand Up @@ -97,14 +97,29 @@ GeneratedMesh::init()
// Switching on MooseEnum
switch (_dim)
{
// The build_XYZ mesh generation functions take an
// UnstructuredMesh& as the first argument, hence the dynamic_cast.
case 1:
MeshTools::Generation::build_line(_mesh, _nx, getParam<Real>("xmin"), getParam<Real>("xmax"), elem_type);
MeshTools::Generation::build_line(dynamic_cast<UnstructuredMesh&>(getMesh()),
_nx,
getParam<Real>("xmin"),
getParam<Real>("xmax"),
elem_type);
break;
case 2:
MeshTools::Generation::build_square(_mesh, _nx, _ny, getParam<Real>("xmin"), getParam<Real>("xmax"), getParam<Real>("ymin"), getParam<Real>("ymax"), elem_type);
MeshTools::Generation::build_square(dynamic_cast<UnstructuredMesh&>(getMesh()),
_nx, _ny,
getParam<Real>("xmin"), getParam<Real>("xmax"),
getParam<Real>("ymin"), getParam<Real>("ymax"),
elem_type);
break;
case 3:
MeshTools::Generation::build_cube(_mesh, _nx, _ny, _nz, getParam<Real>("xmin"), getParam<Real>("xmax"), getParam<Real>("ymin"), getParam<Real>("ymax"), getParam<Real>("zmin"), getParam<Real>("zmax"), elem_type);
MeshTools::Generation::build_cube(dynamic_cast<UnstructuredMesh&>(getMesh()),
_nx, _ny, _nz,
getParam<Real>("xmin"), getParam<Real>("xmax"),
getParam<Real>("ymin"), getParam<Real>("ymax"),
getParam<Real>("zmin"), getParam<Real>("zmax"),
elem_type);
break;
}
}

0 comments on commit fe82ced

Please sign in to comment.