CMLSweeper Class Reference

The sweeper generates a hexahedral mesh from quadrilaterals swept from one or more source surfaces to one target surface. More...

#include <CMLSweeper.hpp>

Inheritance diagram for CMLSweeper:

CMLMesher List of all members.

Public Member Functions

Constructor/Destructor
 CMLSweeper (CMLSurfEval *trg_surf=NULL, CML::OutputMsg msg_level=CML::STANDARD)
 A class constructor with an optional parameter.
virtual ~CMLSweeper ()
 A virtual destructor for the class.
Mesh input
bool set_boundary_mesh (int num_points, double *const points, int num_quads, int *const quads, int num_src_quads, int num_tgt_quads=0, int *const point_ids=NULL)
 Set the boundary mesh for the sweeper, 1-to-1 case.
bool set_boundary_mesh (int num_points, double *const points, int num_quads, int *const quads, int num_src_surfs, int *const num_src_quads_array, int num_tgt_quads=0, int *const point_ids=NULL)
 Set the boundary mesh for the sweeper, many-to-1 case.
Core mesher
bool generate_mesh (int &num_points_out, int &num_hexes)
 Generate the swept hexahedral mesh for the volume.
Mesh output
bool get_mesh (int num_points_out, double *const points, int num_hexes, int *const hexes)
 Retrieve the generated hexahedral mesh.
int get_points_buf (int buf_size, double *const points, int start_index=0)
 Retrieve the generated points one buffer at a time.
int get_hexes_buf (int buf_size, int *const hexes, int start_index=0)
 Retrieve the generated hexahedra one buffer at a time.
Algorithm properties
void set_sweep_option (CML::SweepFlag value)
 Set the sweep-option.
CML::SweepFlag get_sweep_option ()
 Get the state of the sweep-option.
void set_target_smooth_option (bool smooth_target)
 Set the target smoothing option.
bool get_target_smooth_option (void)
 Get the target smoothing option.
int number_target_hexes () const
 Get the number of hexahedral elements at the target surface.
int number_target_points () const
 Get the number of points on the target surface.
Message output control
virtual CML::OutputMsg get_msg_level () const
 Get the value of the message level flag.
virtual void set_msg_level (CML::OutputMsg level)
 Set the value of the message level flag.
virtual void open_log_file (const char *filename, bool append=false)
 Open a log file to record algorithm output.
virtual void close_log_file ()
 Close an open log file.
virtual void set_message_handler (CubitMessageHandler *h)
 Use an alternate output message handler.
virtual void set_progress_handler (CMLProgress *h)
 Use an alternate progress handler.
CAMAL version
virtual int get_major_version () const
 Returns the major version number.
virtual int get_minor_version () const
 Returns the minor version number.
virtual int get_subminor_version () const
 Returns the subminor version (patch) number.
virtual int get_allint_version () const
 Returns version number as one integer.
virtual const char * get_version_string ()
 Returns version number as a string.
Mesher properties
virtual void set_sizing_function (CML::SizingType type, double size1=-1.0, double size2=-1.0)
 Set a sizing function and its parameters.

Detailed Description

The sweeper generates a hexahedral mesh from quadrilaterals swept from one or more source surfaces to one target surface.

The sweeper accepts quadrilateral meshes for one or more source surfaces. Linking surfaces are also represented by quadrilateral meshes. The target surface my be a quadrilateral mesh (topolocially similar to the sum of the source meshes) or a CMLSurfEval object. If a target surface evaluator class is present, then the surface meshes are projected to the target surface in the sweeping process.


Constructor & Destructor Documentation

CMLSweeper::CMLSweeper ( CMLSurfEval trg_surf = NULL,
CML::OutputMsg  msg_level = CML::STANDARD 
)

A class constructor with an optional parameter.

Parameters:
trg_surf An optional pointer to the CMLSurfEval object that describes the geometry of the target surface. If the target quadrilaterals are input, no target surface geometry object is needed.
msg_level An enumerated value that controls the amount of output. The default value is CML::STANDARD. A value of CML::NONE causes the mesher to suppress all output.
See also:
set_msg_level()


Member Function Documentation

virtual void CMLSweeper::close_log_file (  )  [virtual]

Close an open log file.

See also:
open_log_file()

Implements CMLMesher.

bool CMLSweeper::generate_mesh ( int &  num_points_out,
int &  num_hexes 
)

Generate the swept hexahedral mesh for the volume.

Parameters:
num_points_out The total number of points generated including the input points.
num_hexes The number of hexedra (brick elements) generated
Returns:
true if successful, false otherwise.

int CMLSweeper::get_hexes_buf ( int  buf_size,
int *const   hexes,
int  start_index = 0 
)

Retrieve the generated hexahedra one buffer at a time.

Parameters:
buf_size The length of the hexes buffer array.
hexes The output buffer for hexahedra. A maximum of buf_size/8 hexahedra will be copied to this buffer. The hexahedron connectivity is described in get_mesh().
start_index The index of the first output hexahedron.
Returns:
The number of hexahedra returned in hexes buffer. Returns zero if start_index is greater than the number of hexahedra in the array.
Note:
To return all hexahedra, begin with start_index = 0 and increment it by the return value until the return value is zero.

bool CMLSweeper::get_mesh ( int  num_points_out,
double *const   points,
int  num_hexes,
int *const   hexes 
)

Retrieve the generated hexahedral mesh.

Parameters:
num_points_out The number of points to retrieve. This should be the same number returned by generate_mesh().
points An array of points in the generated mesh (array size = 3 * num_points_out.) The first three array values are the x, y and z coordinates of the first point. The next three are for the second point, then the third, etc.
num_hexes The number of hexahedra to retrieve. This should be the same number returned by generate_mesh().
hexes An array defining the connectivity of the generated mesh (array size = 8 * num_hexes.) The first four array values are the indices in the points array of the first hexhedron's front-face corner points and are entered in a counter-clockwise direction viewed from outside the hexahedron. The second four values describes the first hexhedron's back-face corner points. Corresponding points of the front and back faces form edges of the hexahedron. For example, the first corner of the front-face (index 0) and the first corner of the back face (index 4) form an edge of the hexahedron. The second eight values are the connectivity of the second hexahedron, etc. Indices range from 0 to num_points_out - 1 since the points array is zero-based.
Returns:
true if successful, false otherwise.

virtual CML::OutputMsg CMLSweeper::get_msg_level (  )  const [virtual]

Get the value of the message level flag.

Returns:
The current message level flag.
See also:
set_msg_level()

Implements CMLMesher.

int CMLSweeper::get_points_buf ( int  buf_size,
double *const   points,
int  start_index = 0 
)

Retrieve the generated points one buffer at a time.

Parameters:
buf_size The length of the points array.
points The output buffer for points. A maximum of buf_size/3 points will be copied to this buffer. The points ordering is described in get_mesh().
start_index The index of the first output point.
Returns:
The number of points returned in points buffer. Returns zero if start_index is greater than the number of points in the array.
Note:
To return all points, begin with start_index = 0 and increment it by the return value until the return value is zero.

int CMLSweeper::number_target_hexes (  )  const

Get the number of hexahedral elements at the target surface.

Returns:
Number of hexahedra at target surface.

int CMLSweeper::number_target_points (  )  const

Get the number of points on the target surface.

Returns:
Number of points on target surface.

virtual void CMLSweeper::open_log_file ( const char *  filename,
bool  append = false 
) [virtual]

Open a log file to record algorithm output.

Parameters:
filename The log file name
append Appends to the file filename if it exists
See also:
close_log_file()

Implements CMLMesher.

bool CMLSweeper::set_boundary_mesh ( int  num_points,
double *const   points,
int  num_quads,
int *const   quads,
int  num_src_surfs,
int *const   num_src_quads_array,
int  num_tgt_quads = 0,
int *const   point_ids = NULL 
)

Set the boundary mesh for the sweeper, many-to-1 case.

Parameters:
num_points The number of points in the surface meshes (sources, linking and optional target.)
points An array of points (array size = 3 * num_points.) The first three array values are the x, y and z coordinates of the first point. The next three are for the second point, then the third, etc.
num_quads The number of quadrilaterals on the surface of the volume
quads An array defining the connectivity of the surface mesh (array size = 4 * num_quads.) The first four array values are the indices in the points array of the first quadrilateral's corner points on the first source surface. The second four describes the second quadrilateral on the first source surface, then the third, etc. The quadrilaterals of the first source surface are followed by the quadrilaterals on the second source surface, then the third surface, etc. The indices are entered in a counter-clockwise direction when viewed from outside the volume. Indices range from 0 to num_points_in - 1 since the points array is zero-based. The source surface quadrilaterals are listed first, grouped by surface. These are followed by all linking quadrilaterals and optionally by the target surface quadrilaterals.
num_src_surfs The number of source surfaces.
num_src_quads_array The number of quadrilaterals on each source surface (array size = num_src_surfs.)
num_tgt_quads The number of quadrilaterals on the target surface. It is zero if the target is not entered but is calculated. If given, the number of target quadrilaterals must be equal to the sum of the all quadrilaterals on the source surfaces.
point_ids An optional array whose values are the user's identifiers for the points (array size = num_points_in.) Messages generated by the sweeper use this array to translate from internal point identifiers to user identifiers.
Returns:
true if successful, false otherwise.
Note:
A CMLSurfEval object must be supplied to the constructor if the target surface is calculated and not supplied.

bool CMLSweeper::set_boundary_mesh ( int  num_points,
double *const   points,
int  num_quads,
int *const   quads,
int  num_src_quads,
int  num_tgt_quads = 0,
int *const   point_ids = NULL 
)

Set the boundary mesh for the sweeper, 1-to-1 case.

Parameters:
num_points The number of points in the surface meshes (source, linking and optional target.)
points An array of points (array size = 3 * num_points.) The first three array values are the x, y and z coordinates of the first point. The next three are for the second point, then the third, etc.
num_quads The number of quadrilaterals on the surface of the volume.
quads An array defining the connectivity of the surface mesh (array size = 4 * num_quads.) The first four array values are the indices in the points array of the first quadrilateral's corner points. The second four describes the second quadrilateral, then the third, etc. The indices are entered in a counter-clockwise direction when viewed from outside the volume. Indices range from 0 to num_points_in - 1 since the points array is zero-based.
num_src_quads The number of quadrilaterals on the source surface.
num_tgt_quads The number of quadrilateralss on the target surface. It is zero if the target is not entered but is calculated. If given, the number of target quadrilaterals must be equal to the number of source quadrilaterals.
point_ids An optional array whose values are the user's identifiers for the points (array size = num_points_in.) Messages generated by the sweeper use this array to translate from internal point identifiers to user identifiers.
Returns:
true if successful, false otherwise.
Note:
A CMLSurfEval object must be supplied to the constructor if the target surface is calculated and not supplied.

virtual void CMLSweeper::set_message_handler ( CubitMessageHandler *  h  )  [virtual]

Use an alternate output message handler.

Parameters:
h A pointer to a message handler derived from CubitMessageHandler.

Implements CMLMesher.

virtual void CMLSweeper::set_msg_level ( CML::OutputMsg  level  )  [virtual]

Set the value of the message level flag.

Parameters:
level The value of the message level is an enumerated constant. The default value is CML::STANDARD and generates minimal output. A value of CML::VERBOSE generates more output, and a value of CML::DEBUG generates output helpful to developers. A value of CML::NONE causes the mesher to suppress all output.
See also:
get_msg_level()

Implements CMLMesher.

virtual void CMLSweeper::set_progress_handler ( CMLProgress *  h  )  [virtual]

Use an alternate progress handler.

Parameters:
h A pointer to a progress hander derived from CMLProgress.

Implements CMLMesher.

virtual void CMLSweeper::set_sizing_function ( CML::SizingType  type,
double  size1 = -1.0,
double  size2 = -1.0 
) [virtual]

Set a sizing function and its parameters.

Parameters:
type The enum of sizing function for the triangle mesher or paver.
size1 The constant size for CONSTANT_SIZING function and the minimum size for all others.
size2 The maximum size for all sizing functions.

Implements CMLMesher.

void CMLSweeper::set_sweep_option ( CML::SweepFlag  value  ) 

Set the sweep-option.

The sweep-option governs how the sweeper smooths between layers.

Parameters:
value One of the enumerated values of the SweepFlag.
The default value is CML::AUTO. Using this option, the algorithm will chose between smart error distribution or residual error distribution between swept layers. The choice of methods depends on the similarity in shape, curvature and area of the source and target surface,

void CMLSweeper::set_target_smooth_option ( bool  smooth_target  ) 

Set the target smoothing option.

The target smooth option governs how the sweeper smooths the mesh on the target surface.

Parameters:
smooth_target true or false. The default falue is true. If the target surface is not meshed, the sweeper projects the source mesh to the target. If the target smooth option is true, the mesh on the target will then be smoothed to improve element quality. If the target smooth option is false, no smoothing is done after the initial projection to the target.


The documentation for this class was generated from the following file:

CAMAL 5.2-0 documentation created on 1 Jun 2010
Comments to csimsoft.com