MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include <iostream>
#include <cstdlib>
#include "Mesquite.hpp"
#include "MeshImpl.hpp"
#include "MsqError.hpp"
#include "InstructionQueue.hpp"
#include "TerminationCriterion.hpp"
#include "QualityAssessor.hpp"
#include "LPtoPTemplate.hpp"
#include "LInfTemplate.hpp"
#include "IdealWeightMeanRatio.hpp"
#include "IdealWeightInverseMeanRatio.hpp"
#include "UntangleBetaQualityMetric.hpp"
#include "FeasibleNewton.hpp"
#include "ConjugateGradient.hpp"
#include "TrustRegion.hpp"
#include "ConditionNumberQualityMetric.hpp"
#include "TestUtil.hpp"
Go to the source code of this file.
Defines | |
#define | TOL 1e-5 |
#define | CPPUNIT_ASSERT(A) |
Functions | |
bool | smooth_mesh (Mesh *mesh, Mesh *ref_mesh, Mesh::VertexHandle free_vertex_at_origin, Vector3D initial_free_vertex_position, QualityMetric *metric) |
bool | smooth_mixed_mesh (const char *filename) |
int | main (int argc, char *argv[]) |
#define CPPUNIT_ASSERT | ( | A | ) |
do \ { \ if( !( A ) ) \ { \ std::cout << "Assertion Failed: " << #A << std::endl; \ std::cout << " File: " << __FILE__ << std::endl; \ std::cout << " Line: " << __LINE__ << std::endl; \ return 1; \ } \ } while( false )
Definition at line 58 of file pyramid_test.cpp.
Referenced by MsqHessianTest::accumulate_entries(), TopologyInfoTest::bad_type(), HigherOrderTest::basic_hex_test(), HigherOrderTest::basic_quad_test(), FileTokenizerTest::boolean_test(), VtkTest::check_4quad_block(), VtkTest::check_4quad_structured(), VtkTest::check_8hex_block(), VtkTest::check_8hex_structured(), AveragingQMTest::check_average_and_weights(), AveragingQMTest::check_average_and_weights_fails(), AveragingQMTest::check_average_gradient_fails(), DomainClassifierTest::check_domain(), VtkTest::check_field_attrib(), AveragingQMTest::check_hessian_diagonal_fails(), AveragingQMTest::check_hessian_fails(), ExodusTest::check_mesh(), check_no_zeros(), PMeanPTemplateTest::check_result(), PatchDataTest::check_sub_patch(), check_valid_indices(), TargetCalculatorTest::check_valid_Q(), QualityMetricTester::compare_analytical_and_numerical_diagonals(), TMPQualityMetricTest< QMType >::compare_analytical_and_numerical_diagonals(), QualityMetricTester::compare_analytical_and_numerical_gradients(), TMPQualityMetricTest< QMType >::compare_analytical_and_numerical_gradients(), QualityMetricTester::compare_analytical_and_numerical_hessians(), TMPQualityMetricTest< QMType >::compare_analytical_and_numerical_hessians(), BCDTest::compare_bcd(), compare_coefficients(), compare_derivatives(), ObjectiveFunctionTests::compare_diagonal_gradient(), QualityMetricTester::compare_eval_and_eval_with_indices(), QualityMetricTester::compare_eval_with_diag_and_eval_with_hessian(), QualityMetricTester::compare_eval_with_grad_and_eval_with_diagonal(), QualityMetricTester::compare_eval_with_grad_and_eval_with_hessian(), QualityMetricTester::compare_eval_with_indices_and_eval_with_diagonal(), QualityMetricTester::compare_eval_with_indices_and_eval_with_gradient(), QualityMetricTester::compare_eval_with_indices_and_eval_with_hessian(), QualityMetricTest::compare_gradient(), ObjectiveFunctionTests::compare_hessian_diagonal(), ObjectiveFunctionTests::compare_hessian_gradient(), QualityMetricTest::compare_indices(), ObjectiveFunctionTests::compare_numerical_gradient(), ObjectiveFunctionTests::compare_numerical_hessian(), TopologyInfoTest::compare_sides(), LinearMappingFunctionTest::do_coeff_test(), LinearMappingFunctionTest::do_deriv_test(), LinearMappingFunctionTest::do_ideal_test(), FileTokenizerTest::double_test(), ObjectiveFunctionTests::evaluate_internal(), MetricLogger::evaluate_with_gradient(), MetricLogger::evaluate_with_Hessian(), MetricLogger::evaluate_with_indices(), TopologyInfoTest::find_edge(), TopologyInfoTest::find_face(), TopologyInfoTest::find_side(), LVQDTargetTest::ConstantTarget::get_2D_target(), LVQDTargetTest::ConstantTarget::get_3D_target(), IdealTargetTest::get_calc_target(), get_edge_lengths(), CompositeOFTest::get_hessians(), PatchDataTest::get_higher_order_vertices(), QualityMetricTester::get_ideal_element(), QualityMetricTester::get_ideal_hexes(), QualityMetricTester::get_ideal_quads(), IdealTargetTest::get_ideal_target(), QualityMetricTester::get_ideal_tris(), QualityMetricTester::get_inverted_element(), LVQDTargetTest::ConstantTarget::get_surface_target(), QualityMetricTester::get_zero_element(), TopologyInfoTest::hex(), TopologyInfoTest::hex14(), TopologyInfoTest::hex15(), TopologyInfoTest::hex20(), TopologyInfoTest::hex21(), TopologyInfoTest::hex26(), TopologyInfoTest::hex27(), TopologyInfoTest::hex8(), TopologyInfoTest::hex9(), TopologyInfoTest::higher_order_from_side(), TCTFauxOptimizer::initialize(), FileTokenizerTest::line_number_test(), FileTokenizerTest::long_test(), DummyVertexSlaver::loop_over_mesh(), main(), FileTokenizerTest::make_file(), FakeTargetCalc::make_value(), FileTokenizerTest::match_multiple_test(), FileTokenizerTest::match_one_test(), iMeshTest::matchElementConnectivity(), iMeshTest::matchVertexCoordinates(), TriTauMetric::matrix(), FileTokenizerTest::newline_test(), TCTFauxOptimizer::optimize_vertex_positions(), ObjectiveFunctionTests::patch(), TopologyInfoTest::polygon(), TopologyInfoTest::polyhedron(), TopologyInfoTest::pyramid(), TopologyInfoTest::pyramid13(), TopologyInfoTest::pyramid5(), TopologyInfoTest::quad(), TopologyInfoTest::quad4(), TopologyInfoTest::quad5(), TopologyInfoTest::quad8(), TopologyInfoTest::quad9(), TargetReadWriteTest::read_write_2D_targets(), TargetReadWriteTest::read_write_3D_targets(), TargetReadWriteTest::read_write_surface_targets(), TargetReadWriteTest::read_write_weights(), TQualityMetricTest::regression_inverse_mean_ratio_grad(), TQualityMetricTest::regression_inverse_mean_ratio_hess(), CachingTargetTest::request_all_targets_2d(), CachingTargetTest::request_all_targets_3d(), CachingTargetTest::request_all_targets_surf(), PatchDataTestNormals::setUp(), PMeanPMetricTest::setUp(), TagVertexMeshTest::setUp(), TargetReadWriteTest::setUp(), DomainClassifierTest::setUp(), QualityMetricTest::setUp(), CachingTargetTest::setUp(), MsqHessianTest::setUp(), MeshInterfaceTest::setUp(), QualityAssessorTest::setUp(), InstructionQueueTest::setUp(), MsqMeshEntityTest::setUp(), iMeshTest::setUp(), PMeanPTemplateTest::setUp(), AddQualityMetricTest::setUp(), MultiplyQualityMetricTest::setUp(), TopologyInfoTest::side_from_higher_order(), MeshImplTest::skin_mesh_2D(), MeshImplTest::skin_mesh_3D(), MeshImplTest::skin_mesh_higher_order(), MeshImplTest::skin_mesh_mixed(), smooth_mesh(), smooth_mixed_mesh(), LVQDTargetTest::target(), TMPQualityMetricTest< AWQualityMetric >::test_2d_eval_ortho_quad(), CachingTargetTest::test_2d_target_subpatch(), CachingTargetTest::test_2d_target_values(), TMPQualityMetricTest< AWQualityMetric >::test_3d_eval_ortho_hex(), CachingTargetTest::test_3d_target_subpatch(), CachingTargetTest::test_3d_target_values(), TerminationCriterionTest::test_abs_vtx_movement_culling(), TerminationCriterionTest::test_absolute_vertex_movement_edge_length(), InstructionQueueTest::test_add_preconditioner(), InstructionQueueTest::test_add_quality_assessor(), InstructionQueueTest::test_add_remove_vertex_slaver(), TopologyInfoTest::test_adj(), MsqMeshEntityTest::test_all_nodes(), MsqHessianTest::test_axpy(), Matrix3DTest::test_B_times_invA(), test_bad_element(), PatchSetTest::test_bad_handle(), QualityAssessorTest::test_basic_stats_element(), QualityAssessorTest::test_basic_stats_sample(), QualityAssessorTest::test_basic_stats_vertex(), CachingTargetTest::test_cache_cleared(), MsqMeshEntityTest::test_centroid(), SphericalGeometryTest::test_cg_mesh_cond_sphere(), MsqHessianTest::test_cg_solver(), NumericalOFTest::test_changed(), MsqMeshEntityTest::test_check_element_orientation(), MsqHessianTest::test_cholesky_preconditioner(), GeomPrimTest::test_circle_closest_with_tangent(), GeomPrimTest::test_circle_from_three_points(), GeomPrimTest::test_circle_from_two_points(), DomainClassifierTest::test_classify_by_geometry(), DomainClassifierTest::test_classify_by_handle(), DomainClassifierTest::test_classify_by_tag(), DomainClassifierTest::test_classify_skin(), NodeSetTest::test_clear(), NodeSetTest::test_clear_all(), LinearMappingFunctionTest::test_coeff_fail(), CompositeOFTest::test_composite_clone(), ObjectiveFunctionTest::test_compute_ana_hessian_tet(), ObjectiveFunctionTest::test_compute_ana_hessian_tet_scaled(), Vector3DTest::test_copy_constructor(), QuadLagrangeShapeTest::test_corner_coeff(), TriLagrangeShapeTest::test_corner_coeff(), TetLagrangeShapeTest::test_corner_coeff(), HexLagrangeShapeTest::test_corner_coeff(), QuadLagrangeShapeTest::test_corner_derivs(), TriLagrangeShapeTest::test_corner_derivs(), TetLagrangeShapeTest::test_corner_derivs(), HexLagrangeShapeTest::test_corner_derivs(), TerminationCriterionTest::test_cpu_time_common(), BoundedCylinderDomainTest::test_create_curve_from_mesh(), Vector3DTest::test_default_constructor(), LinearMappingFunctionTest::test_deriv_fail(), PMeanPTemplateTest::test_diagonal(), QualityMetricTest::test_diagonal_constant(), QualityMetricTest::test_diagonal_linear(), QualityMetricTest::test_diagonal_parabolic(), QualityMetricTest::test_diagonal_tau(), QualityMetricTester::test_diagonal_with_fixed_vertex(), QualityMetricTester::test_domain_deviation_gradient(), QualityMetricTester::test_domain_deviation_quality(), BoundedCylinderDomainTest::test_domain_DoF(), CylinderDomainTest::test_domain_DoF(), ConicDomainTest::test_domain_DoF(), SphericalDomainTest::test_domain_DoF(), Vector3DTest::test_double_constructor(), QuadLagrangeShapeTest::test_edge_coeff(), TriLagrangeShapeTest::test_edge_coeff(), TetLagrangeShapeTest::test_edge_coeff(), HexLagrangeShapeTest::test_edge_coeff(), QuadLagrangeShapeTest::test_edge_derivs(), TriLagrangeShapeTest::test_edge_derivs(), TetLagrangeShapeTest::test_edge_derivs(), HexLagrangeShapeTest::test_edge_derivs(), PMeanPMetricTest::test_element_evaluate(), MeshInterfaceTest::test_element_get_attached_vertex_indices(), ArrayMeshTest::test_element_iterator(), VtkTest::test_elements(), ArrayMeshTest::test_elements_get_attached_vertices(), MeshInterfaceTest::test_elements_get_attached_vertices(), ArrayMeshTest::test_elements_get_attached_vertices_mixed(), ArrayMeshTest::test_elements_get_attached_vertices_mixed_one_based(), ArrayMeshTest::test_elements_get_topologies(), ArrayMeshTest::test_elements_get_topologies_mixed(), MeshInterfaceTest::test_elements_get_topology(), Matrix3DTest::test_equal(), PMeanPTemplateTest::test_evaluate(), CompositeMetricTestBase::test_evaluate(), CompositeOFTest::test_evaluate(), test_evaluate(), TMPQualityMetricTest< QMType >::test_evaluate_2D(), TMPQualityMetricTest< AWQualityMetric >::test_evaluate_2D_weight(), TMPQualityMetricTest< QMType >::test_evaluate_3D(), TMPQualityMetricTest< AWQualityMetric >::test_evaluate_3D_weight(), TMPQualityMetricTest< QMType >::test_evaluate_surface(), TMPQualityMetricTest< AWQualityMetric >::test_evaluate_surface_weight(), TetLagrangeShapeTest::test_face_coeff(), HexLagrangeShapeTest::test_face_coeff(), TetLagrangeShapeTest::test_face_derivs(), HexLagrangeShapeTest::test_face_derivs(), TopologyInfoTest::test_face_elem(), TargetCalculatorTest::test_factor_2D(), TargetCalculatorTest::test_factor_2D_zero(), TargetCalculatorTest::test_factor_3D(), TargetCalculatorTest::test_factor_3D_zero(), TargetCalculatorTest::test_factor_surface(), TargetCalculatorTest::test_factor_surface_zero(), PatchSetTest::test_fail_entities(), PatchSetTest::test_fail_handles(), SlaveBoundaryVerticesTest::test_fail_if_slaves_not_calculated(), Matrix3DTest::test_fill_lower_triangle(), PatchDataTest::test_fixed_by_geom_dim(), QualityMetricTest::test_fixed_vertex_list(), MsqVertexTest::test_flags(), QualityAssessorTest::test_free_only(), PatchDataTest::test_get_adj_elems_2d(), ArrayMeshTest::test_get_all_elements(), ArrayMeshTest::test_get_all_vertices(), ArrayMeshTest::test_get_all_vertices_one_based(), PatchDataTestNormals::test_get_corner_normals_bounded_domain(), PatchDataTestNormals::test_get_corner_normals_infinite_domain(), QualityMetricTester::test_get_edge_evaluations(), QualityMetricTester::test_get_edge_indices(), QualityMetricTester::test_get_element_evaluations(), QualityMetricTester::test_get_element_indices(), PatchDataTestNormals::test_get_element_normals_bounded_domain(), PatchDataTestNormals::test_get_element_normals_infinite_domain(), PatchDataTest::test_get_element_vertex_coordinates(), PatchDataTest::test_get_element_vertex_indices(), QualityMetricTester::test_get_in_element_evaluations(), QualityMetricTester::test_get_indices_fixed(), PMeanPMetricTest::test_get_metric_type(), PatchDataTest::test_get_minmax_element_area(), QualityMetricTester::test_get_sample_evaluations(), QualityMetricTester::test_get_sample_indices(), PatchDataTest::test_get_vertex_element_indices(), QualityMetricTester::test_get_vertex_evaluations(), QualityMetricTester::test_get_vertex_indices(), PatchSetTest::test_global_patch(), QualityMetricTester::test_grad_transform_invariant(), PMeanPTemplateTest::test_gradient(), PMeanPMetricTest::test_gradient(), TerminationCriterionTest::test_gradient_common(), QualityMetricTest::test_gradient_constant(), QualityMetricTest::test_gradient_linear(), QualityMetricTest::test_gradient_parabolic(), QualityMetricTester::test_gradient_reflects_quality(), QualityMetricTest::test_gradient_tau(), NumericalOFTest::test_gradient_values(), QualityMetricTester::test_gradient_with_fixed_vertex(), NumericalOFTest::test_handles_eval_failure(), NumericalOFTest::test_handles_eval_false(), ObjectiveFunctionTests::test_handles_invalid_qm(), ObjectiveFunctionTests::test_handles_qm_error(), MsqFreeVertexIndexIteratorTest::test_hard_fixed_flags(), NodeSetTest::test_have_any(), PMeanPTemplateTest::test_Hessian(), PMeanPMetricTest::test_hessian(), QualityMetricTest::test_Hessian_constant(), PMeanPMetricTest::test_hessian_diagonal(), NumericalOFTest::test_Hessian_fails(), StdDevTemplateTest::test_hessian_fails(), StdDevTemplateTest::test_hessian_fails_sqr(), QualityMetricTest::test_Hessian_linear(), QualityMetricTest::test_Hessian_parabolic(), QualityMetricTest::test_Hessian_tau(), QualityMetricTester::test_hessian_transform_invariant(), QualityMetricTester::test_hessian_with_fixed_vertex(), MsqVertexTest::test_hex_vertices(), MsqMeshEntityTest::test_hex_vertices(), QualityAssessorTest::test_histogram_known_range(), QualityAssessorTest::test_histogram_unknown_range(), MappingFunctionTest::test_ideal_2d(), MappingFunctionTest::test_ideal_3d(), QualityMetricTester::test_ideal_element_positive_definite_Hessian(), QualityMetricTester::test_ideal_element_zero_gradient(), QualityMetricTester::test_ideal_element_zero_vertex_gradient(), QuadLagrangeShapeTest::test_ideal_jacobian(), TriLagrangeShapeTest::test_ideal_jacobian(), TetLagrangeShapeTest::test_ideal_jacobian(), PMeanPMetricTest::test_indices(), NodeSetTest::test_init(), MsqHessianTest::test_initialize(), InstructionQueueTest::test_insert_preconditioner(), InstructionQueueTest::test_insert_quality_assessor(), QualityAssessorTest::test_invalid_count(), CompositeOFTest::test_invalid_eval(), TetLagrangeShapeTest::test_invalid_nodebits_coeff(), TetLagrangeShapeTest::test_invalid_nodebits_deriv(), MappingFunctionTest::test_jacobian_2d(), MappingFunctionTest::test_jacobian_3d(), SphericalGeometryTest::test_lapl_geo_sphere(), VertexCullingRegressionTest::test_laplacian_smoothing_with_cull(), GeomPrimTest::test_line_closest_to_line(), GeomPrimTest::test_line_intersect(), ObjectiveFunctionTest::test_LInf_value(), ObjectiveFunctionTest::test_LPtoP_value(), ObjectiveFunctionTest::test_max_negate_flag(), ObjectiveFunctionTest::test_max_value(), QualityMetricTester::test_measures_quality(), QualityMetricTester::test_measures_transform(), QualityMetricTester::test_measures_vertex_quality(), QuadLagrangeShapeTest::test_mid_coeff(), TriLagrangeShapeTest::test_mid_coeff(), TetLagrangeShapeTest::test_mid_coeff(), HexLagrangeShapeTest::test_mid_coeff(), QuadLagrangeShapeTest::test_mid_derivs(), TriLagrangeShapeTest::test_mid_derivs(), TetLagrangeShapeTest::test_mid_derivs(), HexLagrangeShapeTest::test_mid_derivs(), Matrix3DTest::test_minus(), QualityAssessorTest::test_modify_metric(), PatchDataTest::test_move_free_vertices_constrained(), PatchDataTest::test_movement_function(), Matrix3DTest::test_mult_element(), CompositeOFTest::test_multiply_hess_diagonal(), CompositeOFTest::test_multiply_hessian(), ObjectiveFunctionTests::test_negate_flag(), ExtraDataTest::test_notify_new_patch_fill(), ExtraDataTest::test_notify_new_patch_sub(), ExtraDataTest::test_notify_subpatch(), PatchDataTest::test_num_corners(), TerminationCriterionTest::test_number_of_iterates_inner(), TerminationCriterionTest::test_number_of_iterates_outer(), TMetricTest< Metric, DIM >::test_numerical_gradient_2D(), AWMetricTest::test_numerical_gradient_2D(), TMetricTest< Metric, DIM >::test_numerical_gradient_3D(), AWMetricTest::test_numerical_gradient_3D(), TMetricTest< Metric, DIM >::test_numerical_hessian_2D(), AWMetricTest::test_numerical_hessian_2D(), TMetricTest< Metric, DIM >::test_numerical_hessian_3D(), AWMetricTest::test_numerical_hessian_3D(), Matrix3DTest::test_outer_product(), QualityAssessorTest::test_output_control(), PatchDataTest::test_patch_contents(), GeomPrimTest::test_plane_intersect_line(), GeomPrimTest::test_plane_intersect_plane(), PlanarGeometryTest::test_plane_quad_tangled(), PlanarGeometryTest::test_plane_tri_tangled(), PlanarGeometryTest::test_plane_tri_xz(), Matrix3DTest::test_plus(), Matrix3DTest::test_plus_equal(), Matrix3DTest::test_plus_transpose(), Matrix3DTest::test_plus_transpose_equal(), TopologyInfoTest::test_poly(), QualityAssessorTest::test_power_mean(), QualityAssessorTest::test_print_stats(), PatchDataTest::test_quad8_patch(), HigherOrderTest::test_quad_basic_ideal(), HigherOrderTest::test_quad_basic_left_down(), HigherOrderTest::test_quad_basic_left_over(), HigherOrderTest::test_quad_basic_mid_convex(), HigherOrderTest::test_quad_basic_mid_spin(), HigherOrderTest::test_quad_basic_right_up(), HigherOrderTest::test_quad_basic_top_down(), TerminationCriterionTest::test_quality_common(), ExodusTest::test_read(), VtkTest::test_read_fixed_attrib(), VtkTest::test_read_quadratic(), VtkTest::test_read_simple_scalar_attrib(), VtkTest::test_read_unstructured(), VtkTest::test_read_vector_attrib(), InstructionQueueTest::test_remove_preconditioner(), InstructionQueueTest::test_remove_quality_assessor(), TopologyInfoTest::test_rev_adj(), NodeSetTest::test_set_get_clear_dim(), NodeSetTest::test_set_get_clear_simple(), IdealElementTest::test_side_height_pyr(), SlaveBoundaryVerticesTest::test_slaved_common(), SphericalGeometryTest::test_smart_lapl_sphere(), XYRectangleTest::test_snap_to(), MsqFreeVertexIndexIteratorTest::test_soft_fixed_flags(), GeomPrimTest::test_sphere_closest_to_point(), GeomPrimTest::test_sphere_intersect_plane(), GeomPrimTest::test_sphere_intersect_sphere(), PatchDataTest::test_sub_patch(), TMPQualityMetricTest< AWQualityMetric >::test_surf_eval_ortho_quad(), CachingTargetTest::test_surface_orient_flag(), CachingTargetTest::test_surface_target_subpatch(), CachingTargetTest::test_surface_target_values(), QualityMetricTester::test_symmetric_Hessian_diagonal_blocks(), ArrayMeshTest::test_tag_data(), QualityAssessorTest::test_tag_element(), HigherOrderTest::test_tet_basic_apex_down(), HigherOrderTest::test_tet_basic_apex_over(), HigherOrderTest::test_tet_basic_apex_up(), HigherOrderTest::test_tet_basic_ideal(), HigherOrderTest::test_tet_basic_mid_convex(), HigherOrderTest::test_tet_basic_mid_spin(), Matrix3DTest::test_times(), Matrix3DTest::test_times_equal_scalar(), Matrix3DTest::test_times_scalar(), Matrix3DTest::test_times_vector(), QualityMetricTester::test_transform_invariant(), Matrix3DTest::test_transpose(), HigherOrderTest::test_tri_basic_ideal(), HigherOrderTest::test_tri_basic_mid_convex(), HigherOrderTest::test_tri_basic_mid_spin(), HigherOrderTest::test_tri_basic_peak_down(), HigherOrderTest::test_tri_basic_peak_over(), HigherOrderTest::test_tri_basic_peak_up(), HigherOrderTest::test_tri_open_domain(), HigherOrderTest::test_tri_slac(), QualityMetricTester::test_type_is_not_supported(), QualityMetricTester::test_type_is_supported(), NumericalOFTest::test_unchanged(), IdealElementTest::test_unit_edge_hex(), IdealElementTest::test_unit_edge_pyr(), IdealElementTest::test_unit_edge_quad(), IdealElementTest::test_unit_edge_tet(), IdealElementTest::test_unit_edge_tri(), IdealElementTest::test_unit_edge_wdg(), IdealElementTest::test_unit_height_pyr(), IdealElementTest::test_unit_hex(), IdealElementTest::test_unit_pyr(), IdealElementTest::test_unit_quad(), IdealElementTest::test_unit_tet(), IdealElementTest::test_unit_tri(), IdealElementTest::test_unit_wdg(), MsqMeshEntityTest::test_unsigned_area(), TerminationCriterionTest::test_untangled_mesh(), DomainClassifierTest::test_valid_classification(), Matrix3DTest::test_vector_times(), TerminationCriterionTest::test_vertex_bound(), MeshInterfaceTest::test_vertex_byte(), PMeanPMetricTest::test_vertex_evaluate(), MeshInterfaceTest::test_vertex_get_attached_elements(), QualityMetricTester::test_vertex_gradient_reflects_quality(), MeshInterfaceTest::test_vertex_is_fixed(), ArrayMeshTest::test_vertex_iterator(), ArrayMeshTest::test_vertex_iterator_one_based(), TerminationCriterionTest::test_vertex_movement_common(), PatchSetTest::test_vertex_patches(), ArrayMeshTest::test_vertex_set_byte(), ArrayMeshTest::test_vertex_set_coordinates(), ArrayMeshTest::test_vertex_set_coordinates_one_based(), ArrayMeshTest::test_vertex_set_coordinates_two_d(), MeshInterfaceTest::test_vertices(), ArrayMeshTest::test_vertices_get_attached_elements(), ArrayMeshTest::test_vertices_get_attached_elements_mixed(), ArrayMeshTest::test_vertices_get_attached_elements_mixed_one_based(), ArrayMeshTest::test_vertices_get_attached_elements_one_based(), ArrayMeshTest::test_vertices_get_coordinates(), ArrayMeshTest::test_vertices_get_coordinates_one_based(), ArrayMeshTest::test_vertices_get_coordinates_two_d(), ArrayMeshTest::test_vertices_get_fixed_flag(), ArrayMeshTest::test_vertices_set_byte(), TopologyInfoTest::test_vol_elem(), ExodusTest::test_write(), VtkTest::test_write(), VtkTest::test_write_quadratic(), CylinderDomainTest::test_x_closest_point(), CylinderDomainTest::test_z_closest_point(), iMeshTest::testDoubleTag(), iMeshTest::testElementConnectivity(), iMeshTest::testElementTopology(), iMeshTest::testIntTag(), iMeshTest::testVertexAdjacency(), iMeshTest::testVertexByte(), iMeshTest::testVertexFlag(), iMeshTest::testVertexFlagNone(), TopologyInfoTest::tet(), TopologyInfoTest::tet10(), TopologyInfoTest::tet11(), TopologyInfoTest::tet14(), TopologyInfoTest::tet15(), TopologyInfoTest::tet4(), TopologyInfoTest::tet5(), TopologyInfoTest::tet8(), TopologyInfoTest::tet9(), FileTokenizerTest::token_test(), TopologyInfoTest::tri(), TopologyInfoTest::tri3(), TopologyInfoTest::tri4(), TopologyInfoTest::tri6(), TopologyInfoTest::tri7(), FileTokenizerTest::unget_test(), FakeMesh::vertices_get_slaved_flag(), TopologyInfoTest::wedge(), TopologyInfoTest::wedge15(), TopologyInfoTest::wedge6(), PatchTranslate::xform(), PatchScale::xform(), PatchRotate::xform(), LinearMappingFunctionTest::xi_at_edges(), and LinearMappingFunctionTest::xi_at_faces().
#define TOL 1e-5 |
Definition at line 29 of file pyramid_test.cpp.
Referenced by assert_doubles_equal(), assert_vector_element(), assert_vectors_equal(), smooth_mesh(), test_build_from_tri(), test_contained(), and test_ray_intersect().
int main | ( | int | argc, |
char * | argv[] | ||
) |
Definition at line 82 of file pyramid_test.cpp.
References MBMesquite::arrptr(), CPPUNIT_ASSERT, MBMesquite::MeshImpl::elements_get_attached_vertices(), MBMesquite::MeshImpl::elements_get_topologies(), MBMesquite::MeshImpl::get_all_elements(), input_file, MBMesquite::length(), mesh, metrics, MBMesquite::PYRAMID, MBMesquite::MeshImpl::read_vtk(), MBMesquite::Vector3D::set(), smooth_mesh(), smooth_mixed_mesh(), and MBMesquite::MeshImpl::vertices_get_coordinates().
{ unsigned i; std::string input_file = TestDir + "unittest/mesquite/3D/vtk/mixed/tangled/mixed-hex-pyr-tet.vtk"; if( argc == 2 ) input_file = argv[1]; else if( argc != 1 ) { std::cerr << "Invalid arguments.\n"; return 2; } MBMesquite::MsqPrintError err( cout ); IdealWeightMeanRatio m1; IdealWeightInverseMeanRatio m2( err ); ConditionNumberQualityMetric m3; QualityMetric* metrics[] = { &m1, &m2, &m3, 0 }; // Read Mesh std::string mesh_file = TestDir + "unittest/mesquite/3D/vtk/pyramids/untangled/12-pyramid-unit-sphere.vtk"; std::string imesh_file = TestDir + "unittest/mesquite/3D/vtk/pyramids/untangled/12-pyramid-unit-sphere.vtk"; MBMesquite::MeshImpl mesh; mesh.read_vtk( mesh_file.c_str(), err ); CPPUNIT_ASSERT( !err ); MBMesquite::MeshImpl ideal_mesh; ideal_mesh.read_vtk( imesh_file.c_str(), err ); CPPUNIT_ASSERT( !err ); // Check that the mesh read correctly, and contains what is // expected later. // Get mesh data // Expecting file to contain 12 pyramid elements constructed // from 15 vertices. std::vector< Mesh::VertexHandle > vert_array; std::vector< Mesh::ElementHandle > elem_array; std::vector< size_t > conn_offsets; mesh.get_all_elements( elem_array, err ); CPPUNIT_ASSERT( !err ); CPPUNIT_ASSERT( elem_array.size() == 12 ); mesh.elements_get_attached_vertices( arrptr( elem_array ), elem_array.size(), vert_array, conn_offsets, err ); CPPUNIT_ASSERT( !err ); CPPUNIT_ASSERT( vert_array.size() == 60 ); CPPUNIT_ASSERT( conn_offsets.size() == 13 ); EntityTopology type_array[12]; mesh.elements_get_topologies( arrptr( elem_array ), type_array, 12, err ); CPPUNIT_ASSERT( !err ); // Verify element types and number of vertices for( i = 0; i < 12; ++i ) { CPPUNIT_ASSERT( type_array[i] == PYRAMID ); CPPUNIT_ASSERT( conn_offsets[i] == 5 * i ); } // All pyramids should share a common apex, at the // center of the sphere Mesh::VertexHandle apex_handle = vert_array[4]; for( i = 1; i < 12; ++i ) { CPPUNIT_ASSERT( vert_array[5 * i + 4] == apex_handle ); } // Verify that apex is at origin and all other vertices are // on unit sphere MsqVertex vertices[60]; mesh.vertices_get_coordinates( arrptr( vert_array ), vertices, 60, err ); CPPUNIT_ASSERT( !err ); for( i = 0; i < 60; ++i ) { if( vert_array[i] == apex_handle ) CPPUNIT_ASSERT( vertices[i].within_tolerance_box( Vector3D( 0, 0, 0 ), 1e-6 ) ); else CPPUNIT_ASSERT( fabs( 1.0 - vertices[i].length() ) < 1e-6 ); } // Try smoothing w/out moving the free vertex and verify that // the smoother didn't move the vertex Vector3D position( 0, 0, 0 ); for( i = 0; metrics[i] != NULL; ++i ) CPPUNIT_ASSERT( !smooth_mesh( &mesh, &ideal_mesh, apex_handle, position, metrics[i] ) ); // Now try moving the vertex and see if the smoother moves it back // to the origin position.set( 0.1, 0.1, 0.1 ); for( i = 0; metrics[i] != NULL; ++i ) CPPUNIT_ASSERT( !smooth_mesh( &mesh, &ideal_mesh, apex_handle, position, metrics[i] ) ); // Now try moving the vertex further and see if the smoother moves it back // to the origin position.set( 0.3, 0.3, 0.3 ); for( i = 0; metrics[i] != NULL; ++i ) CPPUNIT_ASSERT( !smooth_mesh( &mesh, &ideal_mesh, apex_handle, position, metrics[i] ) ); // Now try smoothing a real mixed mesh CPPUNIT_ASSERT( !smooth_mixed_mesh( input_file.c_str() ) ); return 0; }
bool smooth_mesh | ( | Mesh * | mesh, |
Mesh * | ref_mesh, | ||
Mesh::VertexHandle | free_vertex_at_origin, | ||
Vector3D | initial_free_vertex_position, | ||
QualityMetric * | metric | ||
) |
Definition at line 182 of file pyramid_test.cpp.
References MBMesquite::TerminationCriterion::add_absolute_vertex_movement(), MBMesquite::TerminationCriterion::add_iteration_limit(), CPPUNIT_ASSERT, MBMesquite::QualityMetric::get_name(), origin, MBMesquite::IQInterface::run_instructions(), MBMesquite::QualityImprover::set_inner_termination_criterion(), MBMesquite::InstructionQueue::set_master_quality_improver(), MBMesquite::QualityImprover::set_outer_termination_criterion(), TOL, MBMesquite::PatchSetUser::use_global_patch(), MBMesquite::Mesh::vertex_set_coordinates(), MBMesquite::Mesh::vertices_get_coordinates(), vtx(), and MBMesquite::Vector3D::within_tolerance_box().
Referenced by main().
{ MBMesquite::MsqPrintError err( cout ); const Vector3D origin( 0, 0, 0 ); // print a little output so we know when we died std::cout << "**************************************************************************" << std::endl << "* Smoothing..." << std::endl << "* Metric: " << metric->get_name() << std::endl << "* Apex position: " << initial_free_vertex_position << std::endl //<< //"**************************************************************************" << std::endl; // Set free vertex to specified position mesh->vertex_set_coordinates( free_vertex_at_origin, initial_free_vertex_position, err ); CPPUNIT_ASSERT( !err ); // Create an InstructionQueue InstructionQueue Q; // Set up objective function LPtoPTemplate obj_func( metric, 1, err ); CPPUNIT_ASSERT( !err ); // Create solver FeasibleNewton solver( &obj_func ); CPPUNIT_ASSERT( !err ); solver.use_global_patch(); CPPUNIT_ASSERT( !err ); // Set stoping criteria for solver TerminationCriterion tc_inner; tc_inner.add_absolute_vertex_movement( 1e-6 ); solver.set_inner_termination_criterion( &tc_inner ); TerminationCriterion tc_outer; tc_outer.add_iteration_limit( 1 ); solver.set_outer_termination_criterion( &tc_outer ); // Add solver to queue Q.set_master_quality_improver( &solver, err ); CPPUNIT_ASSERT( !err ); // And smooth... Q.run_instructions( mesh, err ); CPPUNIT_ASSERT( !err ); // Verify that vertex was moved back to origin MsqVertex vtx; mesh->vertices_get_coordinates( &free_vertex_at_origin, &vtx, 1, err ); CPPUNIT_ASSERT( !err ); Vector3D position = vtx; // print a little output so we know when we died std::cout //<< //"**************************************************************************" << std::endl << "* Done Smoothing:" << std::endl << "* Metric: " << metric->get_name() << std::endl << "* Apex position: " << position << std::endl << "**************************************************************************" << std::endl; CPPUNIT_ASSERT( position.within_tolerance_box( Vector3D( 0, 0, 0 ), TOL ) ); return false; }
bool smooth_mixed_mesh | ( | const char * | filename | ) |
Definition at line 253 of file pyramid_test.cpp.
References MBMesquite::TerminationCriterion::add_iteration_limit(), MBMesquite::InstructionQueue::add_preconditioner(), MBMesquite::QualityAssessor::add_quality_assessment(), MBMesquite::InstructionQueue::add_quality_assessor(), MBMesquite::TerminationCriterion::add_relative_quality_improvement(), CPPUNIT_ASSERT, mesh, MBMesquite::MeshImpl::read_vtk(), MBMesquite::IQInterface::run_instructions(), MBMesquite::QualityImprover::set_inner_termination_criterion(), MBMesquite::InstructionQueue::set_master_quality_improver(), MBMesquite::QualityImprover::set_outer_termination_criterion(), MBMesquite::PatchSetUser::use_element_on_vertex_patch(), and MBMesquite::PatchSetUser::use_global_patch().
Referenced by main().
{ MBMesquite::MsqPrintError err( cout ); // print a little output so we know when we died std::cout << "**************************************************************************" << std::endl << "* Smoothing: " << filename << std::endl << "**************************************************************************" << std::endl; // The instruction queue to set up InstructionQueue Q; // Use numeric approx of derivitives until analytic solutions // are working for pyramids IdealWeightInverseMeanRatio mr_metric( err ); // sRI_DFT dft_metric; UntangleBetaQualityMetric un_metric( 0 ); CPPUNIT_ASSERT( !err ); // Create Mesh object MBMesquite::MeshImpl mesh; mesh.read_vtk( filename, err ); CPPUNIT_ASSERT( !err ); // Set up a preconditioner LInfTemplate pre_obj_func( &un_metric ); ConjugateGradient precond( &pre_obj_func, err ); CPPUNIT_ASSERT( !err ); precond.use_element_on_vertex_patch(); TerminationCriterion pre_term, pre_outer; // pre_term.add_relative_quality_improvement( 0.1 ); pre_term.add_iteration_limit( 3 ); pre_outer.add_iteration_limit( 1 ); CPPUNIT_ASSERT( !err ); precond.set_inner_termination_criterion( &pre_term ); precond.set_outer_termination_criterion( &pre_outer ); // precond.use_element_on_vertex_patch(); // Set up objective function LPtoPTemplate obj_func( &mr_metric, 1, err ); CPPUNIT_ASSERT( !err ); // Create solver FeasibleNewton solver( &obj_func ); CPPUNIT_ASSERT( !err ); solver.use_global_patch(); CPPUNIT_ASSERT( !err ); // Set stoping criteria for solver TerminationCriterion tc_inner; tc_inner.add_relative_quality_improvement( 0.25 ); solver.set_inner_termination_criterion( &tc_inner ); TerminationCriterion tc_outer; tc_outer.add_iteration_limit( 1 ); CPPUNIT_ASSERT( !err ); solver.set_outer_termination_criterion( &tc_outer ); // Create a QualityAssessor MBMesquite::QualityAssessor qa; qa.add_quality_assessment( &mr_metric ); qa.add_quality_assessment( &un_metric ); Q.add_quality_assessor( &qa, err ); CPPUNIT_ASSERT( !err ); // Add untangler to queue Q.add_preconditioner( &precond, err ); CPPUNIT_ASSERT( !err ); Q.add_quality_assessor( &qa, err ); CPPUNIT_ASSERT( !err ); // Add solver to queue Q.set_master_quality_improver( &solver, err ); CPPUNIT_ASSERT( !err ); Q.add_quality_assessor( &qa, err ); CPPUNIT_ASSERT( !err ); // And smooth... Q.run_instructions( &mesh, err ); CPPUNIT_ASSERT( !err ); return false; }