MeshKit  1.0
EdgeMesher Class Reference

Generate the mesh for edges. More...

#include <EdgeMesher.hpp>

Inheritance diagram for EdgeMesher:

List of all members.

Classes

struct  Point3D

Public Types

enum  EdgeSchemeType {
  EQUAL = 0, BIAS, DUAL, CURVATURE,
  VARIABLE, EQUIGNOMONIC
}

Public Member Functions

 EdgeMesher (MKCore *mk_core, const MEntVector &me_vec)
virtual void setup_this ()
 Pure virtual, derived class must define.
virtual void execute_this ()
 Pure virtual, derived class must define.
virtual const moab::EntityType * mesh_types_arr () const
 Return the mesh entity types operated on by this scheme.
EdgeSchemeType get_edge_scheme () const
void set_edge_scheme (EdgeSchemeType scheme)
void set_ratio (double q)
double get_ratio ()
 ~EdgeMesher ()

Static Public Member Functions

static const char * name ()
 Get class name.
static bool can_mesh (iBase_EntityType dim)
 Function returning whether this scheme can mesh entities of t the specified dimension.
static bool can_mesh (ModelEnt *me)
 Function returning whether this scheme can mesh the specified entity.
static const moab::EntityType * output_types ()
 Get list of mesh entity types that can be generated.

Private Member Functions

Point3D getXYZCoords (ModelEnt *ent, double u) const
double getUCoord (ModelEnt *ent, double ustart, double dist, double uguess, double umin, double umax) const
void DivideIntoMore (ModelEnt *ent, Point3D p0, Point3D pMid, Point3D p1, double u0, double u1, double uMid, int &index, vector< double > &nodes, vector< double > &URecord)
bool ErrorCalculate (ModelEnt *ent, Point3D p0, Point3D p1, Point3D pMid)
void RapidSorting (vector< double > &nodes, vector< double > &URecord, int left, int right)
void QuickSorting (vector< double > &nodes, vector< double > &URecord, int count)
void EqualMeshing (ModelEnt *ent, int num_edges, std::vector< double > &coords)
void BiasMeshing (ModelEnt *ent, int num_edges, std::vector< double > &coords)
void DualBiasMeshing (ModelEnt *ent, int &num_edges, std::vector< double > &coords)
void CurvatureMeshing (ModelEnt *ent, int &num_edges, std::vector< double > &coords)
void VariableMeshing (ModelEnt *ent, int &num_edges, std::vector< double > &coords)
void EquiAngleGnomonic (ModelEnt *ent, int num_edges, std::vector< double > &coords)

Private Attributes

EdgeSchemeType schemeType
double ratio

Detailed Description

Generate the mesh for edges.

EdgeMesher generates a mesh for edges, creating the nodes and line segments on edges. There are four schemes for edge mesher: equal meshing, Bias Meshing Dual Bias Meshing, Curvature-Based Meshing

Examples:
example_edgemesher.cpp, and example_tfimapping.cpp.

Definition at line 41 of file EdgeMesher.hpp.


Member Enumeration Documentation

Enumerator:
EQUAL 
BIAS 
DUAL 
CURVATURE 
VARIABLE 
EQUIGNOMONIC 

Definition at line 45 of file EdgeMesher.hpp.


Constructor & Destructor Documentation

EdgeMesher ( MKCore mk_core,
const MEntVector me_vec 
)

Definition at line 22 of file EdgeMesher.cpp.

~EdgeMesher ( )

Definition at line 252 of file EdgeMesher.cpp.


Member Function Documentation

void BiasMeshing ( ModelEnt ent,
int  num_edges,
std::vector< double > &  coords 
) [private]

Definition at line 458 of file EdgeMesher.cpp.

static bool can_mesh ( iBase_EntityType  dim) [inline, static]

Function returning whether this scheme can mesh entities of t the specified dimension.

Parameters:
dimentity dimension

Definition at line 66 of file EdgeMesher.hpp.

