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

This is a concrete class. More...

#include <WTargetCalculator.hpp>

Inheritance diagram for WTargetCalculator:
Collaboration diagram for WTargetCalculator:

Public Member Functions

virtual ~WTargetCalculator ()
 virtual destructor ensures use of polymorphism during destruction More...
 
virtual void compute_target_matrices (PatchData &pd, MsqError &err)
 
virtual ~WTargetCalculator ()
 virtual destructor ensures use of polymorphism during destruction More...
 
virtual void compute_target_matrices (PatchData &pd, MsqError &err)
 This function provides the corner matrices for all elements on the Patch. More...
 
- Public Member Functions inherited from TargetCalculator
 TargetCalculator ()
 
virtual ~TargetCalculator ()
 virtual destructor ensures use of polymorphism during destruction More...
 
void compute_guide_matrices (enum guide_type type, PatchData &ref_pd, size_t elem_ind, Matrix3D A[], int num, MsqError &err)
 Computes the guide corner matrices A for a given element index in the reference patch. More...
 
Matrix3D compute_V_3D (const Matrix3D &A, MsqError &err)
 
Matrix3D compute_Q_3D (const Matrix3D &A, MsqError &err)
 
Matrix3D compute_Delta_3D (const Matrix3D &A, MsqError &err)
 
void compute_default_target_matrices (PatchData &pd, MsqError &err)
 Compute the default "isotropic" target matrices that are often used in the computation of reference-based target matrices. More...
 
void compute_reference_corner_matrices (PatchData &pd, MsqError &err)
 Compute the corner matrices for the reference mesh refMesh. More...
 
void compute_target_matrices_and_check_det (PatchData &pd, MsqError &err)
 This function wraps compute_target_matrices and checks that the determinant of each target is positive. More...
 
void reset_reference_meshset (MsqError &err)
 Reset the reference mesh so it starts from the first vertex again. More...
 
virtual double loop_over_mesh (MeshSet &ms, MsqError &err)
 This is the "run" function of PatchDataUser. It can do anything really. More...
 
virtual msq_std::string get_name ()
 Returns the algorithm name. More...
 
virtual AlgorithmType get_algorithm_type ()
 Return the algorithm type (to avoid RTTI use). More...
 
 TargetCalculator ()
 
virtual ~TargetCalculator ()
 virtual destructor ensures use of polymorphism during destruction More...
 
void compute_guide_matrices (enum guide_type type, PatchData &ref_pd, size_t elem_ind, Matrix3D A[], int num, MsqError &err)
 Computes the guide corner matrices A for a given element index in the reference patch. More...
 
Matrix3D compute_V_3D (const Matrix3D &A, MsqError &err)
 
Matrix3D compute_Q_3D (const Matrix3D &A, MsqError &err)
 
Matrix3D compute_Delta_3D (const Matrix3D &A, MsqError &err)
 
void compute_default_target_matrices (PatchData &pd, MsqError &err)
 Compute the default "isotropic" target matrices that are often used in the computation of reference-based target matrices. More...
 
void compute_reference_corner_matrices (PatchData &pd, MsqError &err)
 Compute the corner matrices for the reference mesh refMesh. More...
 
void compute_target_matrices_and_check_det (PatchData &pd, MsqError &err)
 This function wraps compute_target_matrices and checks that the determinant of each target is positive. More...
 
void reset_reference_meshset (MsqError &err)
 Reset the reference mesh so it starts from the first vertex again. More...
 
virtual double loop_over_mesh (MeshSet &ms, MsqError &err)
 This is the "run" function of PatchDataUser. It can do anything really. More...
 
virtual msq_std::string get_name ()
 Returns the algorithm name. More...
 
virtual AlgorithmType get_algorithm_type ()
 Return the algorithm type (to avoid RTTI use). 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

 WTargetCalculator ()
 the constructor is protected since this is not intended to be a concrete class. More...
 
 WTargetCalculator ()
 the constructor is protected since this is not intended to be a concrete class. More...
 
- Protected Member Functions inherited from PatchDataUser
 PatchDataUser ()
 
 PatchDataUser ()
 

Protected Attributes

enum guide_type guideMatrix
 
- Protected Attributes inherited from TargetCalculator
MeshSetrefMesh
 

Additional Inherited Members

- Public Types inherited from TargetCalculator
enum  Lambda_type { REGULAR, AVERAGE, REGULAR, AVERAGE }
 
enum  guide_type {
  Ad, AK, A0, Ar,
  As, Ab, Ac, Ap,
  Ae, Af, Ax, Ad,
  AK, A0, Ar, As,
  Ab, Ac, Ap, Ae,
  Af, Ax
}
 
enum  Lambda_type { REGULAR, AVERAGE, REGULAR, AVERAGE }
 
enum  guide_type {
  Ad, AK, A0, Ar,
  As, Ab, Ac, Ap,
  Ae, Af, Ax, Ad,
  AK, A0, Ar, As,
  Ab, Ac, Ap, Ae,
  Af, Ax
}
 
- 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
}
 
- Static Public Member Functions inherited from TargetCalculator
static void initialize_default_target_matrices (Matrix3D &tri_M3D, Matrix3D &quad_M3D, Matrix3D &tet_M3D, Matrix3D &hex_M3D)
 
static double compute_Lambda (const Matrix3D &A, MsqError &err)
 Note that this function is static, i.e. it can be used independently of an object. More...
 
