MOAB: Mesh Oriented datABase
(version 5.4.1)
|
Public Member Functions | |
void | setUp () |
void | tearDown () |
SphericalGeometryTest () | |
void | test_cg_mesh_cond_sphere () |
void | test_smart_lapl_sphere () |
void | test_lapl_geo_sphere () |
Private Member Functions | |
CPPUNIT_TEST_SUITE (SphericalGeometryTest) | |
CPPUNIT_TEST (test_cg_mesh_cond_sphere) | |
CPPUNIT_TEST (test_smart_lapl_sphere) | |
CPPUNIT_TEST (test_lapl_geo_sphere) | |
CPPUNIT_TEST_SUITE_END () | |
Private Attributes | |
double | qualTol |
int | pF |
Definition at line 85 of file SphericalGeometryTest.cpp.
SphericalGeometryTest::SphericalGeometryTest | ( | ) | [inline] |
Definition at line 113 of file SphericalGeometryTest.cpp.
{}
SphericalGeometryTest::CPPUNIT_TEST | ( | test_cg_mesh_cond_sphere | ) | [private] |
SphericalGeometryTest::CPPUNIT_TEST | ( | test_smart_lapl_sphere | ) | [private] |
SphericalGeometryTest::CPPUNIT_TEST | ( | test_lapl_geo_sphere | ) | [private] |
SphericalGeometryTest::CPPUNIT_TEST_SUITE_END | ( | ) | [private] |
void SphericalGeometryTest::setUp | ( | ) | [inline] |
Definition at line 102 of file SphericalGeometryTest.cpp.
References MBMesquite::MSQ_MIN.
void SphericalGeometryTest::tearDown | ( | ) | [inline] |
Definition at line 110 of file SphericalGeometryTest.cpp.
{}
void SphericalGeometryTest::test_cg_mesh_cond_sphere | ( | ) | [inline] |
Definition at line 115 of file SphericalGeometryTest.cpp.
References MBMesquite::TerminationCriterion::add_iteration_limit(), center(), CPPUNIT_ASSERT, MBMesquite::QualityAssessor::loop_over_mesh(), mesh, MBMesquite::MeshImpl::read_vtk(), MBMesquite::IQInterface::run_instructions(), MBMesquite::ConjugateGradient::set_debugging_level(), MBMesquite::QualityImprover::set_inner_termination_criterion(), MBMesquite::InstructionQueue::set_master_quality_improver(), and MBMesquite::PatchSetUser::use_global_patch().
{ MBMesquite::MeshImpl mesh; MBMesquite::MsqPrintError err( cout ); mesh.read_vtk( MESH_FILES_DIR "2D/vtk/quads/untangled/quads_on_sphere_529.vtk", err ); CPPUNIT_ASSERT( !err ); // create geometry: sphere, center (2,2,0), radius 3 Vector3D center( 2, 2, 0 ); SphericalDomain msq_geom( center, 3.0 ); // creates an intruction queue InstructionQueue queue1; // creates a mean ratio quality metric ... ConditionNumberQualityMetric shape; UntangleBetaQualityMetric untan; // ... and builds an objective function with it LPtoPTemplate obj_func( &shape, 2, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // creates the steepest descent optimization procedures ConjugateGradient pass1( &obj_func, err ); // SteepestDescent* pass2 = new SteepestDescent( obj_func ); pass1.use_global_patch(); // Make sure no errors CPPUNIT_ASSERT( !err ); QualityAssessor qa = QualityAssessor( &shape ); //**********Set stopping criterion 5 iterates **************** // StoppingCriterion sc5(StoppingCriterion::NUMBER_OF_PASSES,5); // pass1->set_stopping_criterion(&sc5); TerminationCriterion sc5; sc5.add_iteration_limit( 5 ); pass1.set_inner_termination_criterion( &sc5 ); // CG's debugging print, increase integer to get more print info pass1.set_debugging_level( 0 ); // queue1.add_preconditioner(pass2, err); CPPUNIT_ASSERT(!err); queue1.set_master_quality_improver( &pass1, err ); CPPUNIT_ASSERT( !err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // launches optimization on mesh_set1 MeshDomainAssoc mesh_and_domain = MeshDomainAssoc( &mesh, &msq_geom ); double orig_qa_val = qa.loop_over_mesh( &mesh_and_domain, 0, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); queue1.run_instructions( &mesh_and_domain, err ); CPPUNIT_ASSERT( !err ); // Make sure no errors CPPUNIT_ASSERT( !err ); double fin_qa_val = qa.loop_over_mesh( &mesh_and_domain, 0, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // make sure 'quality' improved CPPUNIT_ASSERT( fin_qa_val <= orig_qa_val ); }
void SphericalGeometryTest::test_lapl_geo_sphere | ( | ) | [inline] |
Definition at line 225 of file SphericalGeometryTest.cpp.
References MBMesquite::TerminationCriterion::add_iteration_limit(), center(), CPPUNIT_ASSERT, MBMesquite::QualityAssessor::loop_over_mesh(), mesh, MBMesquite::MeshImpl::read_vtk(), MBMesquite::IQInterface::run_instructions(), MBMesquite::InstructionQueue::set_master_quality_improver(), and MBMesquite::QualityImprover::set_outer_termination_criterion().
{ MBMesquite::MeshImpl mesh; MBMesquite::MsqPrintError err( cout ); mesh.read_vtk( MESH_FILES_DIR "2D/vtk/tris/untangled/Mesquite_geo_10242.vtk", err ); // create geometry sphere: ratius 1, centered at (0,0,0) Vector3D center( 0, 0, 0 ); MBMesquite::SphericalDomain msq_geom( center, 1.0 ); // creates an intruction queue InstructionQueue queue1; // creates an edge length metric ... EdgeLengthQualityMetric edg_len; // create the laplacian smoother LaplacianSmoother lapl; // Make sure no errors CPPUNIT_ASSERT( !err ); // create a quality assessor QualityAssessor qa = QualityAssessor( &edg_len ); //*******Set stopping criterion 10 iterates *********** // StoppingCriterion sc10(StoppingCriterion::NUMBER_OF_PASSES,10); // lapl->set_stopping_criterion(&sc10); TerminationCriterion sc10; sc10.add_iteration_limit( 10 ); lapl.set_outer_termination_criterion( &sc10 ); // qa, qi, qa queue1.set_master_quality_improver( &lapl, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // launches optimization on mesh_set1 MeshDomainAssoc mesh_and_domain = MeshDomainAssoc( &mesh, &msq_geom ); double orig_qa_val = qa.loop_over_mesh( &mesh_and_domain, 0, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); queue1.run_instructions( &mesh_and_domain, err ); CPPUNIT_ASSERT( !err ); // Make sure no errors CPPUNIT_ASSERT( !err ); double fin_qa_val = qa.loop_over_mesh( &mesh_and_domain, 0, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // make sure 'quality' improved CPPUNIT_ASSERT( fin_qa_val <= orig_qa_val ); }
void SphericalGeometryTest::test_smart_lapl_sphere | ( | ) | [inline] |
Definition at line 174 of file SphericalGeometryTest.cpp.
References MBMesquite::TerminationCriterion::add_iteration_limit(), center(), CPPUNIT_ASSERT, MBMesquite::QualityAssessor::loop_over_mesh(), mesh, MBMesquite::MeshImpl::read_vtk(), MBMesquite::IQInterface::run_instructions(), MBMesquite::InstructionQueue::set_master_quality_improver(), and MBMesquite::QualityImprover::set_outer_termination_criterion().
{ MBMesquite::MeshImpl mesh; MBMesquite::MsqPrintError err( cout ); mesh.read_vtk( MESH_FILES_DIR "2D/vtk/quads/untangled/quads_on_sphere_529.vtk", err ); // create geometry sphere: ratius 1, centered at (0,0,0) Vector3D center( 2, 2, 0 ); SphericalDomain msq_geom( center, 3.0 ); // creates an intruction queue InstructionQueue queue1; // creates an edge length metric ... IdealWeightInverseMeanRatio shape_metric( err ); LInfTemplate shape_func( &shape_metric ); // create the smart laplacian smoother SmartLaplacianSmoother s_lapl( &shape_func ); // Make sure no errors CPPUNIT_ASSERT( !err ); //*******Set stopping criterion 5 iterates *********** TerminationCriterion sc5; sc5.add_iteration_limit( 5 ); s_lapl.set_outer_termination_criterion( &sc5 ); // qa, qi, qa queue1.set_master_quality_improver( &s_lapl, err ); CPPUNIT_ASSERT( !err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // launches optimization on mesh_set1 QualityAssessor qa = QualityAssessor( &shape_metric ); MeshDomainAssoc mesh_and_domain = MeshDomainAssoc( &mesh, &msq_geom ); double orig_val = qa.loop_over_mesh( &mesh_and_domain, 0, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); queue1.run_instructions( &mesh_and_domain, err ); CPPUNIT_ASSERT( !err ); // Make sure no errors CPPUNIT_ASSERT( !err ); double final_val = qa.loop_over_mesh( &mesh_and_domain, 0, err ); // Make sure no errors CPPUNIT_ASSERT( !err ); // make sure 'quality' improved CPPUNIT_ASSERT( final_val < orig_val ); }
int SphericalGeometryTest::pF [private] |
Definition at line 100 of file SphericalGeometryTest.cpp.
double SphericalGeometryTest::qualTol [private] |
Definition at line 99 of file SphericalGeometryTest.cpp.