static bool can_mesh ( ModelEnt me) [inline, static]

Function returning whether this scheme can mesh the specified entity.

Used by MeshOpFactory to find scheme for an entity.

Parameters:
meModelEnt being queried
Returns:
If true, this scheme can mesh the specified ModelEnt

Definition at line 75 of file EdgeMesher.hpp.

void CurvatureMeshing ( ModelEnt ent,
int &  num_edges,
std::vector< double > &  coords 
) [private]

Definition at line 289 of file EdgeMesher.cpp.

void DivideIntoMore ( ModelEnt ent,
Point3D  p0,
Point3D  pMid,
Point3D  p1,
double  u0,
double  u1,
double  uMid,
int &  index,
vector< double > &  nodes,
vector< double > &  URecord 
) [private]

Definition at line 493 of file EdgeMesher.cpp.

void DualBiasMeshing ( ModelEnt ent,
int &  num_edges,
std::vector< double > &  coords 
) [private]

Definition at line 397 of file EdgeMesher.cpp.

void EqualMeshing ( ModelEnt ent,
int  num_edges,
std::vector< double > &  coords 
) [private]

Definition at line 259 of file EdgeMesher.cpp.

void EquiAngleGnomonic ( ModelEnt ent,
int  num_edges,
std::vector< double > &  coords 
) [private]

Definition at line 724 of file EdgeMesher.cpp.

bool ErrorCalculate ( ModelEnt ent,
Point3D  p0,
Point3D  p1,
Point3D  pMid 
) [private]

Definition at line 884 of file EdgeMesher.cpp.

void execute_this ( ) [virtual]

Pure virtual, derived class must define.

Implements GraphNode.

Definition at line 133 of file EdgeMesher.cpp.

Definition at line 158 of file EdgeMesher.hpp.

double get_ratio ( ) [inline]

Definition at line 170 of file EdgeMesher.hpp.

double getUCoord ( ModelEnt ent,
double  ustart,
double  dist,
double  uguess,
double  umin,
double  umax 
) const [private]

Definition at line 836 of file EdgeMesher.cpp.

EdgeMesher::Point3D getXYZCoords ( ModelEnt ent,
double  u 
) const [private]

Definition at line 818 of file EdgeMesher.cpp.

virtual const moab::EntityType* mesh_types_arr ( ) const [inline, virtual]

Return the mesh entity types operated on by this scheme.

Returns:
array terminated with moab::MBMAXTYPE

Implements MeshOp.

Definition at line 87 of file EdgeMesher.hpp.

static const char* name ( ) [inline, static]

Get class name.

Definition at line 59 of file EdgeMesher.hpp.

const moab::EntityType * output_types ( ) [static]

Get list of mesh entity types that can be generated.

Returns:
array terminated with moab::MBMAXTYPE

Definition at line 17 of file EdgeMesher.cpp.

void QuickSorting ( vector< double > &  nodes,
vector< double > &  URecord,
int  count 
) [private]

Definition at line 810 of file EdgeMesher.cpp.

void RapidSorting ( vector< double > &  nodes,
vector< double > &  URecord,
int  left,
int  right 
) [private]

Definition at line 758 of file EdgeMesher.cpp.

void set_edge_scheme ( EdgeMesher::EdgeSchemeType  scheme) [inline]

Definition at line 152 of file EdgeMesher.hpp.

void set_ratio ( double  q) [inline]

Definition at line 164 of file EdgeMesher.hpp.

void setup_this ( ) [virtual]

Pure virtual, derived class must define.

Implements GraphNode.

Definition at line 53 of file EdgeMesher.cpp.

void VariableMeshing ( ModelEnt ent,
int &  num_edges,
std::vector< double > &  coords 
) [private]

Definition at line 553 of file EdgeMesher.cpp.


Member Data Documentation

double ratio [private]

Definition at line 109 of file EdgeMesher.hpp.

Definition at line 108 of file EdgeMesher.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines