Feel++  0.91.4
Classes | Public Types | Protected Member Functions | Protected Attributes | List of all members
Feel::Gmsh Class Reference

Gmsh Mesh Generator. More...

#include <gmsh.hpp>

Inheritance diagram for Feel::Gmsh:
Feel::GmshEllipsoidDomain Feel::GmshHypercubeDomain Feel::GmshSimplexDomain

Classes

struct  Factory
 

Public Types

enum  DomainType { GMSH_REFERENCE_DOMAIN = 0, GMSH_REAL_DOMAIN }
 

Public Member Functions

Constructors, destructor
 Gmsh (int nDim=1, int nOrder=GMSH_ORDER_ONE)
 
 Gmsh (Gmsh const &__g)
 
virtual ~Gmsh ()
 
Accessors
int dimension () const
 
GMSH_ORDER order () const
 
std::string version () const
 
std::string prefix () const
 
std::vector< std::pair< double,
double > > const & 
boundingBox () const
 
double xmin () const
 
double xmax () const
 
double ymin () const
 
double ymax () const
 
double zmin () const
 
double zmax () const
 
double const & h () const
 
std::string description () const
 
bool addMidPoint () const
 
bool usePhysicalNames () const
 
WorldComm const & worldComm () const
 
int numberOfPartitions () const
 
bool mshFileByPartition () const
 
GMSH_PARTITIONER partitioner () const
 
double shear () const
 get the shear
 
bool recombine () const
 return true if recombine, false otherwise
 
Mutators
GmshsetDimension (int dim)
 
Gmshref ()
 
Gmshh (double _h)
 
void setOrder (int o)
 
void setVersion (std::string version)
 
void setDescription (std::string const &desc)
 
void setPrefix (std::string const &name)
 
virtual void setX (std::pair< double, double > const &x)
 
virtual void setY (std::pair< double, double > const &y)
 
virtual void setZ (std::pair< double, double > const &z)
 
virtual void setReferenceDomain ()
 the gmsh generator to generate a reference domain
 
virtual void setCharacteristicLength (double _h)
 set the characteristic length to h
 
void setAddMidPoint (bool add)
 
void usePhysicalNames (bool option)
 
void setWorldComm (WorldComm const &_worldcomm)
 set the communicator
 
void setNumberOfPartitions (int n)
 set the number of partitions
 
void setMshFileByPartition (bool p)
 set save msh file by partitions
 
void setPartitioner (GMSH_PARTITIONER const &p)
 set the partitioner
 
void setShear (double _shear)
 shear the domain
 
void setRecombine (bool _recombine)
 recombine simplices into quads
 
Methods
std::string generate (std::string const &name) const
 
std::string generate (std::string const &name, std::string const &geo, bool const forceRebuild=false, bool const parametric=false, bool const modifGeo=true) const
 
std::string refine (std::string const &name, int level=1, bool const parametric=false) const
 
std::string preamble () const
 
std::string getDescriptionFromFile (std::string const &file) const
 

Protected Member Functions

virtual std::string getDescription () const
 
bool generateGeo (std::string const &name, std::string const &geo, bool const modifGeo=true) const
 

Protected Attributes

WorldComm M_worldComm
 communicator
 
int M_dimension
 mesh dimension
 
int M_order
 mesh order
 
std::string M_version
 
std::string M_name
 
std::string M_desc
 
std::vector< std::pair< double,
double > > 
M_I
 bounding box
 
double M_h
 characteristic length
 
bool M_addmidpoint
 mid point
 
bool M_usePhysicalNames
 add physical names to msh files
 
GMSH_PARTITIONER M_partitioner
 partitioner type
 
int M_partitions
 number of partitions
 
bool M_partition_file
 save msh file by partition
 
double M_shear
 shear
 
bool M_recombine
 recombine simplices into hypercubes
 

Operator overloads

Gmshoperator= (Gmsh const &__g)
 
static boost::shared_ptr< GmshNew (po::variables_map const &vm)
 
static boost::shared_ptr< GmshNew (std::string const &shape, uint16_type d=2, uint16_type o=1, std::string const &ct="simplex")
 

Detailed Description

Gmsh Mesh Generator.

The Gmsh class helps with the generation of meshes using the program gmsh. Typically one would generate a .geo std::string for example and pass it to generate() along with the prefix name of the .geo and .msh files to create/generate.

std::ostringstream ostr;
std::string fname;
ostr << "h=" << 0.1 << ";\n"
<< "Point(1) = {0,0,0,h};\n"
<< "Point(2) = {1,0,0,h};\n"
<< "Point(3) = {1,1,0,h};\n"
<< "Point(4) = {0,1,0,h};\n"
<< "Line(1) = {1,2};\n"
<< "Line(2) = {2,3};\n"
<< "Line(3) = {3,4};\n"
<< "Line(4) = {4,1};\n"
<< "Line Loop(4) = {1,2,3,4};\n"
<< "Plane Surface(5) = {4};\n"
<< "Physical Line(10) = {1,3};\n"
<< "Physical Line(20) = {2,4};\n"
<< "Physical Surface(6) = {5};\n";
Gmsh gmsh;
// generate the \c .geo file using \c ostr and
// call gmsh to generate the \c msh file from the \c .geo file
fname = gmsh.generate( "triangle", ostr.str() );
// fname can now be passed to \c ImporterGmsh for example
mesh_type mesh;
ImporterGmsh<mesh_type> import( fname );
mesh->accept( import );
Author
Christophe Prud'homme
See Also
http://www.geuz.org/gmsh/

