Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LaplacianSmoother Class Reference

#include <LaplacianSmoother.hpp>

Inheritance diagram for LaplacianSmoother:
Collaboration diagram for LaplacianSmoother:

Public Member Functions

 LaplacianSmoother (MsqError &err)
 
 ~LaplacianSmoother ()
 
 LaplacianSmoother (MsqError &err)
 
 ~LaplacianSmoother ()
 
- Public Member Functions inherited from VertexMover
virtual ~VertexMover ()
 
virtual double loop_over_mesh (MeshSet &ms, MsqError &err)
 Improves the quality of the MeshSet, calling some methods specified in a class derived from VertexMover. More...
 
virtual ~VertexMover ()
 
virtual double loop_over_mesh (MeshSet &ms, MsqError &err)
 This is the "run" function of PatchDataUser. It can do anything really. More...
 
- Public Member Functions inherited from QualityImprover
virtual ~QualityImprover ()
 
void set_name (msq_std::string name)
 provides a name to the QualityImprover (use it in constructor). More...
 
virtual msq_std::string get_name ()
 retrieves the QualityImprover name. A default name should be set in the constructor. More...
 
virtual AlgorithmType get_algorithm_type ()
 Return the algorithm type (to avoid RTTI use). More...
 
void set_inner_termination_criterion (TerminationCriterion *crit)
 Sets in the termination criterion for the concrete solver's optimization. More...
 
void set_outer_termination_criterion (TerminationCriterion *crit)
 Sets in the termination criterion for the outer loop over patches. More...
 
virtual ~QualityImprover ()
 
void set_name (msq_std::string name)
 provides a name to the QualityImprover (use it in constructor). More...
 
virtual msq_std::string get_name ()
 retrieves the QualityImprover name. A default name should be set in the constructor. More...
 
virtual AlgorithmType get_algorithm_type ()
 Return the algorithm type (to avoid RTTI use). More...
 
void set_inner_termination_criterion (TerminationCriterion *crit)
 Sets in the termination criterion for the concrete solver's optimization. More...
 
void set_outer_termination_criterion (TerminationCriterion *crit)
 Sets in the termination criterion for the outer loop over patches. More...
 
- Public Member Functions inherited from PatchDataUser
virtual ~PatchDataUser ()
 
virtual void set_patch_type (PatchData::PatchType patch_type, MsqError &err, int param1=0, int param2=0)
 Sets the Patch Type. More...
 
PatchData::PatchType get_patch_type ()
 Returns the Patch Type. More...
 
int get_nb_layers (MsqError &err)
 Returns number of layers (if relevant for partition algorythm). More...
 
void add_culling_method (enum PatchData::culling_method cm)
 Sets on the culling method passed as argument. More...
 
void no_culling_method ()
 Sets off all culling methods. More...
 
void remove_culling_method (enum PatchData::culling_method cm)
 Sets off the culling method passed as argument. More...
 
long unsigned int get_culling_method_bits ()
 Returns the bitset containing culling methods flags. More...
 
void set_all_parameters (PatchDataParameters &params)
 
PatchDataParametersget_all_parameters ()
 Returns the PatchDataParameters object. More...
 
void set_global_patch (PatchData *pd, MsqError &err)
 Sets the Global Patch, so that it can be use by contiguoug PatchDataUser. More...
 
PatchDataget_global_patch ()
 Returns the Global Patch. More...
 
void no_global_patch ()
 Sets the Global Patch pointer to NULL. More...
 
virtual ~PatchDataUser ()
 
virtual void set_patch_type (PatchData::PatchType patch_type, MsqError &err, int param1=0, int param2=0)
 Sets the Patch Type. More...
 
PatchData::PatchType get_patch_type ()
 Returns the Patch Type. More...
 
int get_nb_layers (MsqError &err)
 Returns number of layers (if relevant for partition algorythm). More...
 
void add_culling_method (enum PatchData::culling_method cm)
 Sets on the culling method passed as argument. More...
 
void no_culling_method ()
 Sets off all culling methods. More...
 
void remove_culling_method (enum PatchData::culling_method cm)
 Sets off the culling method passed as argument. More...
 
long unsigned int get_culling_method_bits ()
 Returns the bitset containing culling methods flags. More...
 
void set_all_parameters (PatchDataParameters &params)
 
PatchDataParametersget_all_parameters ()
 Returns the PatchDataParameters object. More...
 
void set_global_patch (PatchData *pd, MsqError &err)
 Sets the Global Patch, so that it can be use by contiguoug PatchDataUser. More...
 
PatchDataget_global_patch ()
 Returns the Global Patch. More...
 
void no_global_patch ()
 Sets the Global Patch pointer to NULL. More...
 

Protected Member Functions

virtual void initialize (PatchData &pd, MsqError &err)
 
virtual void optimize_vertex_positions (PatchData &pd, MsqError &err)
 
virtual void initialize_mesh_iteration (PatchData &pd, MsqError &err)
 
virtual void terminate_mesh_iteration (PatchData &pd, MsqError &err)
 
virtual void cleanup ()
 
virtual void initialize (PatchData &pd, MsqError &err)
 
virtual void optimize_vertex_positions (PatchData &pd, MsqError &err)
 
virtual void initialize_mesh_iteration (PatchData &pd, MsqError &err)
 
virtual void terminate_mesh_iteration (PatchData &pd, MsqError &err)
 
virtual void cleanup ()
 
- Protected Member Functions inherited from VertexMover
 VertexMover ()
 
size_t check_feasible (PatchData &pd, MsqError &err)
 CHECK FEASIBLE IS NOT YET IMPLEMENTED. More...
 
 VertexMover ()
 
size_t check_feasible (PatchData &pd, MsqError &err)
 CHECK FEASIBLE IS NOT YET IMPLEMENTED. More...
 
- Protected Member Functions inherited from QualityImprover
 QualityImprover ()
 
const MeshSetget_mesh_set () const
 
MeshSetget_mesh_set ()
 
void set_mesh_set (MeshSet *ms)
 
TerminationCriterionget_outer_termination_criterion ()
 return the outer termination criterion pointer More...
 
TerminationCriterionget_inner_termination_criterion ()
 return the inner termination criterion pointer More...
 
 QualityImprover ()
 
const MeshSetget_mesh_set () const
 
MeshSetget_mesh_set ()
 
void set_mesh_set (MeshSet *ms)
 
TerminationCriterionget_outer_termination_criterion ()
 return the outer termination criterion pointer More...
 
TerminationCriterionget_inner_termination_criterion ()
 return the inner termination criterion pointer More...
 
- Protected Member Functions inherited from PatchDataUser
 PatchDataUser ()
 
 PatchDataUser ()
 

Private Attributes

QualityMetricedgeQM
 

Additional Inherited Members

- Public Types inherited from PatchDataUser
enum  AlgorithmType {
  QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR,
  QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR
}
 
enum  AlgorithmType {
  QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR,
  QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR
}
 
- Protected Attributes inherited from VertexMover
ObjectiveFunctionobjFunc
 

Detailed Description

Moves free center vertex to the average of the neighboring vertices.

Definition at line 57 of file includeLinks/LaplacianSmoother.hpp.

Constructor & Destructor Documentation

Definition at line 46 of file QualityImprover/VertexMover/LaplacianSmoothers/LaplacianSmoother.cpp.

References LaplacianSmoother::edgeQM, PatchData::ELEMENTS_ON_VERTEX_PATCH, MSQ_ERRRTN, VertexMover::objFunc, QualityMetric::RMS, QualityMetric::set_averaging_method(), QualityImprover::set_name(), and PatchDataUser::set_patch_type().

47 {
48  this->set_name("LaplacianSmoother");
49 
51 
52  edgeQM = new EdgeLengthQualityMetric;
54  objFunc = new LPtoPTemplate(edgeQM, 2, err);MSQ_ERRRTN(err);
55 
56 }
void set_averaging_method(AveragingMethod method, MsqError &err)
virtual void set_patch_type(PatchData::PatchType patch_type, MsqError &err, int param1=0, int param2=0)
Sets the Patch Type.
void set_name(msq_std::string name)
provides a name to the QualityImprover (use it in constructor).
#define MSQ_ERRRTN(err)
If passed error is true, return from a void function.

