|
MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include <iostream>#include "moab/Core.hpp"#include "moab/Interface.hpp"#include "moab/IntxMesh/IntxUtils.hpp"#include "TestUtil.hpp"
Include dependency graph for spherical_area_test.cpp:Go to the source code of this file.
Functions | |
| int | main (int, char **) |
| int main | ( | int | , |
| char ** | |||
| ) |
Definition at line 14 of file spherical_area_test.cpp.
References moab::IntxAreaUtils::area_on_sphere(), moab::Interface::create_meshset(), ErrorCode, moab::IntxAreaUtils::GaussQuadrature, moab::IntxAreaUtils::Girard, moab::IntxAreaUtils::lHuiller, moab::Interface::load_file(), mb, MB_SUCCESS, MESHSET_SET, moab::R, and STRINGIFY.
{
// check command line arg
const char* filename_mesh = STRINGIFY( MESHDIR ) "/mbcslam/eulerHomme.vtk";
// read input mesh in a set
Core moab;
Interface* mb = &moab; // global
EntityHandle sf;
ErrorCode rval = mb->create_meshset( MESHSET_SET, sf );
if( MB_SUCCESS != rval ) return 1;
rval = mb->load_file( filename_mesh, &sf );
if( MB_SUCCESS != rval ) return 1;
double R = 6.; // should be input
// compare total area with 4*M_PI * R^2
const double area_sphere = R * R * M_PI * 4.;
std::cout << "total area of the sphere : " << area_sphere << "\n";
{
moab::IntxAreaUtils areaAdaptor( moab::IntxAreaUtils::Girard ); // use_lHuiller = true
double area1 = areaAdaptor.area_on_sphere( mb, sf, R );
std::cout << "total area with Girard : " << area1
<< " rel error:" << fabs( ( area1 - area_sphere ) / area_sphere ) << "\n";
}
{
moab::IntxAreaUtils areaAdaptor( moab::IntxAreaUtils::lHuiller );
double area2 = areaAdaptor.area_on_sphere( mb, sf, R );
std::cout << "total area with l'Huiller : " << area2
<< " rel error:" << fabs( ( area2 - area_sphere ) / area_sphere ) << "\n";
}
#ifdef MOAB_HAVE_TEMPESTREMAP
{
moab::IntxAreaUtils areaAdaptor( moab::IntxAreaUtils::GaussQuadrature );
double area3 = areaAdaptor.area_on_sphere( mb, sf, R );
std::cout << "total area with GaussQuadrature : " << area3
<< " rel error:" << fabs( ( area3 - area_sphere ) / area_sphere ) << "\n";
}
#endif
return 0;
}