Feel++ 0.91.0
Classes | Public Types | Protected Member Functions | Protected Attributes

Feel::Gmsh Class Reference

Gmsh Mesh Generator. More...

#include <gmsh.hpp>

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

List of all members.

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::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
Mutators
Gmshref ()
Gmshh (double _h)
void setOrder (int o)
void setVersion (std::string version)
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)
Methods
std::string generateLine (std::string const &__name, double __h)
std::string generateCube (std::string const &__name, double __h)
std::string generateCircle (std::string const &__name, double __h)
std::string generateSquare (std::string const &__name, double __h)
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

mpi::communicator M_comm
int M_dimension
 mesh dimension
int M_order
 mesh order
std::string M_version
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

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 [inline, protected, virtual]

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
Gmsh& Feel::Gmsh::h ( double  _h) [inline]

set the characteristic length

Parameters:
hthe characteristic length
Returns:
the mesh generator

References setCharacteristicLength().

double const& Feel::Gmsh::h ( ) const [inline]
Returns:
characteristic length

References M_h.

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, 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.

std::string Feel::Gmsh::preamble ( ) const
Returns:
the preamble for gmsh geometries
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::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::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().