MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include <AWShape2DB1.hpp>
Public Member Functions | |
virtual MESQUITE_EXPORT | ~AWShape2DB1 () |
virtual MESQUITE_EXPORT std::string | get_name () const |
virtual MESQUITE_EXPORT bool | evaluate (const MsqMatrix< 2, 2 > &A, const MsqMatrix< 2, 2 > &W, double &result, MsqError &err) |
Evaluate \(\mu(A,W)\). |
\( \frac{1}{4 \alpha \omega}|A(adj\,W)-[W(adj\,A)]^t|^2 \)
Definition at line 42 of file AWShape2DB1.hpp.
MBMesquite::AWShape2DB1::~AWShape2DB1 | ( | ) | [virtual] |
Definition at line 46 of file AWShape2DB1.cpp.
{}
bool MBMesquite::AWShape2DB1::evaluate | ( | const MsqMatrix< 2, 2 > & | A, |
const MsqMatrix< 2, 2 > & | W, | ||
double & | result, | ||
MsqError & | err | ||
) | [virtual] |
Evaluate \(\mu(A,W)\).
A | 2x2 active matrix |
W | 2x2 target matrix |
result | Output: value of function |
Reimplemented from MBMesquite::AWMetric.
Definition at line 48 of file AWShape2DB1.cpp.
References MBMesquite::adj(), MBMesquite::MsqError::BARRIER_VIOLATED, MBMesquite::barrier_violated_msg_aw, MBMesquite::det(), MBMesquite::AWMetric::invalid_determinant(), MSQ_SETERR, and MBMesquite::sqr_Frobenius().
{ const double alpha = det( A ); const double omega = det( W ); const double prod = alpha * omega; if( AWMetric::invalid_determinant( prod ) ) { MSQ_SETERR( err )( barrier_violated_msg_aw, MsqError::BARRIER_VIOLATED ); return false; } result = sqr_Frobenius( A * adj( W ) ); result += sqr_Frobenius( W * adj( A ) ); result *= 0.25 / prod; result -= 1.0; return true; }
std::string MBMesquite::AWShape2DB1::get_name | ( | ) | const [virtual] |
Reimplemented from MBMesquite::AWMetricBarrier.
Definition at line 41 of file AWShape2DB1.cpp.
{ return "AWShape2DB1"; }