Here is the call graph for this function:

Member Function Documentation

void cleanup ( )
protectedvirtual

Implements VertexMover.

Definition at line 115 of file QualityImprover/VertexMover/LaplacianSmoothers/LaplacianSmoother.cpp.

116 {
117  // cout << "- Executing LaplacianSmoother::iteration_end()\n";
118 }
virtual void cleanup ( )
protectedvirtual

Implements VertexMover.

void initialize ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

Definition at line 65 of file QualityImprover/VertexMover/LaplacianSmoothers/LaplacianSmoother.cpp.

66 {
67 
68 }
virtual void initialize ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

virtual void initialize_mesh_iteration ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

void initialize_mesh_iteration ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

Definition at line 71 of file QualityImprover/VertexMover/LaplacianSmoothers/LaplacianSmoother.cpp.

73 {
74  // cout << "- Executing LaplacianSmoother::iteration_complete()\n";
75 }
void optimize_vertex_positions ( PatchData pd,
MsqError err 
)
protectedvirtual
Todo:
Michael: optimize_vertex_position is probably not implemented in an optimal way. We used to use all of the vertices in the patch as 'adjacent' vertices. Now we call get_adjacent_vertex_indices. We could use a VERTICES_ON_VERTEX type of patch or a global patch?
Todo:
Michael: optimize_vertex_position is probably not implemented in an optimal way. We used to use all of the vertices in the patch as 'adjacent' vertices. Now we call get_adjacent_vertex_indices. We could use a VERTICES_ON_VERTEX type of patch or a global patch?

Implements VertexMover.

Definition at line 83 of file QualityImprover/VertexMover/LaplacianSmoothers/LaplacianSmoother.cpp.

References Mesquite::centroid_smooth_mesh(), PatchData::get_adjacent_vertex_indices(), MSQ_ERRRTN, MsqFreeVertexIndexIterator::next(), MsqFreeVertexIndexIterator::reset(), PatchData::snap_vertex_to_domain(), and MsqFreeVertexIndexIterator::value().

85 {
86  //default the laplacian smoother to 3 even for 2-d elements.
87  //int dim = get_mesh_set()->space_dim();
88  size_t dim = 3;
89 
90 
91  // does the Laplacian smoothing
92  MsqFreeVertexIndexIterator free_iter(&pd, err); MSQ_ERRRTN(err);
93  free_iter.reset();
94  free_iter.next();
95  //m is the free vertex.
96  size_t m=free_iter.value();
97  msq_std::vector<size_t> vert_indices;
98  vert_indices.reserve(25);
99  //get vertices adjacent to vertex m
100  pd.get_adjacent_vertex_indices(m,vert_indices,err); MSQ_ERRRTN(err);
101  //move vertex m
102  centroid_smooth_mesh(pd, vert_indices.size(), vert_indices,
103  m, dim, err); MSQ_ERRRTN(err);
104  //snap vertex m to domain
105  pd.snap_vertex_to_domain(m,err);
106 
107 }
#define MSQ_ERRRTN(err)
If passed error is true, return from a void function.
void centroid_smooth_mesh(PatchData &pd, size_t num_adj_vtx, msq_std::vector< size_t > adj_vtx_ind, size_t free_ind, size_t dimension, MsqError &err)

Here is the call graph for this function:

virtual void optimize_vertex_positions ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

void terminate_mesh_iteration ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

Definition at line 109 of file QualityImprover/VertexMover/LaplacianSmoothers/LaplacianSmoother.cpp.

111 {
112  // cout << "- Executing LaplacianSmoother::iteration_complete()\n";
113 }
virtual void terminate_mesh_iteration ( PatchData pd,
MsqError err 
)
protectedvirtual

Implements VertexMover.

Member Data Documentation


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