Member Function Documentation

bool Feel::Gmsh::addMidPoint ( ) const
inline

add the mid point of the domain

References M_addmidpoint.

std::vector<std::pair<double,double> > const& Feel::Gmsh::boundingBox ( ) const
inline
Returns
bounding box

References M_I.

std::string Feel::Gmsh::description ( ) const
inline
Returns
the geometry description

References getDescription().

int Feel::Gmsh::dimension ( ) const
inline
Returns
mesh dimension

References M_dimension.

Referenced by setReferenceDomain().

std::string Feel::Gmsh::generate ( std::string const &  name) const

generate a Gmsh msh file from name

std::string Feel::Gmsh::generate ( std::string const &  name,
std::string const &  geo,
bool const  forceRebuild = false,
bool const  parametric = false,
bool const  modifGeo = true 
) const
Parameters
namefilename prefix to create the geo and msh file from geo
geogmsh geometry description
forceRebuildif true, rebuild the mesh even if geofile is unchanged if false, rebuild only if geo file has changed. Useful if generateGeo has been called outside or if gmsh lybrary has changed.
Returns
the name of the mesh file generate by gmsh (with the .msh extension)
bool Feel::Gmsh::generateGeo ( std::string const &  name,
std::string const &  geo,
bool const  modifGeo = true 
) const
protected
Parameters
namefilename prefix to create the geo
geogmsh geometry description
Returns
returns whether geo file has changed or not. Usually called inside generate, but may be used to just generate the geo file. Note: if you use it alone, generate will call this routine again, hence generate needs to know whether to regenerate the mesh or not
virtual std::string Feel::Gmsh::getDescription ( ) const
inlineprotectedvirtual

sublass must provide the geo description

Reimplemented in Feel::GmshEllipsoidDomain.

Referenced by description().

std::string Feel::Gmsh::getDescriptionFromFile ( std::string const &  file) const
Returns
the content of the geo file file in a std::string
double const& Feel::Gmsh::h ( ) const
inline
Returns
characteristic length

References M_h.

Gmsh& Feel::Gmsh::h ( double  _h)
inline

set the characteristic length

Parameters
hthe characteristic length
Returns
the mesh generator

References setCharacteristicLength().

bool Feel::Gmsh::mshFileByPartition ( ) const
inline
Returns
true if save msh file by partitions, false otherwise

References M_partition_file.

int Feel::Gmsh::numberOfPartitions ( ) const
inline
Returns
the nnumber of partitions

References M_partitions.

Gmsh& Feel::Gmsh::operator= ( Gmsh const &  __g)
inline

assignment operator

Parameters
__ganother Gmsh object instance
Returns
the newly generated Gmsh object

References M_addmidpoint, M_dimension, M_order, M_shear, and M_usePhysicalNames.

GMSH_ORDER Feel::Gmsh::order ( ) const
inline

get the order of the elements of the mesh

Returns
the order of the elements of the mesh

References M_order.

GMSH_PARTITIONER Feel::Gmsh::partitioner ( ) const
inline
Returns
the partitioner

References M_partitioner.

std::string Feel::Gmsh::preamble ( ) const
Returns
the preamble for gmsh geometries
std::string Feel::Gmsh::prefix ( ) const
inline
Returns
the name of the file
Gmsh& Feel::Gmsh::ref ( )
inline

the gmsh generator to generate a reference domain

Returns
the mesh generator
Gmsh gmsh;
gmsh = gmsh.ref();

References setReferenceDomain().

std::string Feel::Gmsh::refine ( std::string const &  name,
int  level = 1,
bool const  parametric = false 
) const

refine the mesh uniformly by splitting

  • Parameters
    namename of the gmsh mesh file
  • Parameters
    levelthe number of refinements

Referenced by Feel::BOOST_PARAMETER_FUNCTION().

void Feel::Gmsh::setAddMidPoint ( bool  add)
inline

if add is true, set M_addmidpoint to true, false otherwise

References M_addmidpoint.

void Feel::Gmsh::setDescription ( std::string const &  desc)
inline

set the description of the geometry

Gmsh& Feel::Gmsh::setDimension ( int  dim)
inline

set the dimension

References M_dimension.

void Feel::Gmsh::setOrder ( int  o)
inline

set the order of the elements of the mesh it can be either GMSH_ORDER_ONE (order 1/linear) or GMSH_ORDER_TWO(order 2/quadratic)

Parameters
oorder of the elements

References M_order.

void Feel::Gmsh::setPrefix ( std::string const &  name)
inline

set the prefix of the Gmsh files

void Feel::Gmsh::setVersion ( std::string  version)
inline

set the file format version

References version().

bool Feel::Gmsh::usePhysicalNames ( ) const
inline
Returns
true if use the physical name, 'false' otherwise

References M_usePhysicalNames.

void Feel::Gmsh::usePhysicalNames ( bool  option)
inline

Set the use of physical names to describe the boundaries of the domain: if option is set to true then the generator will generate a PhysicalNames Section and replace numerical id by strings for the Physical boundaries

References M_usePhysicalNames.

std::string Feel::Gmsh::version ( ) const
inline
Returns
the file format version

Referenced by setVersion().

WorldComm const& Feel::Gmsh::worldComm ( ) const
inline
Returns
the world comm

References M_worldComm.