Class representing a 3-D mapping function (e.g. shape function for volume element) More...
Public Member Functions | |
virtual CartVect | center_xi () const =0 |
Return \vec \xi corresponding to logical center of element. More... | |
virtual CartVect | evaluate (const CartVect &xi) const =0 |
Evaluate mapping function (calculate \vec x = F($\vec \xi) ) More... | |
virtual Matrix3 | jacobian (const CartVect &xi) const =0 |
Evaluate Jacobian of mapping function. More... | |
bool | solve_inverse (const CartVect &x, CartVect &xi, double tol) const |
Evaluate inverse of mapping function (calculate \vec \xi = F^-1($\vec x) ) More... | |
Class representing a 3-D mapping function (e.g. shape function for volume element)
Definition at line 1427 of file GeomUtil.cpp.
|
pure virtual |
Return \vec \xi corresponding to logical center of element.
Implemented in moab::GeomUtil::LinearHexMap.
Referenced by solve_inverse().
Evaluate mapping function (calculate \vec x = F($\vec \xi) )
Implemented in moab::GeomUtil::LinearHexMap.
Referenced by solve_inverse().
Evaluate Jacobian of mapping function.
Implemented in moab::GeomUtil::LinearHexMap.
Referenced by solve_inverse().
Evaluate inverse of mapping function (calculate \vec \xi = F^-1($\vec x) )
Definition at line 1440 of file GeomUtil.cpp.
1441 {
1442 const double error_tol_sqr = tol * tol;
1443 double det;
1444 xi = center_xi();
1445 CartVect delta = evaluate( xi ) - x;
1446 Matrix3 J;
1447 while( delta % delta > error_tol_sqr )
1448 {
1449 J = jacobian( xi );
1450 det = J.determinant();
1451 if( det < std::numeric_limits< double >::epsilon() ) return false;
1452 xi -= J.inverse() * delta;
1453 delta = evaluate( xi ) - x;
1454 }
1455 return true;
1456 }
References center_xi(), moab::Matrix3::determinant(), evaluate(), moab::Matrix3::inverse(), and jacobian().
Referenced by moab::GeomUtil::nat_coords_trilinear_hex().