37 #ifndef DistanceFromTarget_hpp
38 #define DistanceFromTarget_hpp
89 for (
size_t i=0;
i<num_T; ++
i) {
128 h = 0.5*(tau+
sqrt(tau*tau+4*delta*delta));
131 h = delta*delta/fabs(tau); }
140 MSQ_SETERR(err)(
"Barrier function is zero due to excessively large "
141 "negative area compared to delta.\nTry to untangle "
151 #endif // DistanceFromTarget_hpp
#define MSQ_ERRZERO(err)
Return zero/NULL on error.
Base class for the computation of the distance from target between the target matrices W and the actu...
CornerTag< TargetMatrix > targetMatrices
Target matrix data.
Used to hold the error state and return it to the application.
Base class for concrete quality metrics.
virtual ~DistanceFromTarget()
virtual destructor ensures use of polymorphism during destruction
MsqMeshEntity is the Mesquite object that stores information about the elements in the mesh...
double get_barrier_delta(MsqError &err)
Returns delta based on the minimum and maximum corner determinant over all elements in the patch This...
size_t get_element_index(MsqMeshEntity *element)
3*3 Matric class, row-oriented, 0-based [i][j] indexing.
#define MSQ_SETERR(err)
Macro to set error - use err.clear() to clear.
void timesInvA(Matrix3D &B, const Matrix3D &A)
void compute_T_matrices(MsqMeshEntity &elem, PatchData &pd, Matrix3D T[], size_t num_T, double c_k[], MsqError &err)
For a given element, compute each corner matrix A, and given a target corner matrix W...
Class containing the target corner matrices for the context based smoothing.
bool get_barrier_function(PatchData &pd, const double &tau, double &h, MsqError &err)
void compute_corner_matrices(PatchData &pd, Matrix3D A[], int num_m3d, MsqError &err)
Compute matrices which column are the vectors issued from a corner.