Base class for concrete quality metrics. More...
#include <QualityMetric.hpp>
Public Member Functions | |
virtual | ~QualityMetric () |
MetricType | get_metric_type () |
void | set_element_evaluation_mode (ElementEvaluationMode mode, MsqError &err) |
Sets the evaluation mode for the ELEMENT_BASED metrics. More... | |
ElementEvaluationMode | get_element_evaluation_mode () |
Returns the evaluation mode for the metric. More... | |
void | set_averaging_method (AveragingMethod method, MsqError &err) |
void | set_feasible_constraint (int alpha) |
int | get_feasible_constraint () |
Returns the feasible flag for this metric. More... | |
void | set_name (msq_std::string st) |
Sets the name of this metric. More... | |
msq_std::string | get_name () |
Returns the name of this metric (as a string). More... | |
double | vertex_barrier_function (double det, double delta) |
Escobar Barrier Function for Shape and Other Metrics. More... | |
virtual bool | evaluate_vertex (PatchData &, MsqVertex *, double &, MsqError &err) |
Evaluate the metric for a vertex. More... | |
virtual bool | evaluate_element (PatchData &, MsqMeshEntity *, double &, MsqError &err) |
Evaluate the metric for an element. More... | |
void | set_gradient_type (GRADIENT_TYPE grad) |
Sets gradType for this metric. More... | |
void | set_hessian_type (HESSIAN_TYPE ht) |
Sets hessianType for this metric. More... | |
bool | compute_vertex_gradient (PatchData &pd, MsqVertex &vertex, MsqVertex *vertices[], Vector3D grad_vec[], int num_vtx, double &metric_value, MsqError &err) |
Calls compute_vertex_numerical_gradient if gradType equals NUMERCIAL_GRADIENT. Calls compute_vertex_analytical_gradient if gradType equals ANALYTICAL_GRADIENT;. More... | |
bool | compute_element_gradient (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_gradient() or compute_element_analytical_gradient() for gradType equal NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT, respectively. More... | |
bool | compute_element_gradient_expanded (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
bool | compute_element_hessian (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], Matrix3D hessian[], int num_free_vtx, double &metric_value, MsqError &err) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_hessian() or compute_element_analytical_hessian() for hessianType equal NUMERICAL_HESSIAN or ANALYTICAL_HESSIAN, respectively. More... | |
void | set_negate_flag (int neg) |
int | get_negate_flag () |
Returns negateFlag. More... | |
virtual void | change_metric_type (MetricType t, MsqError &err) |
virtual | ~QualityMetric () |
MetricType | get_metric_type () |
void | set_element_evaluation_mode (ElementEvaluationMode mode, MsqError &err) |
Sets the evaluation mode for the ELEMENT_BASED metrics. More... | |
ElementEvaluationMode | get_element_evaluation_mode () |
Returns the evaluation mode for the metric. More... | |
void | set_averaging_method (AveragingMethod method, MsqError &err) |
void | set_feasible_constraint (int alpha) |
int | get_feasible_constraint () |
Returns the feasible flag for this metric. More... | |
void | set_name (msq_std::string st) |
Sets the name of this metric. More... | |
msq_std::string | get_name () |
Returns the name of this metric (as a string). More... | |
double | vertex_barrier_function (double det, double delta) |
Escobar Barrier Function for Shape and Other Metrics. More... | |
virtual bool | evaluate_vertex (PatchData &, MsqVertex *, double &, MsqError &err) |
Evaluate the metric for a vertex. More... | |
virtual bool | evaluate_element (PatchData &, MsqMeshEntity *, double &, MsqError &err) |
Evaluate the metric for an element. More... | |
void | set_gradient_type (GRADIENT_TYPE grad) |
Sets gradType for this metric. More... | |
void | set_hessian_type (HESSIAN_TYPE ht) |
Sets hessianType for this metric. More... | |
bool | compute_vertex_gradient (PatchData &pd, MsqVertex &vertex, MsqVertex *vertices[], Vector3D grad_vec[], int num_vtx, double &metric_value, MsqError &err) |
bool | compute_element_gradient (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_gradient() or compute_element_analytical_gradient() for gradType equal NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT, respectively. More... | |
bool | compute_element_gradient_expanded (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
bool | compute_element_hessian (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], Matrix3D hessian[], int num_free_vtx, double &metric_value, MsqError &err) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_hessian() or compute_element_analytical_hessian() for hessianType equal NUMERICAL_HESSIAN or ANALYTICAL_HESSIAN, respectively. More... | |
void | set_negate_flag (int neg) |
int | get_negate_flag () |
Returns negateFlag. More... | |
virtual void | change_metric_type (MetricType t, MsqError &err) |
Protected Member Functions | |
QualityMetric () | |
void | set_metric_type (MetricType t) |
This function should be used in the constructor of every concrete quality metric. More... | |
double | average_metrics (const double metric_values[], const int &num_values, MsqError &err) |
average_metrics takes an array of length num_values and averages the contents using averaging method data member avgMethod . More... | |
double | average_metric_and_weights (double metric_values[], int num_metric_values, MsqError &err) |
Given a list of metric values, calculate the average metric valude according to the current avgMethod and write into the passed metric_values array the the value weight/count to use when averaging gradient vectors for the metric. More... | |
double | weighted_average_metrics (const double coef[], const double metric_values[], const int &num_values, MsqError &err) |
takes an array of coefficients and an array of metrics (both of length num_value) and averages the contents using averaging method 'method'. More... | |
bool | compute_vertex_numerical_gradient (PatchData &pd, MsqVertex &vertex, MsqVertex *vertices[], Vector3D grad_vec[], int num_vtx, double &metric_value, MsqError &err) |
bool | compute_element_numerical_gradient (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
Non-virtual function which numerically computes the gradient of a QualityMetric of a given element for a given set of free vertices on that element. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() . More... | |
virtual bool | compute_vertex_analytical_gradient (PatchData &pd, MsqVertex &vertex, MsqVertex *vertices[], Vector3D grad_vec[], int num_vtx, double &metric_value, MsqError &err) |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is VERTEX_BASED. More... | |
virtual bool | compute_element_analytical_gradient (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() . More... | |
bool | compute_element_numerical_hessian (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], Matrix3D hessian[], int num_free_vtx, double &metric_value, MsqError &err) |
virtual bool | compute_element_analytical_hessian (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], Matrix3D hessian[], int num_free_vtx, double &metric_value, MsqError &err) |
QualityMetric () | |
void | set_metric_type (MetricType t) |
This function should be used in the constructor of every concrete quality metric. More... | |
double | average_metrics (const double metric_values[], const int &num_values, MsqError &err) |
average_metrics takes an array of length num_values and averages the contents using averaging method data member avgMethod . More... | |
double | average_metric_and_weights (double metric_values[], int num_metric_values, MsqError &err) |
Given a list of metric values, calculate the average metric valude according to the current avgMethod and write into the passed metric_values array the the value weight/count to use when averaging gradient vectors for the metric. More... | |
double | weighted_average_metrics (const double coef[], const double metric_values[], const int &num_values, MsqError &err) |
takes an array of coefficients and an array of metrics (both of length num_value) and averages the contents using averaging method 'method'. More... | |
bool | compute_vertex_numerical_gradient (PatchData &pd, MsqVertex &vertex, MsqVertex *vertices[], Vector3D grad_vec[], int num_vtx, double &metric_value, MsqError &err) |
bool | compute_element_numerical_gradient (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
Non-virtual function which numerically computes the gradient of a QualityMetric of a given element for a given set of free vertices on that element. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() . More... | |
virtual bool | compute_vertex_analytical_gradient (PatchData &pd, MsqVertex &vertex, MsqVertex *vertices[], Vector3D grad_vec[], int num_vtx, double &metric_value, MsqError &err) |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is VERTEX_BASED. More... | |
virtual bool | compute_element_analytical_gradient (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], int num_free_vtx, double &metric_value, MsqError &err) |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() . More... | |
bool | compute_element_numerical_hessian (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], Matrix3D hessian[], int num_free_vtx, double &metric_value, MsqError &err) |
virtual bool | compute_element_analytical_hessian (PatchData &pd, MsqMeshEntity *element, MsqVertex *free_vtces[], Vector3D grad_vec[], Matrix3D hessian[], int num_free_vtx, double &metric_value, MsqError &err) |
Protected Attributes | |
AveragingMethod | avgMethod |
int | feasible |
msq_std::string | metricName |
Private Attributes | |
ElementEvaluationMode | evalMode |
MetricType | mType |
GRADIENT_TYPE | gradType |
HESSIAN_TYPE | hessianType |
int | negateFlag |
Friends | |
class | MsqMeshEntity |
Base class for concrete quality metrics.
Definition at line 64 of file includeLinks/QualityMetric.hpp.
enum AveragingMethod |
AveragingMethod allows you to set how the quality metric values attained at each sample point will be averaged together to produce a single metric value for an element.
Definition at line 131 of file includeLinks/QualityMetric.hpp.
enum AveragingMethod |
AveragingMethod allows you to set how the quality metric values attained at each sample point will be averaged together to produce a single metric value for an element.
Definition at line 131 of file src/QualityMetric/QualityMetric.hpp.
is for metrics of type ELEMENT_BASED only. It allows you to indicate whether we are evaluating the metric based on element vertices, or element gauss points.
Enumerator | |
---|---|
EEM_UNDEFINED | |
ELEMENT_VERTICES | |
LINEAR_GAUSS_POINTS | |
QUADRATIC_GAUSS_POINTS | |
CUBIC_GAUSS_POINTS | |
EEM_UNDEFINED | |
ELEMENT_VERTICES | |
LINEAR_GAUSS_POINTS | |
QUADRATIC_GAUSS_POINTS | |
CUBIC_GAUSS_POINTS |
Definition at line 111 of file includeLinks/QualityMetric.hpp.
Enumerator | |
---|---|
EEM_UNDEFINED | |
ELEMENT_VERTICES | |
LINEAR_GAUSS_POINTS | |
QUADRATIC_GAUSS_POINTS | |
CUBIC_GAUSS_POINTS | |
EEM_UNDEFINED | |
ELEMENT_VERTICES | |
LINEAR_GAUSS_POINTS | |
QUADRATIC_GAUSS_POINTS | |
CUBIC_GAUSS_POINTS |
Definition at line 111 of file src/QualityMetric/QualityMetric.hpp.
enum GRADIENT_TYPE |
Sets to either NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT
Enumerator | |
---|---|
NUMERICAL_GRADIENT | |
ANALYTICAL_GRADIENT | |
NUMERICAL_GRADIENT | |
ANALYTICAL_GRADIENT |
Definition at line 205 of file includeLinks/QualityMetric.hpp.
enum GRADIENT_TYPE |
Enumerator | |
---|---|
NUMERICAL_GRADIENT | |
ANALYTICAL_GRADIENT | |
NUMERICAL_GRADIENT | |
ANALYTICAL_GRADIENT |
Definition at line 205 of file src/QualityMetric/QualityMetric.hpp.
enum HESSIAN_TYPE |
Sets to either NUMERICAL_HESSIAN or ANALYTICAL_HESSIAN
Enumerator | |
---|---|
NUMERICAL_HESSIAN | |
ANALYTICAL_HESSIAN | |
NUMERICAL_HESSIAN | |
ANALYTICAL_HESSIAN |
Definition at line 217 of file includeLinks/QualityMetric.hpp.
enum HESSIAN_TYPE |
Enumerator | |
---|---|
NUMERICAL_HESSIAN | |
ANALYTICAL_HESSIAN | |
NUMERICAL_HESSIAN | |
ANALYTICAL_HESSIAN |
Definition at line 217 of file src/QualityMetric/QualityMetric.hpp.
enum MetricType |
is a property of the metric. It should be set correctly in the constructor of the concrete QualityMetric. An example of a (mediocre) VERTEX_BASED metric is the smallest edge connected to a vertex. An example of a (mediocre) ELEMENT_BASED metric is the aspect ratio of an element.
Enumerator | |
---|---|
MT_UNDEFINED | |
VERTEX_BASED | |
ELEMENT_BASED | |
VERTEX_BASED_FREE_ONLY | |
MT_UNDEFINED | |
VERTEX_BASED | |
ELEMENT_BASED | |
VERTEX_BASED_FREE_ONLY |
Definition at line 97 of file includeLinks/QualityMetric.hpp.
enum MetricType |
Enumerator | |
---|---|
MT_UNDEFINED | |
VERTEX_BASED | |
ELEMENT_BASED | |
VERTEX_BASED_FREE_ONLY | |
MT_UNDEFINED | |
VERTEX_BASED | |
ELEMENT_BASED | |
VERTEX_BASED_FREE_ONLY |
Definition at line 97 of file src/QualityMetric/QualityMetric.hpp.
|
inlineprotected |
Constructor defaults concrete QualityMetric's to gradType=NUMERCIAL_GRADIENT and negateFlag=1. Concrete QualityMetric constructors over-write these defaults when appropriate.
Definition at line 72 of file includeLinks/QualityMetric.hpp.
|
inlinevirtual |
Definition at line 86 of file includeLinks/QualityMetric.hpp.
|
inlineprotected |
Constructor defaults concrete QualityMetric's to gradType=NUMERCIAL_GRADIENT and negateFlag=1. Concrete QualityMetric constructors over-write these defaults when appropriate.
Definition at line 72 of file src/QualityMetric/QualityMetric.hpp.
|
inlinevirtual |
Definition at line 86 of file src/QualityMetric/QualityMetric.hpp.
|
protected |
Given a list of metric values, calculate the average metric valude according to the current avgMethod and write into the passed metric_values array the the value weight/count to use when averaging gradient vectors for the metric.
metric_values | : As input, a set of quality metric values to average. As output, the fraction of the corresponding gradient vector that contributes to the average gradient. |
num_metric_values | The number of values in the passed array. |
Definition at line 495 of file QualityMetric/QualityMetric.cpp.
References cimg_library::exp(), i, MsqError::INVALID_STATE, cimg_library::log(), MAXIMUM, Mesquite::MSQ_MIN, MSQ_SETERR, and sqrt().
Referenced by IdealWeightInverseMeanRatio::compute_element_analytical_gradient(), and IdealWeightMeanRatio::compute_element_analytical_gradient().
|
protected |
Given a list of metric values, calculate the average metric valude according to the current avgMethod and write into the passed metric_values array the the value weight/count to use when averaging gradient vectors for the metric.
metric_values | : As input, a set of quality metric values to average. As output, the fraction of the corresponding gradient vector that contributes to the average gradient. |
num_metric_values | The number of values in the passed array. |
|
inlineprotected |
average_metrics takes an array of length num_values and averages the contents using averaging method data member avgMethod .
average_metrics takes an array of length num_value and averages the contents using averaging method 'method'.
Definition at line 524 of file includeLinks/QualityMetric.hpp.
References QualityMetric::avgMethod, QualityMetric::GEOMETRIC, QualityMetric::HARMONIC, QualityMetric::HMS, i, MsqError::INVALID_ARG, j, QualityMetric::LINEAR, QualityMetric::MAX_MINUS_MIN, QualityMetric::MAX_OVER_MIN, QualityMetric::MAXIMUM, QualityMetric::MINIMUM, Mesquite::MSQ_MAX_CAP, Mesquite::MSQ_MIN, MSQ_SETERR, QualityMetric::NONE, MsqError::NOT_IMPLEMENTED, Mesquite::pow(), QualityMetric::RMS, sqrt(), QualityMetric::STANDARD_DEVIATION, QualityMetric::SUM, QualityMetric::SUM_OF_RATIOS_SQUARED, and QualityMetric::SUM_SQUARED.
Referenced by ConditionNumberQualityMetric::evaluate_element(), ASMQualityMetric::evaluate_element(), UntangleBetaQualityMetric::evaluate_element(), IdealWeightInverseMeanRatio::evaluate_element(), IdealWeightMeanRatio::evaluate_element(), VertexConditionNumberQualityMetric::evaluate_vertex(), EdgeLengthQualityMetric::evaluate_vertex(), LocalSizeQualityMetric::evaluate_vertex(), and EdgeLengthRangeQualityMetric::evaluate_vertex().
|
protected |
average_metrics takes an array of length num_values and averages the contents using averaging method data member avgMethod .
|
virtual |
This function is user accessible and virtual. The base class implementation sets an error, because many metrics will only be defined as Element_based or Vertex_based, and this function will not be needed. Some concrete metrics will have both Element_based and Vertex_based definintions, and those metrics will re-implement this function to the MetricType to be changed to either QualityMetric::VERTEX_BASED or QualityMetric::ELEMENT_BASED.
Definition at line 151 of file QualityMetric/QualityMetric.cpp.
References MSQ_SETERR, and MsqError::NOT_IMPLEMENTED.
|
virtual |
This function is user accessible and virtual. The base class implementation sets an error, because many metrics will only be defined as Element_based or Vertex_based, and this function will not be needed. Some concrete metrics will have both Element_based and Vertex_based definintions, and those metrics will re-implement this function to the MetricType to be changed to either QualityMetric::VERTEX_BASED or QualityMetric::ELEMENT_BASED.
|
protectedvirtual |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() .
If that function is not over-riden in the concrete class, the base
Parameters description, see QualityMetric::compute_element_gradient() .
Reimplemented in I_DFT, I_DFT, IdealWeightMeanRatio, IdealWeightMeanRatio, IdealWeightInverseMeanRatio, IdealWeightInverseMeanRatio, RI_DFT, and RI_DFT.
Definition at line 164 of file QualityMetric/QualityMetric.cpp.
References MSQ_CHKERR, and MSQ_PRINT.
Referenced by QualityMetric::compute_element_gradient().
|
protectedvirtual |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() .
Reimplemented in I_DFT, I_DFT, IdealWeightMeanRatio, IdealWeightMeanRatio, IdealWeightInverseMeanRatio, IdealWeightInverseMeanRatio, RI_DFT, and RI_DFT.
|
protectedvirtual |
If that function is not over-riden in the concrete class, the base class function makes it default to a numerical hessian.
For parameters description, see QualityMetric::compute_element_hessian() .
Reimplemented in I_DFT, I_DFT, IdealWeightMeanRatio, IdealWeightMeanRatio, IdealWeightInverseMeanRatio, IdealWeightInverseMeanRatio, RI_DFT, and RI_DFT.
Definition at line 185 of file QualityMetric/QualityMetric.cpp.
References MSQ_CHKERR, and MSQ_PRINT.
|
protectedvirtual |
Reimplemented in I_DFT, I_DFT, IdealWeightMeanRatio, IdealWeightMeanRatio, IdealWeightInverseMeanRatio, IdealWeightInverseMeanRatio, RI_DFT, and RI_DFT.
|
inline |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_gradient() or compute_element_analytical_gradient() for gradType equal NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT, respectively.
free_vtces | base address of an array of pointers to the element vertices which are considered free for purposes of computing the gradient. The quality metric gradient relative to each of those vertices is computed and stored in grad_vec. |
grad_vec | base address of an array of Vector3D where the gradient is stored, in the order specified by the free_vtces array. |
num_free_vtx | This is the size of the vertices and gradient arrays. |
metric_value | Since the metric is computed, we return it. |
Definition at line 494 of file includeLinks/QualityMetric.hpp.
References QualityMetric::ANALYTICAL_GRADIENT, QualityMetric::compute_element_analytical_gradient(), QualityMetric::compute_element_numerical_gradient(), QualityMetric::gradType, MSQ_CHKERR, and QualityMetric::NUMERICAL_GRADIENT.
Referenced by LPtoPTemplate::compute_analytical_gradient().
bool compute_element_gradient | ( | PatchData & | pd, |
MsqMeshEntity * | element, | ||
MsqVertex * | free_vtces[], | ||
Vector3D | grad_vec[], | ||
int | num_free_vtx, | ||
double & | metric_value, | ||
MsqError & | err | ||
) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_gradient() or compute_element_analytical_gradient() for gradType equal NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT, respectively.
bool compute_element_gradient_expanded | ( | PatchData & | pd, |
MsqMeshEntity * | el, | ||
MsqVertex * | free_vtces[], | ||
Vector3D | grad_vec[], | ||
int | num_free_vtx, | ||
double & | metric_value, | ||
MsqError & | err | ||
) |
same as compute_element_gradient(), but fills fixed vertices spots with zeros instead of not returning values for fixed vertices. Also, the vertices are now ordered according to the element vertices array.
Note that for this function, grad_vec should be an array of size the number of vertices in el, not of size num_free_vtx.
Definition at line 205 of file QualityMetric/QualityMetric.cpp.
References PatchData::get_vertex_index(), MsqMeshEntity::get_vertex_indices(), i, and MSQ_CHKERR.
bool compute_element_gradient_expanded | ( | PatchData & | pd, |
MsqMeshEntity * | element, | ||
MsqVertex * | free_vtces[], | ||
Vector3D | grad_vec[], | ||
int | num_free_vtx, | ||
double & | metric_value, | ||
MsqError & | err | ||
) |
same as compute_element_gradient(), but fills fixed vertices spots with zeros instead of not returning values for fixed vertices. Also, the vertices are now ordered according to the element vertices array.
bool compute_element_hessian | ( | PatchData & | pd, |
MsqMeshEntity * | el, | ||
MsqVertex * | free_vtces[], | ||
Vector3D | grad_vec[], | ||
Matrix3D | hessian[], | ||
int | num_free_vtx, | ||
double & | metric_value, | ||
MsqError & | err | ||
) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_hessian() or compute_element_analytical_hessian() for hessianType equal NUMERICAL_HESSIAN or ANALYTICAL_HESSIAN, respectively.
pd,: | PatchData that contains the element which Hessian we want. |
el,: | this is the element for which the Hessian will be returned. |
free_vtces,: | base address of an array of pointers to the element vertices which are considered free for purposes of computing the hessian. The vertices within this array must be ordered in the same order as the vertices within the element, el. Only the Hessian entries corresponding to a pair of free vertices will be non-zero. |
grad_vec,: | this is an array of nve Vector3D, where nve is the total number of vertices in the element. Only the entries corresponding to free vertices specified in free_vtces will be non-zero. The order is the same as the order of the vertices in el. |
hessian,: | this is a 1D array of Matrix3D that will contain the upper triangular part of the Hessian. It has size nve*(nve+1)/2, i.e. the number of entries in the upper triangular part of a nve*nve matrix. |
num_free_vtx,: | is the number df free vertices in the element. Essentially, this gives the size of free_vtces[]. The gradient array has the size of the number of vertices in the element, regardless. |
metric_value,: | Since the metric is computed, we return it. |
Definition at line 81 of file QualityMetric/QualityMetric.cpp.
References PatchData::get_vertex_index(), MsqMeshEntity::get_vertex_indices(), i, MsqError::INTERNAL_ERROR, MSQ_ERRZERO, MSQ_SETERR, and v.
Referenced by LPtoPTemplate::compute_analytical_hessian().
bool compute_element_hessian | ( | PatchData & | pd, |
MsqMeshEntity * | element, | ||
MsqVertex * | free_vtces[], | ||
Vector3D | grad_vec[], | ||
Matrix3D | hessian[], | ||
int | num_free_vtx, | ||
double & | metric_value, | ||
MsqError & | err | ||
) |
For MetricType == ELEMENT_BASED. Calls either compute_element_numerical_hessian() or compute_element_analytical_hessian() for hessianType equal NUMERICAL_HESSIAN or ANALYTICAL_HESSIAN, respectively.
|
protected |
Non-virtual function which numerically computes the gradient of a QualityMetric of a given element for a given set of free vertices on that element. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() .
|
protected |
Non-virtual function which numerically computes the gradient of a QualityMetric of a given element for a given set of free vertices on that element. This is used by metric which mType is ELEMENT_BASED. For parameters, see compute_element_gradient() .
Parameters description, see QualityMetric::compute_element_gradient() .
TODO: (MICHAEL) Try to inline this function (currenlty conflicts with MsqVertex.hpp).
Definition at line 262 of file QualityMetric/QualityMetric.cpp.
References MsqError::INTERNAL_ERROR, j, MSQ_CHKERR, MSQ_FUNCTION_TIMER, MSQ_PRINT, MSQ_SETERR, and v.
Referenced by RI_DFT::compute_element_analytical_gradient(), and QualityMetric::compute_element_gradient().
|
protected |
|
protected |
Note that for this function, grad_vec should be an array of size the number of vertices in el, not of size num_free_vtx. Entries that do not correspond with the vertices argument array will be null.
For parameters description, see QualityMetric::compute_element_hessian() .
Definition at line 337 of file QualityMetric/QualityMetric.cpp.
References free_vertex(), PatchData::get_vertex_index(), MsqMeshEntity::get_vertex_indices(), i, j, k, MSQ_CHKERR, MSQ_FUNCTION_TIMER, MSQ_PRINT, v, and MsqMeshEntity::vertex_count().
Referenced by RI_DFT::compute_element_analytical_hessian().
|
protectedvirtual |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is VERTEX_BASED.
|
protectedvirtual |
Virtual function that computes the gradient of the QualityMetric analytically. The base class implementation of this function simply prints a warning and calls compute_numerical_gradient to calculate the gradient. This is used by metric which mType is VERTEX_BASED.
If that function is not over-riden in the concrete class, the base class function makes it default to a numerical gradient.
vertex | Vertex which is considered free for purposes of computing the gradient. |
grad_vec | Vector where the gradient is stored. |
metric_value | Since the metric is computed, we return it. |
Definition at line 135 of file QualityMetric/QualityMetric.cpp.
References MSQ_CHKERR, and MSQ_PRINT.
Referenced by QualityMetric::compute_vertex_gradient().
bool compute_vertex_gradient | ( | PatchData & | pd, |
MsqVertex & | vertex, | ||
MsqVertex * | vertices[], | ||
Vector3D | grad_vec[], | ||
int | num_vtx, | ||
double & | metric_value, | ||
MsqError & | err | ||
) |
For MetricType == VERTEX_BASED. Calls either compute_vertex_numerical_gradient or compute_vertex_analytical_gradient for gradType equal NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT, respectively.
|
inline |
Calls compute_vertex_numerical_gradient if gradType equals NUMERCIAL_GRADIENT. Calls compute_vertex_analytical_gradient if gradType equals ANALYTICAL_GRADIENT;.
For MetricType == VERTEX_BASED. Calls either compute_vertex_numerical_gradient or compute_vertex_analytical_gradient for gradType equal NUMERICAL_GRADIENT or ANALYTICAL_GRADIENT, respectively.
Definition at line 456 of file includeLinks/QualityMetric.hpp.
References QualityMetric::ANALYTICAL_GRADIENT, QualityMetric::compute_vertex_analytical_gradient(), QualityMetric::compute_vertex_numerical_gradient(), QualityMetric::gradType, MSQ_CHKERR, and QualityMetric::NUMERICAL_GRADIENT.
Referenced by LPtoPTemplate::compute_analytical_gradient().
|
protected |
Non-virtual function which numerically computes the gradient of a QualityMetric of a given free vertex. This is used by metric which mType is VERTEX_BASED.
Numerically calculates the gradient of a vertex-based QualityMetric value on the given free vertex. The metric is evaluated at MsqVertex 'vertex', and the gradient is calculated with respect to the degrees of freedom associated with MsqVertices in the 'vertices' array.
TODO: (MICHAEL) Try to inline this function (currenlty conflicts with MsqVertex.hpp).
Definition at line 431 of file QualityMetric/QualityMetric.cpp.
References j, MSQ_CHKERR, MSQ_ERRZERO, MSQ_PRINT, and v.
Referenced by QualityMetric::compute_vertex_gradient().
|
protected |
Non-virtual function which numerically computes the gradient of a QualityMetric of a given free vertex. This is used by metric which mType is VERTEX_BASED.
|
virtual |
Evaluate the metric for an element.
Reimplemented in I_DFT, I_DFT, IdealWeightMeanRatio, IdealWeightMeanRatio, AddQualityMetric, AddQualityMetric, IdealWeightInverseMeanRatio, IdealWeightInverseMeanRatio, MultiplyQualityMetric, MultiplyQualityMetric, AspectRatioGammaQualityMetric, AspectRatioGammaQualityMetric, CornerJacobianQualityMetric, UntangleBetaQualityMetric, UntangleBetaQualityMetric, CornerJacobianQualityMetric, GeneralizedConditionNumberQualityMetric, GeneralizedConditionNumberQualityMetric, ASMQualityMetric, ASMQualityMetric, PowerQualityMetric, PowerQualityMetric, RI_DFT, RI_DFT, ConditionNumberQualityMetric, sI_DFT, sRI_DFT, sI_DFT, sRI_DFT, ConditionNumberQualityMetric, ScalarAddQualityMetric, ScalarMultiplyQualityMetric, ScalarAddQualityMetric, and ScalarMultiplyQualityMetric.
|
virtual |
Evaluate the metric for an element.
Reimplemented in I_DFT, I_DFT, IdealWeightMeanRatio, IdealWeightMeanRatio, AddQualityMetric, AddQualityMetric, IdealWeightInverseMeanRatio, IdealWeightInverseMeanRatio, MultiplyQualityMetric, MultiplyQualityMetric, AspectRatioGammaQualityMetric, AspectRatioGammaQualityMetric, CornerJacobianQualityMetric, UntangleBetaQualityMetric, UntangleBetaQualityMetric, CornerJacobianQualityMetric, GeneralizedConditionNumberQualityMetric, GeneralizedConditionNumberQualityMetric, ASMQualityMetric, ASMQualityMetric, PowerQualityMetric, PowerQualityMetric, RI_DFT, RI_DFT, ConditionNumberQualityMetric, sI_DFT, sRI_DFT, sI_DFT, sRI_DFT, ConditionNumberQualityMetric, ScalarAddQualityMetric, ScalarMultiplyQualityMetric, ScalarAddQualityMetric, and ScalarMultiplyQualityMetric.
Definition at line 485 of file QualityMetric/QualityMetric.cpp.
References MSQ_SETERR, and MsqError::NOT_IMPLEMENTED.
Referenced by NonSmoothSteepestDescent::compute_function(), LInfTemplate::concrete_evaluate(), MaxTemplate::concrete_evaluate(), LPtoPTemplate::concrete_evaluate(), ScalarAddQualityMetric::evaluate_element(), ScalarMultiplyQualityMetric::evaluate_element(), PowerQualityMetric::evaluate_element(), MultiplyQualityMetric::evaluate_element(), and AddQualityMetric::evaluate_element().
Evaluate the metric for a vertex.
Reimplemented in EdgeLengthRangeQualityMetric, EdgeLengthRangeQualityMetric, AddQualityMetric, AddQualityMetric, LocalSizeQualityMetric, LocalSizeQualityMetric, MultiplyQualityMetric, MultiplyQualityMetric, EdgeLengthQualityMetric, EdgeLengthQualityMetric, GeneralizedConditionNumberQualityMetric, GeneralizedConditionNumberQualityMetric, PowerQualityMetric, PowerQualityMetric, ScalarAddQualityMetric, ScalarMultiplyQualityMetric, ScalarAddQualityMetric, ScalarMultiplyQualityMetric, VertexConditionNumberQualityMetric, and VertexConditionNumberQualityMetric.
Definition at line 475 of file QualityMetric/QualityMetric.cpp.
References MSQ_SETERR, and MsqError::NOT_IMPLEMENTED.
Referenced by LInfTemplate::concrete_evaluate(), MaxTemplate::concrete_evaluate(), LPtoPTemplate::concrete_evaluate(), ScalarMultiplyQualityMetric::evaluate_vertex(), PowerQualityMetric::evaluate_vertex(), MultiplyQualityMetric::evaluate_vertex(), and AddQualityMetric::evaluate_vertex().
Evaluate the metric for a vertex.
Reimplemented in EdgeLengthRangeQualityMetric, EdgeLengthRangeQualityMetric, AddQualityMetric, AddQualityMetric, LocalSizeQualityMetric, LocalSizeQualityMetric, MultiplyQualityMetric, MultiplyQualityMetric, EdgeLengthQualityMetric, EdgeLengthQualityMetric, GeneralizedConditionNumberQualityMetric, GeneralizedConditionNumberQualityMetric, PowerQualityMetric, PowerQualityMetric, ScalarAddQualityMetric, ScalarMultiplyQualityMetric, ScalarAddQualityMetric, ScalarMultiplyQualityMetric, VertexConditionNumberQualityMetric, and VertexConditionNumberQualityMetric.
|
inline |
Returns the evaluation mode for the metric.
Definition at line 124 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::evalMode.
|
inline |
Returns the evaluation mode for the metric.
Definition at line 124 of file includeLinks/QualityMetric.hpp.
References QualityMetric::evalMode.
|
inline |
Returns the feasible flag for this metric.
Definition at line 177 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::feasible.
|
inline |
Returns the feasible flag for this metric.
Definition at line 177 of file includeLinks/QualityMetric.hpp.
References QualityMetric::feasible.
Referenced by AddQualityMetric::AddQualityMetric(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), ScalarAddQualityMetric::ScalarAddQualityMetric(), and ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric().
|
inline |
Definition at line 105 of file includeLinks/QualityMetric.hpp.
References QualityMetric::mType.
Referenced by AddQualityMetric::AddQualityMetric(), LPtoPTemplate::compute_analytical_gradient(), LInfTemplate::concrete_evaluate(), MaxTemplate::concrete_evaluate(), LPtoPTemplate::concrete_evaluate(), QualityAssessor::find_or_add(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), ScalarAddQualityMetric::ScalarAddQualityMetric(), and ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric().
|
inline |
Definition at line 105 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::mType.
|
inline |
Returns the name of this metric (as a string).
Definition at line 185 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::metricName.
|
inline |
Returns the name of this metric (as a string).
Definition at line 185 of file includeLinks/QualityMetric.hpp.
References QualityMetric::metricName.
|
inline |
Returns negateFlag.
Definition at line 274 of file includeLinks/QualityMetric.hpp.
References QualityMetric::negateFlag.
Referenced by AddQualityMetric::AddQualityMetric(), LInfTemplate::LInfTemplate(), LPtoPTemplate::LPtoPTemplate(), MaxTemplate::MaxTemplate(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), ScalarAddQualityMetric::ScalarAddQualityMetric(), and ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric().
|
inline |
Returns negateFlag.
Definition at line 274 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::negateFlag.
|
inline |
Set the averaging method for the quality metric. Current options are NONE: the values are not averaged, GEOMETRIC: the geometric average, HARMONIC: the harmonic average, LINEAR: the linear average, MAXIMUM: the maximum value, MINIMUM: the minimum value, RMS: the root-mean-squared average, HMS: the harmonic-mean-squared average, SUM: the sum of the values, SUM_SQUARED: the sum of the squares of the values, GENERALIZED_MEAN: self explainatory, STANDARD_DEVIATION: the standard deviation squared of the values, MAX_MINUS_MIN: the maximum value minus the minum value, MAX_OVER_MIN: the maximum value divided by the minimum value, SUM_OF_RATIOS_SQUARED: (1/(N^2))*(SUM (SUM (v_i/v_j)^2))
Definition at line 424 of file includeLinks/QualityMetric.hpp.
References QualityMetric::avgMethod, QualityMetric::GEOMETRIC, QualityMetric::HARMONIC, QualityMetric::HMS, QualityMetric::LINEAR, QualityMetric::MAX_MINUS_MIN, QualityMetric::MAX_OVER_MIN, QualityMetric::MAXIMUM, QualityMetric::MINIMUM, MSQ_SETERR, QualityMetric::NONE, MsqError::NOT_IMPLEMENTED, QualityMetric::RMS, QualityMetric::STANDARD_DEVIATION, QualityMetric::SUM, QualityMetric::SUM_OF_RATIOS_SQUARED, and QualityMetric::SUM_SQUARED.
Referenced by I_DFT::I_DFT(), LaplacianSmoother::LaplacianSmoother(), RI_DFT::RI_DFT(), ShapeImprovementWrapper::ShapeImprovementWrapper(), sI_DFT::sI_DFT(), and sRI_DFT::sRI_DFT().
|
inline |
Set the averaging method for the quality metric. Current options are NONE: the values are not averaged, GEOMETRIC: the geometric average, HARMONIC: the harmonic average, LINEAR: the linear average, MAXIMUM: the maximum value, MINIMUM: the minimum value, RMS: the root-mean-squared average, HMS: the harmonic-mean-squared average, SUM: the sum of the values, SUM_SQUARED: the sum of the squares of the values, GENERALIZED_MEAN: self explainatory, STANDARD_DEVIATION: the standard deviation squared of the values, MAX_MINUS_MIN: the maximum value minus the minum value, MAX_OVER_MIN: the maximum value divided by the minimum value, SUM_OF_RATIOS_SQUARED: (1/(N^2))*(SUM (SUM (v_i/v_j)^2))
void set_element_evaluation_mode | ( | ElementEvaluationMode | mode, |
MsqError & | err | ||
) |
Sets the evaluation mode for the ELEMENT_BASED metrics.
|
inline |
Sets the evaluation mode for the ELEMENT_BASED metrics.
Definition at line 402 of file includeLinks/QualityMetric.hpp.
References QualityMetric::CUBIC_GAUSS_POINTS, QualityMetric::ELEMENT_VERTICES, QualityMetric::evalMode, MsqError::INVALID_STATE, QualityMetric::LINEAR_GAUSS_POINTS, MSQ_SETERR, QualityMetric::mType, MsqError::NOT_IMPLEMENTED, QualityMetric::QUADRATIC_GAUSS_POINTS, and QualityMetric::VERTEX_BASED.
Referenced by ASMQualityMetric::ASMQualityMetric(), AspectRatioGammaQualityMetric::AspectRatioGammaQualityMetric(), ConditionNumberQualityMetric::ConditionNumberQualityMetric(), CornerJacobianQualityMetric::CornerJacobianQualityMetric(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), and UntangleBetaQualityMetric::UntangleBetaQualityMetric().
|
inline |
Set feasible flag (i.e., does this metric have a feasible region that the mesh must maintain.)
Definition at line 173 of file includeLinks/QualityMetric.hpp.
References QualityMetric::feasible.
|
inline |
Set feasible flag (i.e., does this metric have a feasible region that the mesh must maintain.)
Definition at line 173 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::feasible.
|
inline |
Sets gradType for this metric.
Definition at line 212 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::gradType.
|
inline |
Sets gradType for this metric.
Definition at line 212 of file includeLinks/QualityMetric.hpp.
References QualityMetric::gradType.
Referenced by I_DFT::I_DFT(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), RI_DFT::RI_DFT(), ShapeImprovementWrapper::ShapeImprovementWrapper(), sI_DFT::sI_DFT(), sRI_DFT::sRI_DFT(), and UntangleBetaQualityMetric::UntangleBetaQualityMetric().
|
inline |
Sets hessianType for this metric.
Definition at line 224 of file includeLinks/QualityMetric.hpp.
References QualityMetric::hessianType.
Referenced by I_DFT::I_DFT(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), RI_DFT::RI_DFT(), ShapeImprovementWrapper::ShapeImprovementWrapper(), sI_DFT::sI_DFT(), and sRI_DFT::sRI_DFT().
|
inline |
Sets hessianType for this metric.
Definition at line 224 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::hessianType.
|
inlineprotected |
This function should be used in the constructor of every concrete quality metric.
Errors will result if type is left to MT_UNDEFINED.
Definition at line 291 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::mType.
|
inlineprotected |
This function should be used in the constructor of every concrete quality metric.
Errors will result if type is left to MT_UNDEFINED.
Definition at line 291 of file includeLinks/QualityMetric.hpp.
References QualityMetric::mType.
Referenced by AddQualityMetric::AddQualityMetric(), ASMQualityMetric::ASMQualityMetric(), AspectRatioGammaQualityMetric::AspectRatioGammaQualityMetric(), ConditionNumberQualityMetric::ConditionNumberQualityMetric(), CornerJacobianQualityMetric::CornerJacobianQualityMetric(), EdgeLengthQualityMetric::EdgeLengthQualityMetric(), EdgeLengthRangeQualityMetric::EdgeLengthRangeQualityMetric(), I_DFT::I_DFT(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), LocalSizeQualityMetric::LocalSizeQualityMetric(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), RI_DFT::RI_DFT(), ScalarAddQualityMetric::ScalarAddQualityMetric(), ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric(), sI_DFT::sI_DFT(), sRI_DFT::sRI_DFT(), UntangleBetaQualityMetric::UntangleBetaQualityMetric(), and VertexConditionNumberQualityMetric::VertexConditionNumberQualityMetric().
|
inline |
Sets the name of this metric.
Definition at line 181 of file includeLinks/QualityMetric.hpp.
References QualityMetric::metricName.
Referenced by AddQualityMetric::AddQualityMetric(), ASMQualityMetric::ASMQualityMetric(), AspectRatioGammaQualityMetric::AspectRatioGammaQualityMetric(), ConditionNumberQualityMetric::ConditionNumberQualityMetric(), CornerJacobianQualityMetric::CornerJacobianQualityMetric(), EdgeLengthQualityMetric::EdgeLengthQualityMetric(), EdgeLengthRangeQualityMetric::EdgeLengthRangeQualityMetric(), I_DFT::I_DFT(), I_DFT_Generalized::I_DFT_Generalized(), I_DFT_InverseMeanRatio::I_DFT_InverseMeanRatio(), I_DFT_NoBarrier::I_DFT_NoBarrier(), I_DFT_StrongBarrier::I_DFT_StrongBarrier(), I_DFT_WeakBarrier::I_DFT_WeakBarrier(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), LocalSizeQualityMetric::LocalSizeQualityMetric(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), ScalarAddQualityMetric::ScalarAddQualityMetric(), ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric(), UntangleBetaQualityMetric::UntangleBetaQualityMetric(), and VertexConditionNumberQualityMetric::VertexConditionNumberQualityMetric().
|
inline |
Sets the name of this metric.
Definition at line 181 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::metricName.
|
inline |
Set the value of QualityMetric's negateFlag. Concrete QualityMetrics should set this flag to -1 if the QualityMetric needs to be maximized.
Definition at line 270 of file src/QualityMetric/QualityMetric.hpp.
References QualityMetric::negateFlag.
|
inline |
Set the value of QualityMetric's negateFlag. Concrete QualityMetrics should set this flag to -1 if the QualityMetric needs to be maximized.
Definition at line 270 of file includeLinks/QualityMetric.hpp.
References QualityMetric::negateFlag.
Referenced by AddQualityMetric::AddQualityMetric(), IdealWeightMeanRatio::IdealWeightMeanRatio(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), ScalarAddQualityMetric::ScalarAddQualityMetric(), ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric(), and IdealWeightInverseMeanRatio::set_metric_power().
|
inline |
Escobar Barrier Function for Shape and Other Metrics.
Definition at line 191 of file includeLinks/QualityMetric.hpp.
References sqrt().
Referenced by ShapeQualityMetric::condition_number_2d(), and ShapeQualityMetric::condition_number_3d().
|
inline |
Escobar Barrier Function for Shape and Other Metrics.
Definition at line 191 of file src/QualityMetric/QualityMetric.hpp.
References sqrt().
|
protected |
takes an array of coefficients and an array of metrics (both of length num_value) and averages the contents using averaging method 'method'.
|
inlineprotected |
takes an array of coefficients and an array of metrics (both of length num_value) and averages the contents using averaging method 'method'.
Definition at line 708 of file includeLinks/QualityMetric.hpp.
References QualityMetric::avgMethod, i, QualityMetric::LINEAR, MSQ_SETERR, and MsqError::NOT_IMPLEMENTED.
Referenced by sI_DFT::evaluate_element(), and sRI_DFT::evaluate_element().
|
friend |
Definition at line 387 of file includeLinks/QualityMetric.hpp.
|
protected |
Definition at line 390 of file includeLinks/QualityMetric.hpp.
Referenced by ASMQualityMetric::ASMQualityMetric(), QualityMetric::average_metrics(), IdealWeightInverseMeanRatio::compute_element_analytical_gradient(), IdealWeightMeanRatio::compute_element_analytical_gradient(), IdealWeightInverseMeanRatio::compute_element_analytical_hessian(), IdealWeightMeanRatio::compute_element_analytical_hessian(), ConditionNumberQualityMetric::ConditionNumberQualityMetric(), CornerJacobianQualityMetric::CornerJacobianQualityMetric(), EdgeLengthQualityMetric::EdgeLengthQualityMetric(), EdgeLengthRangeQualityMetric::EdgeLengthRangeQualityMetric(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), LocalSizeQualityMetric::LocalSizeQualityMetric(), QualityMetric::set_averaging_method(), UntangleBetaQualityMetric::UntangleBetaQualityMetric(), VertexConditionNumberQualityMetric::VertexConditionNumberQualityMetric(), and QualityMetric::weighted_average_metrics().
|
private |
Definition at line 394 of file includeLinks/QualityMetric.hpp.
Referenced by QualityMetric::get_element_evaluation_mode(), and QualityMetric::set_element_evaluation_mode().
|
protected |
Definition at line 391 of file includeLinks/QualityMetric.hpp.
Referenced by AddQualityMetric::AddQualityMetric(), ASMQualityMetric::ASMQualityMetric(), AspectRatioGammaQualityMetric::AspectRatioGammaQualityMetric(), ConditionNumberQualityMetric::ConditionNumberQualityMetric(), CornerJacobianQualityMetric::CornerJacobianQualityMetric(), EdgeLengthQualityMetric::EdgeLengthQualityMetric(), EdgeLengthRangeQualityMetric::EdgeLengthRangeQualityMetric(), QualityMetric::get_feasible_constraint(), IdealWeightInverseMeanRatio::IdealWeightInverseMeanRatio(), IdealWeightMeanRatio::IdealWeightMeanRatio(), LocalSizeQualityMetric::LocalSizeQualityMetric(), MultiplyQualityMetric::MultiplyQualityMetric(), PowerQualityMetric::PowerQualityMetric(), ScalarAddQualityMetric::ScalarAddQualityMetric(), ScalarMultiplyQualityMetric::ScalarMultiplyQualityMetric(), QualityMetric::set_feasible_constraint(), UntangleBetaQualityMetric::UntangleBetaQualityMetric(), and VertexConditionNumberQualityMetric::VertexConditionNumberQualityMetric().
|
private |
Definition at line 396 of file includeLinks/QualityMetric.hpp.
Referenced by QualityMetric::compute_element_gradient(), QualityMetric::compute_vertex_gradient(), and QualityMetric::set_gradient_type().
|
private |
Definition at line 397 of file includeLinks/QualityMetric.hpp.
Referenced by QualityMetric::set_hessian_type().
|
protected |
Definition at line 392 of file includeLinks/QualityMetric.hpp.
Referenced by QualityMetric::get_name(), and QualityMetric::set_name().
|
private |
Definition at line 395 of file includeLinks/QualityMetric.hpp.
Referenced by QualityMetric::get_metric_type(), QualityMetric::set_element_evaluation_mode(), and QualityMetric::set_metric_type().
|
private |
Definition at line 398 of file includeLinks/QualityMetric.hpp.
Referenced by QualityMetric::get_negate_flag(), and QualityMetric::set_negate_flag().