static void initialize_default_target_matrices (Matrix3D &tri_M3D, Matrix3D &quad_M3D, Matrix3D &tet_M3D, Matrix3D &hex_M3D)
 
static double compute_Lambda (const Matrix3D &A, MsqError &err)
 

Detailed Description

This is a concrete class.

Definition at line 49 of file includeLinks/WTargetCalculator.hpp.

Constructor & Destructor Documentation

WTargetCalculator ( )
inlineprotected

the constructor is protected since this is not intended to be a concrete class.

Concrete classes will instantiate the various guide enums in their constructor.

Definition at line 54 of file includeLinks/WTargetCalculator.hpp.

54 {};
virtual ~WTargetCalculator ( )
inlinevirtual

virtual destructor ensures use of polymorphism during destruction

Definition at line 58 of file includeLinks/WTargetCalculator.hpp.

59  {};
WTargetCalculator ( )
inlineprotected

the constructor is protected since this is not intended to be a concrete class.

Concrete classes will instantiate the various guide enums in their constructor.

Definition at line 54 of file src/TargetCalculator/WTargetCalculator.hpp.

54 {};
virtual ~WTargetCalculator ( )
inlinevirtual

virtual destructor ensures use of polymorphism during destruction

Definition at line 58 of file src/TargetCalculator/WTargetCalculator.hpp.

59  {};

Member Function Documentation

void compute_target_matrices ( PatchData pd,
MsqError err 
)
virtual

The type of targets computed by this function is selected by the constructor of the base classes.

Implements TargetCalculator.

Definition at line 48 of file TargetCalculator/WTargetCalculator.cpp.

References TargetCalculator::compute_guide_matrices(), PatchDataUser::get_all_parameters(), PatchData::get_element_array(), MeshSet::get_next_patch(), WTargetCalculator::guideMatrix, i, MSQ_ERRRTN, MSQ_FUNCTION_TIMER, Mesquite::MSQ_MAX_NUM_VERT_PER_ENT, PatchData::num_elements(), PatchData::num_vertices(), TargetCalculator::refMesh, PatchData::targetMatrices, and MsqMeshEntity::vertex_count().

49 {
50  MSQ_FUNCTION_TIMER( "WTargetCalculator::compute_target_matrice" );
51 
52  size_t num_elements=pd.num_elements();
53 
54  PatchData ref_pd, *ref_pd_ptr;
55  if ( refMesh != 0 ) {
56  // If there is a reference mesh, gets a patch ref_pd equivalent to the patch pd of the main mesh.
57  PatchDataParameters ref_pd_params(this->get_all_parameters());
58  refMesh->get_next_patch(ref_pd, ref_pd_params, err); MSQ_ERRRTN(err);
59  // Make sure topology of ref_pd and pd are equal
60  assert( num_elements == ref_pd.num_elements() );
61  size_t num_vertices=pd.num_vertices();
62  assert( num_vertices == ref_pd.num_vertices() );
63  ref_pd_ptr = &ref_pd;
64  }
65  else {
66  // the reference patch is the same as the working patch if there is no reference mesh.
67  ref_pd_ptr = &pd;
68  }
69 
70  MsqMeshEntity* elems = pd.get_element_array(err); MSQ_ERRRTN(err);
71  MsqMeshEntity* elems_ref = ref_pd_ptr->get_element_array(err); MSQ_ERRRTN(err);
72 
75 
76  for (size_t i=0; i<num_elements; ++i) {
77  int nve = elems[i].vertex_count();
78  assert( nve = elems_ref[i].vertex_count() );
79 
80  compute_guide_matrices(guideMatrix, *ref_pd_ptr, i, W_guides, nve, err); MSQ_ERRRTN(err);
81  for (int c = 0; c < nve; ++c)
82  matrices[c] = W_guides[c];
83  pd.targetMatrices.set_element_corner_tags( &pd, i, matrices, err ); MSQ_ERRRTN(err);
84  }
85 
86  //if ( refMesh != 0 ) delete ref_pd;
87 }
CornerTag< TargetMatrix > targetMatrices
Target matrix data.
PatchDataParameters & get_all_parameters()
Returns the PatchDataParameters object.
void compute_guide_matrices(enum guide_type type, PatchData &ref_pd, size_t elem_ind, Matrix3D A[], int num, MsqError &err)
Computes the guide corner matrices A for a given element index in the reference patch.
MsqMeshEntity is the Mesquite object that stores information about the elements in the mesh...
const int MSQ_MAX_NUM_VERT_PER_ENT
Definition: Mesquite.hpp:120
size_t num_elements() const
number of elements in the Patch.
msq_stdc::size_t vertex_count() const
Returns the number of vertices in this element, based on its element type.
3*3 Matric class, row-oriented, 0-based [i][j] indexing.
blockLoc i
Definition: read.cpp:79
size_t num_vertices() const
number of vertices in the patch.
Class containing the target corner matrices for the context based smoothing.
const MsqMeshEntity * get_element_array(MsqError &err) const
Returns a pointer to the start of the element array.
#define MSQ_ERRRTN(err)
If passed error is true, return from a void function.
bool get_next_patch(PatchData &pd, PatchDataUser *pd_user, MsqError &err)
Gets the next PatchData.

Here is the call graph for this function:

virtual void compute_target_matrices ( PatchData pd,
MsqError err 
)
virtual

This function provides the corner matrices for all elements on the Patch.

Useful functionality includes: MsqMeshEntity::set_tag, MsqTag::target_matrix, MsqTag::scalar .

Implements TargetCalculator.

Member Data Documentation


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