From 2f30c5057dadb2af0f8120b8f1bd2f6266028bb4 Mon Sep 17 00:00:00 2001 From: "Benjamin S. Kirk" Date: Thu, 6 Mar 2014 10:54:29 -0600 Subject: [PATCH] Misc fixes to Roman an Norbert's code: * Use fe_macro.h to avoid duplicate symbols when instantiating templates, caught on OSX * fix for VPATH builds * Fixing problem with mismatched START_LOG/STOP_LOG when there is an early return from DofMap::dof_indices() by only starting the log after the possible early return. * Fixing tabs and whitespace in files added by Roman and Norbert. * renaming files (& methods) per discussion * renaming FESubdiv->FESubdivision * renaming enum SUBDIV->SUBDIVISION * Tri3SD->Tri3Subdivision * TRI3SD->TRI3SUBDIVISION * run new example under make check * Renaming MeshTools::Subdiv -> MeshTools::Subdivision --- Makefile.in | 396 ++++---- examples/Makefile.am | 1 + examples/Makefile.in | 1 + .../miscellaneous_ex11/Makefile.am | 12 +- .../miscellaneous_ex11/Makefile.in | 49 +- .../miscellaneous_ex11/miscellaneous_ex11.C | 74 +- .../miscellaneous/miscellaneous_ex11/run.sh | 0 include/Makefile.in | 4 +- include/base/dof_map.h | 4 +- include/enums/enum_elem_type.h | 62 +- include/enums/enum_fe_family.h | 2 +- include/fe/fe.h | 70 +- include/fe/fe_macro.h | 13 + ...face_tri3_sd.h => face_tri3_subdivision.h} | 30 +- include/include_HEADERS | 4 +- include/libmesh/Makefile.am | 6 +- include/libmesh/Makefile.in | 136 +-- include/mesh/mesh_subdiv_support.h | 114 --- include/mesh/mesh_subdivision_support.h | 114 +++ src/base/dof_map.C | 110 +-- src/fe/fe.C | 4 +- src/fe/fe_abstract.C | 4 +- src/fe/fe_base.C | 4 +- src/fe/fe_boundary.C | 2 +- src/fe/fe_interface.C | 34 +- src/fe/fe_lagrange.C | 4 +- src/fe/fe_map.C | 33 +- src/fe/fe_subdiv_2D.C | 928 ------------------ src/fe/fe_subdivision_2D.C | 928 ++++++++++++++++++ src/fe/fe_transformation_base.C | 2 +- src/fe/fe_type.C | 2 +- src/geom/elem.C | 10 +- src/geom/face_tri3_sd.C | 123 --- src/geom/face_tri3_subdivision.C | 123 +++ src/libmesh_SOURCES | 6 +- src/mesh/exodusII_io_helper.C | 24 +- src/mesh/mesh_subdiv_support.C | 354 ------- src/mesh/mesh_subdivision_support.C | 354 +++++++ src/mesh/vtk_io.C | 2 +- src/quadrature/quadrature_gauss_2D.C | 2 +- src/utils/string_to_enum.C | 106 +- 41 files changed, 2146 insertions(+), 2105 deletions(-) mode change 100644 => 100755 examples/miscellaneous/miscellaneous_ex11/run.sh rename include/geom/{face_tri3_sd.h => face_tri3_subdivision.h} (85%) delete mode 100644 include/mesh/mesh_subdiv_support.h create mode 100644 include/mesh/mesh_subdivision_support.h delete mode 100644 src/fe/fe_subdiv_2D.C create mode 100644 src/fe/fe_subdivision_2D.C delete mode 100644 src/geom/face_tri3_sd.C create mode 100644 src/geom/face_tri3_subdivision.C delete mode 100644 src/mesh/mesh_subdiv_support.C create mode 100644 src/mesh/mesh_subdivision_support.C diff --git a/Makefile.in b/Makefile.in index 5b2c47ac0a8..6f37f739e6b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -237,7 +237,7 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dof_map.C \ src/fe/fe_nedelec_one_shape_3D.C src/fe/fe_scalar.C \ src/fe/fe_scalar_shape_0D.C src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C src/fe/fe_szabab.C \ + src/fe/fe_subdivision_2D.C src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C src/fe/fe_szabab_shape_1D.C \ src/fe/fe_szabab_shape_2D.C src/fe/fe_szabab_shape_3D.C \ src/fe/fe_transformation_base.C src/fe/fe_type.C \ @@ -271,18 +271,18 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad.C src/geom/face_quad4.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C src/geom/face_tri6.C src/geom/node.C \ - src/geom/node_elem.C src/geom/plane.C src/geom/point.C \ - src/geom/reference_elem.C src/geom/reference_elem.data \ - src/geom/remote_elem.C src/geom/sphere.C src/geom/surface.C \ - src/mesh/abaqus_io.C src/mesh/boundary_info.C \ - src/mesh/boundary_mesh.C src/mesh/checkpoint_io.C \ - src/mesh/diva_io.C src/mesh/ensight_io.C \ - src/mesh/exodusII_io.C src/mesh/exodusII_io_helper.C \ - src/mesh/fro_io.C src/mesh/gmsh_io.C src/mesh/gmv_io.C \ - src/mesh/gnuplot_io.C src/mesh/inf_elem_builder.C \ - src/mesh/legacy_xdr_io.C src/mesh/matlab_io.C \ - src/mesh/medit_io.C src/mesh/mesh_base.C \ + src/geom/face_tri3_subdivision.C src/geom/face_tri6.C \ + src/geom/node.C src/geom/node_elem.C src/geom/plane.C \ + src/geom/point.C src/geom/reference_elem.C \ + src/geom/reference_elem.data src/geom/remote_elem.C \ + src/geom/sphere.C src/geom/surface.C src/mesh/abaqus_io.C \ + src/mesh/boundary_info.C src/mesh/boundary_mesh.C \ + src/mesh/checkpoint_io.C src/mesh/diva_io.C \ + src/mesh/ensight_io.C src/mesh/exodusII_io.C \ + src/mesh/exodusII_io_helper.C src/mesh/fro_io.C \ + src/mesh/gmsh_io.C src/mesh/gmv_io.C src/mesh/gnuplot_io.C \ + src/mesh/inf_elem_builder.C src/mesh/legacy_xdr_io.C \ + src/mesh/matlab_io.C src/mesh/medit_io.C src/mesh/mesh_base.C \ src/mesh/mesh_communication.C \ src/mesh/mesh_communication_global_indices.C \ src/mesh/mesh_data.C src/mesh/mesh_data_tetgen_support.C \ @@ -295,7 +295,7 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dof_map.C \ src/mesh/mesh_serializer.C src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C src/mesh/mesh_tools.C \ src/mesh/mesh_triangle_holes.C \ @@ -540,7 +540,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dof_map.lo \ src/fe/libmesh_dbg_la-fe_scalar_shape_1D.lo \ src/fe/libmesh_dbg_la-fe_scalar_shape_2D.lo \ src/fe/libmesh_dbg_la-fe_scalar_shape_3D.lo \ - src/fe/libmesh_dbg_la-fe_subdiv_2D.lo \ + src/fe/libmesh_dbg_la-fe_subdivision_2D.lo \ src/fe/libmesh_dbg_la-fe_szabab.lo \ src/fe/libmesh_dbg_la-fe_szabab_shape_0D.lo \ src/fe/libmesh_dbg_la-fe_szabab_shape_1D.lo \ @@ -610,7 +610,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dof_map.lo \ src/geom/libmesh_dbg_la-face_quad9.lo \ src/geom/libmesh_dbg_la-face_tri.lo \ src/geom/libmesh_dbg_la-face_tri3.lo \ - src/geom/libmesh_dbg_la-face_tri3_sd.lo \ + src/geom/libmesh_dbg_la-face_tri3_subdivision.lo \ src/geom/libmesh_dbg_la-face_tri6.lo \ src/geom/libmesh_dbg_la-node.lo \ src/geom/libmesh_dbg_la-node_elem.lo \ @@ -654,7 +654,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dof_map.lo \ src/mesh/libmesh_dbg_la-mesh_smoother.lo \ src/mesh/libmesh_dbg_la-mesh_smoother_laplace.lo \ src/mesh/libmesh_dbg_la-mesh_smoother_vsmoother.lo \ - src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo \ + src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo \ src/mesh/libmesh_dbg_la-mesh_tetgen_interface.lo \ src/mesh/libmesh_dbg_la-mesh_tetgen_wrapper.lo \ src/mesh/libmesh_dbg_la-mesh_tools.lo \ @@ -931,7 +931,7 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dof_map.C \ src/fe/fe_nedelec_one_shape_3D.C src/fe/fe_scalar.C \ src/fe/fe_scalar_shape_0D.C src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C src/fe/fe_szabab.C \ + src/fe/fe_subdivision_2D.C src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C src/fe/fe_szabab_shape_1D.C \ src/fe/fe_szabab_shape_2D.C src/fe/fe_szabab_shape_3D.C \ src/fe/fe_transformation_base.C src/fe/fe_type.C \ @@ -965,18 +965,18 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad.C src/geom/face_quad4.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C src/geom/face_tri6.C src/geom/node.C \ - src/geom/node_elem.C src/geom/plane.C src/geom/point.C \ - src/geom/reference_elem.C src/geom/reference_elem.data \ - src/geom/remote_elem.C src/geom/sphere.C src/geom/surface.C \ - src/mesh/abaqus_io.C src/mesh/boundary_info.C \ - src/mesh/boundary_mesh.C src/mesh/checkpoint_io.C \ - src/mesh/diva_io.C src/mesh/ensight_io.C \ - src/mesh/exodusII_io.C src/mesh/exodusII_io_helper.C \ - src/mesh/fro_io.C src/mesh/gmsh_io.C src/mesh/gmv_io.C \ - src/mesh/gnuplot_io.C src/mesh/inf_elem_builder.C \ - src/mesh/legacy_xdr_io.C src/mesh/matlab_io.C \ - src/mesh/medit_io.C src/mesh/mesh_base.C \ + src/geom/face_tri3_subdivision.C src/geom/face_tri6.C \ + src/geom/node.C src/geom/node_elem.C src/geom/plane.C \ + src/geom/point.C src/geom/reference_elem.C \ + src/geom/reference_elem.data src/geom/remote_elem.C \ + src/geom/sphere.C src/geom/surface.C src/mesh/abaqus_io.C \ + src/mesh/boundary_info.C src/mesh/boundary_mesh.C \ + src/mesh/checkpoint_io.C src/mesh/diva_io.C \ + src/mesh/ensight_io.C src/mesh/exodusII_io.C \ + src/mesh/exodusII_io_helper.C src/mesh/fro_io.C \ + src/mesh/gmsh_io.C src/mesh/gmv_io.C src/mesh/gnuplot_io.C \ + src/mesh/inf_elem_builder.C src/mesh/legacy_xdr_io.C \ + src/mesh/matlab_io.C src/mesh/medit_io.C src/mesh/mesh_base.C \ src/mesh/mesh_communication.C \ src/mesh/mesh_communication_global_indices.C \ src/mesh/mesh_data.C src/mesh/mesh_data_tetgen_support.C \ @@ -989,7 +989,7 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dof_map.C \ src/mesh/mesh_serializer.C src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C src/mesh/mesh_tools.C \ src/mesh/mesh_triangle_holes.C \ @@ -1233,7 +1233,7 @@ am__objects_2 = src/base/libmesh_devel_la-dof_map.lo \ src/fe/libmesh_devel_la-fe_scalar_shape_1D.lo \ src/fe/libmesh_devel_la-fe_scalar_shape_2D.lo \ src/fe/libmesh_devel_la-fe_scalar_shape_3D.lo \ - src/fe/libmesh_devel_la-fe_subdiv_2D.lo \ + src/fe/libmesh_devel_la-fe_subdivision_2D.lo \ src/fe/libmesh_devel_la-fe_szabab.lo \ src/fe/libmesh_devel_la-fe_szabab_shape_0D.lo \ src/fe/libmesh_devel_la-fe_szabab_shape_1D.lo \ @@ -1303,7 +1303,7 @@ am__objects_2 = src/base/libmesh_devel_la-dof_map.lo \ src/geom/libmesh_devel_la-face_quad9.lo \ src/geom/libmesh_devel_la-face_tri.lo \ src/geom/libmesh_devel_la-face_tri3.lo \ - src/geom/libmesh_devel_la-face_tri3_sd.lo \ + src/geom/libmesh_devel_la-face_tri3_subdivision.lo \ src/geom/libmesh_devel_la-face_tri6.lo \ src/geom/libmesh_devel_la-node.lo \ src/geom/libmesh_devel_la-node_elem.lo \ @@ -1347,7 +1347,7 @@ am__objects_2 = src/base/libmesh_devel_la-dof_map.lo \ src/mesh/libmesh_devel_la-mesh_smoother.lo \ src/mesh/libmesh_devel_la-mesh_smoother_laplace.lo \ src/mesh/libmesh_devel_la-mesh_smoother_vsmoother.lo \ - src/mesh/libmesh_devel_la-mesh_subdiv_support.lo \ + src/mesh/libmesh_devel_la-mesh_subdivision_support.lo \ src/mesh/libmesh_devel_la-mesh_tetgen_interface.lo \ src/mesh/libmesh_devel_la-mesh_tetgen_wrapper.lo \ src/mesh/libmesh_devel_la-mesh_tools.lo \ @@ -1621,7 +1621,7 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dof_map.C \ src/fe/fe_nedelec_one_shape_3D.C src/fe/fe_scalar.C \ src/fe/fe_scalar_shape_0D.C src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C src/fe/fe_szabab.C \ + src/fe/fe_subdivision_2D.C src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C src/fe/fe_szabab_shape_1D.C \ src/fe/fe_szabab_shape_2D.C src/fe/fe_szabab_shape_3D.C \ src/fe/fe_transformation_base.C src/fe/fe_type.C \ @@ -1655,18 +1655,18 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad.C src/geom/face_quad4.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C src/geom/face_tri6.C src/geom/node.C \ - src/geom/node_elem.C src/geom/plane.C src/geom/point.C \ - src/geom/reference_elem.C src/geom/reference_elem.data \ - src/geom/remote_elem.C src/geom/sphere.C src/geom/surface.C \ - src/mesh/abaqus_io.C src/mesh/boundary_info.C \ - src/mesh/boundary_mesh.C src/mesh/checkpoint_io.C \ - src/mesh/diva_io.C src/mesh/ensight_io.C \ - src/mesh/exodusII_io.C src/mesh/exodusII_io_helper.C \ - src/mesh/fro_io.C src/mesh/gmsh_io.C src/mesh/gmv_io.C \ - src/mesh/gnuplot_io.C src/mesh/inf_elem_builder.C \ - src/mesh/legacy_xdr_io.C src/mesh/matlab_io.C \ - src/mesh/medit_io.C src/mesh/mesh_base.C \ + src/geom/face_tri3_subdivision.C src/geom/face_tri6.C \ + src/geom/node.C src/geom/node_elem.C src/geom/plane.C \ + src/geom/point.C src/geom/reference_elem.C \ + src/geom/reference_elem.data src/geom/remote_elem.C \ + src/geom/sphere.C src/geom/surface.C src/mesh/abaqus_io.C \ + src/mesh/boundary_info.C src/mesh/boundary_mesh.C \ + src/mesh/checkpoint_io.C src/mesh/diva_io.C \ + src/mesh/ensight_io.C src/mesh/exodusII_io.C \ + src/mesh/exodusII_io_helper.C src/mesh/fro_io.C \ + src/mesh/gmsh_io.C src/mesh/gmv_io.C src/mesh/gnuplot_io.C \ + src/mesh/inf_elem_builder.C src/mesh/legacy_xdr_io.C \ + src/mesh/matlab_io.C src/mesh/medit_io.C src/mesh/mesh_base.C \ src/mesh/mesh_communication.C \ src/mesh/mesh_communication_global_indices.C \ src/mesh/mesh_data.C src/mesh/mesh_data_tetgen_support.C \ @@ -1679,7 +1679,7 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dof_map.C \ src/mesh/mesh_serializer.C src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C src/mesh/mesh_tools.C \ src/mesh/mesh_triangle_holes.C \ @@ -1923,7 +1923,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dof_map.lo \ src/fe/libmesh_oprof_la-fe_scalar_shape_1D.lo \ src/fe/libmesh_oprof_la-fe_scalar_shape_2D.lo \ src/fe/libmesh_oprof_la-fe_scalar_shape_3D.lo \ - src/fe/libmesh_oprof_la-fe_subdiv_2D.lo \ + src/fe/libmesh_oprof_la-fe_subdivision_2D.lo \ src/fe/libmesh_oprof_la-fe_szabab.lo \ src/fe/libmesh_oprof_la-fe_szabab_shape_0D.lo \ src/fe/libmesh_oprof_la-fe_szabab_shape_1D.lo \ @@ -1993,7 +1993,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dof_map.lo \ src/geom/libmesh_oprof_la-face_quad9.lo \ src/geom/libmesh_oprof_la-face_tri.lo \ src/geom/libmesh_oprof_la-face_tri3.lo \ - src/geom/libmesh_oprof_la-face_tri3_sd.lo \ + src/geom/libmesh_oprof_la-face_tri3_subdivision.lo \ src/geom/libmesh_oprof_la-face_tri6.lo \ src/geom/libmesh_oprof_la-node.lo \ src/geom/libmesh_oprof_la-node_elem.lo \ @@ -2037,7 +2037,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dof_map.lo \ src/mesh/libmesh_oprof_la-mesh_smoother.lo \ src/mesh/libmesh_oprof_la-mesh_smoother_laplace.lo \ src/mesh/libmesh_oprof_la-mesh_smoother_vsmoother.lo \ - src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo \ + src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo \ src/mesh/libmesh_oprof_la-mesh_tetgen_interface.lo \ src/mesh/libmesh_oprof_la-mesh_tetgen_wrapper.lo \ src/mesh/libmesh_oprof_la-mesh_tools.lo \ @@ -2311,7 +2311,7 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dof_map.C \ src/fe/fe_nedelec_one_shape_3D.C src/fe/fe_scalar.C \ src/fe/fe_scalar_shape_0D.C src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C src/fe/fe_szabab.C \ + src/fe/fe_subdivision_2D.C src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C src/fe/fe_szabab_shape_1D.C \ src/fe/fe_szabab_shape_2D.C src/fe/fe_szabab_shape_3D.C \ src/fe/fe_transformation_base.C src/fe/fe_type.C \ @@ -2345,18 +2345,18 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad.C src/geom/face_quad4.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C src/geom/face_tri6.C src/geom/node.C \ - src/geom/node_elem.C src/geom/plane.C src/geom/point.C \ - src/geom/reference_elem.C src/geom/reference_elem.data \ - src/geom/remote_elem.C src/geom/sphere.C src/geom/surface.C \ - src/mesh/abaqus_io.C src/mesh/boundary_info.C \ - src/mesh/boundary_mesh.C src/mesh/checkpoint_io.C \ - src/mesh/diva_io.C src/mesh/ensight_io.C \ - src/mesh/exodusII_io.C src/mesh/exodusII_io_helper.C \ - src/mesh/fro_io.C src/mesh/gmsh_io.C src/mesh/gmv_io.C \ - src/mesh/gnuplot_io.C src/mesh/inf_elem_builder.C \ - src/mesh/legacy_xdr_io.C src/mesh/matlab_io.C \ - src/mesh/medit_io.C src/mesh/mesh_base.C \ + src/geom/face_tri3_subdivision.C src/geom/face_tri6.C \ + src/geom/node.C src/geom/node_elem.C src/geom/plane.C \ + src/geom/point.C src/geom/reference_elem.C \ + src/geom/reference_elem.data src/geom/remote_elem.C \ + src/geom/sphere.C src/geom/surface.C src/mesh/abaqus_io.C \ + src/mesh/boundary_info.C src/mesh/boundary_mesh.C \ + src/mesh/checkpoint_io.C src/mesh/diva_io.C \ + src/mesh/ensight_io.C src/mesh/exodusII_io.C \ + src/mesh/exodusII_io_helper.C src/mesh/fro_io.C \ + src/mesh/gmsh_io.C src/mesh/gmv_io.C src/mesh/gnuplot_io.C \ + src/mesh/inf_elem_builder.C src/mesh/legacy_xdr_io.C \ + src/mesh/matlab_io.C src/mesh/medit_io.C src/mesh/mesh_base.C \ src/mesh/mesh_communication.C \ src/mesh/mesh_communication_global_indices.C \ src/mesh/mesh_data.C src/mesh/mesh_data_tetgen_support.C \ @@ -2369,7 +2369,7 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dof_map.C \ src/mesh/mesh_serializer.C src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C src/mesh/mesh_tools.C \ src/mesh/mesh_triangle_holes.C \ @@ -2613,7 +2613,7 @@ am__objects_4 = src/base/libmesh_opt_la-dof_map.lo \ src/fe/libmesh_opt_la-fe_scalar_shape_1D.lo \ src/fe/libmesh_opt_la-fe_scalar_shape_2D.lo \ src/fe/libmesh_opt_la-fe_scalar_shape_3D.lo \ - src/fe/libmesh_opt_la-fe_subdiv_2D.lo \ + src/fe/libmesh_opt_la-fe_subdivision_2D.lo \ src/fe/libmesh_opt_la-fe_szabab.lo \ src/fe/libmesh_opt_la-fe_szabab_shape_0D.lo \ src/fe/libmesh_opt_la-fe_szabab_shape_1D.lo \ @@ -2683,7 +2683,7 @@ am__objects_4 = src/base/libmesh_opt_la-dof_map.lo \ src/geom/libmesh_opt_la-face_quad9.lo \ src/geom/libmesh_opt_la-face_tri.lo \ src/geom/libmesh_opt_la-face_tri3.lo \ - src/geom/libmesh_opt_la-face_tri3_sd.lo \ + src/geom/libmesh_opt_la-face_tri3_subdivision.lo \ src/geom/libmesh_opt_la-face_tri6.lo \ src/geom/libmesh_opt_la-node.lo \ src/geom/libmesh_opt_la-node_elem.lo \ @@ -2727,7 +2727,7 @@ am__objects_4 = src/base/libmesh_opt_la-dof_map.lo \ src/mesh/libmesh_opt_la-mesh_smoother.lo \ src/mesh/libmesh_opt_la-mesh_smoother_laplace.lo \ src/mesh/libmesh_opt_la-mesh_smoother_vsmoother.lo \ - src/mesh/libmesh_opt_la-mesh_subdiv_support.lo \ + src/mesh/libmesh_opt_la-mesh_subdivision_support.lo \ src/mesh/libmesh_opt_la-mesh_tetgen_interface.lo \ src/mesh/libmesh_opt_la-mesh_tetgen_wrapper.lo \ src/mesh/libmesh_opt_la-mesh_tools.lo \ @@ -3000,7 +3000,7 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dof_map.C \ src/fe/fe_nedelec_one_shape_3D.C src/fe/fe_scalar.C \ src/fe/fe_scalar_shape_0D.C src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C src/fe/fe_szabab.C \ + src/fe/fe_subdivision_2D.C src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C src/fe/fe_szabab_shape_1D.C \ src/fe/fe_szabab_shape_2D.C src/fe/fe_szabab_shape_3D.C \ src/fe/fe_transformation_base.C src/fe/fe_type.C \ @@ -3034,18 +3034,18 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad.C src/geom/face_quad4.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C src/geom/face_tri6.C src/geom/node.C \ - src/geom/node_elem.C src/geom/plane.C src/geom/point.C \ - src/geom/reference_elem.C src/geom/reference_elem.data \ - src/geom/remote_elem.C src/geom/sphere.C src/geom/surface.C \ - src/mesh/abaqus_io.C src/mesh/boundary_info.C \ - src/mesh/boundary_mesh.C src/mesh/checkpoint_io.C \ - src/mesh/diva_io.C src/mesh/ensight_io.C \ - src/mesh/exodusII_io.C src/mesh/exodusII_io_helper.C \ - src/mesh/fro_io.C src/mesh/gmsh_io.C src/mesh/gmv_io.C \ - src/mesh/gnuplot_io.C src/mesh/inf_elem_builder.C \ - src/mesh/legacy_xdr_io.C src/mesh/matlab_io.C \ - src/mesh/medit_io.C src/mesh/mesh_base.C \ + src/geom/face_tri3_subdivision.C src/geom/face_tri6.C \ + src/geom/node.C src/geom/node_elem.C src/geom/plane.C \ + src/geom/point.C src/geom/reference_elem.C \ + src/geom/reference_elem.data src/geom/remote_elem.C \ + src/geom/sphere.C src/geom/surface.C src/mesh/abaqus_io.C \ + src/mesh/boundary_info.C src/mesh/boundary_mesh.C \ + src/mesh/checkpoint_io.C src/mesh/diva_io.C \ + src/mesh/ensight_io.C src/mesh/exodusII_io.C \ + src/mesh/exodusII_io_helper.C src/mesh/fro_io.C \ + src/mesh/gmsh_io.C src/mesh/gmv_io.C src/mesh/gnuplot_io.C \ + src/mesh/inf_elem_builder.C src/mesh/legacy_xdr_io.C \ + src/mesh/matlab_io.C src/mesh/medit_io.C src/mesh/mesh_base.C \ src/mesh/mesh_communication.C \ src/mesh/mesh_communication_global_indices.C \ src/mesh/mesh_data.C src/mesh/mesh_data_tetgen_support.C \ @@ -3058,7 +3058,7 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dof_map.C \ src/mesh/mesh_serializer.C src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C src/mesh/mesh_tools.C \ src/mesh/mesh_triangle_holes.C \ @@ -3302,7 +3302,7 @@ am__objects_5 = src/base/libmesh_prof_la-dof_map.lo \ src/fe/libmesh_prof_la-fe_scalar_shape_1D.lo \ src/fe/libmesh_prof_la-fe_scalar_shape_2D.lo \ src/fe/libmesh_prof_la-fe_scalar_shape_3D.lo \ - src/fe/libmesh_prof_la-fe_subdiv_2D.lo \ + src/fe/libmesh_prof_la-fe_subdivision_2D.lo \ src/fe/libmesh_prof_la-fe_szabab.lo \ src/fe/libmesh_prof_la-fe_szabab_shape_0D.lo \ src/fe/libmesh_prof_la-fe_szabab_shape_1D.lo \ @@ -3372,7 +3372,7 @@ am__objects_5 = src/base/libmesh_prof_la-dof_map.lo \ src/geom/libmesh_prof_la-face_quad9.lo \ src/geom/libmesh_prof_la-face_tri.lo \ src/geom/libmesh_prof_la-face_tri3.lo \ - src/geom/libmesh_prof_la-face_tri3_sd.lo \ + src/geom/libmesh_prof_la-face_tri3_subdivision.lo \ src/geom/libmesh_prof_la-face_tri6.lo \ src/geom/libmesh_prof_la-node.lo \ src/geom/libmesh_prof_la-node_elem.lo \ @@ -3416,7 +3416,7 @@ am__objects_5 = src/base/libmesh_prof_la-dof_map.lo \ src/mesh/libmesh_prof_la-mesh_smoother.lo \ src/mesh/libmesh_prof_la-mesh_smoother_laplace.lo \ src/mesh/libmesh_prof_la-mesh_smoother_vsmoother.lo \ - src/mesh/libmesh_prof_la-mesh_subdiv_support.lo \ + src/mesh/libmesh_prof_la-mesh_subdivision_support.lo \ src/mesh/libmesh_prof_la-mesh_tetgen_interface.lo \ src/mesh/libmesh_prof_la-mesh_tetgen_wrapper.lo \ src/mesh/libmesh_prof_la-mesh_tools.lo \ @@ -4522,7 +4522,7 @@ libmesh_SOURCES = \ src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C \ src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C \ + src/fe/fe_subdivision_2D.C \ src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C \ src/fe/fe_szabab_shape_1D.C \ @@ -4592,7 +4592,7 @@ libmesh_SOURCES = \ src/geom/face_quad9.C \ src/geom/face_tri.C \ src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C \ + src/geom/face_tri3_subdivision.C \ src/geom/face_tri6.C \ src/geom/node.C \ src/geom/node_elem.C \ @@ -4637,7 +4637,7 @@ libmesh_SOURCES = \ src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C \ src/mesh/mesh_tools.C \ @@ -5360,7 +5360,7 @@ src/fe/libmesh_dbg_la-fe_scalar_shape_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_scalar_shape_3D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) -src/fe/libmesh_dbg_la-fe_subdiv_2D.lo: src/fe/$(am__dirstamp) \ +src/fe/libmesh_dbg_la-fe_subdivision_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_szabab.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) @@ -5506,8 +5506,8 @@ src/geom/libmesh_dbg_la-face_tri.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_dbg_la-face_tri3.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) -src/geom/libmesh_dbg_la-face_tri3_sd.lo: src/geom/$(am__dirstamp) \ - src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_dbg_la-face_tri3_subdivision.lo: \ + src/geom/$(am__dirstamp) src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_dbg_la-face_tri6.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_dbg_la-node.lo: src/geom/$(am__dirstamp) \ @@ -5600,7 +5600,7 @@ src/mesh/libmesh_dbg_la-mesh_smoother_laplace.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_dbg_la-mesh_smoother_vsmoother.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) -src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo: \ +src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_dbg_la-mesh_tetgen_interface.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) @@ -6421,7 +6421,7 @@ src/fe/libmesh_devel_la-fe_scalar_shape_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_scalar_shape_3D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) -src/fe/libmesh_devel_la-fe_subdiv_2D.lo: src/fe/$(am__dirstamp) \ +src/fe/libmesh_devel_la-fe_subdivision_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_szabab.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) @@ -6561,8 +6561,8 @@ src/geom/libmesh_devel_la-face_tri.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_devel_la-face_tri3.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) -src/geom/libmesh_devel_la-face_tri3_sd.lo: src/geom/$(am__dirstamp) \ - src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_devel_la-face_tri3_subdivision.lo: \ + src/geom/$(am__dirstamp) src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_devel_la-face_tri6.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_devel_la-node.lo: src/geom/$(am__dirstamp) \ @@ -6649,7 +6649,7 @@ src/mesh/libmesh_devel_la-mesh_smoother_laplace.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_devel_la-mesh_smoother_vsmoother.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) -src/mesh/libmesh_devel_la-mesh_subdiv_support.lo: \ +src/mesh/libmesh_devel_la-mesh_subdivision_support.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_devel_la-mesh_tetgen_interface.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) @@ -7413,7 +7413,7 @@ src/fe/libmesh_oprof_la-fe_scalar_shape_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_scalar_shape_3D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) -src/fe/libmesh_oprof_la-fe_subdiv_2D.lo: src/fe/$(am__dirstamp) \ +src/fe/libmesh_oprof_la-fe_subdivision_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_szabab.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) @@ -7553,8 +7553,8 @@ src/geom/libmesh_oprof_la-face_tri.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_oprof_la-face_tri3.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) -src/geom/libmesh_oprof_la-face_tri3_sd.lo: src/geom/$(am__dirstamp) \ - src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_oprof_la-face_tri3_subdivision.lo: \ + src/geom/$(am__dirstamp) src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_oprof_la-face_tri6.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_oprof_la-node.lo: src/geom/$(am__dirstamp) \ @@ -7641,7 +7641,7 @@ src/mesh/libmesh_oprof_la-mesh_smoother_laplace.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_oprof_la-mesh_smoother_vsmoother.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) -src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo: \ +src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_oprof_la-mesh_tetgen_interface.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) @@ -8405,7 +8405,7 @@ src/fe/libmesh_opt_la-fe_scalar_shape_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_scalar_shape_3D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) -src/fe/libmesh_opt_la-fe_subdiv_2D.lo: src/fe/$(am__dirstamp) \ +src/fe/libmesh_opt_la-fe_subdivision_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_szabab.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) @@ -8545,8 +8545,8 @@ src/geom/libmesh_opt_la-face_tri.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_opt_la-face_tri3.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) -src/geom/libmesh_opt_la-face_tri3_sd.lo: src/geom/$(am__dirstamp) \ - src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_opt_la-face_tri3_subdivision.lo: \ + src/geom/$(am__dirstamp) src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_opt_la-face_tri6.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_opt_la-node.lo: src/geom/$(am__dirstamp) \ @@ -8633,7 +8633,7 @@ src/mesh/libmesh_opt_la-mesh_smoother_laplace.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_opt_la-mesh_smoother_vsmoother.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) -src/mesh/libmesh_opt_la-mesh_subdiv_support.lo: \ +src/mesh/libmesh_opt_la-mesh_subdivision_support.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_opt_la-mesh_tetgen_interface.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) @@ -9394,7 +9394,7 @@ src/fe/libmesh_prof_la-fe_scalar_shape_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_scalar_shape_3D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) -src/fe/libmesh_prof_la-fe_subdiv_2D.lo: src/fe/$(am__dirstamp) \ +src/fe/libmesh_prof_la-fe_subdivision_2D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_szabab.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) @@ -9534,8 +9534,8 @@ src/geom/libmesh_prof_la-face_tri.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_prof_la-face_tri3.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) -src/geom/libmesh_prof_la-face_tri3_sd.lo: src/geom/$(am__dirstamp) \ - src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_prof_la-face_tri3_subdivision.lo: \ + src/geom/$(am__dirstamp) src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_prof_la-face_tri6.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_prof_la-node.lo: src/geom/$(am__dirstamp) \ @@ -9622,7 +9622,7 @@ src/mesh/libmesh_prof_la-mesh_smoother_laplace.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_prof_la-mesh_smoother_vsmoother.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) -src/mesh/libmesh_prof_la-mesh_subdiv_support.lo: \ +src/mesh/libmesh_prof_la-mesh_subdivision_support.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_prof_la-mesh_tetgen_interface.lo: \ src/mesh/$(am__dirstamp) src/mesh/$(DEPDIR)/$(am__dirstamp) @@ -10792,7 +10792,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_scalar_shape_1D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_scalar_shape_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_scalar_shape_3D.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdiv_2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdivision_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_szabab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_szabab_shape_0D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_szabab_shape_1D.Plo@am__quote@ @@ -10876,7 +10876,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_scalar_shape_1D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_scalar_shape_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_scalar_shape_3D.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdiv_2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdivision_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_szabab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_szabab_shape_0D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_szabab_shape_1D.Plo@am__quote@ @@ -10960,7 +10960,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_scalar_shape_1D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_scalar_shape_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_scalar_shape_3D.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdiv_2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdivision_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_szabab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_szabab_shape_0D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_szabab_shape_1D.Plo@am__quote@ @@ -11044,7 +11044,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_scalar_shape_1D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_scalar_shape_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_scalar_shape_3D.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdiv_2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdivision_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_szabab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_szabab_shape_0D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_szabab_shape_1D.Plo@am__quote@ @@ -11128,7 +11128,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_scalar_shape_1D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_scalar_shape_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_scalar_shape_3D.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdiv_2D.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdivision_2D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_szabab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_szabab_shape_0D.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_szabab_shape_1D.Plo@am__quote@ @@ -11198,7 +11198,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-face_quad9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_sd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_subdivision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri6.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-node.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-node_elem.Plo@am__quote@ @@ -11251,7 +11251,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-face_quad9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-face_tri.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_sd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_subdivision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-face_tri6.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-node.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-node_elem.Plo@am__quote@ @@ -11304,7 +11304,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-face_quad9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_sd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_subdivision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri6.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-node.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-node_elem.Plo@am__quote@ @@ -11357,7 +11357,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-face_quad9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-face_tri.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_sd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_subdivision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-face_tri6.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-node.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-node_elem.Plo@am__quote@ @@ -11410,7 +11410,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-face_quad9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-face_tri.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_sd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_subdivision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-face_tri6.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-node.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-node_elem.Plo@am__quote@ @@ -11454,7 +11454,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_smoother.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_smoother_laplace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_smoother_vsmoother.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdiv_support.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdivision_support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_tetgen_interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_tetgen_wrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_tools.Plo@am__quote@ @@ -11515,7 +11515,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_smoother.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_smoother_laplace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_smoother_vsmoother.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdiv_support.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdivision_support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_tetgen_interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_tetgen_wrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_tools.Plo@am__quote@ @@ -11576,7 +11576,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_smoother.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_smoother_laplace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_smoother_vsmoother.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdiv_support.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdivision_support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_tetgen_interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_tetgen_wrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_tools.Plo@am__quote@ @@ -11637,7 +11637,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_smoother.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_smoother_laplace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_smoother_vsmoother.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdiv_support.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdivision_support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_tetgen_interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_tetgen_wrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_tools.Plo@am__quote@ @@ -11698,7 +11698,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_smoother.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_smoother_laplace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_smoother_vsmoother.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdiv_support.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdivision_support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_tetgen_interface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_tetgen_wrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_tools.Plo@am__quote@ @@ -13250,12 +13250,12 @@ src/fe/libmesh_dbg_la-fe_scalar_shape_3D.lo: src/fe/fe_scalar_shape_3D.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_scalar_shape_3D.lo `test -f 'src/fe/fe_scalar_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_scalar_shape_3D.C -src/fe/libmesh_dbg_la-fe_subdiv_2D.lo: src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_subdiv_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdiv_2D.Tpo -c -o src/fe/libmesh_dbg_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdiv_2D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdiv_2D.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdiv_2D.C' object='src/fe/libmesh_dbg_la-fe_subdiv_2D.lo' libtool=yes @AMDEPBACKSLASH@ +src/fe/libmesh_dbg_la-fe_subdivision_2D.lo: src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_subdivision_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdivision_2D.Tpo -c -o src/fe/libmesh_dbg_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdivision_2D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_subdivision_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdivision_2D.C' object='src/fe/libmesh_dbg_la-fe_subdivision_2D.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C src/fe/libmesh_dbg_la-fe_szabab.lo: src/fe/fe_szabab.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_szabab.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_szabab.Tpo -c -o src/fe/libmesh_dbg_la-fe_szabab.lo `test -f 'src/fe/fe_szabab.C' || echo '$(srcdir)/'`src/fe/fe_szabab.C @@ -13740,12 +13740,12 @@ src/geom/libmesh_dbg_la-face_tri3.lo: src/geom/face_tri3.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_dbg_la-face_tri3.lo `test -f 'src/geom/face_tri3.C' || echo '$(srcdir)/'`src/geom/face_tri3.C -src/geom/libmesh_dbg_la-face_tri3_sd.lo: src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_dbg_la-face_tri3_sd.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_sd.Tpo -c -o src/geom/libmesh_dbg_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_sd.Tpo src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_sd.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_sd.C' object='src/geom/libmesh_dbg_la-face_tri3_sd.lo' libtool=yes @AMDEPBACKSLASH@ +src/geom/libmesh_dbg_la-face_tri3_subdivision.lo: src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_dbg_la-face_tri3_subdivision.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_subdivision.Tpo -c -o src/geom/libmesh_dbg_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_subdivision.Tpo src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri3_subdivision.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_subdivision.C' object='src/geom/libmesh_dbg_la-face_tri3_subdivision.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_dbg_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_dbg_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C src/geom/libmesh_dbg_la-face_tri6.lo: src/geom/face_tri6.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_dbg_la-face_tri6.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_dbg_la-face_tri6.Tpo -c -o src/geom/libmesh_dbg_la-face_tri6.lo `test -f 'src/geom/face_tri6.C' || echo '$(srcdir)/'`src/geom/face_tri6.C @@ -14048,12 +14048,12 @@ src/mesh/libmesh_dbg_la-mesh_smoother_vsmoother.lo: src/mesh/mesh_smoother_vsmoo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_dbg_la-mesh_smoother_vsmoother.lo `test -f 'src/mesh/mesh_smoother_vsmoother.C' || echo '$(srcdir)/'`src/mesh/mesh_smoother_vsmoother.C -src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo: src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdiv_support.Tpo -c -o src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdiv_support.Tpo src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdiv_support.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdiv_support.C' object='src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo' libtool=yes @AMDEPBACKSLASH@ +src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo: src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdivision_support.Tpo -c -o src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdivision_support.Tpo src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_subdivision_support.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdivision_support.C' object='src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_dbg_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_dbg_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C src/mesh/libmesh_dbg_la-mesh_tetgen_interface.lo: src/mesh/mesh_tetgen_interface.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_dbg_la-mesh_tetgen_interface.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_dbg_la-mesh_tetgen_interface.Tpo -c -o src/mesh/libmesh_dbg_la-mesh_tetgen_interface.lo `test -f 'src/mesh/mesh_tetgen_interface.C' || echo '$(srcdir)/'`src/mesh/mesh_tetgen_interface.C @@ -16099,12 +16099,12 @@ src/fe/libmesh_devel_la-fe_scalar_shape_3D.lo: src/fe/fe_scalar_shape_3D.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_scalar_shape_3D.lo `test -f 'src/fe/fe_scalar_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_scalar_shape_3D.C -src/fe/libmesh_devel_la-fe_subdiv_2D.lo: src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_subdiv_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdiv_2D.Tpo -c -o src/fe/libmesh_devel_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdiv_2D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdiv_2D.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdiv_2D.C' object='src/fe/libmesh_devel_la-fe_subdiv_2D.lo' libtool=yes @AMDEPBACKSLASH@ +src/fe/libmesh_devel_la-fe_subdivision_2D.lo: src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_subdivision_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdivision_2D.Tpo -c -o src/fe/libmesh_devel_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdivision_2D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_subdivision_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdivision_2D.C' object='src/fe/libmesh_devel_la-fe_subdivision_2D.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C src/fe/libmesh_devel_la-fe_szabab.lo: src/fe/fe_szabab.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_szabab.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_szabab.Tpo -c -o src/fe/libmesh_devel_la-fe_szabab.lo `test -f 'src/fe/fe_szabab.C' || echo '$(srcdir)/'`src/fe/fe_szabab.C @@ -16589,12 +16589,12 @@ src/geom/libmesh_devel_la-face_tri3.lo: src/geom/face_tri3.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_devel_la-face_tri3.lo `test -f 'src/geom/face_tri3.C' || echo '$(srcdir)/'`src/geom/face_tri3.C -src/geom/libmesh_devel_la-face_tri3_sd.lo: src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_devel_la-face_tri3_sd.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_sd.Tpo -c -o src/geom/libmesh_devel_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_sd.Tpo src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_sd.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_sd.C' object='src/geom/libmesh_devel_la-face_tri3_sd.lo' libtool=yes @AMDEPBACKSLASH@ +src/geom/libmesh_devel_la-face_tri3_subdivision.lo: src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_devel_la-face_tri3_subdivision.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_subdivision.Tpo -c -o src/geom/libmesh_devel_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_subdivision.Tpo src/geom/$(DEPDIR)/libmesh_devel_la-face_tri3_subdivision.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_subdivision.C' object='src/geom/libmesh_devel_la-face_tri3_subdivision.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_devel_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_devel_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C src/geom/libmesh_devel_la-face_tri6.lo: src/geom/face_tri6.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_devel_la-face_tri6.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_devel_la-face_tri6.Tpo -c -o src/geom/libmesh_devel_la-face_tri6.lo `test -f 'src/geom/face_tri6.C' || echo '$(srcdir)/'`src/geom/face_tri6.C @@ -16897,12 +16897,12 @@ src/mesh/libmesh_devel_la-mesh_smoother_vsmoother.lo: src/mesh/mesh_smoother_vsm @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_devel_la-mesh_smoother_vsmoother.lo `test -f 'src/mesh/mesh_smoother_vsmoother.C' || echo '$(srcdir)/'`src/mesh/mesh_smoother_vsmoother.C -src/mesh/libmesh_devel_la-mesh_subdiv_support.lo: src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_devel_la-mesh_subdiv_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdiv_support.Tpo -c -o src/mesh/libmesh_devel_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdiv_support.Tpo src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdiv_support.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdiv_support.C' object='src/mesh/libmesh_devel_la-mesh_subdiv_support.lo' libtool=yes @AMDEPBACKSLASH@ +src/mesh/libmesh_devel_la-mesh_subdivision_support.lo: src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_devel_la-mesh_subdivision_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdivision_support.Tpo -c -o src/mesh/libmesh_devel_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdivision_support.Tpo src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_subdivision_support.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdivision_support.C' object='src/mesh/libmesh_devel_la-mesh_subdivision_support.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_devel_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_devel_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C src/mesh/libmesh_devel_la-mesh_tetgen_interface.lo: src/mesh/mesh_tetgen_interface.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_devel_la-mesh_tetgen_interface.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_devel_la-mesh_tetgen_interface.Tpo -c -o src/mesh/libmesh_devel_la-mesh_tetgen_interface.lo `test -f 'src/mesh/mesh_tetgen_interface.C' || echo '$(srcdir)/'`src/mesh/mesh_tetgen_interface.C @@ -18948,12 +18948,12 @@ src/fe/libmesh_oprof_la-fe_scalar_shape_3D.lo: src/fe/fe_scalar_shape_3D.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_scalar_shape_3D.lo `test -f 'src/fe/fe_scalar_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_scalar_shape_3D.C -src/fe/libmesh_oprof_la-fe_subdiv_2D.lo: src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_subdiv_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdiv_2D.Tpo -c -o src/fe/libmesh_oprof_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdiv_2D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdiv_2D.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdiv_2D.C' object='src/fe/libmesh_oprof_la-fe_subdiv_2D.lo' libtool=yes @AMDEPBACKSLASH@ +src/fe/libmesh_oprof_la-fe_subdivision_2D.lo: src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_subdivision_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdivision_2D.Tpo -c -o src/fe/libmesh_oprof_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdivision_2D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_subdivision_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdivision_2D.C' object='src/fe/libmesh_oprof_la-fe_subdivision_2D.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C src/fe/libmesh_oprof_la-fe_szabab.lo: src/fe/fe_szabab.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_szabab.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_szabab.Tpo -c -o src/fe/libmesh_oprof_la-fe_szabab.lo `test -f 'src/fe/fe_szabab.C' || echo '$(srcdir)/'`src/fe/fe_szabab.C @@ -19438,12 +19438,12 @@ src/geom/libmesh_oprof_la-face_tri3.lo: src/geom/face_tri3.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_oprof_la-face_tri3.lo `test -f 'src/geom/face_tri3.C' || echo '$(srcdir)/'`src/geom/face_tri3.C -src/geom/libmesh_oprof_la-face_tri3_sd.lo: src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_oprof_la-face_tri3_sd.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_sd.Tpo -c -o src/geom/libmesh_oprof_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_sd.Tpo src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_sd.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_sd.C' object='src/geom/libmesh_oprof_la-face_tri3_sd.lo' libtool=yes @AMDEPBACKSLASH@ +src/geom/libmesh_oprof_la-face_tri3_subdivision.lo: src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_oprof_la-face_tri3_subdivision.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_subdivision.Tpo -c -o src/geom/libmesh_oprof_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_subdivision.Tpo src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri3_subdivision.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_subdivision.C' object='src/geom/libmesh_oprof_la-face_tri3_subdivision.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_oprof_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_oprof_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C src/geom/libmesh_oprof_la-face_tri6.lo: src/geom/face_tri6.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_oprof_la-face_tri6.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_oprof_la-face_tri6.Tpo -c -o src/geom/libmesh_oprof_la-face_tri6.lo `test -f 'src/geom/face_tri6.C' || echo '$(srcdir)/'`src/geom/face_tri6.C @@ -19746,12 +19746,12 @@ src/mesh/libmesh_oprof_la-mesh_smoother_vsmoother.lo: src/mesh/mesh_smoother_vsm @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_oprof_la-mesh_smoother_vsmoother.lo `test -f 'src/mesh/mesh_smoother_vsmoother.C' || echo '$(srcdir)/'`src/mesh/mesh_smoother_vsmoother.C -src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo: src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdiv_support.Tpo -c -o src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdiv_support.Tpo src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdiv_support.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdiv_support.C' object='src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo' libtool=yes @AMDEPBACKSLASH@ +src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo: src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdivision_support.Tpo -c -o src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdivision_support.Tpo src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_subdivision_support.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdivision_support.C' object='src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_oprof_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_oprof_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C src/mesh/libmesh_oprof_la-mesh_tetgen_interface.lo: src/mesh/mesh_tetgen_interface.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_oprof_la-mesh_tetgen_interface.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_oprof_la-mesh_tetgen_interface.Tpo -c -o src/mesh/libmesh_oprof_la-mesh_tetgen_interface.lo `test -f 'src/mesh/mesh_tetgen_interface.C' || echo '$(srcdir)/'`src/mesh/mesh_tetgen_interface.C @@ -21797,12 +21797,12 @@ src/fe/libmesh_opt_la-fe_scalar_shape_3D.lo: src/fe/fe_scalar_shape_3D.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_scalar_shape_3D.lo `test -f 'src/fe/fe_scalar_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_scalar_shape_3D.C -src/fe/libmesh_opt_la-fe_subdiv_2D.lo: src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_subdiv_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdiv_2D.Tpo -c -o src/fe/libmesh_opt_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdiv_2D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdiv_2D.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdiv_2D.C' object='src/fe/libmesh_opt_la-fe_subdiv_2D.lo' libtool=yes @AMDEPBACKSLASH@ +src/fe/libmesh_opt_la-fe_subdivision_2D.lo: src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_subdivision_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdivision_2D.Tpo -c -o src/fe/libmesh_opt_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdivision_2D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_subdivision_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdivision_2D.C' object='src/fe/libmesh_opt_la-fe_subdivision_2D.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C src/fe/libmesh_opt_la-fe_szabab.lo: src/fe/fe_szabab.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_szabab.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_szabab.Tpo -c -o src/fe/libmesh_opt_la-fe_szabab.lo `test -f 'src/fe/fe_szabab.C' || echo '$(srcdir)/'`src/fe/fe_szabab.C @@ -22287,12 +22287,12 @@ src/geom/libmesh_opt_la-face_tri3.lo: src/geom/face_tri3.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_opt_la-face_tri3.lo `test -f 'src/geom/face_tri3.C' || echo '$(srcdir)/'`src/geom/face_tri3.C -src/geom/libmesh_opt_la-face_tri3_sd.lo: src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_opt_la-face_tri3_sd.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_sd.Tpo -c -o src/geom/libmesh_opt_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_sd.Tpo src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_sd.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_sd.C' object='src/geom/libmesh_opt_la-face_tri3_sd.lo' libtool=yes @AMDEPBACKSLASH@ +src/geom/libmesh_opt_la-face_tri3_subdivision.lo: src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_opt_la-face_tri3_subdivision.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_subdivision.Tpo -c -o src/geom/libmesh_opt_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_subdivision.Tpo src/geom/$(DEPDIR)/libmesh_opt_la-face_tri3_subdivision.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_subdivision.C' object='src/geom/libmesh_opt_la-face_tri3_subdivision.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_opt_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_opt_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C src/geom/libmesh_opt_la-face_tri6.lo: src/geom/face_tri6.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_opt_la-face_tri6.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_opt_la-face_tri6.Tpo -c -o src/geom/libmesh_opt_la-face_tri6.lo `test -f 'src/geom/face_tri6.C' || echo '$(srcdir)/'`src/geom/face_tri6.C @@ -22595,12 +22595,12 @@ src/mesh/libmesh_opt_la-mesh_smoother_vsmoother.lo: src/mesh/mesh_smoother_vsmoo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_opt_la-mesh_smoother_vsmoother.lo `test -f 'src/mesh/mesh_smoother_vsmoother.C' || echo '$(srcdir)/'`src/mesh/mesh_smoother_vsmoother.C -src/mesh/libmesh_opt_la-mesh_subdiv_support.lo: src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_opt_la-mesh_subdiv_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdiv_support.Tpo -c -o src/mesh/libmesh_opt_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdiv_support.Tpo src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdiv_support.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdiv_support.C' object='src/mesh/libmesh_opt_la-mesh_subdiv_support.lo' libtool=yes @AMDEPBACKSLASH@ +src/mesh/libmesh_opt_la-mesh_subdivision_support.lo: src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_opt_la-mesh_subdivision_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdivision_support.Tpo -c -o src/mesh/libmesh_opt_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdivision_support.Tpo src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_subdivision_support.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdivision_support.C' object='src/mesh/libmesh_opt_la-mesh_subdivision_support.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_opt_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_opt_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C src/mesh/libmesh_opt_la-mesh_tetgen_interface.lo: src/mesh/mesh_tetgen_interface.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_opt_la-mesh_tetgen_interface.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_opt_la-mesh_tetgen_interface.Tpo -c -o src/mesh/libmesh_opt_la-mesh_tetgen_interface.lo `test -f 'src/mesh/mesh_tetgen_interface.C' || echo '$(srcdir)/'`src/mesh/mesh_tetgen_interface.C @@ -24646,12 +24646,12 @@ src/fe/libmesh_prof_la-fe_scalar_shape_3D.lo: src/fe/fe_scalar_shape_3D.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_scalar_shape_3D.lo `test -f 'src/fe/fe_scalar_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_scalar_shape_3D.C -src/fe/libmesh_prof_la-fe_subdiv_2D.lo: src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_subdiv_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdiv_2D.Tpo -c -o src/fe/libmesh_prof_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdiv_2D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdiv_2D.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdiv_2D.C' object='src/fe/libmesh_prof_la-fe_subdiv_2D.lo' libtool=yes @AMDEPBACKSLASH@ +src/fe/libmesh_prof_la-fe_subdivision_2D.lo: src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_subdivision_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdivision_2D.Tpo -c -o src/fe/libmesh_prof_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdivision_2D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_subdivision_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_subdivision_2D.C' object='src/fe/libmesh_prof_la-fe_subdivision_2D.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_subdiv_2D.lo `test -f 'src/fe/fe_subdiv_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdiv_2D.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_subdivision_2D.lo `test -f 'src/fe/fe_subdivision_2D.C' || echo '$(srcdir)/'`src/fe/fe_subdivision_2D.C src/fe/libmesh_prof_la-fe_szabab.lo: src/fe/fe_szabab.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_szabab.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_szabab.Tpo -c -o src/fe/libmesh_prof_la-fe_szabab.lo `test -f 'src/fe/fe_szabab.C' || echo '$(srcdir)/'`src/fe/fe_szabab.C @@ -25136,12 +25136,12 @@ src/geom/libmesh_prof_la-face_tri3.lo: src/geom/face_tri3.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_prof_la-face_tri3.lo `test -f 'src/geom/face_tri3.C' || echo '$(srcdir)/'`src/geom/face_tri3.C -src/geom/libmesh_prof_la-face_tri3_sd.lo: src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_prof_la-face_tri3_sd.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_sd.Tpo -c -o src/geom/libmesh_prof_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_sd.Tpo src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_sd.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_sd.C' object='src/geom/libmesh_prof_la-face_tri3_sd.lo' libtool=yes @AMDEPBACKSLASH@ +src/geom/libmesh_prof_la-face_tri3_subdivision.lo: src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_prof_la-face_tri3_subdivision.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_subdivision.Tpo -c -o src/geom/libmesh_prof_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_subdivision.Tpo src/geom/$(DEPDIR)/libmesh_prof_la-face_tri3_subdivision.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/face_tri3_subdivision.C' object='src/geom/libmesh_prof_la-face_tri3_subdivision.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_prof_la-face_tri3_sd.lo `test -f 'src/geom/face_tri3_sd.C' || echo '$(srcdir)/'`src/geom/face_tri3_sd.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/geom/libmesh_prof_la-face_tri3_subdivision.lo `test -f 'src/geom/face_tri3_subdivision.C' || echo '$(srcdir)/'`src/geom/face_tri3_subdivision.C src/geom/libmesh_prof_la-face_tri6.lo: src/geom/face_tri6.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/geom/libmesh_prof_la-face_tri6.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_prof_la-face_tri6.Tpo -c -o src/geom/libmesh_prof_la-face_tri6.lo `test -f 'src/geom/face_tri6.C' || echo '$(srcdir)/'`src/geom/face_tri6.C @@ -25444,12 +25444,12 @@ src/mesh/libmesh_prof_la-mesh_smoother_vsmoother.lo: src/mesh/mesh_smoother_vsmo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_prof_la-mesh_smoother_vsmoother.lo `test -f 'src/mesh/mesh_smoother_vsmoother.C' || echo '$(srcdir)/'`src/mesh/mesh_smoother_vsmoother.C -src/mesh/libmesh_prof_la-mesh_subdiv_support.lo: src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_prof_la-mesh_subdiv_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdiv_support.Tpo -c -o src/mesh/libmesh_prof_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdiv_support.Tpo src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdiv_support.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdiv_support.C' object='src/mesh/libmesh_prof_la-mesh_subdiv_support.lo' libtool=yes @AMDEPBACKSLASH@ +src/mesh/libmesh_prof_la-mesh_subdivision_support.lo: src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_prof_la-mesh_subdivision_support.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdivision_support.Tpo -c -o src/mesh/libmesh_prof_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdivision_support.Tpo src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_subdivision_support.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/mesh_subdivision_support.C' object='src/mesh/libmesh_prof_la-mesh_subdivision_support.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_prof_la-mesh_subdiv_support.lo `test -f 'src/mesh/mesh_subdiv_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdiv_support.C +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/mesh/libmesh_prof_la-mesh_subdivision_support.lo `test -f 'src/mesh/mesh_subdivision_support.C' || echo '$(srcdir)/'`src/mesh/mesh_subdivision_support.C src/mesh/libmesh_prof_la-mesh_tetgen_interface.lo: src/mesh/mesh_tetgen_interface.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/mesh/libmesh_prof_la-mesh_tetgen_interface.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_prof_la-mesh_tetgen_interface.Tpo -c -o src/mesh/libmesh_prof_la-mesh_tetgen_interface.lo `test -f 'src/mesh/mesh_tetgen_interface.C' || echo '$(srcdir)/'`src/mesh/mesh_tetgen_interface.C diff --git a/examples/Makefile.am b/examples/Makefile.am index 80fbdf143de..fbba1bc3473 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -30,6 +30,7 @@ SUBDIRS = \ miscellaneous/miscellaneous_ex8 \ miscellaneous/miscellaneous_ex9 \ miscellaneous/miscellaneous_ex10 \ + miscellaneous/miscellaneous_ex11 \ subdomains/subdomains_ex1 \ subdomains/subdomains_ex2 \ systems_of_equations/systems_of_equations_ex1 \ diff --git a/examples/Makefile.in b/examples/Makefile.in index 1c5510d2c7a..db500a5a0d1 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -507,6 +507,7 @@ SUBDIRS = \ miscellaneous/miscellaneous_ex8 \ miscellaneous/miscellaneous_ex9 \ miscellaneous/miscellaneous_ex10 \ + miscellaneous/miscellaneous_ex11 \ subdomains/subdomains_ex1 \ subdomains/subdomains_ex2 \ systems_of_equations/systems_of_equations_ex1 \ diff --git a/examples/miscellaneous/miscellaneous_ex11/Makefile.am b/examples/miscellaneous/miscellaneous_ex11/Makefile.am index 38b2fe6cccf..0abf8c7e767 100644 --- a/examples/miscellaneous/miscellaneous_ex11/Makefile.am +++ b/examples/miscellaneous/miscellaneous_ex11/Makefile.am @@ -1,11 +1,21 @@ example_name = miscellaneous_ex11 install_dir = $(examples_install_path)/miscellaneous/ex11 -data = miscellaneous_ex11.C run.sh +data = miscellaneous_ex11.C run.sh square_mesh.off sources = $(data) run.sh check_SCRIPTS = run.sh CLEANFILES = without_ghosts.pvtu without_ghosts.e with_ghosts.pvtu with_ghosts.e out.pvtu out.e +# also need to link files for VPATH builds +if LIBMESH_VPATH_BUILD + BUILT_SOURCES = .linkstamp +.linkstamp: + -rm -f square_mesh.off && $(LN_S) $(srcdir)/square_mesh.off . + $(AM_V_GEN)touch .linkstamp + + CLEANFILES += square_mesh.off .linkstamp +endif + ############################################## # include common example environment include $(top_srcdir)/examples/Make.common diff --git a/examples/miscellaneous/miscellaneous_ex11/Makefile.in b/examples/miscellaneous/miscellaneous_ex11/Makefile.in index b86e6c16e0c..6fb7d387dcb 100644 --- a/examples/miscellaneous/miscellaneous_ex11/Makefile.in +++ b/examples/miscellaneous/miscellaneous_ex11/Makefile.in @@ -51,16 +51,17 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ +@LIBMESH_VPATH_BUILD_TRUE@am__append_1 = square_mesh.off .linkstamp DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/depcomp \ $(top_srcdir)/examples/Make.common check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ $(am__EXEEXT_4) $(am__EXEEXT_5) -@LIBMESH_DBG_MODE_TRUE@am__append_1 = example-dbg -@LIBMESH_DEVEL_MODE_TRUE@am__append_2 = example-devel -@LIBMESH_OPT_MODE_TRUE@am__append_3 = example-opt -@LIBMESH_PROF_MODE_TRUE@am__append_4 = example-prof -@LIBMESH_OPROF_MODE_TRUE@am__append_5 = example-oprof +@LIBMESH_DBG_MODE_TRUE@am__append_2 = example-dbg +@LIBMESH_DEVEL_MODE_TRUE@am__append_3 = example-devel +@LIBMESH_OPT_MODE_TRUE@am__append_4 = example-opt +@LIBMESH_PROF_MODE_TRUE@am__append_5 = example-prof +@LIBMESH_OPROF_MODE_TRUE@am__append_6 = example-oprof subdir = examples/miscellaneous/miscellaneous_ex11 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_cxx_rtti.m4 \ @@ -110,7 +111,8 @@ CONFIG_CLEAN_VPATH_FILES = @LIBMESH_OPT_MODE_TRUE@am__EXEEXT_3 = example-opt$(EXEEXT) @LIBMESH_PROF_MODE_TRUE@am__EXEEXT_4 = example-prof$(EXEEXT) @LIBMESH_OPROF_MODE_TRUE@am__EXEEXT_5 = example-oprof$(EXEEXT) -am__example_dbg_SOURCES_DIST = miscellaneous_ex11.C run.sh +am__example_dbg_SOURCES_DIST = miscellaneous_ex11.C run.sh \ + square_mesh.off am__objects_1 = example_dbg-miscellaneous_ex11.$(OBJEXT) am__objects_2 = $(am__objects_1) @LIBMESH_DBG_MODE_TRUE@am_example_dbg_OBJECTS = $(am__objects_2) @@ -124,7 +126,8 @@ am__v_lt_1 = example_dbg_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(example_dbg_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__example_devel_SOURCES_DIST = miscellaneous_ex11.C run.sh +am__example_devel_SOURCES_DIST = miscellaneous_ex11.C run.sh \ + square_mesh.off am__objects_3 = example_devel-miscellaneous_ex11.$(OBJEXT) am__objects_4 = $(am__objects_3) @LIBMESH_DEVEL_MODE_TRUE@am_example_devel_OBJECTS = $(am__objects_4) @@ -135,7 +138,8 @@ example_devel_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(example_devel_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -am__example_oprof_SOURCES_DIST = miscellaneous_ex11.C run.sh +am__example_oprof_SOURCES_DIST = miscellaneous_ex11.C run.sh \ + square_mesh.off am__objects_5 = example_oprof-miscellaneous_ex11.$(OBJEXT) am__objects_6 = $(am__objects_5) @LIBMESH_OPROF_MODE_TRUE@am_example_oprof_OBJECTS = $(am__objects_6) @@ -146,7 +150,8 @@ example_oprof_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(example_oprof_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -am__example_opt_SOURCES_DIST = miscellaneous_ex11.C run.sh +am__example_opt_SOURCES_DIST = miscellaneous_ex11.C run.sh \ + square_mesh.off am__objects_7 = example_opt-miscellaneous_ex11.$(OBJEXT) am__objects_8 = $(am__objects_7) @LIBMESH_OPT_MODE_TRUE@am_example_opt_OBJECTS = $(am__objects_8) @@ -156,7 +161,8 @@ example_opt_OBJECTS = $(am_example_opt_OBJECTS) example_opt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(example_opt_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__example_prof_SOURCES_DIST = miscellaneous_ex11.C run.sh +am__example_prof_SOURCES_DIST = miscellaneous_ex11.C run.sh \ + square_mesh.off am__objects_9 = example_prof-miscellaneous_ex11.$(OBJEXT) am__objects_10 = $(am__objects_9) @LIBMESH_PROF_MODE_TRUE@am_example_prof_OBJECTS = $(am__objects_10) @@ -556,7 +562,7 @@ vtkmajor = @vtkmajor@ vtkversion = @vtkversion@ example_name = miscellaneous_ex11 install_dir = $(examples_install_path)/miscellaneous/ex11 -data = miscellaneous_ex11.C run.sh +data = miscellaneous_ex11.C run.sh square_mesh.off sources = $(data) run.sh check_SCRIPTS = run.sh @@ -565,7 +571,11 @@ check_SCRIPTS = run.sh # how to make documentation # CLEANFILES = without_ghosts.pvtu without_ghosts.e with_ghosts.pvtu \ - with_ghosts.e out.pvtu out.e $(example_name).php stdout.log + with_ghosts.e out.pvtu out.e $(am__append_1) \ + $(example_name).php stdout.log + +# also need to link files for VPATH builds +@LIBMESH_VPATH_BUILD_TRUE@BUILT_SOURCES = .linkstamp ###################################################################### # @@ -625,7 +635,8 @@ data_DATA = $(data) $(top_builddir)/contrib/utils/Makefile # TESTS_ENVIRONMENT = LIBMESH_DIR=$(abs_top_srcdir) METHODS="$(METHODS)" TESTS = $(check_SCRIPTS) -all: all-am +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .C .lo .o .obj @@ -1010,13 +1021,15 @@ distdir: $(DISTFILES) check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(datadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-am +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -1047,6 +1060,7 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ @@ -1116,7 +1130,7 @@ ps-am: uninstall-am: uninstall-dataDATA -.MAKE: check-am install-am install-strip +.MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist \ @@ -1132,6 +1146,9 @@ uninstall-am: uninstall-dataDATA mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-dataDATA +@LIBMESH_VPATH_BUILD_TRUE@.linkstamp: +@LIBMESH_VPATH_BUILD_TRUE@ -rm -f square_mesh.off && $(LN_S) $(srcdir)/square_mesh.off . +@LIBMESH_VPATH_BUILD_TRUE@ $(AM_V_GEN)touch .linkstamp # Convenience method: 'make run' run: $(check_PROGRAMS) diff --git a/examples/miscellaneous/miscellaneous_ex11/miscellaneous_ex11.C b/examples/miscellaneous/miscellaneous_ex11/miscellaneous_ex11.C index 4196f0367ff..01c0cff6e5d 100644 --- a/examples/miscellaneous/miscellaneous_ex11/miscellaneous_ex11.C +++ b/examples/miscellaneous/miscellaneous_ex11/miscellaneous_ex11.C @@ -17,7 +17,7 @@ - //

Miscellaneous Example 10 - Using Loop Subdivision Shell Elements

+ //

Miscellaneous Example 11 - Using Loop Subdivision Shell Elements

// // This example demonstrates how subdivision surface shell elements // are used, and how boundary conditions can be applied to them. To @@ -56,8 +56,8 @@ #include "libmesh/exodusII_io.h" // These are the include files typically needed for subdivision elements. -#include "libmesh/face_tri3_sd.h" -#include "libmesh/mesh_subdiv_support.h" +#include "libmesh/face_tri3_subdivision.h" +#include "libmesh/mesh_subdivision_support.h" // Bring in everything from the libMesh namespace using namespace libMesh; @@ -72,10 +72,10 @@ int main (int argc, char** argv) { // Initialize libMesh. LibMeshInit init (argc, argv); - + // Skip this 3D example if libMesh was compiled as 1D/2D-only. - libmesh_example_assert (3 == LIBMESH_DIM, "3D support"); - + libmesh_example_assert (3 == LIBMESH_DIM, "3D support"); + // Create a 2D mesh distributed across the default MPI communicator. Mesh mesh (init.comm(), 2); @@ -108,11 +108,11 @@ int main (int argc, char** argv) // and add an additional row of "ghost" elements around // it in order to complete the extended local support of // the triangles at the boundaries. If the second - // argument is set to true, the outhermost existing + // argument is set to true, the outermost existing // elements are converted into ghost elements, and the // actual physical mesh is thus getting smaller. - MeshTools::Subdiv::prepare_subdiv_mesh (mesh, false); - + MeshTools::Subdivision::prepare_subdivision_mesh (mesh, false); + // Print information about the subdivision mesh to the screen. mesh.print_info(); @@ -124,10 +124,10 @@ int main (int argc, char** argv) #if defined(LIBMESH_HAVE_EXODUS_API) ExodusII_IO(mesh).write ("with_ghosts.e"); #endif - + // Create an equation systems object. EquationSystems equation_systems (mesh); - + // Declare the system and its variables. // Create a linear implicit system named "Shell". LinearImplicitSystem & system = equation_systems.add_system ("Shell"); @@ -139,9 +139,9 @@ int main (int argc, char** argv) // Loop Subdivision Elements are always interpolated // by quartic box splines, hence the order must always // be \p FOURTH. - system.add_variable ("u", FOURTH, SUBDIV); - system.add_variable ("v", FOURTH, SUBDIV); - system.add_variable ("w", FOURTH, SUBDIV); + system.add_variable ("u", FOURTH, SUBDIVISION); + system.add_variable ("v", FOURTH, SUBDIVISION); + system.add_variable ("w", FOURTH, SUBDIVISION); // Give the system a pointer to the matrix and rhs assembly // function. @@ -158,10 +158,10 @@ int main (int argc, char** argv) equation_systems.parameters.set ("young's modulus") = E; equation_systems.parameters.set ("poisson ratio") = nu; equation_systems.parameters.set ("uniform load") = q; - + // Initialize the data structures for the equation system. equation_systems.init(); - + // Print information about the system to the screen. equation_systems.print_info(); @@ -197,7 +197,7 @@ int main (int argc, char** argv) std::vector soln; system.current_local_solution->localize_to_one(soln); Real w = soln[w_dof]; - + // The analytic solution for the maximum displacement of // a clamped square plate in pure bending, from Taylor, // Govindjee, Commun. Numer. Meth. Eng. 20, 757-765, 2004. @@ -209,7 +209,7 @@ int main (int argc, char** argv) // square plate to the screen. std::cout << "z-displacement of the center point: " << w << std::endl; std::cout << "Analytic solution for pure bending: " << w_analytic << std::endl; - + // All done. return 0; } @@ -253,7 +253,7 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // Build a Finite Element object of the specified type. AutoPtr fe (FEBase::build(2, fe_type)); - + // A Gauss quadrature rule for numerical integration. // For subdivision shell elements, a single Gauss point per // element is sufficient, hence we use extraorder = 0. @@ -263,10 +263,10 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // Tell the finite element object to use our quadrature rule. fe->attach_quadrature_rule (qrule.get()); - // The element Jacobian * quadrature weight at each integration point. + // The element Jacobian * quadrature weight at each integration point. const std::vector& JxW = fe->get_JxW(); - // The surface tangents in both directions at the quadrature points. + // The surface tangents in both directions at the quadrature points. const std::vector& dxyzdxi = fe->get_dxyzdxi(); const std::vector& dxyzdeta = fe->get_dxyzdeta(); @@ -325,8 +325,8 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // The ghost elements at the boundaries need to be excluded // here, as they don't belong to the physical shell, // but serve for a proper boundary treatment only. - libmesh_assert_equal_to (elem->type(), TRI3SD); - const Tri3SD* sd_elem = static_cast (elem); + libmesh_assert_equal_to (elem->type(), TRI3SUBDIVISION); + const Tri3Subdivision* sd_elem = static_cast (elem); if (sd_elem->is_ghost()) continue; @@ -356,7 +356,7 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // the last element. Ke.resize (n_dofs, n_dofs); Fe.resize (n_dofs); - + // Reposition the submatrices... The idea is this: // // - - - - @@ -367,7 +367,7 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // // The \p DenseSubMatrix.repostition () member takes the // (row_offset, column_offset, row_size, column_size). - // + // // Similarly, the \p DenseSubVector.reposition () member // takes the (row_offset, row_size) Kuu.reposition (u_var*n_u_dofs, u_var*n_u_dofs, n_u_dofs, n_u_dofs); @@ -395,11 +395,11 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // it affects the z-direction, i.e. the "w" variable. for (unsigned int i=0; iadd_matrix (Ke, dof_indices); system.rhs->add_vector (Fe, dof_indices); } // end of non-ghost element loop - + // Next, we apply the boundary conditions. In this case, // all boundaries are clamped by the penalty method, using // the special "ghost" nodes along the boundaries. Note @@ -548,8 +548,8 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // For the boundary conditions, we only need to loop over // the ghost elements. - libmesh_assert_equal_to (elem->type(), TRI3SD); - const Tri3SD* gh_elem = static_cast (elem); + libmesh_assert_equal_to (elem->type(), TRI3SUBDIVISION); + const Tri3Subdivision* gh_elem = static_cast (elem); if (!gh_elem->is_ghost()) continue; @@ -557,7 +557,7 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) // that is, the boundary of the original mesh without ghosts. for (unsigned int s=0; sn_sides(); ++s) { - const Tri3SD* nb_elem = static_cast (elem->neighbor(s)); + const Tri3Subdivision* nb_elem = static_cast (elem->neighbor(s)); if (nb_elem == NULL || nb_elem->is_ghost()) continue; @@ -567,7 +567,7 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) * namespace provides lookup tables \p next and \p prev * for an efficient determination of the next and previous * nodes of an element, respectively. - * + * * n4 * / \ * / gh \ @@ -578,8 +578,8 @@ void assemble_shell (EquationSystems& es, const std::string& system_name) */ Node* nodes [4]; // n1, n2, n3, n4 nodes[1] = gh_elem->get_node(s); // n2 - nodes[2] = gh_elem->get_node(MeshTools::Subdiv::next[s]); // n3 - nodes[3] = gh_elem->get_node(MeshTools::Subdiv::prev[s]); // n4 + nodes[2] = gh_elem->get_node(MeshTools::Subdivision::next[s]); // n3 + nodes[3] = gh_elem->get_node(MeshTools::Subdivision::prev[s]); // n4 // The node in the interior of the domain, \p n1, is the // hardest to find. Walk along the edges of element \p nb until diff --git a/examples/miscellaneous/miscellaneous_ex11/run.sh b/examples/miscellaneous/miscellaneous_ex11/run.sh old mode 100644 new mode 100755 diff --git a/include/Makefile.in b/include/Makefile.in index 8c4b4d3f4ec..091079c3674 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -625,7 +625,7 @@ include_HEADERS = \ geom/face_quad9.h \ geom/face_tri.h \ geom/face_tri3.h \ - geom/face_tri3_sd.h \ + geom/face_tri3_subdivision.h \ geom/face_tri6.h \ geom/node.h \ geom/node_elem.h \ @@ -668,7 +668,7 @@ include_HEADERS = \ mesh/mesh_smoother.h \ mesh/mesh_smoother_laplace.h \ mesh/mesh_smoother_vsmoother.h \ - mesh/mesh_subdiv_support.h \ + mesh/mesh_subdivision_support.h \ mesh/mesh_tetgen_interface.h \ mesh/mesh_tetgen_wrapper.h \ mesh/mesh_tools.h \ diff --git a/include/base/dof_map.h b/include/base/dof_map.h index 01399579f4c..96013906b59 100644 --- a/include/base/dof_map.h +++ b/include/base/dof_map.h @@ -1065,8 +1065,8 @@ class DofMap : public ReferenceCountedObject, * dof indices that should have been added to di. */ void _dof_indices (const Elem* const elem, std::vector& di, - const unsigned int v, - const std::vector& elem_nodes + const unsigned int v, + const std::vector& elem_nodes #ifdef DEBUG ,unsigned int & tot_size #endif diff --git a/include/enums/enum_elem_type.h b/include/enums/enum_elem_type.h index 8eb28bd456c..0c0b93a3696 100644 --- a/include/enums/enum_elem_type.h +++ b/include/enums/enum_elem_type.h @@ -27,51 +27,51 @@ namespace libMesh { /** * Defines an \p enum for geometric element types. */ -enum ElemType {EDGE2=0, // 0 - EDGE3, // 1 - EDGE4, // 2 +enum ElemType {EDGE2=0, // 0 + EDGE3, // 1 + EDGE4, // 2 - TRI3, // 3 - TRI6, // 4 + TRI3, // 3 + TRI6, // 4 - QUAD4, // 5 - QUAD8, // 6 - QUAD9, // 7 + QUAD4, // 5 + QUAD8, // 6 + QUAD9, // 7 - TET4, // 8 - TET10, // 9 + TET4, // 8 + TET10, // 9 - HEX8, // 10 - HEX20, // 11 - HEX27, // 12 + HEX8, // 10 + HEX20, // 11 + HEX27, // 12 - PRISM6, // 13 - PRISM15, // 14 - PRISM18, // 15 + PRISM6, // 13 + PRISM15, // 14 + PRISM18, // 15 - PYRAMID5, // 16 - PYRAMID13, // 17 - PYRAMID14, // 18 + PYRAMID5, // 16 + PYRAMID13, // 17 + PYRAMID14, // 18 - INFEDGE2, // 19 + INFEDGE2, // 19 - INFQUAD4, // 20 - INFQUAD6, // 21 + INFQUAD4, // 20 + INFQUAD6, // 21 - INFHEX8, // 22 - INFHEX16, // 23 - INFHEX18, // 24 + INFHEX8, // 22 + INFHEX16, // 23 + INFHEX18, // 24 - INFPRISM6, // 25 - INFPRISM12, // 26 + INFPRISM6, // 25 + INFPRISM12, // 26 - NODEELEM, // 27 + NODEELEM, // 27 - REMOTEELEM, // 28 + REMOTEELEM, // 28 - TRI3SD, // 29 + TRI3SUBDIVISION, // 29 - INVALID_ELEM}; // 30 - should always be last + INVALID_ELEM}; // 30 - should always be last } #endif // LIBMESH_ENUM_ELEM_TYPE_H diff --git a/include/enums/enum_fe_family.h b/include/enums/enum_fe_family.h index 5ca5aef2f3d..b8a7bda97e8 100644 --- a/include/enums/enum_fe_family.h +++ b/include/enums/enum_fe_family.h @@ -53,7 +53,7 @@ enum FEFamily {LAGRANGE = 0, // C1 elements CLOUGH = 21, HERMITE = 22, - SUBDIV = 23, + SUBDIVISION = 23, // A scalar variable that couples to // all other DOFs in the system diff --git a/include/fe/fe.h b/include/fe/fe.h index 02394f5e40c..e5b5ad265c7 100644 --- a/include/fe/fe.h +++ b/include/fe/fe.h @@ -545,34 +545,34 @@ class FEHermite : public FE */ //------------------------------------------------------------- -// FESubdiv class definition +// FESubdivision class definition // template specialization prototypes, needed for being able to -// call them from inside FESubdiv::init_shape_functions +// call them from inside FESubdivision::init_shape_functions template <> -Real FE<2,SUBDIV>::shape(const Elem* elem, - const Order order, - const unsigned int i, - const Point& p); +Real FE<2,SUBDIVISION>::shape(const Elem* elem, + const Order order, + const unsigned int i, + const Point& p); template <> -Real FE<2,SUBDIV>::shape_deriv(const Elem* elem, - const Order order, - const unsigned int i, - const unsigned int j, - const Point& p); +Real FE<2,SUBDIVISION>::shape_deriv(const Elem* elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point& p); template <> -Real FE<2,SUBDIV>::shape_second_deriv(const Elem* elem, - const Order order, - const unsigned int i, - const unsigned int j, - const Point& p); +Real FE<2,SUBDIVISION>::shape_second_deriv(const Elem* elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point& p); -class FESubdiv : public FE<2,SUBDIV> +class FESubdivision : public FE<2,SUBDIVISION> { public: @@ -581,11 +581,11 @@ class FESubdiv : public FE<2,SUBDIV> * Currently only supported for two-dimensional meshes in * three-dimensional space. */ - FESubdiv(const FEType& fet); + FESubdivision(const FEType& fet); /** * This is at the core of this class. Use this for each new - * non-ghosted element in the mesh. Reinitializes all the physical + * non-ghosted element in the mesh. Reinitializes all the physical * element-dependent data based on the current element * \p elem. By default the shape functions and associated * data are computed at the quadrature points specified @@ -594,7 +594,7 @@ class FESubdiv : public FE<2,SUBDIV> * argument \p pts. */ virtual void reinit (const Elem* elem, - const std::vector* const pts = NULL, + const std::vector* const pts = NULL, const std::vector* const weights = NULL); /** @@ -602,8 +602,8 @@ class FESubdiv : public FE<2,SUBDIV> * overriding this virtual function. */ virtual void reinit (const Elem*, - const unsigned int, - const Real = TOLERANCE, + const unsigned int, + const Real = TOLERANCE, const std::vector* const = NULL, const std::vector* const = NULL) { libmesh_error(); } @@ -623,7 +623,7 @@ class FESubdiv : public FE<2,SUBDIV> * the quadrature points. */ virtual void init_shape_functions(const std::vector& qp, - const Elem* elem); + const Elem* elem); /** * @returns the value of the \f$ i^{th} \f$ of the 12 quartic @@ -632,8 +632,8 @@ class FESubdiv : public FE<2,SUBDIV> * \p w. */ static Real regular_shape(const unsigned int i, - const Real v, - const Real w); + const Real v, + const Real w); /** * @returns the \f$ j^{th} \f$ derivative of the \f$ i^{th} @@ -642,9 +642,9 @@ class FESubdiv : public FE<2,SUBDIV> * coordinates \p v, \p w. */ static Real regular_shape_deriv(const unsigned int i, - const unsigned int j, - const Real v, - const Real w); + const unsigned int j, + const Real v, + const Real w); /** * @returns the second \f$ j^{th} \f$ derivative of the @@ -653,9 +653,9 @@ class FESubdiv : public FE<2,SUBDIV> * barycentric coordinates \p v, \p w. */ static Real regular_shape_second_deriv(const unsigned int i, - const unsigned int j, - const Real v, - const Real w); + const unsigned int j, + const Real v, + const Real w); /** @@ -667,16 +667,16 @@ class FESubdiv : public FE<2,SUBDIV> * evaluated. The weight for the node itself is the first * element of \p weights. */ - static void loop_subdiv_mask(std::vector & weights, - const unsigned int valence); + static void loop_subdivision_mask(std::vector & weights, + const unsigned int valence); /** * Builds the subdivision matrix \p A for the Loop scheme. The * size depends on the element's \p valence. */ - static void init_subdiv_matrix(DenseMatrix &A, - unsigned int valence); + static void init_subdivision_matrix(DenseMatrix &A, + unsigned int valence); }; diff --git a/include/fe/fe_macro.h b/include/fe/fe_macro.h index 4990e72c4c7..468704ee8a0 100644 --- a/include/fe/fe_macro.h +++ b/include/fe/fe_macro.h @@ -36,6 +36,19 @@ template void FE<_dim,_type>::inverse_map(const Elem*,const std::vector&,std::vector&,Real,bool); \ template Point FE<_dim,_type>::inverse_map(const Elem*,const Point&,Real,bool) +#define INSTANTIATE_SUBDIVISION_MAPS \ + template Point FE<2,SUBDIVISION>::map(const Elem*,const Point&); \ + template Point FE<2,SUBDIVISION>::map_xi(const Elem*,const Point&); \ + template Point FE<2,SUBDIVISION>::map_eta(const Elem*,const Point&); \ + template Point FE<2,SUBDIVISION>::map_zeta(const Elem*,const Point&) + +#define INSTANTIATE_SUBDIVISION_FE \ + template unsigned int FE<2,SUBDIVISION>::n_shape_functions () const; \ + template void FE<2,SUBDIVISION>::attach_quadrature_rule (QBase*); \ + template unsigned int FE<2,SUBDIVISION>::n_quadrature_points () const; \ + template void FE<2,SUBDIVISION>::reinit(const Elem*,const std::vector* const,const std::vector* const); \ + template void FE<2,SUBDIVISION>::init_shape_functions(const std::vector&, const Elem*) + #ifndef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES diff --git a/include/geom/face_tri3_sd.h b/include/geom/face_tri3_subdivision.h similarity index 85% rename from include/geom/face_tri3_sd.h rename to include/geom/face_tri3_subdivision.h index 3db9944ac0a..221704c2ffa 100644 --- a/include/geom/face_tri3_sd.h +++ b/include/geom/face_tri3_subdivision.h @@ -17,8 +17,8 @@ -#ifndef LIBMESH_FACE_TRI3_SD_H -#define LIBMESH_FACE_TRI3_SD_H +#ifndef LIBMESH_FACE_TRI3_SUBDIVISION_H +#define LIBMESH_FACE_TRI3_SUBDIVISION_H // Local includes @@ -34,27 +34,27 @@ namespace libMesh */ // ------------------------------------------------------------ -// Tri3SD class definition -class Tri3SD : public Tri3 +// Tri3Subdivision class definition +class Tri3Subdivision : public Tri3 { public: /** * Constructor without parent specification. */ - Tri3SD() : - Tri3(), _subdiv_updated(false), _is_ghost(false) {} + Tri3Subdivision() : + Tri3(), _subdivision_updated(false), _is_ghost(false) {} /** * Constructor with parent specification. */ - Tri3SD(Elem *p); + Tri3Subdivision(Elem *p); /** - * @returns \p TRI3SD + * @returns \p TRI3SUBDIVISION */ - ElemType type () const { return TRI3SD; } - + ElemType type () const { return TRI3SUBDIVISION; } + /** * @returns true iff the element map is definitely affine within * numerical tolerances @@ -77,13 +77,13 @@ class Tri3SD : public Tri3 * the irregular node (valence != 6), if there is one, is the first. * The nodes are ordered once in advance for efficiency. */ - void prepare_subdiv_properties(); + void prepare_subdivision_properties(); /** * @returns \p true iff the subdivision element is ready for use, * i.e. the nodes have been reordered. */ - bool is_subdiv_updated() const { return _subdiv_updated; } + bool is_subdivision_updated() const { return _subdivision_updated; } /** * @returns a pointer to the node whose ordered id is \p node_id. @@ -111,7 +111,7 @@ class Tri3SD : public Tri3 * Sets the boolean flag identifying ghost elements. */ void set_ghost(bool ghosted) { _is_ghost = ghosted; } - + private: /** @@ -124,7 +124,7 @@ class Tri3SD : public Tri3 * \p true iff the subdivision element is ready for use, * i.e. the nodes have been reordered. */ - bool _subdiv_updated; + bool _subdivision_updated; /** * \p true iff the element is a ghost element @@ -136,4 +136,4 @@ class Tri3SD : public Tri3 } // namespace libMesh -#endif // LIBMESH_FACE_TRI3_SD_H +#endif // LIBMESH_FACE_TRI3_SUBDIVISION_H diff --git a/include/include_HEADERS b/include/include_HEADERS index 6f8f1d906e8..534beec2214 100644 --- a/include/include_HEADERS +++ b/include/include_HEADERS @@ -136,7 +136,7 @@ include_HEADERS = \ geom/face_quad9.h \ geom/face_tri.h \ geom/face_tri3.h \ - geom/face_tri3_sd.h \ + geom/face_tri3_subdivision.h \ geom/face_tri6.h \ geom/node.h \ geom/node_elem.h \ @@ -179,7 +179,7 @@ include_HEADERS = \ mesh/mesh_smoother.h \ mesh/mesh_smoother_laplace.h \ mesh/mesh_smoother_vsmoother.h \ - mesh/mesh_subdiv_support.h \ + mesh/mesh_subdivision_support.h \ mesh/mesh_tetgen_interface.h \ mesh/mesh_tetgen_wrapper.h \ mesh/mesh_tools.h \ diff --git a/include/libmesh/Makefile.am b/include/libmesh/Makefile.am index c322e845827..f7cd452d788 100644 --- a/include/libmesh/Makefile.am +++ b/include/libmesh/Makefile.am @@ -5,7 +5,7 @@ # include the magic script! EXTRA_DIST = rebuild_makefile.sh -BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.h dof_object.h factory.h getpot.h id_types.h libmesh.h libmesh_C_isnan.h libmesh_augment_std_namespace.h libmesh_base.h libmesh_common.h libmesh_documentation.h libmesh_exceptions.h libmesh_logging.h libmesh_singleton.h libmesh_version.h multi_predicates.h periodic_boundaries.h periodic_boundary.h periodic_boundary_base.h print_trace.h reference_counted_object.h reference_counter.h single_predicates.h sparsity_pattern.h variable.h variant_filter_iterator.h enum_convergence_flags.h enum_eigen_solver_type.h enum_elem_quality.h enum_elem_type.h enum_fe_family.h enum_inf_map_type.h enum_io_package.h enum_norm_type.h enum_order.h enum_parallel_type.h enum_point_locator_type.h enum_preconditioner_type.h enum_quadrature_type.h enum_solver_package.h enum_solver_type.h enum_subset_solve_mode.h enum_xdr_mode.h adjoint_refinement_estimator.h adjoint_residual_error_estimator.h discontinuity_measure.h error_estimator.h exact_error_estimator.h exact_solution.h fourth_error_estimators.h hp_coarsentest.h hp_selector.h hp_singular.h jump_error_estimator.h kelly_error_estimator.h patch_recovery_error_estimator.h uniform_refinement_estimator.h weighted_patch_recovery_error_estimator.h fe.h fe_abstract.h fe_base.h fe_compute_data.h fe_interface.h fe_macro.h fe_map.h fe_transformation_base.h fe_type.h fe_xyz_map.h h1_fe_transformation.h hcurl_fe_transformation.h inf_fe.h inf_fe_instantiate_1D.h inf_fe_instantiate_2D.h inf_fe_instantiate_3D.h inf_fe_macro.h cell.h cell_hex.h cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h cell_inf_hex.h cell_inf_hex16.h cell_inf_hex18.h cell_inf_hex8.h cell_inf_prism.h cell_inf_prism12.h cell_inf_prism6.h cell_prism.h cell_prism15.h cell_prism18.h cell_prism6.h cell_pyramid.h cell_pyramid13.h cell_pyramid14.h cell_pyramid5.h cell_tet.h cell_tet10.h cell_tet4.h edge.h edge_edge2.h edge_edge3.h edge_edge4.h edge_inf_edge2.h elem.h elem_quality.h elem_range.h elem_type.h face.h face_inf_quad.h face_inf_quad4.h face_inf_quad6.h face_quad.h face_quad4.h face_quad8.h face_quad9.h face_tri.h face_tri3.h face_tri3_sd.h face_tri6.h node.h node_elem.h node_range.h plane.h point.h reference_elem.h remote_elem.h side.h sphere.h stored_range.h surface.h abaqus_io.h boundary_info.h boundary_mesh.h checkpoint_io.h diva_io.h ensight_io.h exodusII_io.h exodusII_io_helper.h fro_io.h gmsh_io.h gmv_io.h gnuplot_io.h inf_elem_builder.h legacy_xdr_io.h matlab_io.h medit_io.h mesh.h mesh_base.h mesh_communication.h mesh_data.h mesh_function.h mesh_generation.h mesh_input.h mesh_inserter_iterator.h mesh_modification.h mesh_output.h mesh_refinement.h mesh_serializer.h mesh_smoother.h mesh_smoother_laplace.h mesh_smoother_vsmoother.h mesh_subdiv_support.h mesh_tetgen_interface.h mesh_tetgen_wrapper.h mesh_tools.h mesh_triangle_holes.h mesh_triangle_interface.h mesh_triangle_wrapper.h nemesis_io.h nemesis_io_helper.h off_io.h parallel_mesh.h patch.h postscript_io.h serial_mesh.h tecplot_io.h tetgen_io.h ucd_io.h unstructured_mesh.h unv_io.h vtk_io.h xdr_head.h xdr_io.h xdr_mesh.h xdr_mgf.h xdr_mhead.h xdr_shead.h xdr_soln.h analytic_function.h const_fem_function.h const_function.h coupling_matrix.h dense_matrix.h dense_matrix_base.h dense_submatrix.h dense_subvector.h dense_vector.h dense_vector_base.h distributed_vector.h eigen_core_support.h eigen_preconditioner.h eigen_sparse_matrix.h eigen_sparse_vector.h fem_function_base.h function_base.h laspack_matrix.h laspack_vector.h numeric_vector.h parsed_function.h petsc_macro.h petsc_matrix.h petsc_preconditioner.h petsc_vector.h preconditioner.h raw_accessor.h refinement_selector.h shell_matrix.h sparse_matrix.h sparse_shell_matrix.h sum_shell_matrix.h tensor_shell_matrix.h tensor_tools.h tensor_value.h trilinos_epetra_matrix.h trilinos_epetra_vector.h trilinos_preconditioner.h type_n_tensor.h type_tensor.h type_vector.h vector_value.h wrapped_function.h zero_function.h parallel.h parallel_algebra.h parallel_bin_sorter.h parallel_conversion_utils.h parallel_elem.h parallel_ghost_sync.h parallel_hilbert.h parallel_histogram.h parallel_implementation.h parallel_node.h parallel_object.h parallel_sort.h threads.h threads_allocators.h centroid_partitioner.h hilbert_sfc_partitioner.h linear_partitioner.h metis_csr_graph.h metis_partitioner.h morton_sfc_partitioner.h parmetis_partitioner.h partitioner.h sfc_partitioner.h diff_physics.h diff_qoi.h fem_physics.h quadrature.h quadrature_clough.h quadrature_conical.h quadrature_gauss.h quadrature_gm.h quadrature_grid.h quadrature_jacobi.h quadrature_monomial.h quadrature_rules.h quadrature_simpson.h quadrature_trap.h derived_rb_construction.h derived_rb_evaluation.h rb_assembly_expansion.h rb_construction.h rb_construction_base.h rb_eim_assembly.h rb_eim_construction.h rb_eim_evaluation.h rb_eim_theta.h rb_evaluation.h rb_parameters.h rb_parametrized.h rb_parametrized_function.h rb_scm_construction.h rb_scm_evaluation.h rb_temporal_discretization.h rb_theta.h rb_theta_expansion.h transient_rb_assembly_expansion.h transient_rb_construction.h transient_rb_evaluation.h transient_rb_theta_expansion.h direct_solution_transfer.h dtk_adapter.h dtk_evaluator.h dtk_solution_transfer.h meshfree_interpolation.h meshfree_solution_transfer.h meshfunction_solution_transfer.h radial_basis_functions.h radial_basis_interpolation.h solution_transfer.h adaptive_time_solver.h diff_solver.h eigen_solver.h eigen_sparse_linear_solver.h eigen_time_solver.h euler2_solver.h euler_solver.h laspack_linear_solver.h linear.h linear_solver.h memory_solution_history.h newton_solver.h no_solution_history.h nonlinear_solver.h petsc_auto_fieldsplit.h petsc_diff_solver.h petsc_dm_nonlinear_solver.h petsc_linear_solver.h petsc_nonlinear_solver.h petscdmlibmesh.h slepc_eigen_solver.h slepc_macro.h solution_history.h solver.h steady_solver.h time_solver.h trilinos_aztec_linear_solver.h trilinos_nox_nonlinear_solver.h twostep_time_solver.h unsteady_solver.h condensed_eigen_system.h continuation_system.h dg_fem_context.h diff_context.h diff_system.h eigen_system.h elem_assembly.h equation_systems.h explicit_system.h fem_context.h fem_system.h frequency_system.h implicit_system.h linear_implicit_system.h newmark_system.h nonlinear_implicit_system.h parameter_vector.h qoi_set.h sensitivity_data.h steady_system.h system.h system_norm.h system_subset.h system_subset_by_subdomain.h transient_system.h compare_types.h error_vector.h hashword.h ignore_warnings.h location_maps.h mapvector.h null_output_iterator.h number_lookups.h ostream_proxy.h parameters.h perf_log.h perfmon.h plt_loader.h point_locator_base.h point_locator_list.h point_locator_tree.h pool_allocator.h restore_warnings.h statistics.h string_to_enum.h timestamp.h tree.h tree_base.h tree_node.h utility.h vectormap.h xdr_cxx.h parallel_communicator_specializations +BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.h dof_object.h factory.h getpot.h id_types.h libmesh.h libmesh_C_isnan.h libmesh_augment_std_namespace.h libmesh_base.h libmesh_common.h libmesh_documentation.h libmesh_exceptions.h libmesh_logging.h libmesh_singleton.h libmesh_version.h multi_predicates.h periodic_boundaries.h periodic_boundary.h periodic_boundary_base.h print_trace.h reference_counted_object.h reference_counter.h single_predicates.h sparsity_pattern.h variable.h variant_filter_iterator.h enum_convergence_flags.h enum_eigen_solver_type.h enum_elem_quality.h enum_elem_type.h enum_fe_family.h enum_inf_map_type.h enum_io_package.h enum_norm_type.h enum_order.h enum_parallel_type.h enum_point_locator_type.h enum_preconditioner_type.h enum_quadrature_type.h enum_solver_package.h enum_solver_type.h enum_subset_solve_mode.h enum_xdr_mode.h adjoint_refinement_estimator.h adjoint_residual_error_estimator.h discontinuity_measure.h error_estimator.h exact_error_estimator.h exact_solution.h fourth_error_estimators.h hp_coarsentest.h hp_selector.h hp_singular.h jump_error_estimator.h kelly_error_estimator.h patch_recovery_error_estimator.h uniform_refinement_estimator.h weighted_patch_recovery_error_estimator.h fe.h fe_abstract.h fe_base.h fe_compute_data.h fe_interface.h fe_macro.h fe_map.h fe_transformation_base.h fe_type.h fe_xyz_map.h h1_fe_transformation.h hcurl_fe_transformation.h inf_fe.h inf_fe_instantiate_1D.h inf_fe_instantiate_2D.h inf_fe_instantiate_3D.h inf_fe_macro.h cell.h cell_hex.h cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h cell_inf_hex.h cell_inf_hex16.h cell_inf_hex18.h cell_inf_hex8.h cell_inf_prism.h cell_inf_prism12.h cell_inf_prism6.h cell_prism.h cell_prism15.h cell_prism18.h cell_prism6.h cell_pyramid.h cell_pyramid13.h cell_pyramid14.h cell_pyramid5.h cell_tet.h cell_tet10.h cell_tet4.h edge.h edge_edge2.h edge_edge3.h edge_edge4.h edge_inf_edge2.h elem.h elem_quality.h elem_range.h elem_type.h face.h face_inf_quad.h face_inf_quad4.h face_inf_quad6.h face_quad.h face_quad4.h face_quad8.h face_quad9.h face_tri.h face_tri3.h face_tri3_subdivision.h face_tri6.h node.h node_elem.h node_range.h plane.h point.h reference_elem.h remote_elem.h side.h sphere.h stored_range.h surface.h abaqus_io.h boundary_info.h boundary_mesh.h checkpoint_io.h diva_io.h ensight_io.h exodusII_io.h exodusII_io_helper.h fro_io.h gmsh_io.h gmv_io.h gnuplot_io.h inf_elem_builder.h legacy_xdr_io.h matlab_io.h medit_io.h mesh.h mesh_base.h mesh_communication.h mesh_data.h mesh_function.h mesh_generation.h mesh_input.h mesh_inserter_iterator.h mesh_modification.h mesh_output.h mesh_refinement.h mesh_serializer.h mesh_smoother.h mesh_smoother_laplace.h mesh_smoother_vsmoother.h mesh_subdivision_support.h mesh_tetgen_interface.h mesh_tetgen_wrapper.h mesh_tools.h mesh_triangle_holes.h mesh_triangle_interface.h mesh_triangle_wrapper.h nemesis_io.h nemesis_io_helper.h off_io.h parallel_mesh.h patch.h postscript_io.h serial_mesh.h tecplot_io.h tetgen_io.h ucd_io.h unstructured_mesh.h unv_io.h vtk_io.h xdr_head.h xdr_io.h xdr_mesh.h xdr_mgf.h xdr_mhead.h xdr_shead.h xdr_soln.h analytic_function.h const_fem_function.h const_function.h coupling_matrix.h dense_matrix.h dense_matrix_base.h dense_submatrix.h dense_subvector.h dense_vector.h dense_vector_base.h distributed_vector.h eigen_core_support.h eigen_preconditioner.h eigen_sparse_matrix.h eigen_sparse_vector.h fem_function_base.h function_base.h laspack_matrix.h laspack_vector.h numeric_vector.h parsed_function.h petsc_macro.h petsc_matrix.h petsc_preconditioner.h petsc_vector.h preconditioner.h raw_accessor.h refinement_selector.h shell_matrix.h sparse_matrix.h sparse_shell_matrix.h sum_shell_matrix.h tensor_shell_matrix.h tensor_tools.h tensor_value.h trilinos_epetra_matrix.h trilinos_epetra_vector.h trilinos_preconditioner.h type_n_tensor.h type_tensor.h type_vector.h vector_value.h wrapped_function.h zero_function.h parallel.h parallel_algebra.h parallel_bin_sorter.h parallel_conversion_utils.h parallel_elem.h parallel_ghost_sync.h parallel_hilbert.h parallel_histogram.h parallel_implementation.h parallel_node.h parallel_object.h parallel_sort.h threads.h threads_allocators.h centroid_partitioner.h hilbert_sfc_partitioner.h linear_partitioner.h metis_csr_graph.h metis_partitioner.h morton_sfc_partitioner.h parmetis_partitioner.h partitioner.h sfc_partitioner.h diff_physics.h diff_qoi.h fem_physics.h quadrature.h quadrature_clough.h quadrature_conical.h quadrature_gauss.h quadrature_gm.h quadrature_grid.h quadrature_jacobi.h quadrature_monomial.h quadrature_rules.h quadrature_simpson.h quadrature_trap.h derived_rb_construction.h derived_rb_evaluation.h rb_assembly_expansion.h rb_construction.h rb_construction_base.h rb_eim_assembly.h rb_eim_construction.h rb_eim_evaluation.h rb_eim_theta.h rb_evaluation.h rb_parameters.h rb_parametrized.h rb_parametrized_function.h rb_scm_construction.h rb_scm_evaluation.h rb_temporal_discretization.h rb_theta.h rb_theta_expansion.h transient_rb_assembly_expansion.h transient_rb_construction.h transient_rb_evaluation.h transient_rb_theta_expansion.h direct_solution_transfer.h dtk_adapter.h dtk_evaluator.h dtk_solution_transfer.h meshfree_interpolation.h meshfree_solution_transfer.h meshfunction_solution_transfer.h radial_basis_functions.h radial_basis_interpolation.h solution_transfer.h adaptive_time_solver.h diff_solver.h eigen_solver.h eigen_sparse_linear_solver.h eigen_time_solver.h euler2_solver.h euler_solver.h laspack_linear_solver.h linear.h linear_solver.h memory_solution_history.h newton_solver.h no_solution_history.h nonlinear_solver.h petsc_auto_fieldsplit.h petsc_diff_solver.h petsc_dm_nonlinear_solver.h petsc_linear_solver.h petsc_nonlinear_solver.h petscdmlibmesh.h slepc_eigen_solver.h slepc_macro.h solution_history.h solver.h steady_solver.h time_solver.h trilinos_aztec_linear_solver.h trilinos_nox_nonlinear_solver.h twostep_time_solver.h unsteady_solver.h condensed_eigen_system.h continuation_system.h dg_fem_context.h diff_context.h diff_system.h eigen_system.h elem_assembly.h equation_systems.h explicit_system.h fem_context.h fem_system.h frequency_system.h implicit_system.h linear_implicit_system.h newmark_system.h nonlinear_implicit_system.h parameter_vector.h qoi_set.h sensitivity_data.h steady_system.h system.h system_norm.h system_subset.h system_subset_by_subdomain.h transient_system.h compare_types.h error_vector.h hashword.h ignore_warnings.h location_maps.h mapvector.h null_output_iterator.h number_lookups.h ostream_proxy.h parameters.h perf_log.h perfmon.h plt_loader.h point_locator_base.h point_locator_list.h point_locator_tree.h pool_allocator.h restore_warnings.h statistics.h string_to_enum.h timestamp.h tree.h tree_base.h tree_node.h utility.h vectormap.h xdr_cxx.h parallel_communicator_specializations DISTCLEANFILES = $(BUILT_SOURCES) @@ -447,7 +447,7 @@ face_tri.h: $(top_srcdir)/include/geom/face_tri.h face_tri3.h: $(top_srcdir)/include/geom/face_tri3.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ -face_tri3_sd.h: $(top_srcdir)/include/geom/face_tri3_sd.h +face_tri3_subdivision.h: $(top_srcdir)/include/geom/face_tri3_subdivision.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ face_tri6.h: $(top_srcdir)/include/geom/face_tri6.h @@ -579,7 +579,7 @@ mesh_smoother_laplace.h: $(top_srcdir)/include/mesh/mesh_smoother_laplace.h mesh_smoother_vsmoother.h: $(top_srcdir)/include/mesh/mesh_smoother_vsmoother.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ -mesh_subdiv_support.h: $(top_srcdir)/include/mesh/mesh_subdiv_support.h +mesh_subdivision_support.h: $(top_srcdir)/include/mesh/mesh_subdivision_support.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ mesh_tetgen_interface.h: $(top_srcdir)/include/mesh/mesh_tetgen_interface.h diff --git a/include/libmesh/Makefile.in b/include/libmesh/Makefile.in index 9a935f3972b..8d21f66d4f5 100644 --- a/include/libmesh/Makefile.in +++ b/include/libmesh/Makefile.in @@ -462,72 +462,72 @@ BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.h \ elem_quality.h elem_range.h elem_type.h face.h face_inf_quad.h \ face_inf_quad4.h face_inf_quad6.h face_quad.h face_quad4.h \ face_quad8.h face_quad9.h face_tri.h face_tri3.h \ - face_tri3_sd.h face_tri6.h node.h node_elem.h node_range.h \ - plane.h point.h reference_elem.h remote_elem.h side.h sphere.h \ - stored_range.h surface.h abaqus_io.h boundary_info.h \ - boundary_mesh.h checkpoint_io.h diva_io.h ensight_io.h \ - exodusII_io.h exodusII_io_helper.h fro_io.h gmsh_io.h gmv_io.h \ - gnuplot_io.h inf_elem_builder.h legacy_xdr_io.h matlab_io.h \ - medit_io.h mesh.h mesh_base.h mesh_communication.h mesh_data.h \ - mesh_function.h mesh_generation.h mesh_input.h \ - mesh_inserter_iterator.h mesh_modification.h mesh_output.h \ - mesh_refinement.h mesh_serializer.h mesh_smoother.h \ - mesh_smoother_laplace.h mesh_smoother_vsmoother.h \ - mesh_subdiv_support.h mesh_tetgen_interface.h \ - mesh_tetgen_wrapper.h mesh_tools.h mesh_triangle_holes.h \ - mesh_triangle_interface.h mesh_triangle_wrapper.h nemesis_io.h \ - nemesis_io_helper.h off_io.h parallel_mesh.h patch.h \ - postscript_io.h serial_mesh.h tecplot_io.h tetgen_io.h \ - ucd_io.h unstructured_mesh.h unv_io.h vtk_io.h xdr_head.h \ - xdr_io.h xdr_mesh.h xdr_mgf.h xdr_mhead.h xdr_shead.h \ - xdr_soln.h analytic_function.h const_fem_function.h \ - const_function.h coupling_matrix.h dense_matrix.h \ - dense_matrix_base.h dense_submatrix.h dense_subvector.h \ - dense_vector.h dense_vector_base.h distributed_vector.h \ - eigen_core_support.h eigen_preconditioner.h \ - eigen_sparse_matrix.h eigen_sparse_vector.h \ - fem_function_base.h function_base.h laspack_matrix.h \ - laspack_vector.h numeric_vector.h parsed_function.h \ - petsc_macro.h petsc_matrix.h petsc_preconditioner.h \ - petsc_vector.h preconditioner.h raw_accessor.h \ - refinement_selector.h shell_matrix.h sparse_matrix.h \ - sparse_shell_matrix.h sum_shell_matrix.h tensor_shell_matrix.h \ - tensor_tools.h tensor_value.h trilinos_epetra_matrix.h \ - trilinos_epetra_vector.h trilinos_preconditioner.h \ - type_n_tensor.h type_tensor.h type_vector.h vector_value.h \ - wrapped_function.h zero_function.h parallel.h \ - parallel_algebra.h parallel_bin_sorter.h \ - parallel_conversion_utils.h parallel_elem.h \ - parallel_ghost_sync.h parallel_hilbert.h parallel_histogram.h \ - parallel_implementation.h parallel_node.h parallel_object.h \ - parallel_sort.h threads.h threads_allocators.h \ - centroid_partitioner.h hilbert_sfc_partitioner.h \ - linear_partitioner.h metis_csr_graph.h metis_partitioner.h \ - morton_sfc_partitioner.h parmetis_partitioner.h partitioner.h \ - sfc_partitioner.h diff_physics.h diff_qoi.h fem_physics.h \ - quadrature.h quadrature_clough.h quadrature_conical.h \ - quadrature_gauss.h quadrature_gm.h quadrature_grid.h \ - quadrature_jacobi.h quadrature_monomial.h quadrature_rules.h \ - quadrature_simpson.h quadrature_trap.h \ - derived_rb_construction.h derived_rb_evaluation.h \ - rb_assembly_expansion.h rb_construction.h \ - rb_construction_base.h rb_eim_assembly.h rb_eim_construction.h \ - rb_eim_evaluation.h rb_eim_theta.h rb_evaluation.h \ - rb_parameters.h rb_parametrized.h rb_parametrized_function.h \ - rb_scm_construction.h rb_scm_evaluation.h \ - rb_temporal_discretization.h rb_theta.h rb_theta_expansion.h \ - transient_rb_assembly_expansion.h transient_rb_construction.h \ - transient_rb_evaluation.h transient_rb_theta_expansion.h \ - direct_solution_transfer.h dtk_adapter.h dtk_evaluator.h \ - dtk_solution_transfer.h meshfree_interpolation.h \ - meshfree_solution_transfer.h meshfunction_solution_transfer.h \ - radial_basis_functions.h radial_basis_interpolation.h \ - solution_transfer.h adaptive_time_solver.h diff_solver.h \ - eigen_solver.h eigen_sparse_linear_solver.h \ - eigen_time_solver.h euler2_solver.h euler_solver.h \ - laspack_linear_solver.h linear.h linear_solver.h \ - memory_solution_history.h newton_solver.h \ - no_solution_history.h nonlinear_solver.h \ + face_tri3_subdivision.h face_tri6.h node.h node_elem.h \ + node_range.h plane.h point.h reference_elem.h remote_elem.h \ + side.h sphere.h stored_range.h surface.h abaqus_io.h \ + boundary_info.h boundary_mesh.h checkpoint_io.h diva_io.h \ + ensight_io.h exodusII_io.h exodusII_io_helper.h fro_io.h \ + gmsh_io.h gmv_io.h gnuplot_io.h inf_elem_builder.h \ + legacy_xdr_io.h matlab_io.h medit_io.h mesh.h mesh_base.h \ + mesh_communication.h mesh_data.h mesh_function.h \ + mesh_generation.h mesh_input.h mesh_inserter_iterator.h \ + mesh_modification.h mesh_output.h mesh_refinement.h \ + mesh_serializer.h mesh_smoother.h mesh_smoother_laplace.h \ + mesh_smoother_vsmoother.h mesh_subdivision_support.h \ + mesh_tetgen_interface.h mesh_tetgen_wrapper.h mesh_tools.h \ + mesh_triangle_holes.h mesh_triangle_interface.h \ + mesh_triangle_wrapper.h nemesis_io.h nemesis_io_helper.h \ + off_io.h parallel_mesh.h patch.h postscript_io.h serial_mesh.h \ + tecplot_io.h tetgen_io.h ucd_io.h unstructured_mesh.h unv_io.h \ + vtk_io.h xdr_head.h xdr_io.h xdr_mesh.h xdr_mgf.h xdr_mhead.h \ + xdr_shead.h xdr_soln.h analytic_function.h \ + const_fem_function.h const_function.h coupling_matrix.h \ + dense_matrix.h dense_matrix_base.h dense_submatrix.h \ + dense_subvector.h dense_vector.h dense_vector_base.h \ + distributed_vector.h eigen_core_support.h \ + eigen_preconditioner.h eigen_sparse_matrix.h \ + eigen_sparse_vector.h fem_function_base.h function_base.h \ + laspack_matrix.h laspack_vector.h numeric_vector.h \ + parsed_function.h petsc_macro.h petsc_matrix.h \ + petsc_preconditioner.h petsc_vector.h preconditioner.h \ + raw_accessor.h refinement_selector.h shell_matrix.h \ + sparse_matrix.h sparse_shell_matrix.h sum_shell_matrix.h \ + tensor_shell_matrix.h tensor_tools.h tensor_value.h \ + trilinos_epetra_matrix.h trilinos_epetra_vector.h \ + trilinos_preconditioner.h type_n_tensor.h type_tensor.h \ + type_vector.h vector_value.h wrapped_function.h \ + zero_function.h parallel.h parallel_algebra.h \ + parallel_bin_sorter.h parallel_conversion_utils.h \ + parallel_elem.h parallel_ghost_sync.h parallel_hilbert.h \ + parallel_histogram.h parallel_implementation.h parallel_node.h \ + parallel_object.h parallel_sort.h threads.h \ + threads_allocators.h centroid_partitioner.h \ + hilbert_sfc_partitioner.h linear_partitioner.h \ + metis_csr_graph.h metis_partitioner.h morton_sfc_partitioner.h \ + parmetis_partitioner.h partitioner.h sfc_partitioner.h \ + diff_physics.h diff_qoi.h fem_physics.h quadrature.h \ + quadrature_clough.h quadrature_conical.h quadrature_gauss.h \ + quadrature_gm.h quadrature_grid.h quadrature_jacobi.h \ + quadrature_monomial.h quadrature_rules.h quadrature_simpson.h \ + quadrature_trap.h derived_rb_construction.h \ + derived_rb_evaluation.h rb_assembly_expansion.h \ + rb_construction.h rb_construction_base.h rb_eim_assembly.h \ + rb_eim_construction.h rb_eim_evaluation.h rb_eim_theta.h \ + rb_evaluation.h rb_parameters.h rb_parametrized.h \ + rb_parametrized_function.h rb_scm_construction.h \ + rb_scm_evaluation.h rb_temporal_discretization.h rb_theta.h \ + rb_theta_expansion.h transient_rb_assembly_expansion.h \ + transient_rb_construction.h transient_rb_evaluation.h \ + transient_rb_theta_expansion.h direct_solution_transfer.h \ + dtk_adapter.h dtk_evaluator.h dtk_solution_transfer.h \ + meshfree_interpolation.h meshfree_solution_transfer.h \ + meshfunction_solution_transfer.h radial_basis_functions.h \ + radial_basis_interpolation.h solution_transfer.h \ + adaptive_time_solver.h diff_solver.h eigen_solver.h \ + eigen_sparse_linear_solver.h eigen_time_solver.h \ + euler2_solver.h euler_solver.h laspack_linear_solver.h \ + linear.h linear_solver.h memory_solution_history.h \ + newton_solver.h no_solution_history.h nonlinear_solver.h \ petsc_auto_fieldsplit.h petsc_diff_solver.h \ petsc_dm_nonlinear_solver.h petsc_linear_solver.h \ petsc_nonlinear_solver.h petscdmlibmesh.h slepc_eigen_solver.h \ @@ -1145,7 +1145,7 @@ face_tri.h: $(top_srcdir)/include/geom/face_tri.h face_tri3.h: $(top_srcdir)/include/geom/face_tri3.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ -face_tri3_sd.h: $(top_srcdir)/include/geom/face_tri3_sd.h +face_tri3_subdivision.h: $(top_srcdir)/include/geom/face_tri3_subdivision.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ face_tri6.h: $(top_srcdir)/include/geom/face_tri6.h @@ -1277,7 +1277,7 @@ mesh_smoother_laplace.h: $(top_srcdir)/include/mesh/mesh_smoother_laplace.h mesh_smoother_vsmoother.h: $(top_srcdir)/include/mesh/mesh_smoother_vsmoother.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ -mesh_subdiv_support.h: $(top_srcdir)/include/mesh/mesh_subdiv_support.h +mesh_subdivision_support.h: $(top_srcdir)/include/mesh/mesh_subdivision_support.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ mesh_tetgen_interface.h: $(top_srcdir)/include/mesh/mesh_tetgen_interface.h diff --git a/include/mesh/mesh_subdiv_support.h b/include/mesh/mesh_subdiv_support.h deleted file mode 100644 index 786ace5b702..00000000000 --- a/include/mesh/mesh_subdiv_support.h +++ /dev/null @@ -1,114 +0,0 @@ -// The libMesh Finite Element Library. -// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner - -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. - -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - - -#ifndef LIBMESH_MESH_SUBDIV_SUPPORT_H -#define LIBMESH_MESH_SUBDIV_SUPPORT_H - - - -// Local Includes ----------------------------------- -#include "libmesh/libmesh.h" -#include "libmesh/mesh_base.h" -#include "libmesh/face_tri3_sd.h" -#include "libmesh/elem.h" - -// C++ Includes ----------------------------------- - -namespace libMesh -{ - -// ------------------------------------------------------------ -// MeshTools::Subdiv namespace -namespace MeshTools -{ - /** - * Utility functions for subdivision surface operations on a \p Mesh. - */ - namespace Subdiv - { - /** - * Determines the 1-ring of element \p elem, and writes it to the - * \p nodes vector. This is necessary because subdivision - * elements have a larger local support than conventionally - * interpolated elements. The 1-ring may, for instance, look like - * this: - * \verbatim - * N+4 - N+1 - N+2 - * / \ / \ / \ - * / \ / \ / \ - * N+5 -- N --- 1 -- N+3 - * \ / \ e / \ / - * \ / \ / \ / - * N-1--- 0 --- 2 - * \ /|\ / - * \ / | \ / - * 5--4--3 - * \endverbatim - */ - void find_one_ring(const Tri3SD* elem, std::vector& nodes); - - /** - * Turns a triangulated \p mesh into a subdivision mesh. This - * function normally needn't be called by the user, because it is - * invoked by \p prepare_subdiv_mesh. - */ - void all_subdiv(MeshBase& mesh); - - /** - * Prepares the \p mesh for use with subdivision elements. The - * \p ghosted flag determines how boundaries are treated. If \p false, - * a new layer of "ghost" elements is appended along the domain - * boundaries. If \p true, the outermost element layer is taken as - * ghosts, i.e. no new elements are added. - */ - void prepare_subdiv_mesh(MeshBase& mesh, bool ghosted = false); - - /** - * Adds a new layer of "ghost" elements along the domain boundaries. - * This function normally needn't be called by the user, because it - * is invoked by \p prepare_subdiv_mesh. - */ - void add_boundary_ghosts(MeshBase& mesh); - - /** - * Flags the outermost element layer along the domain boundaries as - * "ghost" elements. This function normally needn't be called by the - * user, because it is invoked by \p prepare_subdiv_mesh. - */ - void tag_boundary_ghosts(MeshBase& mesh); - - /** - * A lookup table for the increment modulo 3 operation, for iterating - * through the three nodes per element in positive direction. - */ - static const unsigned int next[3] = {1,2,0}; - - /** - * A lookup table for the decrement modulo 3 operation, for iterating - * through the three nodes per element in negative direction. - */ - static const unsigned int prev[3] = {2,0,1}; - - } // end namespace Meshtools::Subdiv -} // end namespace MeshTools - -} // namespace libMesh - - -#endif // LIBMESH_MESH_SUBDIV_SUPPORT_H diff --git a/include/mesh/mesh_subdivision_support.h b/include/mesh/mesh_subdivision_support.h new file mode 100644 index 00000000000..f9e328b1aa0 --- /dev/null +++ b/include/mesh/mesh_subdivision_support.h @@ -0,0 +1,114 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + +#ifndef LIBMESH_MESH_SUBDIVISION_SUPPORT_H +#define LIBMESH_MESH_SUBDIVISION_SUPPORT_H + + + +// Local Includes ----------------------------------- +#include "libmesh/libmesh.h" +#include "libmesh/mesh_base.h" +#include "libmesh/face_tri3_subdivision.h" +#include "libmesh/elem.h" + +// C++ Includes ----------------------------------- + +namespace libMesh +{ + +// ------------------------------------------------------------ +// MeshTools::Subdivision namespace +namespace MeshTools +{ +/** + * Utility functions for subdivision surface operations on a \p Mesh. + */ +namespace Subdivision +{ +/** + * Determines the 1-ring of element \p elem, and writes it to the + * \p nodes vector. This is necessary because subdivision + * elements have a larger local support than conventionally + * interpolated elements. The 1-ring may, for instance, look like + * this: + * \verbatim + * N+4 - N+1 - N+2 + * / \ / \ / \ + * / \ / \ / \ + * N+5 -- N --- 1 -- N+3 + * \ / \ e / \ / + * \ / \ / \ / + * N-1--- 0 --- 2 + * \ /|\ / + * \ / | \ / + * 5--4--3 + * \endverbatim + */ +void find_one_ring(const Tri3Subdivision* elem, std::vector& nodes); + +/** + * Turns a triangulated \p mesh into a subdivision mesh. This + * function normally needn't be called by the user, because it is + * invoked by \p prepare_subdivision_mesh. + */ +void all_subdivision(MeshBase& mesh); + +/** + * Prepares the \p mesh for use with subdivision elements. The + * \p ghosted flag determines how boundaries are treated. If \p false, + * a new layer of "ghost" elements is appended along the domain + * boundaries. If \p true, the outermost element layer is taken as + * ghosts, i.e. no new elements are added. + */ +void prepare_subdivision_mesh(MeshBase& mesh, bool ghosted = false); + +/** + * Adds a new layer of "ghost" elements along the domain boundaries. + * This function normally needn't be called by the user, because it + * is invoked by \p prepare_subdivision_mesh. + */ +void add_boundary_ghosts(MeshBase& mesh); + +/** + * Flags the outermost element layer along the domain boundaries as + * "ghost" elements. This function normally needn't be called by the + * user, because it is invoked by \p prepare_subdivision_mesh. + */ +void tag_boundary_ghosts(MeshBase& mesh); + +/** + * A lookup table for the increment modulo 3 operation, for iterating + * through the three nodes per element in positive direction. + */ +static const unsigned int next[3] = {1,2,0}; + +/** + * A lookup table for the decrement modulo 3 operation, for iterating + * through the three nodes per element in negative direction. + */ +static const unsigned int prev[3] = {2,0,1}; + +} // end namespace MeshTools::Subdivision +} // end namespace MeshTools + +} // namespace libMesh + + +#endif // LIBMESH_MESH_SUBDIVISION_SUPPORT_H diff --git a/src/base/dof_map.C b/src/base/dof_map.C index 9b0de9d3181..af273c3dd79 100644 --- a/src/base/dof_map.C +++ b/src/base/dof_map.C @@ -42,7 +42,7 @@ #include "libmesh/sparsity_pattern.h" #include "libmesh/string_to_enum.h" #include "libmesh/threads.h" -#include "libmesh/mesh_subdiv_support.h" +#include "libmesh/mesh_subdivision_support.h" @@ -1746,20 +1746,20 @@ void DofMap::extract_local_vector (const NumericVector& Ug, void DofMap::dof_indices (const Elem* const elem, std::vector& di) const { - START_LOG("dof_indices()", "DofMap"); - libmesh_assert(elem); // Clear the DOF indices vector di.clear(); // Ghost subdivision elements have no real dofs - if (elem->type() == TRI3SD) - { - const Tri3SD* sd_elem = static_cast(elem); - if (sd_elem->is_ghost()) - return; - } + if (elem->type() == TRI3SUBDIVISION) + { + const Tri3Subdivision* sd_elem = static_cast(elem); + if (sd_elem->is_ghost()) + return; + } + + START_LOG("dof_indices()", "DofMap"); const unsigned int n_vars = this->n_variables(); @@ -1775,19 +1775,19 @@ void DofMap::dof_indices (const Elem* const elem, // Determine the nodes contributing to element elem std::vector elem_nodes; - if (elem->type() == TRI3SD) - { - // Subdivision surface FE require the 1-ring around elem - const Tri3SD* sd_elem = static_cast(elem); - MeshTools::Subdiv::find_one_ring(sd_elem, elem_nodes); - } + if (elem->type() == TRI3SUBDIVISION) + { + // Subdivision surface FE require the 1-ring around elem + const Tri3Subdivision* sd_elem = static_cast(elem); + MeshTools::Subdivision::find_one_ring(sd_elem, elem_nodes); + } else - { - // All other FE use only the nodes of elem itself - elem_nodes.resize(elem->n_nodes(), NULL); - for (unsigned int i=0; in_nodes(); i++) - elem_nodes[i] = elem->get_node(i); - } + { + // All other FE use only the nodes of elem itself + elem_nodes.resize(elem->n_nodes(), NULL); + for (unsigned int i=0; in_nodes(); i++) + elem_nodes[i] = elem->get_node(i); + } // Get the dof numbers for (unsigned int v=0; v& di, const unsigned int vn) const { - START_LOG("dof_indices()", "DofMap"); - libmesh_assert(elem); // Clear the DOF indices vector di.clear(); // Ghost subdivision elements have no real dofs - if (elem->type() == TRI3SD) - { - const Tri3SD* sd_elem = static_cast(elem); - if (sd_elem->is_ghost()) - return; - } + if (elem->type() == TRI3SUBDIVISION) + { + const Tri3Subdivision* sd_elem = static_cast(elem); + if (sd_elem->is_ghost()) + return; + } + + START_LOG("dof_indices()", "DofMap"); #ifdef DEBUG // Check that sizes match in DEBUG mode @@ -1860,19 +1860,19 @@ void DofMap::dof_indices (const Elem* const elem, // Determine the nodes contributing to element elem std::vector elem_nodes; - if (elem->type() == TRI3SD) - { - // Subdivision surface FE require the 1-ring around elem - const Tri3SD* sd_elem = static_cast(elem); - MeshTools::Subdiv::find_one_ring(sd_elem, elem_nodes); - } + if (elem->type() == TRI3SUBDIVISION) + { + // Subdivision surface FE require the 1-ring around elem + const Tri3Subdivision* sd_elem = static_cast(elem); + MeshTools::Subdivision::find_one_ring(sd_elem, elem_nodes); + } else - { - // All other FE use only the nodes of elem itself - elem_nodes.resize(elem->n_nodes(), NULL); - for (unsigned int i=0; in_nodes(); i++) - elem_nodes[i] = elem->get_node(i); - } + { + // All other FE use only the nodes of elem itself + elem_nodes.resize(elem->n_nodes(), NULL); + for (unsigned int i=0; in_nodes(); i++) + elem_nodes[i] = elem->get_node(i); + } // Get the dof numbers if(this->variable(vn).type().family == SCALAR) @@ -1936,7 +1936,7 @@ void DofMap::_dof_indices (const Elem* const elem, #ifdef DEBUG // The number of dofs per element is non-static for subdivision FE - if (this->variable(v).type().family == SUBDIV) + if (this->variable(v).type().family == SUBDIVISION) tot_size += elem_nodes.size(); else tot_size += FEInterface::n_dofs(dim,fe_type,type); @@ -2014,7 +2014,7 @@ void DofMap::_dof_indices (const Elem* const elem, } else { - libmesh_assert(!elem->active() || fe_type.family == LAGRANGE || fe_type.family == SUBDIV); + libmesh_assert(!elem->active() || fe_type.family == LAGRANGE || fe_type.family == SUBDIVISION); di.resize(di.size() + nc, DofObject::invalid_id); } } @@ -2136,19 +2136,19 @@ void DofMap::old_dof_indices (const Elem* const elem, // Determine the nodes contributing to element elem std::vector elem_nodes; - if (elem->type() == TRI3SD) - { - // Subdivision surface FE require the 1-ring around elem - const Tri3SD* sd_elem = static_cast(elem); - MeshTools::Subdiv::find_one_ring(sd_elem, elem_nodes); - } + if (elem->type() == TRI3SUBDIVISION) + { + // Subdivision surface FE require the 1-ring around elem + const Tri3Subdivision* sd_elem = static_cast(elem); + MeshTools::Subdivision::find_one_ring(sd_elem, elem_nodes); + } else - { - // All other FE use only the nodes of elem itself - elem_nodes.resize(elem->n_nodes(), NULL); - for (unsigned int i=0; in_nodes(); i++) - elem_nodes[i] = elem->get_node(i); - } + { + // All other FE use only the nodes of elem itself + elem_nodes.resize(elem->n_nodes(), NULL); + for (unsigned int i=0; in_nodes(); i++) + elem_nodes[i] = elem->get_node(i); + } // Get the dof numbers for (unsigned int v=0; v; - +INSTANTIATE_SUBDIVISION_FE; } // namespace libMesh diff --git a/src/fe/fe_abstract.C b/src/fe/fe_abstract.C index 29df45817f6..ac8811ffd41 100644 --- a/src/fe/fe_abstract.C +++ b/src/fe/fe_abstract.C @@ -304,9 +304,9 @@ AutoPtr FEAbstract::build( const unsigned int dim, return ap; } - case SUBDIV: + case SUBDIVISION: { - AutoPtr ap(new FESubdiv(fet)); + AutoPtr ap(new FESubdivision(fet)); return ap; } diff --git a/src/fe/fe_base.C b/src/fe/fe_base.C index cd864e25059..b26b6ad9912 100644 --- a/src/fe/fe_base.C +++ b/src/fe/fe_base.C @@ -420,9 +420,9 @@ FEGenericBase::build (const unsigned int dim, return ap; } - case SUBDIV: + case SUBDIVISION: { - AutoPtr ap(new FESubdiv(fet)); + AutoPtr ap(new FESubdivision(fet)); return ap; } diff --git a/src/fe/fe_boundary.C b/src/fe/fe_boundary.C index 40792f236b1..37eeb5cf0fe 100644 --- a/src/fe/fe_boundary.C +++ b/src/fe/fe_boundary.C @@ -960,7 +960,7 @@ template void FE<2,SZABAB>::reinit(Elem const*, unsigned int, Real, const std::v template void FE<2,SZABAB>::side_map(Elem const*, Elem const*, const unsigned int, const std::vector&, std::vector&); template void FE<2,SZABAB>::edge_reinit(Elem const*, unsigned int, Real, const std::vector* const, const std::vector* const); #endif -template void FE<2,SUBDIV>::reinit(Elem const*, unsigned int, Real, const std::vector* const, const std::vector* const); +template void FE<2,SUBDIVISION>::reinit(Elem const*, unsigned int, Real, const std::vector* const, const std::vector* const); template void FE<2,XYZ>::reinit(Elem const*, unsigned int, Real, const std::vector* const, const std::vector* const); template void FE<2,XYZ>::side_map(Elem const*, Elem const*, const unsigned int, const std::vector&, std::vector&); template void FE<2,XYZ>::edge_reinit(Elem const*, unsigned int, Real, const std::vector* const, const std::vector* const); diff --git a/src/fe/fe_interface.C b/src/fe/fe_interface.C index bf27ff5bb2e..a4bf4d846f3 100644 --- a/src/fe/fe_interface.C +++ b/src/fe/fe_interface.C @@ -64,9 +64,9 @@ FEInterface::FEInterface() prefix FE::func_and_args suffix \ case XYZ: \ prefix FEXYZ::func_and_args suffix \ - case SUBDIV: \ + case SUBDIVISION: \ libmesh_assert_equal_to (dim, 2); \ - prefix FE<2,SUBDIV>::func_and_args suffix \ + prefix FE<2,SUBDIVISION>::func_and_args suffix \ default: \ libmesh_error(); \ } \ @@ -100,9 +100,9 @@ FEInterface::FEInterface() prefix FE::func_and_args suffix \ case XYZ: \ prefix FEXYZ::func_and_args suffix \ - case SUBDIV: \ + case SUBDIVISION: \ libmesh_assert_equal_to (dim, 2); \ - prefix FE<2,SUBDIV>::func_and_args suffix \ + prefix FE<2,SUBDIVISION>::func_and_args suffix \ case NEDELEC_ONE: \ prefix FENedelecOne::func_and_args suffix \ default: \ @@ -136,9 +136,9 @@ FEInterface::FEInterface() prefix FE::func_and_args suffix \ case XYZ: \ prefix FEXYZ::func_and_args suffix \ - case SUBDIV: \ + case SUBDIVISION: \ libmesh_assert_equal_to (dim, 2); \ - prefix FE<2,SUBDIV>::func_and_args suffix \ + prefix FE<2,SUBDIVISION>::func_and_args suffix \ case LAGRANGE_VEC: \ case NEDELEC_ONE: \ libMesh::err << "Error: Can only request scalar valued elements for Real FEInterface::func_and_args" \ @@ -168,7 +168,7 @@ FEInterface::FEInterface() case BERNSTEIN: \ case SZABAB: \ case XYZ: \ - case SUBDIV: \ + case SUBDIVISION: \ libMesh::err << "Error: Can only request vector valued elements for RealGradient FEInterface::shape" \ << std::endl; \ libmesh_error(); \ @@ -200,9 +200,9 @@ FEInterface::FEInterface() prefix FE::func_and_args suffix \ case XYZ: \ prefix FEXYZ::func_and_args suffix \ - case SUBDIV: \ + case SUBDIVISION: \ libmesh_assert_equal_to (dim, 2); \ - prefix FE<2,SUBDIV>::func_and_args suffix \ + prefix FE<2,SUBDIVISION>::func_and_args suffix \ default: \ libmesh_error(); \ } \ @@ -232,9 +232,9 @@ FEInterface::FEInterface() prefix FE::func_and_args suffix \ case XYZ: \ prefix FEXYZ::func_and_args suffix \ - case SUBDIV: \ + case SUBDIVISION: \ libmesh_assert_equal_to (dim, 2); \ - prefix FE<2,SUBDIV>::func_and_args suffix \ + prefix FE<2,SUBDIVISION>::func_and_args suffix \ case NEDELEC_ONE: \ prefix FENedelecOne::func_and_args suffix \ default: \ @@ -264,9 +264,9 @@ FEInterface::FEInterface() prefix FE::func_and_args suffix \ case XYZ: \ prefix FEXYZ::func_and_args suffix \ - case SUBDIV: \ + case SUBDIVISION: \ libmesh_assert_equal_to (dim, 2); \ - prefix FE<2,SUBDIV>::func_and_args suffix \ + prefix FE<2,SUBDIVISION>::func_and_args suffix \ case LAGRANGE_VEC: \ case NEDELEC_ONE: \ libMesh::err << "Error: Can only request scalar valued elements for Real FEInterface::func_and_args" \ @@ -294,7 +294,7 @@ FEInterface::FEInterface() case MONOMIAL: \ case SCALAR: \ case XYZ: \ - case SUBDIV: \ + case SUBDIVISION: \ libMesh::err << "Error: Can only request vector valued elements for RealGradient FEInterface::func_and_args" \ << std::endl; \ libmesh_error(); \ @@ -1324,10 +1324,10 @@ unsigned int FEInterface::max_order(const FEType& fe_t, return unknown; } break; - case SUBDIV: + case SUBDIVISION: switch (el_t) { - case TRI3SD: + case TRI3SUBDIVISION: return unlimited; default: return unknown; @@ -1363,7 +1363,7 @@ bool FEInterface::extra_hanging_dofs(const FEType& fe_t) case MONOMIAL: case L2_HIERARCHIC: case XYZ: - case SUBDIV: + case SUBDIVISION: case LAGRANGE_VEC: case NEDELEC_ONE: return false; diff --git a/src/fe/fe_lagrange.C b/src/fe/fe_lagrange.C index 2208ebbadf1..9b7aab1407a 100644 --- a/src/fe/fe_lagrange.C +++ b/src/fe/fe_lagrange.C @@ -349,7 +349,7 @@ unsigned int lagrange_n_dofs(const ElemType t, const Order o) return 2; case TRI3: - case TRI3SD: + case TRI3SUBDIVISION: case TRI6: return 3; @@ -486,7 +486,7 @@ unsigned int lagrange_n_dofs_at_node(const ElemType t, } case TRI3: - case TRI3SD: + case TRI3SUBDIVISION: case TRI6: { switch (n) diff --git a/src/fe/fe_map.C b/src/fe/fe_map.C index f81cbbf0807..8da8273c738 100644 --- a/src/fe/fe_map.C +++ b/src/fe/fe_map.C @@ -29,7 +29,7 @@ #include "libmesh/fe_macro.h" #include "libmesh/fe_map.h" #include "libmesh/fe_xyz_map.h" -#include "libmesh/mesh_subdiv_support.h" +#include "libmesh/mesh_subdivision_support.h" namespace libMesh { @@ -815,20 +815,20 @@ void FEMap::compute_map(const unsigned int dim, // Determine the nodes contributing to element elem std::vector elem_nodes; - if (elem->type() == TRI3SD) - { - // Subdivision surface FE require the 1-ring around elem - libmesh_assert_equal_to (dim, 2); - const Tri3SD* sd_elem = static_cast(elem); - MeshTools::Subdiv::find_one_ring(sd_elem, elem_nodes); - } + if (elem->type() == TRI3SUBDIVISION) + { + // Subdivision surface FE require the 1-ring around elem + libmesh_assert_equal_to (dim, 2); + const Tri3Subdivision* sd_elem = static_cast(elem); + MeshTools::Subdivision::find_one_ring(sd_elem, elem_nodes); + } else - { - // All other FE use only the nodes of elem itself - elem_nodes.resize(elem->n_nodes(), NULL); - for (unsigned int i=0; in_nodes(); i++) - elem_nodes[i] = elem->get_node(i); - } + { + // All other FE use only the nodes of elem itself + elem_nodes.resize(elem->n_nodes(), NULL); + for (unsigned int i=0; in_nodes(); i++) + elem_nodes[i] = elem->get_node(i); + } // Compute map at all quadrature points for (unsigned int p=0; p!=n_qp; p++) @@ -1397,7 +1397,8 @@ INSTANTIATE_ALL_MAPS(1); INSTANTIATE_ALL_MAPS(2); INSTANTIATE_ALL_MAPS(3); -// subdivision elements are implemented only for 2D meshes -INSTANTIATE_MAPS(2,SUBDIV); +// subdivision elements are implemented only for 2D meshes & reimplement +// the inverse_maps method separately +INSTANTIATE_SUBDIVISION_MAPS; } // namespace libMesh diff --git a/src/fe/fe_subdiv_2D.C b/src/fe/fe_subdiv_2D.C deleted file mode 100644 index 126c230063a..00000000000 --- a/src/fe/fe_subdiv_2D.C +++ /dev/null @@ -1,928 +0,0 @@ -// The libMesh Finite Element Library. -// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner - -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. - -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -// Local includes -#include "libmesh/fe.h" -#include "libmesh/libmesh_logging.h" -#include "libmesh/fe_type.h" -#include "libmesh/quadrature.h" -#include "libmesh/face_tri3_sd.h" -#include "libmesh/fe_macro.h" -#include "libmesh/dense_matrix.h" -#include "libmesh/utility.h" - - -namespace libMesh -{ - -FESubdiv::FESubdiv(const FEType& fet) : - FE<2,SUBDIV>(fet) -{ - // Only 2D meshes in 3D space are supported - libmesh_assert_equal_to(LIBMESH_DIM, 3); -} - - - -void FESubdiv::init_subdiv_matrix(DenseMatrix &A, - unsigned int valence) -{ - A.resize(valence + 12, valence + 12); - - // A = (S11 0; S21 S22), see Cirak et al., - // Int. J. Numer. Meth. Engng. 2000; 47:2039-2072, Appendix A.2. - - // First, set the static S21 part - A(valence+ 1,0 ) = 0.125; - A(valence+ 1,1 ) = 0.375; - A(valence+ 1,valence ) = 0.375; - A(valence+ 2,0 ) = 0.0625; - A(valence+ 2,1 ) = 0.625; - A(valence+ 2,2 ) = 0.0625; - A(valence+ 2,valence ) = 0.0625; - A(valence+ 3,0 ) = 0.125; - A(valence+ 3,1 ) = 0.375; - A(valence+ 3,2 ) = 0.375; - A(valence+ 4,0 ) = 0.0625; - A(valence+ 4,1 ) = 0.0625; - A(valence+ 4,valence-1) = 0.0625; - A(valence+ 4,valence ) = 0.625; - A(valence+ 5,0 ) = 0.125; - A(valence+ 5,valence-1) = 0.375; - A(valence+ 5,valence ) = 0.375; - A(valence+ 6,1 ) = 0.375; - A(valence+ 6,valence ) = 0.125; - A(valence+ 7,1 ) = 0.375; - A(valence+ 8,1 ) = 0.375; - A(valence+ 8,2 ) = 0.125; - A(valence+ 9,1 ) = 0.125; - A(valence+ 9,valence ) = 0.375; - A(valence+10,valence ) = 0.375; - A(valence+11,valence-1) = 0.125; - A(valence+11,valence ) = 0.375; - - // Next, set the static S22 part - A(valence+ 1,valence+1) = 0.125; - A(valence+ 2,valence+1) = 0.0625; - A(valence+ 2,valence+2) = 0.0625; - A(valence+ 2,valence+3) = 0.0625; - A(valence+ 3,valence+3) = 0.125; - A(valence+ 4,valence+1) = 0.0625; - A(valence+ 4,valence+4) = 0.0625; - A(valence+ 4,valence+5) = 0.0625; - A(valence+ 5,valence+5) = 0.125; - A(valence+ 6,valence+1) = 0.375; - A(valence+ 6,valence+2) = 0.125; - A(valence+ 7,valence+1) = 0.125; - A(valence+ 7,valence+2) = 0.375; - A(valence+ 7,valence+3) = 0.125; - A(valence+ 8,valence+2) = 0.125; - A(valence+ 8,valence+3) = 0.375; - A(valence+ 9,valence+1) = 0.375; - A(valence+ 9,valence+4) = 0.125; - A(valence+10,valence+1) = 0.125; - A(valence+10,valence+4) = 0.375; - A(valence+10,valence+5) = 0.125; - A(valence+11,valence+4) = 0.125; - A(valence+11,valence+5) = 0.375; - - // Last, set the S11 part: first row - std::vector weights; - loop_subdiv_mask(weights, valence); - for (unsigned int i = 0; i <= valence; ++i) - A(0,i) = weights[i]; - - // second row - A(1,0) = 0.375; - A(1,1) = 0.375; - A(1,2) = 0.125; - A(1,valence) = 0.125; - - // third to second-to-last rows - for (unsigned int i = 2; i < valence; ++i) - { - A(i,0 ) = 0.375; - A(i,i-1) = 0.125; - A(i,i ) = 0.375; - A(i,i+1) = 0.125; - } - - // last row - A(valence,0) = 0.375; - A(valence,1) = 0.125; - A(valence,valence-1) = 0.125; - A(valence,valence ) = 0.375; -} - - - -Real FESubdiv::regular_shape(const unsigned int i, - const Real v, - const Real w) -{ - // These are the 12 quartic box splines, see Cirak et al., - // Int. J. Numer. Meth. Engng. 2000; 47:2039-2072, Appendix A.1. - - const Real u = 1 - v - w; - libmesh_assert_less_equal(0, v); - libmesh_assert_less_equal(0, w); - libmesh_assert_less_equal(0, u); - - using Utility::pow; - const Real factor = 1. / 12; - - switch (i) - { - case 0: - return factor*(pow<4>(u) + 2*u*u*u*v); - case 1: - return factor*(pow<4>(u) + 2*u*u*u*w); - case 2: - return factor*(pow<4>(u) + 2*u*u*u*w + 6*u*u*u*v + 6*u*u*v*w + 12*u*u*v*v + 6*u*v*v*w + 6*u*v*v*v + - 2*v*v*v*w + pow<4>(v)); - case 3: - return factor*(6*pow<4>(u) + 24*u*u*u*w + 24*u*u*w*w + 8*u*w*w*w + pow<4>(w) + 24*u*u*u*v + - 60*u*u*v*w + 36*u*v*w*w + 6*v*w*w*w + 24*u*u*v*v + 36*u*v*v*w + 12*v*v*w*w + 8*u*v*v*v + - 6*v*v*v*w + pow<4>(v)); - case 4: - return factor*(pow<4>(u) + 6*u*u*u*w + 12*u*u*w*w + 6*u*w*w*w + pow<4>(w) + 2*u*u*u*v + 6*u*u*v*w + - 6*u*v*w*w + 2*v*w*w*w); - case 5: - return factor*(2*u*v*v*v + pow<4>(v)); - case 6: - return factor*(pow<4>(u) + 6*u*u*u*w + 12*u*u*w*w + 6*u*w*w*w + pow<4>(w) + 8*u*u*u*v + 36*u*u*v*w + - 36*u*v*w*w + 8*v*w*w*w + 24*u*u*v*v + 60*u*v*v*w + 24*v*v*w*w + 24*u*v*v*v + 24*v*v*v*w + 6*pow<4>(v)); - case 7: - return factor*(pow<4>(u) + 8*u*u*u*w + 24*u*u*w*w + 24*u*w*w*w + 6*pow<4>(w) + 6*u*u*u*v + 36*u*u*v*w + - 60*u*v*w*w + 24*v*w*w*w + 12*u*u*v*v + 36*u*v*v*w + 24*v*v*w*w + 6*u*v*v*v + 8*v*v*v*w + pow<4>(v)); - case 8: - return factor*(2*u*w*w*w + pow<4>(w)); - case 9: - return factor*(2*v*v*v*w + pow<4>(v)); - case 10: - return factor*(2*u*w*w*w + pow<4>(w) + 6*u*v*w*w + 6*v*w*w*w + 6*u*v*v*w + 12*v*v*w*w + 2*u*v*v*v + - 6*v*v*v*w + pow<4>(v)); - case 11: - return factor*(pow<4>(w) + 2*v*w*w*w); - - default: - libmesh_error(); - } - - libmesh_error(); - return 0.; -} - - - -Real FESubdiv::regular_shape_deriv(const unsigned int i, - const unsigned int j, - const Real v, - const Real w) -{ - const Real u = 1 - v - w; - const Real factor = 1. / 12; - - switch (j) // j=0: xi-directional derivative, j=1: eta-directional derivative - { - case 0: // xi derivatives - { - switch (i) // shape function number - { - case 0: - return factor*(-6*v*u*u - 2*u*u*u); - case 1: - return factor*(-4*u*u*u - 6*u*u*w); - case 2: - return factor*(-2*v*v*v - 6*v*v*u + 6*v*u*u + 2*u*u*u); - case 3: - return factor*(-4*v*v*v - 24*v*v*u - 24*v*u*u - 18*v*v*w - 48*v*u*w - 12*u*u*w - - 12*v*w*w - 12*u*w*w - 2*w*w*w); - case 4: - return factor*(-6*v*u*u - 2*u*u*u - 12*v*u*w-12*u*u*w - 6*v*w*w - 18*u*w*w - 4*w*w*w); - case 5: - return factor*(2*v*v*v + 6*v*v*u); - case 6: - return factor*(24*v*v*u + 24*v*u*u + 4*u*u*u + 12*v*v*w + 48*v*u*w + 18*u*u*w + - 12*v*w*w + 12*u*w*w + 2*w*w*w); - case 7: - return factor*(-2*v*v*v - 6*v*v*u + 6*v*u*u + 2*u*u*u - 12*v*v*w + 12*u*u*w - - 12*v*w*w + 12*u*w*w); - case 8: - return -w*w*w/6; - case 9: - return factor*(4*v*v*v + 6*v*v*w); - case 10: - return factor*(2*v*v*v + 6*v*v*u + 12*v*v*w + 12*v*u*w + 18*v*w*w + 6*u*w*w + 4*w*w*w); - case 11: - return w*w*w/6; - default: - libmesh_error(); - } - } - case 1: // eta derivatives - { - switch (i) // shape function number - { - case 0: - return factor*(-6*v*u*u - 4*u*u*u); - case 1: - return factor*(-2*u*u*u - 6*u*u*w); - case 2: - return factor*(-4*v*v*v - 18*v*v*u - 12*v*u*u - 2*u*u*u - 6*v*v*w - 12*v*u*w - - 6*u*u*w); - case 3: - return factor*(-2*v*v*v-12*v*v*u - 12*v*u*u - 12*v*v*w - 48*v*u*w - 24*u*u*w - - 18*v*w*w - 24*u*w*w - 4*w*w*w); - case 4: - return factor*(2*u*u*u + 6*u*u*w - 6*u*w*w - 2*w*w*w); - case 5: - return -v*v*v/6; - case 6: - return factor*(12*v*v*u + 12*v*u*u + 2*u*u*u - 12*v*v*w + 6*u*u*w - 12*v*w*w - - 6*u*w*w - 2*w*w*w); - case 7: - return factor*(2*v*v*v + 12*v*v*u + 18*v*u*u + 4*u*u*u + 12*v*v*w + 48*v*u*w + - 24*u*u*w + 12*v*w*w + 24*u*w*w); - case 8: - return factor*(6*u*w*w + 2*w*w*w); - case 9: - return v*v*v/6; - case 10: - return factor*(4*v*v*v + 6*v*v*u + 18*v*v*w + 12*v*u*w + 12*v*w*w + 6*u*w*w + - 2*w*w*w); - case 11: - return factor*(6*v*w*w + 4*w*w*w); - default: - libmesh_error(); - } - } - default: - libmesh_error(); - } - - libmesh_error(); - return 0.; -} - - - -Real FESubdiv::regular_shape_second_deriv(const unsigned int i, - const unsigned int j, - const Real v, - const Real w) -{ - const Real u = 1 - v - w; - const Real factor = 1. / 12; - - switch (j) - { - case 0: // xi-xi derivative - { - switch (i) // shape function number - { - case 0: - return v*u; - case 1: - return u*u + u*w; - case 2: - return -2*v*u; - case 3: - return v*v - 2*u*u + v*w - 2*u*w; - case 4: - return v*u + v*w + u*w + w*w; - case 5: - return v*u; - case 6: - return factor*(-24*v*v + 12*u*u - 24*v*w + 12*u*w); - case 7: - return -2*v*u - 2*v*w - 2*u*w - 2*w*w; - case 8: - return 0.; - case 9: - return v*v + v*w; - case 10: - return v*u + v*w + u*w + w*w; - case 11: - return 0.; - default: - libmesh_error(); - } - } - case 1: //eta-xi derivative - { - switch (i) - { - case 0: - return factor*(12*v*u + 6*u*u); - case 1: - return factor*(6*u*u + 12*u*w); - case 2: - return factor*(6*v*v - 12*v*u - 6*u*u); - case 3: - return factor*(6*v*v - 12*u*u + 24*v*w + 6*w*w); - case 4: - return factor*(-6*u*u - 12*u*w + 6*w*w); - case 5: - return -v*v/2.; - case 6: - return factor*(-12*v*v + 6*u*u - 24*v*w - 12*u*w - 6*w*w); - case 7: - return factor*(-6*v*v - 12*v*u + 6*u*u - 24*v*w - 12*w*w); - case 8: - return -w*w/2.; - case 9: - return v*v/2.; - case 10: - return factor*(6*v*v + 12*v*u + 24*v*w + 12*u*w + 6*w*w); - case 11: - return w*w/2.; - default: - libmesh_error(); - } - } - case 2: // eta-eta derivative - { - switch (i) - { - case 0: - return v*u + u*u; - case 1: - return u*w; - case 2: - return v*v + v*u + v*w + u*w; - case 3: - return -2*v*u - 2*u*u + v*w + w*w; - case 4: - return -2*u*w; - case 5: - return 0.; - case 6: - return -2*v*v - 2*v*u - 2*v*w - 2*u*w; - case 7: - return v*u + u*u - 2*v*w - 2*w*w; - case 8: - return u*w; - case 9: - return 0.; - case 10: - return v*v + v*u + v*w + u*w; - case 11: - return v*w + w*w; - default: - libmesh_error(); - } - } - default: - libmesh_error(); - } - - libmesh_error(); - return 0.; -} - - - -void FESubdiv::loop_subdiv_mask(std::vector & weights, - const unsigned int valence) -{ - libmesh_assert_greater(valence, 0); - const Real cs = std::cos(2 * libMesh::pi / valence); - const Real nb_weight = (0.625 - Utility::pow<2>(0.375 + 0.25 * cs)) / valence; - weights.resize(1 + valence, nb_weight); - weights[0] = 1.0 - valence * nb_weight; -} - - - -void FESubdiv::init_shape_functions(const std::vector &qp, - const Elem *elem) -{ - libmesh_assert(elem); - libmesh_assert_equal_to(elem->type(), TRI3SD); - const Tri3SD* sd_elem = static_cast(elem); - - START_LOG("init_shape_functions()", "FESubdiv"); - - calculations_started = true; - - // If the user forgot to request anything, we'll be safe and calculate everything: - if (!calculate_phi && !calculate_dphi && !calculate_d2phi) - calculate_phi = calculate_dphi = calculate_d2phi = true; - - const unsigned int valence = sd_elem->get_ordered_valence(0); - const unsigned int n_qp = qp.size(); - const unsigned int n_approx_shape_functions = valence + 6; - - // resize the vectors to hold current data - phi.resize (n_approx_shape_functions); - dphi.resize (n_approx_shape_functions); - dphidxi.resize (n_approx_shape_functions); - dphideta.resize (n_approx_shape_functions); - d2phi.resize (n_approx_shape_functions); - d2phidxi2.resize (n_approx_shape_functions); - d2phidxideta.resize(n_approx_shape_functions); - d2phideta2.resize (n_approx_shape_functions); - - for (unsigned int i = 0; i < n_approx_shape_functions; ++i) - { - phi[i].resize (n_qp); - dphi[i].resize (n_qp); - dphidxi[i].resize (n_qp); - dphideta[i].resize (n_qp); - d2phi[i].resize (n_qp); - d2phidxi2[i].resize (n_qp); - d2phidxideta[i].resize(n_qp); - d2phideta2[i].resize (n_qp); - } - - // Renumbering of the shape functions - static const unsigned int cvi[12] = {3,6,2,0,1,4,7,10,9,5,11,8}; - - if (valence == 6) // This means that all vertices are regular, i.e. we have 12 shape functions - { - for (unsigned int i = 0; i < n_approx_shape_functions; ++i) - { - for (unsigned int p = 0; p < n_qp; ++p) - { - phi[i][p] = FE<2,SUBDIV>::shape (elem, fe_type.order, cvi[i], qp[p]); - dphidxi[i][p] = FE<2,SUBDIV>::shape_deriv (elem, fe_type.order, cvi[i], 0, qp[p]); - dphideta[i][p] = FE<2,SUBDIV>::shape_deriv (elem, fe_type.order, cvi[i], 1, qp[p]); - dphi[i][p](0) = dphidxi[i][p]; - dphi[i][p](1) = dphideta[i][p]; - d2phidxi2[i][p] = FE<2,SUBDIV>::shape_second_deriv(elem, fe_type.order, cvi[i], 0, qp[p]); - d2phidxideta[i][p] = FE<2,SUBDIV>::shape_second_deriv(elem, fe_type.order, cvi[i], 1, qp[p]); - d2phideta2[i][p] = FE<2,SUBDIV>::shape_second_deriv(elem, fe_type.order, cvi[i], 2, qp[p]); - d2phi[i][p](0,0) = d2phidxi2[i][p]; - d2phi[i][p](0,1) = d2phi[i][p](1,0) = d2phidxideta[i][p]; - d2phi[i][p](1,1) = d2phideta2[i][p]; - } - } - } - else // vertex 0 is irregular by construction of the mesh - { - static const Real eps = 1e-10; - - // temporary values - std::vector tphi(12); - std::vector tdphidxi(12); - std::vector tdphideta(12); - std::vector td2phidxi2(12); - std::vector td2phidxideta(12); - std::vector td2phideta2(12); - - for (unsigned int p = 0; p < n_qp; ++p) - { - // evaluate the number of the required subdivisions - Real v = qp[p](0); - Real w = qp[p](1); - Real u = 1 - v - w; - Real min = 0, max = 0.5; - int n = 0; - while (!(u > min-eps && u < max+eps)) - { - ++n; - min = max; - max += std::pow((Real)(2), -n-1); - } - - // transform u, v and w according to the number of subdivisions required. - const Real pow2 = std::pow((Real)(2), n); - v *= pow2; - w *= pow2; - u = 1 - v - w; - libmesh_assert_less(u, 0.5 + eps); - libmesh_assert_greater(u, -eps); - - // find out in which subdivided patch we are and setup the "selection matrix" P and the transformation Jacobian - // (see Int. J. Numer. Meth. Engng. 2000; 47:2039-2072, Appendix A.2.) - const int k = n+1; - Real jfac; // the additional factor per derivative order - DenseMatrix P(12, valence+12); - if (v > 0.5 - eps) - { - v = 2*v - 1; - w = 2*w; - jfac = std::pow((Real)(2), k); - P( 0,2 ) = 1; - P( 1,0 ) = 1; - P( 2,valence+3) = 1; - P( 3,1 ) = 1; - P( 4,valence ) = 1; - P( 5,valence+8) = 1; - P( 6,valence+2) = 1; - P( 7,valence+1) = 1; - P( 8,valence+4) = 1; - P( 9,valence+7) = 1; - P(10,valence+6) = 1; - P(11,valence+9) = 1; - } - else if (w > 0.5 - eps) - { - v = 2*v; - w = 2*w - 1; - jfac = std::pow((Real)(2), k); - P( 0,0 ) = 1; - P( 1,valence- 1) = 1; - P( 2,1 ) = 1; - P( 3,valence ) = 1; - P( 4,valence+ 5) = 1; - P( 5,valence+ 2) = 1; - P( 6,valence+ 1) = 1; - P( 7,valence+ 4) = 1; - P( 8,valence+11) = 1; - P( 9,valence+ 6) = 1; - P(10,valence+ 9) = 1; - P(11,valence+10) = 1; - } - else - { - v = 1 - 2*v; - w = 1 - 2*w; - jfac = std::pow((Real)(-2), k); - P( 0,valence+9) = 1; - P( 1,valence+6) = 1; - P( 2,valence+4) = 1; - P( 3,valence+1) = 1; - P( 4,valence+2) = 1; - P( 5,valence+5) = 1; - P( 6,valence ) = 1; - P( 7,1 ) = 1; - P( 8,valence+3) = 1; - P( 9,valence-1) = 1; - P(10,0 ) = 1; - P(11,2 ) = 1; - } - - u = 1 - v - w; - if ((u > 1 + eps) || (u < -eps)) - { - std::cout << "SUBDIV irregular patch: u is outside valid range!\n"; - libmesh_error(); - } - - DenseMatrix A; - init_subdiv_matrix(A, valence); - - // compute P*A^k - if (k > 1) - { - DenseMatrix Acopy(A); - for (int e = 1; e < k; ++e) - A.right_multiply(Acopy); - } - P.right_multiply(A); - - const Point transformed_p(v,w); - - for (unsigned int i = 0; i < 12; ++i) - { - tphi[i] = FE<2,SUBDIV>::shape (elem, fe_type.order, i, transformed_p); - tdphidxi[i] = FE<2,SUBDIV>::shape_deriv (elem, fe_type.order, i, 0, transformed_p); - tdphideta[i] = FE<2,SUBDIV>::shape_deriv (elem, fe_type.order, i, 1, transformed_p); - td2phidxi2[i] = FE<2,SUBDIV>::shape_second_deriv(elem, fe_type.order, i, 0, transformed_p); - td2phidxideta[i] = FE<2,SUBDIV>::shape_second_deriv(elem, fe_type.order, i, 1, transformed_p); - td2phideta2[i] = FE<2,SUBDIV>::shape_second_deriv(elem, fe_type.order, i, 2, transformed_p); - } - - // Finally, we can compute the irregular shape functions as the product of P - // and the regular shape functions: - Real sum1, sum2, sum3, sum4, sum5, sum6; - for (unsigned int j = 0; j < n_approx_shape_functions; ++j) - { - sum1 = sum2 = sum3 = sum4 = sum5 = sum6 = 0; - for (unsigned int i = 0; i < 12; ++i) - { - sum1 += P(i,j) * tphi[i]; - sum2 += P(i,j) * tdphidxi[i]; - sum3 += P(i,j) * tdphideta[i]; - sum4 += P(i,j) * td2phidxi2[i]; - sum5 += P(i,j) * td2phidxideta[i]; - sum6 += P(i,j) * td2phideta2[i]; - } - phi[j][p] = sum1; - dphidxi[j][p] = sum2 * jfac; - dphideta[j][p] = sum3 * jfac; - dphi[j][p](0) = dphidxi[j][p]; - dphi[j][p](1) = dphideta[j][p]; - d2phidxi2[j][p] = sum4 * jfac * jfac; - d2phidxideta[j][p] = sum5 * jfac * jfac; - d2phideta2[j][p] = sum6 * jfac * jfac; - d2phi[j][p](0,0) = d2phidxi2[j][p]; - d2phi[j][p](0,1) = d2phi[j][p](1,0) = d2phidxideta[j][p]; - d2phi[j][p](1,1) = d2phideta2[j][p]; - } - } // end quadrature loop - } // end irregular vertex - - // Let the FEMap use the same initialized shape functions - this->_fe_map->get_phi_map() = phi; - this->_fe_map->get_dphidxi_map() = dphidxi; - this->_fe_map->get_dphideta_map() = dphideta; - this->_fe_map->get_d2phidxi2_map() = d2phidxi2; - this->_fe_map->get_d2phideta2_map() = d2phideta2; - this->_fe_map->get_d2phidxideta_map() = d2phidxideta; - - STOP_LOG("init_shape_functions()", "FESubdiv"); -} - - - -void FESubdiv::attach_quadrature_rule(QBase *q) -{ - libmesh_assert(q); - - qrule = q; - // make sure we don't cache results from a previous quadrature rule - elem_type = INVALID_ELEM; - return; -} - - - -void FESubdiv::reinit(const Elem* elem, - const std::vector* const pts, - const std::vector* const) -{ - libmesh_assert(elem); - libmesh_assert_equal_to(elem->type(), TRI3SD); - const Tri3SD* sd_elem = static_cast(elem); - - START_LOG("reinit()", "FESubdiv"); - - libmesh_assert(!sd_elem->is_ghost()); - libmesh_assert(sd_elem->is_subdiv_updated()); - - // check if vertices 1 and 2 are regular - libmesh_assert_equal_to(sd_elem->get_ordered_valence(1), 6); - libmesh_assert_equal_to(sd_elem->get_ordered_valence(2), 6); - - // no custom quadrature support - libmesh_assert_equal_to(pts, NULL); - libmesh_assert(qrule); - qrule->init(elem->type()); - - // Initialize the shape functions - this->init_shape_functions(this->qrule->get_points(), elem); - - // The shape functions correspond to the qrule - shapes_on_quadrature = true; - - // Compute the map for this element. - this->_fe_map->compute_map (this->dim, this->qrule->get_weights(), elem); - - STOP_LOG("reinit()", "FESubdiv"); -} - - - -template <> -Real FE<2,SUBDIV>::shape(const ElemType type, - const Order order, - const unsigned int i, - const Point& p) -{ - switch (order) - { - case FOURTH: - { - switch (type) - { - case TRI3SD: - libmesh_assert_less(i, 12); - return FESubdiv::regular_shape(i,p(0),p(1)); - default: - std::cerr << "ERROR: Unsupported element type!" << std::endl; - libmesh_error(); - } - } - default: - std::cerr << "ERROR: Unsupported polynomial order!" << std::endl; - libmesh_error(); - } - - libmesh_error(); - return 0.; -} - - - -template <> -Real FE<2,SUBDIV>::shape(const Elem* elem, - const Order order, - const unsigned int i, - const Point& p) -{ - libmesh_assert(elem); - return FE<2,SUBDIV>::shape(elem->type(), order, i, p); -} - - - -template <> -Real FE<2,SUBDIV>::shape_deriv(const ElemType type, - const Order order, - const unsigned int i, - const unsigned int j, - const Point& p) -{ - switch (order) - { - case FOURTH: - { - switch (type) - { - case TRI3SD: - libmesh_assert_less(i, 12); - return FESubdiv::regular_shape_deriv(i,j,p(0),p(1)); - default: - std::cerr << "ERROR: Unsupported element type!" << std::endl; - libmesh_error(); - } - } - default: - std::cerr << "ERROR: Unsupported polynomial order!" << std::endl; - libmesh_error(); - } - - libmesh_error(); - return 0.; -} - - - -template <> -Real FE<2,SUBDIV>::shape_deriv(const Elem* elem, - const Order order, - const unsigned int i, - const unsigned int j, - const Point& p) -{ - libmesh_assert(elem); - return FE<2,SUBDIV>::shape_deriv(elem->type(), order, i, j, p); -} - - - -template <> -Real FE<2,SUBDIV>::shape_second_deriv(const ElemType type, - const Order order, - const unsigned int i, - const unsigned int j, - const Point& p) -{ - switch (order) - { - case FOURTH: - { - switch (type) - { - case TRI3SD: - libmesh_assert_less(i, 12); - return FESubdiv::regular_shape_second_deriv(i,j,p(0),p(1)); - default: - std::cerr << "ERROR: Unsupported element type!" << std::endl; - libmesh_error(); - } - } - default: - std::cerr << "ERROR: Unsupported polynomial order!" << std::endl; - libmesh_error(); - } - - libmesh_error(); - return 0.; -} - - - -template <> -Real FE<2,SUBDIV>::shape_second_deriv(const Elem* elem, - const Order order, - const unsigned int i, - const unsigned int j, - const Point& p) -{ - libmesh_assert(elem); - return FE<2,SUBDIV>::shape_second_deriv(elem->type(), order, i, j, p); -} - - - -template <> -void FE<2,SUBDIV>::nodal_soln(const Elem* elem, - const Order, - const std::vector& elem_soln, - std::vector& nodal_soln) -{ - libmesh_assert(elem); - libmesh_assert_equal_to(elem->type(), TRI3SD); - const Tri3SD* sd_elem = static_cast(elem); - - nodal_soln.resize(3); // three nodes per element - - // Ghost nodes are auxiliary. - if (sd_elem->is_ghost()) - { - nodal_soln[0] = 0; - nodal_soln[1] = 0; - nodal_soln[2] = 0; - return; - } - - // First node (node 0 in the element patch): - unsigned int j = sd_elem->local_node_number(sd_elem->get_ordered_node(0)->id()); - nodal_soln[j] = elem_soln[0]; - - // Second node (node 1 in the element patch): - j = sd_elem->local_node_number(sd_elem->get_ordered_node(1)->id()); - nodal_soln[j] = elem_soln[1]; - - // Third node (node 'valence' in the element patch): - j = sd_elem->local_node_number(sd_elem->get_ordered_node(2)->id()); - nodal_soln[j] = elem_soln[sd_elem->get_ordered_valence(0)]; -} - - - -// the empty template specializations below are needed to avoid -// linker reference errors, but should never get called -template <> -void FE<2,SUBDIV>::side_map(const Elem*, - const Elem*, - const unsigned int, - const std::vector&, - std::vector&) -{ - libmesh_error(); -} - -template <> -void FE<2,SUBDIV>::edge_reinit(Elem const*, - unsigned int, - Real, - const std::vector* const, - const std::vector* const) -{ - libmesh_error(); -} - -template <> -Point FE<2,SUBDIV>::inverse_map(const Elem*, - const Point&, - const Real, - const bool) -{ - libmesh_error(); -} - -template <> -void FE<2,SUBDIV>::inverse_map(const Elem*, - const std::vector&, - std::vector&, - Real, - bool) -{ - libmesh_error(); -} - - - -// The number of dofs per subdivision element depends on the valence of its nodes, so it is non-static -template <> unsigned int FE<2,SUBDIV>::n_dofs(const ElemType, const Order) { libmesh_error(); return 0; } - -// Loop subdivision elements have only a single dof per node -template <> unsigned int FE<2,SUBDIV>::n_dofs_at_node(const ElemType, const Order, const unsigned int) { return 1; } - -// Subdivision FEMs have dofs only at the nodes -template <> unsigned int FE<2,SUBDIV>::n_dofs_per_elem(const ElemType, const Order) { return 0; } - -// Subdivision FEMs have dofs only at the nodes -template <> void FE<2,SUBDIV>::dofs_on_side(const Elem *const, const Order, unsigned int, std::vector &di) { di.resize(0); } -template <> void FE<2,SUBDIV>::dofs_on_edge(const Elem *const, const Order, unsigned int, std::vector &di) { di.resize(0); } - -// Subdivision FEMs are C^1 continuous -template <> FEContinuity FE<2,SUBDIV>::get_continuity() const { return C_ONE; } - -// Subdivision FEMs are not hierarchic -template <> bool FE<2,SUBDIV>::is_hierarchic() const { return false; } - -// Subdivision FEM shapes need reinit -template <> bool FE<2,SUBDIV>::shapes_need_reinit() const { return true; } - -} // namespace libMesh diff --git a/src/fe/fe_subdivision_2D.C b/src/fe/fe_subdivision_2D.C new file mode 100644 index 00000000000..1a56c7210ed --- /dev/null +++ b/src/fe/fe_subdivision_2D.C @@ -0,0 +1,928 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +// Local includes +#include "libmesh/fe.h" +#include "libmesh/libmesh_logging.h" +#include "libmesh/fe_type.h" +#include "libmesh/quadrature.h" +#include "libmesh/face_tri3_subdivision.h" +#include "libmesh/fe_macro.h" +#include "libmesh/dense_matrix.h" +#include "libmesh/utility.h" + + +namespace libMesh +{ + +FESubdivision::FESubdivision(const FEType& fet) : + FE<2,SUBDIVISION>(fet) +{ + // Only 2D meshes in 3D space are supported + libmesh_assert_equal_to(LIBMESH_DIM, 3); +} + + + +void FESubdivision::init_subdivision_matrix(DenseMatrix &A, + unsigned int valence) +{ + A.resize(valence + 12, valence + 12); + + // A = (S11 0; S21 S22), see Cirak et al., + // Int. J. Numer. Meth. Engng. 2000; 47:2039-2072, Appendix A.2. + + // First, set the static S21 part + A(valence+ 1,0 ) = 0.125; + A(valence+ 1,1 ) = 0.375; + A(valence+ 1,valence ) = 0.375; + A(valence+ 2,0 ) = 0.0625; + A(valence+ 2,1 ) = 0.625; + A(valence+ 2,2 ) = 0.0625; + A(valence+ 2,valence ) = 0.0625; + A(valence+ 3,0 ) = 0.125; + A(valence+ 3,1 ) = 0.375; + A(valence+ 3,2 ) = 0.375; + A(valence+ 4,0 ) = 0.0625; + A(valence+ 4,1 ) = 0.0625; + A(valence+ 4,valence-1) = 0.0625; + A(valence+ 4,valence ) = 0.625; + A(valence+ 5,0 ) = 0.125; + A(valence+ 5,valence-1) = 0.375; + A(valence+ 5,valence ) = 0.375; + A(valence+ 6,1 ) = 0.375; + A(valence+ 6,valence ) = 0.125; + A(valence+ 7,1 ) = 0.375; + A(valence+ 8,1 ) = 0.375; + A(valence+ 8,2 ) = 0.125; + A(valence+ 9,1 ) = 0.125; + A(valence+ 9,valence ) = 0.375; + A(valence+10,valence ) = 0.375; + A(valence+11,valence-1) = 0.125; + A(valence+11,valence ) = 0.375; + + // Next, set the static S22 part + A(valence+ 1,valence+1) = 0.125; + A(valence+ 2,valence+1) = 0.0625; + A(valence+ 2,valence+2) = 0.0625; + A(valence+ 2,valence+3) = 0.0625; + A(valence+ 3,valence+3) = 0.125; + A(valence+ 4,valence+1) = 0.0625; + A(valence+ 4,valence+4) = 0.0625; + A(valence+ 4,valence+5) = 0.0625; + A(valence+ 5,valence+5) = 0.125; + A(valence+ 6,valence+1) = 0.375; + A(valence+ 6,valence+2) = 0.125; + A(valence+ 7,valence+1) = 0.125; + A(valence+ 7,valence+2) = 0.375; + A(valence+ 7,valence+3) = 0.125; + A(valence+ 8,valence+2) = 0.125; + A(valence+ 8,valence+3) = 0.375; + A(valence+ 9,valence+1) = 0.375; + A(valence+ 9,valence+4) = 0.125; + A(valence+10,valence+1) = 0.125; + A(valence+10,valence+4) = 0.375; + A(valence+10,valence+5) = 0.125; + A(valence+11,valence+4) = 0.125; + A(valence+11,valence+5) = 0.375; + + // Last, set the S11 part: first row + std::vector weights; + loop_subdivision_mask(weights, valence); + for (unsigned int i = 0; i <= valence; ++i) + A(0,i) = weights[i]; + + // second row + A(1,0) = 0.375; + A(1,1) = 0.375; + A(1,2) = 0.125; + A(1,valence) = 0.125; + + // third to second-to-last rows + for (unsigned int i = 2; i < valence; ++i) + { + A(i,0 ) = 0.375; + A(i,i-1) = 0.125; + A(i,i ) = 0.375; + A(i,i+1) = 0.125; + } + + // last row + A(valence,0) = 0.375; + A(valence,1) = 0.125; + A(valence,valence-1) = 0.125; + A(valence,valence ) = 0.375; +} + + + +Real FESubdivision::regular_shape(const unsigned int i, + const Real v, + const Real w) +{ + // These are the 12 quartic box splines, see Cirak et al., + // Int. J. Numer. Meth. Engng. 2000; 47:2039-2072, Appendix A.1. + + const Real u = 1 - v - w; + libmesh_assert_less_equal(0, v); + libmesh_assert_less_equal(0, w); + libmesh_assert_less_equal(0, u); + + using Utility::pow; + const Real factor = 1. / 12; + + switch (i) + { + case 0: + return factor*(pow<4>(u) + 2*u*u*u*v); + case 1: + return factor*(pow<4>(u) + 2*u*u*u*w); + case 2: + return factor*(pow<4>(u) + 2*u*u*u*w + 6*u*u*u*v + 6*u*u*v*w + 12*u*u*v*v + 6*u*v*v*w + 6*u*v*v*v + + 2*v*v*v*w + pow<4>(v)); + case 3: + return factor*(6*pow<4>(u) + 24*u*u*u*w + 24*u*u*w*w + 8*u*w*w*w + pow<4>(w) + 24*u*u*u*v + + 60*u*u*v*w + 36*u*v*w*w + 6*v*w*w*w + 24*u*u*v*v + 36*u*v*v*w + 12*v*v*w*w + 8*u*v*v*v + + 6*v*v*v*w + pow<4>(v)); + case 4: + return factor*(pow<4>(u) + 6*u*u*u*w + 12*u*u*w*w + 6*u*w*w*w + pow<4>(w) + 2*u*u*u*v + 6*u*u*v*w + + 6*u*v*w*w + 2*v*w*w*w); + case 5: + return factor*(2*u*v*v*v + pow<4>(v)); + case 6: + return factor*(pow<4>(u) + 6*u*u*u*w + 12*u*u*w*w + 6*u*w*w*w + pow<4>(w) + 8*u*u*u*v + 36*u*u*v*w + + 36*u*v*w*w + 8*v*w*w*w + 24*u*u*v*v + 60*u*v*v*w + 24*v*v*w*w + 24*u*v*v*v + 24*v*v*v*w + 6*pow<4>(v)); + case 7: + return factor*(pow<4>(u) + 8*u*u*u*w + 24*u*u*w*w + 24*u*w*w*w + 6*pow<4>(w) + 6*u*u*u*v + 36*u*u*v*w + + 60*u*v*w*w + 24*v*w*w*w + 12*u*u*v*v + 36*u*v*v*w + 24*v*v*w*w + 6*u*v*v*v + 8*v*v*v*w + pow<4>(v)); + case 8: + return factor*(2*u*w*w*w + pow<4>(w)); + case 9: + return factor*(2*v*v*v*w + pow<4>(v)); + case 10: + return factor*(2*u*w*w*w + pow<4>(w) + 6*u*v*w*w + 6*v*w*w*w + 6*u*v*v*w + 12*v*v*w*w + 2*u*v*v*v + + 6*v*v*v*w + pow<4>(v)); + case 11: + return factor*(pow<4>(w) + 2*v*w*w*w); + + default: + libmesh_error(); + } + + libmesh_error(); + return 0.; +} + + + +Real FESubdivision::regular_shape_deriv(const unsigned int i, + const unsigned int j, + const Real v, + const Real w) +{ + const Real u = 1 - v - w; + const Real factor = 1. / 12; + + switch (j) // j=0: xi-directional derivative, j=1: eta-directional derivative + { + case 0: // xi derivatives + { + switch (i) // shape function number + { + case 0: + return factor*(-6*v*u*u - 2*u*u*u); + case 1: + return factor*(-4*u*u*u - 6*u*u*w); + case 2: + return factor*(-2*v*v*v - 6*v*v*u + 6*v*u*u + 2*u*u*u); + case 3: + return factor*(-4*v*v*v - 24*v*v*u - 24*v*u*u - 18*v*v*w - 48*v*u*w - 12*u*u*w - + 12*v*w*w - 12*u*w*w - 2*w*w*w); + case 4: + return factor*(-6*v*u*u - 2*u*u*u - 12*v*u*w-12*u*u*w - 6*v*w*w - 18*u*w*w - 4*w*w*w); + case 5: + return factor*(2*v*v*v + 6*v*v*u); + case 6: + return factor*(24*v*v*u + 24*v*u*u + 4*u*u*u + 12*v*v*w + 48*v*u*w + 18*u*u*w + + 12*v*w*w + 12*u*w*w + 2*w*w*w); + case 7: + return factor*(-2*v*v*v - 6*v*v*u + 6*v*u*u + 2*u*u*u - 12*v*v*w + 12*u*u*w - + 12*v*w*w + 12*u*w*w); + case 8: + return -w*w*w/6; + case 9: + return factor*(4*v*v*v + 6*v*v*w); + case 10: + return factor*(2*v*v*v + 6*v*v*u + 12*v*v*w + 12*v*u*w + 18*v*w*w + 6*u*w*w + 4*w*w*w); + case 11: + return w*w*w/6; + default: + libmesh_error(); + } + } + case 1: // eta derivatives + { + switch (i) // shape function number + { + case 0: + return factor*(-6*v*u*u - 4*u*u*u); + case 1: + return factor*(-2*u*u*u - 6*u*u*w); + case 2: + return factor*(-4*v*v*v - 18*v*v*u - 12*v*u*u - 2*u*u*u - 6*v*v*w - 12*v*u*w - + 6*u*u*w); + case 3: + return factor*(-2*v*v*v-12*v*v*u - 12*v*u*u - 12*v*v*w - 48*v*u*w - 24*u*u*w - + 18*v*w*w - 24*u*w*w - 4*w*w*w); + case 4: + return factor*(2*u*u*u + 6*u*u*w - 6*u*w*w - 2*w*w*w); + case 5: + return -v*v*v/6; + case 6: + return factor*(12*v*v*u + 12*v*u*u + 2*u*u*u - 12*v*v*w + 6*u*u*w - 12*v*w*w - + 6*u*w*w - 2*w*w*w); + case 7: + return factor*(2*v*v*v + 12*v*v*u + 18*v*u*u + 4*u*u*u + 12*v*v*w + 48*v*u*w + + 24*u*u*w + 12*v*w*w + 24*u*w*w); + case 8: + return factor*(6*u*w*w + 2*w*w*w); + case 9: + return v*v*v/6; + case 10: + return factor*(4*v*v*v + 6*v*v*u + 18*v*v*w + 12*v*u*w + 12*v*w*w + 6*u*w*w + + 2*w*w*w); + case 11: + return factor*(6*v*w*w + 4*w*w*w); + default: + libmesh_error(); + } + } + default: + libmesh_error(); + } + + libmesh_error(); + return 0.; +} + + + +Real FESubdivision::regular_shape_second_deriv(const unsigned int i, + const unsigned int j, + const Real v, + const Real w) +{ + const Real u = 1 - v - w; + const Real factor = 1. / 12; + + switch (j) + { + case 0: // xi-xi derivative + { + switch (i) // shape function number + { + case 0: + return v*u; + case 1: + return u*u + u*w; + case 2: + return -2*v*u; + case 3: + return v*v - 2*u*u + v*w - 2*u*w; + case 4: + return v*u + v*w + u*w + w*w; + case 5: + return v*u; + case 6: + return factor*(-24*v*v + 12*u*u - 24*v*w + 12*u*w); + case 7: + return -2*v*u - 2*v*w - 2*u*w - 2*w*w; + case 8: + return 0.; + case 9: + return v*v + v*w; + case 10: + return v*u + v*w + u*w + w*w; + case 11: + return 0.; + default: + libmesh_error(); + } + } + case 1: //eta-xi derivative + { + switch (i) + { + case 0: + return factor*(12*v*u + 6*u*u); + case 1: + return factor*(6*u*u + 12*u*w); + case 2: + return factor*(6*v*v - 12*v*u - 6*u*u); + case 3: + return factor*(6*v*v - 12*u*u + 24*v*w + 6*w*w); + case 4: + return factor*(-6*u*u - 12*u*w + 6*w*w); + case 5: + return -v*v/2.; + case 6: + return factor*(-12*v*v + 6*u*u - 24*v*w - 12*u*w - 6*w*w); + case 7: + return factor*(-6*v*v - 12*v*u + 6*u*u - 24*v*w - 12*w*w); + case 8: + return -w*w/2.; + case 9: + return v*v/2.; + case 10: + return factor*(6*v*v + 12*v*u + 24*v*w + 12*u*w + 6*w*w); + case 11: + return w*w/2.; + default: + libmesh_error(); + } + } + case 2: // eta-eta derivative + { + switch (i) + { + case 0: + return v*u + u*u; + case 1: + return u*w; + case 2: + return v*v + v*u + v*w + u*w; + case 3: + return -2*v*u - 2*u*u + v*w + w*w; + case 4: + return -2*u*w; + case 5: + return 0.; + case 6: + return -2*v*v - 2*v*u - 2*v*w - 2*u*w; + case 7: + return v*u + u*u - 2*v*w - 2*w*w; + case 8: + return u*w; + case 9: + return 0.; + case 10: + return v*v + v*u + v*w + u*w; + case 11: + return v*w + w*w; + default: + libmesh_error(); + } + } + default: + libmesh_error(); + } + + libmesh_error(); + return 0.; +} + + + +void FESubdivision::loop_subdivision_mask(std::vector & weights, + const unsigned int valence) +{ + libmesh_assert_greater(valence, 0); + const Real cs = std::cos(2 * libMesh::pi / valence); + const Real nb_weight = (0.625 - Utility::pow<2>(0.375 + 0.25 * cs)) / valence; + weights.resize(1 + valence, nb_weight); + weights[0] = 1.0 - valence * nb_weight; +} + + + +void FESubdivision::init_shape_functions(const std::vector &qp, + const Elem *elem) +{ + libmesh_assert(elem); + libmesh_assert_equal_to(elem->type(), TRI3SUBDIVISION); + const Tri3Subdivision* sd_elem = static_cast(elem); + + START_LOG("init_shape_functions()", "FESubdivision"); + + calculations_started = true; + + // If the user forgot to request anything, we'll be safe and calculate everything: + if (!calculate_phi && !calculate_dphi && !calculate_d2phi) + calculate_phi = calculate_dphi = calculate_d2phi = true; + + const unsigned int valence = sd_elem->get_ordered_valence(0); + const unsigned int n_qp = qp.size(); + const unsigned int n_approx_shape_functions = valence + 6; + + // resize the vectors to hold current data + phi.resize (n_approx_shape_functions); + dphi.resize (n_approx_shape_functions); + dphidxi.resize (n_approx_shape_functions); + dphideta.resize (n_approx_shape_functions); + d2phi.resize (n_approx_shape_functions); + d2phidxi2.resize (n_approx_shape_functions); + d2phidxideta.resize(n_approx_shape_functions); + d2phideta2.resize (n_approx_shape_functions); + + for (unsigned int i = 0; i < n_approx_shape_functions; ++i) + { + phi[i].resize (n_qp); + dphi[i].resize (n_qp); + dphidxi[i].resize (n_qp); + dphideta[i].resize (n_qp); + d2phi[i].resize (n_qp); + d2phidxi2[i].resize (n_qp); + d2phidxideta[i].resize(n_qp); + d2phideta2[i].resize (n_qp); + } + + // Renumbering of the shape functions + static const unsigned int cvi[12] = {3,6,2,0,1,4,7,10,9,5,11,8}; + + if (valence == 6) // This means that all vertices are regular, i.e. we have 12 shape functions + { + for (unsigned int i = 0; i < n_approx_shape_functions; ++i) + { + for (unsigned int p = 0; p < n_qp; ++p) + { + phi[i][p] = FE<2,SUBDIVISION>::shape (elem, fe_type.order, cvi[i], qp[p]); + dphidxi[i][p] = FE<2,SUBDIVISION>::shape_deriv (elem, fe_type.order, cvi[i], 0, qp[p]); + dphideta[i][p] = FE<2,SUBDIVISION>::shape_deriv (elem, fe_type.order, cvi[i], 1, qp[p]); + dphi[i][p](0) = dphidxi[i][p]; + dphi[i][p](1) = dphideta[i][p]; + d2phidxi2[i][p] = FE<2,SUBDIVISION>::shape_second_deriv(elem, fe_type.order, cvi[i], 0, qp[p]); + d2phidxideta[i][p] = FE<2,SUBDIVISION>::shape_second_deriv(elem, fe_type.order, cvi[i], 1, qp[p]); + d2phideta2[i][p] = FE<2,SUBDIVISION>::shape_second_deriv(elem, fe_type.order, cvi[i], 2, qp[p]); + d2phi[i][p](0,0) = d2phidxi2[i][p]; + d2phi[i][p](0,1) = d2phi[i][p](1,0) = d2phidxideta[i][p]; + d2phi[i][p](1,1) = d2phideta2[i][p]; + } + } + } + else // vertex 0 is irregular by construction of the mesh + { + static const Real eps = 1e-10; + + // temporary values + std::vector tphi(12); + std::vector tdphidxi(12); + std::vector tdphideta(12); + std::vector td2phidxi2(12); + std::vector td2phidxideta(12); + std::vector td2phideta2(12); + + for (unsigned int p = 0; p < n_qp; ++p) + { + // evaluate the number of the required subdivisions + Real v = qp[p](0); + Real w = qp[p](1); + Real u = 1 - v - w; + Real min = 0, max = 0.5; + int n = 0; + while (!(u > min-eps && u < max+eps)) + { + ++n; + min = max; + max += std::pow((Real)(2), -n-1); + } + + // transform u, v and w according to the number of subdivisions required. + const Real pow2 = std::pow((Real)(2), n); + v *= pow2; + w *= pow2; + u = 1 - v - w; + libmesh_assert_less(u, 0.5 + eps); + libmesh_assert_greater(u, -eps); + + // find out in which subdivided patch we are and setup the "selection matrix" P and the transformation Jacobian + // (see Int. J. Numer. Meth. Engng. 2000; 47:2039-2072, Appendix A.2.) + const int k = n+1; + Real jfac; // the additional factor per derivative order + DenseMatrix P(12, valence+12); + if (v > 0.5 - eps) + { + v = 2*v - 1; + w = 2*w; + jfac = std::pow((Real)(2), k); + P( 0,2 ) = 1; + P( 1,0 ) = 1; + P( 2,valence+3) = 1; + P( 3,1 ) = 1; + P( 4,valence ) = 1; + P( 5,valence+8) = 1; + P( 6,valence+2) = 1; + P( 7,valence+1) = 1; + P( 8,valence+4) = 1; + P( 9,valence+7) = 1; + P(10,valence+6) = 1; + P(11,valence+9) = 1; + } + else if (w > 0.5 - eps) + { + v = 2*v; + w = 2*w - 1; + jfac = std::pow((Real)(2), k); + P( 0,0 ) = 1; + P( 1,valence- 1) = 1; + P( 2,1 ) = 1; + P( 3,valence ) = 1; + P( 4,valence+ 5) = 1; + P( 5,valence+ 2) = 1; + P( 6,valence+ 1) = 1; + P( 7,valence+ 4) = 1; + P( 8,valence+11) = 1; + P( 9,valence+ 6) = 1; + P(10,valence+ 9) = 1; + P(11,valence+10) = 1; + } + else + { + v = 1 - 2*v; + w = 1 - 2*w; + jfac = std::pow((Real)(-2), k); + P( 0,valence+9) = 1; + P( 1,valence+6) = 1; + P( 2,valence+4) = 1; + P( 3,valence+1) = 1; + P( 4,valence+2) = 1; + P( 5,valence+5) = 1; + P( 6,valence ) = 1; + P( 7,1 ) = 1; + P( 8,valence+3) = 1; + P( 9,valence-1) = 1; + P(10,0 ) = 1; + P(11,2 ) = 1; + } + + u = 1 - v - w; + if ((u > 1 + eps) || (u < -eps)) + { + std::cout << "SUBDIVISION irregular patch: u is outside valid range!\n"; + libmesh_error(); + } + + DenseMatrix A; + init_subdivision_matrix(A, valence); + + // compute P*A^k + if (k > 1) + { + DenseMatrix Acopy(A); + for (int e = 1; e < k; ++e) + A.right_multiply(Acopy); + } + P.right_multiply(A); + + const Point transformed_p(v,w); + + for (unsigned int i = 0; i < 12; ++i) + { + tphi[i] = FE<2,SUBDIVISION>::shape (elem, fe_type.order, i, transformed_p); + tdphidxi[i] = FE<2,SUBDIVISION>::shape_deriv (elem, fe_type.order, i, 0, transformed_p); + tdphideta[i] = FE<2,SUBDIVISION>::shape_deriv (elem, fe_type.order, i, 1, transformed_p); + td2phidxi2[i] = FE<2,SUBDIVISION>::shape_second_deriv(elem, fe_type.order, i, 0, transformed_p); + td2phidxideta[i] = FE<2,SUBDIVISION>::shape_second_deriv(elem, fe_type.order, i, 1, transformed_p); + td2phideta2[i] = FE<2,SUBDIVISION>::shape_second_deriv(elem, fe_type.order, i, 2, transformed_p); + } + + // Finally, we can compute the irregular shape functions as the product of P + // and the regular shape functions: + Real sum1, sum2, sum3, sum4, sum5, sum6; + for (unsigned int j = 0; j < n_approx_shape_functions; ++j) + { + sum1 = sum2 = sum3 = sum4 = sum5 = sum6 = 0; + for (unsigned int i = 0; i < 12; ++i) + { + sum1 += P(i,j) * tphi[i]; + sum2 += P(i,j) * tdphidxi[i]; + sum3 += P(i,j) * tdphideta[i]; + sum4 += P(i,j) * td2phidxi2[i]; + sum5 += P(i,j) * td2phidxideta[i]; + sum6 += P(i,j) * td2phideta2[i]; + } + phi[j][p] = sum1; + dphidxi[j][p] = sum2 * jfac; + dphideta[j][p] = sum3 * jfac; + dphi[j][p](0) = dphidxi[j][p]; + dphi[j][p](1) = dphideta[j][p]; + d2phidxi2[j][p] = sum4 * jfac * jfac; + d2phidxideta[j][p] = sum5 * jfac * jfac; + d2phideta2[j][p] = sum6 * jfac * jfac; + d2phi[j][p](0,0) = d2phidxi2[j][p]; + d2phi[j][p](0,1) = d2phi[j][p](1,0) = d2phidxideta[j][p]; + d2phi[j][p](1,1) = d2phideta2[j][p]; + } + } // end quadrature loop + } // end irregular vertex + + // Let the FEMap use the same initialized shape functions + this->_fe_map->get_phi_map() = phi; + this->_fe_map->get_dphidxi_map() = dphidxi; + this->_fe_map->get_dphideta_map() = dphideta; + this->_fe_map->get_d2phidxi2_map() = d2phidxi2; + this->_fe_map->get_d2phideta2_map() = d2phideta2; + this->_fe_map->get_d2phidxideta_map() = d2phidxideta; + + STOP_LOG("init_shape_functions()", "FESubdivision"); +} + + + +void FESubdivision::attach_quadrature_rule(QBase *q) +{ + libmesh_assert(q); + + qrule = q; + // make sure we don't cache results from a previous quadrature rule + elem_type = INVALID_ELEM; + return; +} + + + +void FESubdivision::reinit(const Elem* elem, + const std::vector* const pts, + const std::vector* const) +{ + libmesh_assert(elem); + libmesh_assert_equal_to(elem->type(), TRI3SUBDIVISION); + const Tri3Subdivision* sd_elem = static_cast(elem); + + START_LOG("reinit()", "FESubdivision"); + + libmesh_assert(!sd_elem->is_ghost()); + libmesh_assert(sd_elem->is_subdivision_updated()); + + // check if vertices 1 and 2 are regular + libmesh_assert_equal_to(sd_elem->get_ordered_valence(1), 6); + libmesh_assert_equal_to(sd_elem->get_ordered_valence(2), 6); + + // no custom quadrature support + libmesh_assert_equal_to(pts, NULL); + libmesh_assert(qrule); + qrule->init(elem->type()); + + // Initialize the shape functions + this->init_shape_functions(this->qrule->get_points(), elem); + + // The shape functions correspond to the qrule + shapes_on_quadrature = true; + + // Compute the map for this element. + this->_fe_map->compute_map (this->dim, this->qrule->get_weights(), elem); + + STOP_LOG("reinit()", "FESubdivision"); +} + + + +template <> +Real FE<2,SUBDIVISION>::shape(const ElemType type, + const Order order, + const unsigned int i, + const Point& p) +{ + switch (order) + { + case FOURTH: + { + switch (type) + { + case TRI3SUBDIVISION: + libmesh_assert_less(i, 12); + return FESubdivision::regular_shape(i,p(0),p(1)); + default: + std::cerr << "ERROR: Unsupported element type!" << std::endl; + libmesh_error(); + } + } + default: + std::cerr << "ERROR: Unsupported polynomial order!" << std::endl; + libmesh_error(); + } + + libmesh_error(); + return 0.; +} + + + +template <> +Real FE<2,SUBDIVISION>::shape(const Elem* elem, + const Order order, + const unsigned int i, + const Point& p) +{ + libmesh_assert(elem); + return FE<2,SUBDIVISION>::shape(elem->type(), order, i, p); +} + + + +template <> +Real FE<2,SUBDIVISION>::shape_deriv(const ElemType type, + const Order order, + const unsigned int i, + const unsigned int j, + const Point& p) +{ + switch (order) + { + case FOURTH: + { + switch (type) + { + case TRI3SUBDIVISION: + libmesh_assert_less(i, 12); + return FESubdivision::regular_shape_deriv(i,j,p(0),p(1)); + default: + std::cerr << "ERROR: Unsupported element type!" << std::endl; + libmesh_error(); + } + } + default: + std::cerr << "ERROR: Unsupported polynomial order!" << std::endl; + libmesh_error(); + } + + libmesh_error(); + return 0.; +} + + + +template <> +Real FE<2,SUBDIVISION>::shape_deriv(const Elem* elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point& p) +{ + libmesh_assert(elem); + return FE<2,SUBDIVISION>::shape_deriv(elem->type(), order, i, j, p); +} + + + +template <> +Real FE<2,SUBDIVISION>::shape_second_deriv(const ElemType type, + const Order order, + const unsigned int i, + const unsigned int j, + const Point& p) +{ + switch (order) + { + case FOURTH: + { + switch (type) + { + case TRI3SUBDIVISION: + libmesh_assert_less(i, 12); + return FESubdivision::regular_shape_second_deriv(i,j,p(0),p(1)); + default: + std::cerr << "ERROR: Unsupported element type!" << std::endl; + libmesh_error(); + } + } + default: + std::cerr << "ERROR: Unsupported polynomial order!" << std::endl; + libmesh_error(); + } + + libmesh_error(); + return 0.; +} + + + +template <> +Real FE<2,SUBDIVISION>::shape_second_deriv(const Elem* elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point& p) +{ + libmesh_assert(elem); + return FE<2,SUBDIVISION>::shape_second_deriv(elem->type(), order, i, j, p); +} + + + +template <> +void FE<2,SUBDIVISION>::nodal_soln(const Elem* elem, + const Order, + const std::vector& elem_soln, + std::vector& nodal_soln) +{ + libmesh_assert(elem); + libmesh_assert_equal_to(elem->type(), TRI3SUBDIVISION); + const Tri3Subdivision* sd_elem = static_cast(elem); + + nodal_soln.resize(3); // three nodes per element + + // Ghost nodes are auxiliary. + if (sd_elem->is_ghost()) + { + nodal_soln[0] = 0; + nodal_soln[1] = 0; + nodal_soln[2] = 0; + return; + } + + // First node (node 0 in the element patch): + unsigned int j = sd_elem->local_node_number(sd_elem->get_ordered_node(0)->id()); + nodal_soln[j] = elem_soln[0]; + + // Second node (node 1 in the element patch): + j = sd_elem->local_node_number(sd_elem->get_ordered_node(1)->id()); + nodal_soln[j] = elem_soln[1]; + + // Third node (node 'valence' in the element patch): + j = sd_elem->local_node_number(sd_elem->get_ordered_node(2)->id()); + nodal_soln[j] = elem_soln[sd_elem->get_ordered_valence(0)]; +} + + + +// the empty template specializations below are needed to avoid +// linker reference errors, but should never get called +template <> +void FE<2,SUBDIVISION>::side_map(const Elem*, + const Elem*, + const unsigned int, + const std::vector&, + std::vector&) +{ + libmesh_error(); +} + +template <> +void FE<2,SUBDIVISION>::edge_reinit(Elem const*, + unsigned int, + Real, + const std::vector* const, + const std::vector* const) +{ + libmesh_error(); +} + +template <> +Point FE<2,SUBDIVISION>::inverse_map(const Elem*, + const Point&, + const Real, + const bool) +{ + libmesh_error(); +} + +template <> +void FE<2,SUBDIVISION>::inverse_map(const Elem*, + const std::vector&, + std::vector&, + Real, + bool) +{ + libmesh_error(); +} + + + +// The number of dofs per subdivision element depends on the valence of its nodes, so it is non-static +template <> unsigned int FE<2,SUBDIVISION>::n_dofs(const ElemType, const Order) { libmesh_error(); return 0; } + +// Loop subdivision elements have only a single dof per node +template <> unsigned int FE<2,SUBDIVISION>::n_dofs_at_node(const ElemType, const Order, const unsigned int) { return 1; } + +// Subdivision FEMs have dofs only at the nodes +template <> unsigned int FE<2,SUBDIVISION>::n_dofs_per_elem(const ElemType, const Order) { return 0; } + +// Subdivision FEMs have dofs only at the nodes +template <> void FE<2,SUBDIVISION>::dofs_on_side(const Elem *const, const Order, unsigned int, std::vector &di) { di.resize(0); } +template <> void FE<2,SUBDIVISION>::dofs_on_edge(const Elem *const, const Order, unsigned int, std::vector &di) { di.resize(0); } + +// Subdivision FEMs are C^1 continuous +template <> FEContinuity FE<2,SUBDIVISION>::get_continuity() const { return C_ONE; } + +// Subdivision FEMs are not hierarchic +template <> bool FE<2,SUBDIVISION>::is_hierarchic() const { return false; } + +// Subdivision FEM shapes need reinit +template <> bool FE<2,SUBDIVISION>::shapes_need_reinit() const { return true; } + +} // namespace libMesh diff --git a/src/fe/fe_transformation_base.C b/src/fe/fe_transformation_base.C index 49c5d621642..64fb88ba6c9 100644 --- a/src/fe/fe_transformation_base.C +++ b/src/fe/fe_transformation_base.C @@ -34,7 +34,7 @@ AutoPtr > FETransformationBase::b case SZABAB: case CLOUGH: /* PB: Really H2 */ case HERMITE: /* PB: Really H2 */ - case SUBDIV: + case SUBDIVISION: case LAGRANGE_VEC: case MONOMIAL: /* PB: Shouldn't this be L2 conforming? */ case XYZ: /* PB: Shouldn't this be L2 conforming? */ diff --git a/src/fe/fe_type.C b/src/fe/fe_type.C index a3fd4c1a5af..6829410f660 100644 --- a/src/fe/fe_type.C +++ b/src/fe/fe_type.C @@ -46,7 +46,7 @@ FEType::default_quadrature_rule (const unsigned int dim, (this->default_quadrature_order()), seven + extraorder)))); } - if (family == SUBDIV) + if (family == SUBDIVISION) return AutoPtr (new QGauss(dim, static_cast(1 + extraorder))); diff --git a/src/geom/elem.C b/src/geom/elem.C index b6b72295705..2f1802b8521 100644 --- a/src/geom/elem.C +++ b/src/geom/elem.C @@ -33,7 +33,7 @@ #include "libmesh/edge_edge4.h" #include "libmesh/edge_inf_edge2.h" #include "libmesh/face_tri3.h" -#include "libmesh/face_tri3_sd.h" +#include "libmesh/face_tri3_subdivision.h" #include "libmesh/face_tri6.h" #include "libmesh/face_quad4.h" #include "libmesh/face_quad8.h" @@ -115,7 +115,7 @@ const unsigned int Elem::type_to_n_nodes_map [] = 1, // NODEELEM - 3, // TRI3SD + 3, // TRI3SUBDIVISION }; const unsigned int Elem::type_to_n_sides_map [] = @@ -238,10 +238,10 @@ AutoPtr Elem::build(const ElemType type, elem = new Tri3(p); break; } - case TRI3SD: + case TRI3SUBDIVISION: { - elem = new Tri3SD(p); - break; + elem = new Tri3Subdivision(p); + break; } case TRI6: { diff --git a/src/geom/face_tri3_sd.C b/src/geom/face_tri3_sd.C deleted file mode 100644 index 7709cbdd21a..00000000000 --- a/src/geom/face_tri3_sd.C +++ /dev/null @@ -1,123 +0,0 @@ -// The libMesh Finite Element Library. -// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner - -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. - -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -// C++ includes - -// Local includes -#include "libmesh/face_tri3_sd.h" -#include "libmesh/mesh_subdiv_support.h" - -namespace libMesh -{ - - - -// ------------------------------------------------------------ -// Tri3 subdivision class member functions - -Tri3SD::Tri3SD(Elem *p) : Tri3(p), _subdiv_updated(true) -{ - if (p) - { - libmesh_assert_equal_to(p->type(), TRI3SD); - Tri3SD* sd_elem = static_cast(p); - _is_ghost = sd_elem->is_ghost(); - - if (!_is_ghost) - { - _ordered_nodes[0] = sd_elem->get_ordered_node(0); - _ordered_nodes[1] = sd_elem->get_ordered_node(1); - _ordered_nodes[2] = sd_elem->get_ordered_node(2); - } - } -} - - -void Tri3SD::prepare_subdiv_properties() -{ - /* - * Find the index of the irregular vertex, if any. - * The current implementation can only handle triangles with - * no more than one irregular vertex. That is, a vertex with - * valence != 6. - */ - unsigned int irregular_idx = 0; - for (unsigned int i = 0; i < 3; ++i) - { - if (this->get_node(i)->valence() != 6) - { - irregular_idx = i; - if (this->get_node(MeshTools::Subdiv::next[i])->valence() != 6 || this->get_node(MeshTools::Subdiv::prev[i])->valence() != 6) - { - std::cout << "Error: The mesh contains elements with more than one irregular vertex!" << std::endl; - libmesh_error(); - } - } - } - - /* - * Rotate ordered vertices such that ordered_nodes[0] is the - * irregular vertex. Doing this once in advance lets the evaluation - * of subdivision interpolation be much more efficient afterwards. - */ - switch (irregular_idx) - { - case 0: - _ordered_nodes[0] = this->get_node(0); - _ordered_nodes[1] = this->get_node(1); - _ordered_nodes[2] = this->get_node(2); - break; - case 1: - _ordered_nodes[0] = this->get_node(1); - _ordered_nodes[1] = this->get_node(2); - _ordered_nodes[2] = this->get_node(0); - break; - case 2: - _ordered_nodes[0] = this->get_node(2); - _ordered_nodes[1] = this->get_node(0); - _ordered_nodes[2] = this->get_node(1); - break; - default: - libmesh_error(); - } - - _subdiv_updated = true; -} - - -unsigned int Tri3SD::local_node_number(unsigned int node_id) const -{ - return (_nodes[0]->id() == node_id) ? 0 : ( (_nodes[1]->id() == node_id) ? 1 : ( (_nodes[2]->id() == node_id) ? 2 : 3 ) ); -} - - -unsigned int Tri3SD::get_ordered_valence(unsigned int node_id) const -{ - libmesh_assert_less(node_id, n_neighbors()); - libmesh_assert(_subdiv_updated); - return get_ordered_node(node_id)->valence(); -} - - -Node* Tri3SD::get_ordered_node(unsigned int node_id) const -{ - libmesh_assert_less(node_id, 3); - libmesh_assert(_subdiv_updated); - return _ordered_nodes[node_id]; -} - -} // namespace libMesh diff --git a/src/geom/face_tri3_subdivision.C b/src/geom/face_tri3_subdivision.C new file mode 100644 index 00000000000..08794c8e34e --- /dev/null +++ b/src/geom/face_tri3_subdivision.C @@ -0,0 +1,123 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +// C++ includes + +// Local includes +#include "libmesh/face_tri3_subdivision.h" +#include "libmesh/mesh_subdivision_support.h" + +namespace libMesh +{ + + + +// ------------------------------------------------------------ +// Tri3 subdivision class member functions + +Tri3Subdivision::Tri3Subdivision(Elem *p) : Tri3(p), _subdivision_updated(true) +{ + if (p) + { + libmesh_assert_equal_to(p->type(), TRI3SUBDIVISION); + Tri3Subdivision* sd_elem = static_cast(p); + _is_ghost = sd_elem->is_ghost(); + + if (!_is_ghost) + { + _ordered_nodes[0] = sd_elem->get_ordered_node(0); + _ordered_nodes[1] = sd_elem->get_ordered_node(1); + _ordered_nodes[2] = sd_elem->get_ordered_node(2); + } + } +} + + +void Tri3Subdivision::prepare_subdivision_properties() +{ + /* + * Find the index of the irregular vertex, if any. + * The current implementation can only handle triangles with + * no more than one irregular vertex. That is, a vertex with + * valence != 6. + */ + unsigned int irregular_idx = 0; + for (unsigned int i = 0; i < 3; ++i) + { + if (this->get_node(i)->valence() != 6) + { + irregular_idx = i; + if (this->get_node(MeshTools::Subdivision::next[i])->valence() != 6 || this->get_node(MeshTools::Subdivision::prev[i])->valence() != 6) + { + std::cout << "Error: The mesh contains elements with more than one irregular vertex!" << std::endl; + libmesh_error(); + } + } + } + + /* + * Rotate ordered vertices such that ordered_nodes[0] is the + * irregular vertex. Doing this once in advance lets the evaluation + * of subdivision interpolation be much more efficient afterwards. + */ + switch (irregular_idx) + { + case 0: + _ordered_nodes[0] = this->get_node(0); + _ordered_nodes[1] = this->get_node(1); + _ordered_nodes[2] = this->get_node(2); + break; + case 1: + _ordered_nodes[0] = this->get_node(1); + _ordered_nodes[1] = this->get_node(2); + _ordered_nodes[2] = this->get_node(0); + break; + case 2: + _ordered_nodes[0] = this->get_node(2); + _ordered_nodes[1] = this->get_node(0); + _ordered_nodes[2] = this->get_node(1); + break; + default: + libmesh_error(); + } + + _subdivision_updated = true; +} + + +unsigned int Tri3Subdivision::local_node_number(unsigned int node_id) const +{ + return (_nodes[0]->id() == node_id) ? 0 : ( (_nodes[1]->id() == node_id) ? 1 : ( (_nodes[2]->id() == node_id) ? 2 : 3 ) ); +} + + +unsigned int Tri3Subdivision::get_ordered_valence(unsigned int node_id) const +{ + libmesh_assert_less(node_id, n_neighbors()); + libmesh_assert(_subdivision_updated); + return get_ordered_node(node_id)->valence(); +} + + +Node* Tri3Subdivision::get_ordered_node(unsigned int node_id) const +{ + libmesh_assert_less(node_id, 3); + libmesh_assert(_subdivision_updated); + return _ordered_nodes[node_id]; +} + +} // namespace libMesh diff --git a/src/libmesh_SOURCES b/src/libmesh_SOURCES index 4fe3d9ae566..b4758524e59 100644 --- a/src/libmesh_SOURCES +++ b/src/libmesh_SOURCES @@ -86,7 +86,7 @@ libmesh_SOURCES = \ src/fe/fe_scalar_shape_1D.C \ src/fe/fe_scalar_shape_2D.C \ src/fe/fe_scalar_shape_3D.C \ - src/fe/fe_subdiv_2D.C \ + src/fe/fe_subdivision_2D.C \ src/fe/fe_szabab.C \ src/fe/fe_szabab_shape_0D.C \ src/fe/fe_szabab_shape_1D.C \ @@ -156,7 +156,7 @@ libmesh_SOURCES = \ src/geom/face_quad9.C \ src/geom/face_tri.C \ src/geom/face_tri3.C \ - src/geom/face_tri3_sd.C \ + src/geom/face_tri3_subdivision.C \ src/geom/face_tri6.C \ src/geom/node.C \ src/geom/node_elem.C \ @@ -201,7 +201,7 @@ libmesh_SOURCES = \ src/mesh/mesh_smoother.C \ src/mesh/mesh_smoother_laplace.C \ src/mesh/mesh_smoother_vsmoother.C \ - src/mesh/mesh_subdiv_support.C \ + src/mesh/mesh_subdivision_support.C \ src/mesh/mesh_tetgen_interface.C \ src/mesh/mesh_tetgen_wrapper.C \ src/mesh/mesh_tools.C \ diff --git a/src/mesh/exodusII_io_helper.C b/src/mesh/exodusII_io_helper.C index 871a850ac91..da9a4927e69 100644 --- a/src/mesh/exodusII_io_helper.C +++ b/src/mesh/exodusII_io_helper.C @@ -1928,19 +1928,19 @@ ExodusII_IO_Helper::Conversion ExodusII_IO_Helper::ElementMaps::assign_conversio return conv; } - case TRI3SD: + case TRI3SUBDIVISION: { - const Conversion conv(tri3_node_map, - ARRAY_LENGTH(tri3_node_map), - tri3_node_map, // inverse node map same as forward node map - ARRAY_LENGTH(tri3_node_map), - tri_edge_map, - ARRAY_LENGTH(tri_edge_map), - tri_inverse_edge_map, - ARRAY_LENGTH(tri_inverse_edge_map), - TRI3SD, - "TRI3"); - return conv; + const Conversion conv(tri3_node_map, + ARRAY_LENGTH(tri3_node_map), + tri3_node_map, // inverse node map same as forward node map + ARRAY_LENGTH(tri3_node_map), + tri_edge_map, + ARRAY_LENGTH(tri_edge_map), + tri_inverse_edge_map, + ARRAY_LENGTH(tri_inverse_edge_map), + TRI3SUBDIVISION, + "TRI3"); + return conv; } case TRI6: diff --git a/src/mesh/mesh_subdiv_support.C b/src/mesh/mesh_subdiv_support.C deleted file mode 100644 index f46e3713bab..00000000000 --- a/src/mesh/mesh_subdiv_support.C +++ /dev/null @@ -1,354 +0,0 @@ -// The libMesh Finite Element Library. -// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner - -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. - -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - - -// C++ includes - -// Local includes -#include "libmesh/mesh_tools.h" -#include "libmesh/mesh_subdiv_support.h" -#include "libmesh/boundary_info.h" - -namespace libMesh -{ - - -void MeshTools::Subdiv::find_one_ring(const Tri3SD* elem, std::vector& nodes) -{ - libmesh_assert(elem->is_subdiv_updated()); - libmesh_assert(elem->get_ordered_node(0)); - - unsigned int valence = elem->get_ordered_valence(0); - nodes.resize(valence + 6); - - // The first three vertices in the patch are the ones from the element triangle - nodes[0] = elem->get_ordered_node(0); - nodes[1] = elem->get_ordered_node(1); - nodes[valence] = elem->get_ordered_node(2); - - const unsigned int nn0 = elem->local_node_number(nodes[0]->id()); - - Tri3SD* nb = dynamic_cast(elem->neighbor(nn0)); - libmesh_assert(nb); - - unsigned int j, i = 1; - - do - { - ++i; - j = nb->local_node_number(nodes[0]->id()); - nodes[i] = nb->get_node(next[j]); - nb = static_cast(nb->neighbor(j)); - } while (nb != elem); - - /* for nodes connected with N (= valence[0]) */ - nb = static_cast(elem->neighbor(next[nn0])); - j = nb->local_node_number(nodes[1]->id()); - nodes[valence+1] = nb->get_node(next[j]); - - nb = static_cast(nb->neighbor(next[j])); - j = nb->local_node_number(nodes[valence+1]->id()); - nodes[valence+4] = nb->get_node(next[j]); - - nb = static_cast(nb->neighbor(next[j])); - j = nb->local_node_number(nodes[valence+4]->id()); - nodes[valence+5] = nb->get_node(next[j]); - - /* for nodes connected with 1 */ - nb = static_cast(elem->neighbor(next[nn0])); - j = nb->local_node_number(nodes[1]->id()); - // nodes[valence+1] has been determined already - - nb = static_cast(nb->neighbor(j)); - j = nb->local_node_number(nodes[1]->id()); - nodes[valence+2] = nb->get_node(next[j]); - - nb = static_cast(nb->neighbor(j)); - j = nb->local_node_number(nodes[1]->id()); - nodes[valence+3] = nb->get_node(next[j]); - - return; -} - - -void MeshTools::Subdiv::all_subdiv(MeshBase& mesh) -{ - std::vector new_elements; - new_elements.reserve(mesh.n_elem()); - const bool mesh_has_boundary_data = (mesh.boundary_info->n_boundary_ids() > 0); - - std::vector new_boundary_elements; - std::vector new_boundary_sides; - std::vector new_boundary_ids; - - MeshBase::const_element_iterator el = mesh.elements_begin(); - const MeshBase::const_element_iterator end_el = mesh.elements_end(); - for (; el != end_el; ++el) - { - const Elem* elem = *el; - libmesh_assert_equal_to(elem->type(), TRI3); - - Elem* tri = new Tri3SD; - tri->set_id(elem->id()); - tri->set_node(0) = (*el)->get_node(0); - tri->set_node(1) = (*el)->get_node(1); - tri->set_node(2) = (*el)->get_node(2); - - if (mesh_has_boundary_data) - { - for (unsigned int side = 0; side < elem->n_sides(); ++side) - { - const short int boundary_id = mesh.boundary_info->boundary_id(elem, side); - if (boundary_id != BoundaryInfo::invalid_id) - { - // add the boundary id to the list of new boundary ids - new_boundary_ids.push_back(boundary_id); - new_boundary_elements.push_back(tri); - new_boundary_sides.push_back(side); - } - } - - // remove the original element from the BoundaryInfo structure - mesh.boundary_info->remove(elem); - } - - new_elements.push_back(tri); - mesh.insert_elem(tri); - } - mesh.prepare_for_use(); - - if (mesh_has_boundary_data) - { - // If the old mesh had boundary data, the new mesh better have some too. - libmesh_assert_greater(new_boundary_elements.size(), 0); - - // We should also be sure that the lengths of the new boundary data vectors - // are all the same. - libmesh_assert_equal_to(new_boundary_sides.size(), new_boundary_elements.size()); - libmesh_assert_equal_to(new_boundary_sides.size(), new_boundary_ids.size()); - - // Add the new boundary info to the mesh. - for (unsigned int s = 0; s < new_boundary_elements.size(); ++s) - mesh.boundary_info->add_side(new_boundary_elements[s], - new_boundary_sides[s], - new_boundary_ids[s]); - } - - mesh.prepare_for_use(); -} - - -void MeshTools::Subdiv::prepare_subdiv_mesh(MeshBase& mesh, bool ghosted) -{ - mesh.prepare_for_use(); - - // convert all mesh elements to subdivision elements - all_subdiv(mesh); - - if (!ghosted) - { - // add the ghost elements for the boundaries - add_boundary_ghosts(mesh); - } - else - { - // This assumes that the mesh already has the ghosts. Only tagging them is required here. - tag_boundary_ghosts(mesh); - } - - mesh.prepare_for_use(); - - std::vector > nodes_to_elem_map; - MeshTools::build_nodes_to_elem_map(mesh, nodes_to_elem_map); - - // compute the node valences - MeshBase::const_node_iterator nd = mesh.nodes_begin(); - const MeshBase::const_node_iterator end_nd = mesh.nodes_end(); - for (; nd != end_nd; ++nd) - { - Node* node = *nd; - std::vector neighbors; - MeshTools::find_nodal_neighbors(mesh, *node, nodes_to_elem_map, neighbors); - const unsigned int valence = neighbors.size(); - libmesh_assert_greater(valence, 1); - node->set_valence(valence); - } - - MeshBase::const_element_iterator el = mesh.elements_begin(); - const MeshBase::const_element_iterator end_el = mesh.elements_end(); - for (; el != end_el; ++el) - { - Tri3SD* elem = dynamic_cast(*el); - libmesh_assert(elem); - if (!elem->is_ghost()) - elem->prepare_subdiv_properties(); - } -} - - -void MeshTools::Subdiv::tag_boundary_ghosts(MeshBase& mesh) -{ - MeshBase::element_iterator el = mesh.elements_begin(); - const MeshBase::element_iterator end_el = mesh.elements_end(); - for (; el != end_el; ++el) - { - Elem* elem = *el; - libmesh_assert_equal_to(elem->type(), TRI3SD); - - Tri3SD* sd_elem = static_cast(elem); - for (unsigned int i = 0; i < elem->n_sides(); ++i) - { - if (elem->neighbor(i) == NULL) - { - sd_elem->set_ghost(true); - // set all other neighbors to ghosts as well - if (elem->neighbor(next[i])) - { - Tri3SD* nb = static_cast(elem->neighbor(next[i])); - nb->set_ghost(true); - } - if (elem->neighbor(prev[i])) - { - Tri3SD* nb = static_cast(elem->neighbor(prev[i])); - nb->set_ghost(true); - } - } - } - } -} - - -void MeshTools::Subdiv::add_boundary_ghosts(MeshBase& mesh) -{ - static const Real tol = 1e-5; - - // add the mirrored ghost elements (without using iterators, because the mesh is modified in the course) - std::vector ghost_elems; - std::vector ghost_nodes; - const unsigned int n_elem = mesh.n_elem(); - for (unsigned int eid = 0; eid < n_elem; ++eid) - { - Elem* elem = mesh.elem(eid); - libmesh_assert_equal_to(elem->type(), TRI3SD); - - for (unsigned int i = 0; i < elem->n_sides(); ++i) - { - libmesh_assert_not_equal_to(elem->neighbor(i), elem); - if (elem->neighbor(i) == NULL) - { - // this is the vertex to be mirrored - Point point = elem->point(i) + elem->point(next[i]) - elem->point(prev[i]); - - // Check if the proposed vertex doesn't coincide with one of the existing vertices. - // This is necessary because for some triangulations, it can happen that two mirrored - // ghost vertices coincide, which would then lead to a zero size ghost element below. - Node* node = NULL; - for (unsigned int j = 0; j < ghost_nodes.size(); ++j) - { - if ((*ghost_nodes[j] - point).size() < tol * (elem->point(i) - point).size()) - { - node = ghost_nodes[j]; - break; - } - } - - // add the new vertex only if no other is nearby - if (node == NULL) - { - node = mesh.add_point(point); - ghost_nodes.push_back(node); - } - - Tri3SD* newelem = new Tri3SD(); - ghost_elems.push_back(newelem); - - newelem->set_node(0) = elem->get_node(next[i]); - newelem->set_node(1) = elem->get_node(i); - newelem->set_node(2) = node; - newelem->set_neighbor(0,elem); - newelem->set_ghost(true); - elem->set_neighbor(i,newelem); - - mesh.add_elem(newelem); - mesh.boundary_info->add_node(elem->get_node(i), 1); - mesh.boundary_info->add_node(elem->get_node(next[i]), 1); - mesh.boundary_info->add_node(elem->get_node(prev[i]), 1); - mesh.boundary_info->add_node(node, 1); - } - } - } - - // add the missing ghost elements (connecting new ghost nodes) - std::vector missing_ghost_elems; - std::vector::iterator ghost_el = ghost_elems.begin(); - const std::vector::iterator end_ghost_el = ghost_elems.end(); - for (; ghost_el != end_ghost_el; ++ghost_el) - { - Tri3SD *elem = *ghost_el; - libmesh_assert(elem->is_ghost()); - - for (unsigned int i = 0; i < elem->n_sides(); ++i) - { - if (elem->neighbor(i) == NULL && elem->neighbor(prev[i]) != NULL) - { - // go around counter-clockwise - Tri3SD *nb1 = static_cast(elem->neighbor(prev[i])); - Tri3SD *nb2 = nb1; - unsigned int j = i; - while (nb1 != NULL && nb1->id() != elem->id()) - { - j = nb1->local_node_number(elem->node(i)); - nb2 = nb1; - nb1 = static_cast(nb1->neighbor(prev[j])); - libmesh_assert(nb1 == NULL || nb1->id() != nb2->id()); - } - - libmesh_assert_not_equal_to(nb2->id(), elem->id()); - - // Above, we merged coinciding ghost vertices. Therefore, we need - // to exclude the case where there is no ghost element to add between - // these two (identical) ghost nodes. - if (elem->get_node(next[i])->id() == nb2->get_node(prev[j])->id()) - break; - - Tri3SD *newelem = new Tri3SD(); - newelem->set_node(0) = elem->get_node(next[i]); - newelem->set_node(1) = elem->get_node(i); - newelem->set_node(2) = nb2->get_node(prev[j]); - newelem->set_neighbor(0,elem); - newelem->set_neighbor(1,nb2); - newelem->set_neighbor(2,NULL); - newelem->set_ghost(true); - - elem->set_neighbor(i,newelem); - nb2->set_neighbor(prev[j],newelem); - - missing_ghost_elems.push_back(newelem); - break; - } - } // end side loop - } // end ghost element loop - - // add the missing ghost elements to the mesh - std::vector::iterator missing_el = missing_ghost_elems.begin(); - const std::vector::iterator end_missing_el = missing_ghost_elems.end(); - for (; missing_el != end_missing_el; ++missing_el) - mesh.add_elem(*missing_el); -} - -} // namespace libMesh diff --git a/src/mesh/mesh_subdivision_support.C b/src/mesh/mesh_subdivision_support.C new file mode 100644 index 00000000000..63e74b95515 --- /dev/null +++ b/src/mesh/mesh_subdivision_support.C @@ -0,0 +1,354 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + +// C++ includes + +// Local includes +#include "libmesh/mesh_tools.h" +#include "libmesh/mesh_subdivision_support.h" +#include "libmesh/boundary_info.h" + +namespace libMesh +{ + + +void MeshTools::Subdivision::find_one_ring(const Tri3Subdivision* elem, std::vector& nodes) +{ + libmesh_assert(elem->is_subdivision_updated()); + libmesh_assert(elem->get_ordered_node(0)); + + unsigned int valence = elem->get_ordered_valence(0); + nodes.resize(valence + 6); + + // The first three vertices in the patch are the ones from the element triangle + nodes[0] = elem->get_ordered_node(0); + nodes[1] = elem->get_ordered_node(1); + nodes[valence] = elem->get_ordered_node(2); + + const unsigned int nn0 = elem->local_node_number(nodes[0]->id()); + + Tri3Subdivision* nb = dynamic_cast(elem->neighbor(nn0)); + libmesh_assert(nb); + + unsigned int j, i = 1; + + do + { + ++i; + j = nb->local_node_number(nodes[0]->id()); + nodes[i] = nb->get_node(next[j]); + nb = static_cast(nb->neighbor(j)); + } while (nb != elem); + + /* for nodes connected with N (= valence[0]) */ + nb = static_cast(elem->neighbor(next[nn0])); + j = nb->local_node_number(nodes[1]->id()); + nodes[valence+1] = nb->get_node(next[j]); + + nb = static_cast(nb->neighbor(next[j])); + j = nb->local_node_number(nodes[valence+1]->id()); + nodes[valence+4] = nb->get_node(next[j]); + + nb = static_cast(nb->neighbor(next[j])); + j = nb->local_node_number(nodes[valence+4]->id()); + nodes[valence+5] = nb->get_node(next[j]); + + /* for nodes connected with 1 */ + nb = static_cast(elem->neighbor(next[nn0])); + j = nb->local_node_number(nodes[1]->id()); + // nodes[valence+1] has been determined already + + nb = static_cast(nb->neighbor(j)); + j = nb->local_node_number(nodes[1]->id()); + nodes[valence+2] = nb->get_node(next[j]); + + nb = static_cast(nb->neighbor(j)); + j = nb->local_node_number(nodes[1]->id()); + nodes[valence+3] = nb->get_node(next[j]); + + return; +} + + +void MeshTools::Subdivision::all_subdivision(MeshBase& mesh) +{ + std::vector new_elements; + new_elements.reserve(mesh.n_elem()); + const bool mesh_has_boundary_data = (mesh.boundary_info->n_boundary_ids() > 0); + + std::vector new_boundary_elements; + std::vector new_boundary_sides; + std::vector new_boundary_ids; + + MeshBase::const_element_iterator el = mesh.elements_begin(); + const MeshBase::const_element_iterator end_el = mesh.elements_end(); + for (; el != end_el; ++el) + { + const Elem* elem = *el; + libmesh_assert_equal_to(elem->type(), TRI3); + + Elem* tri = new Tri3Subdivision; + tri->set_id(elem->id()); + tri->set_node(0) = (*el)->get_node(0); + tri->set_node(1) = (*el)->get_node(1); + tri->set_node(2) = (*el)->get_node(2); + + if (mesh_has_boundary_data) + { + for (unsigned int side = 0; side < elem->n_sides(); ++side) + { + const short int boundary_id = mesh.boundary_info->boundary_id(elem, side); + if (boundary_id != BoundaryInfo::invalid_id) + { + // add the boundary id to the list of new boundary ids + new_boundary_ids.push_back(boundary_id); + new_boundary_elements.push_back(tri); + new_boundary_sides.push_back(side); + } + } + + // remove the original element from the BoundaryInfo structure + mesh.boundary_info->remove(elem); + } + + new_elements.push_back(tri); + mesh.insert_elem(tri); + } + mesh.prepare_for_use(); + + if (mesh_has_boundary_data) + { + // If the old mesh had boundary data, the new mesh better have some too. + libmesh_assert_greater(new_boundary_elements.size(), 0); + + // We should also be sure that the lengths of the new boundary data vectors + // are all the same. + libmesh_assert_equal_to(new_boundary_sides.size(), new_boundary_elements.size()); + libmesh_assert_equal_to(new_boundary_sides.size(), new_boundary_ids.size()); + + // Add the new boundary info to the mesh. + for (unsigned int s = 0; s < new_boundary_elements.size(); ++s) + mesh.boundary_info->add_side(new_boundary_elements[s], + new_boundary_sides[s], + new_boundary_ids[s]); + } + + mesh.prepare_for_use(); +} + + +void MeshTools::Subdivision::prepare_subdivision_mesh(MeshBase& mesh, bool ghosted) +{ + mesh.prepare_for_use(); + + // convert all mesh elements to subdivision elements + all_subdivision(mesh); + + if (!ghosted) + { + // add the ghost elements for the boundaries + add_boundary_ghosts(mesh); + } + else + { + // This assumes that the mesh already has the ghosts. Only tagging them is required here. + tag_boundary_ghosts(mesh); + } + + mesh.prepare_for_use(); + + std::vector > nodes_to_elem_map; + MeshTools::build_nodes_to_elem_map(mesh, nodes_to_elem_map); + + // compute the node valences + MeshBase::const_node_iterator nd = mesh.nodes_begin(); + const MeshBase::const_node_iterator end_nd = mesh.nodes_end(); + for (; nd != end_nd; ++nd) + { + Node* node = *nd; + std::vector neighbors; + MeshTools::find_nodal_neighbors(mesh, *node, nodes_to_elem_map, neighbors); + const unsigned int valence = neighbors.size(); + libmesh_assert_greater(valence, 1); + node->set_valence(valence); + } + + MeshBase::const_element_iterator el = mesh.elements_begin(); + const MeshBase::const_element_iterator end_el = mesh.elements_end(); + for (; el != end_el; ++el) + { + Tri3Subdivision* elem = dynamic_cast(*el); + libmesh_assert(elem); + if (!elem->is_ghost()) + elem->prepare_subdivision_properties(); + } +} + + +void MeshTools::Subdivision::tag_boundary_ghosts(MeshBase& mesh) +{ + MeshBase::element_iterator el = mesh.elements_begin(); + const MeshBase::element_iterator end_el = mesh.elements_end(); + for (; el != end_el; ++el) + { + Elem* elem = *el; + libmesh_assert_equal_to(elem->type(), TRI3SUBDIVISION); + + Tri3Subdivision* sd_elem = static_cast(elem); + for (unsigned int i = 0; i < elem->n_sides(); ++i) + { + if (elem->neighbor(i) == NULL) + { + sd_elem->set_ghost(true); + // set all other neighbors to ghosts as well + if (elem->neighbor(next[i])) + { + Tri3Subdivision* nb = static_cast(elem->neighbor(next[i])); + nb->set_ghost(true); + } + if (elem->neighbor(prev[i])) + { + Tri3Subdivision* nb = static_cast(elem->neighbor(prev[i])); + nb->set_ghost(true); + } + } + } + } +} + + +void MeshTools::Subdivision::add_boundary_ghosts(MeshBase& mesh) +{ + static const Real tol = 1e-5; + + // add the mirrored ghost elements (without using iterators, because the mesh is modified in the course) + std::vector ghost_elems; + std::vector ghost_nodes; + const unsigned int n_elem = mesh.n_elem(); + for (unsigned int eid = 0; eid < n_elem; ++eid) + { + Elem* elem = mesh.elem(eid); + libmesh_assert_equal_to(elem->type(), TRI3SUBDIVISION); + + for (unsigned int i = 0; i < elem->n_sides(); ++i) + { + libmesh_assert_not_equal_to(elem->neighbor(i), elem); + if (elem->neighbor(i) == NULL) + { + // this is the vertex to be mirrored + Point point = elem->point(i) + elem->point(next[i]) - elem->point(prev[i]); + + // Check if the proposed vertex doesn't coincide with one of the existing vertices. + // This is necessary because for some triangulations, it can happen that two mirrored + // ghost vertices coincide, which would then lead to a zero size ghost element below. + Node* node = NULL; + for (unsigned int j = 0; j < ghost_nodes.size(); ++j) + { + if ((*ghost_nodes[j] - point).size() < tol * (elem->point(i) - point).size()) + { + node = ghost_nodes[j]; + break; + } + } + + // add the new vertex only if no other is nearby + if (node == NULL) + { + node = mesh.add_point(point); + ghost_nodes.push_back(node); + } + + Tri3Subdivision* newelem = new Tri3Subdivision(); + ghost_elems.push_back(newelem); + + newelem->set_node(0) = elem->get_node(next[i]); + newelem->set_node(1) = elem->get_node(i); + newelem->set_node(2) = node; + newelem->set_neighbor(0,elem); + newelem->set_ghost(true); + elem->set_neighbor(i,newelem); + + mesh.add_elem(newelem); + mesh.boundary_info->add_node(elem->get_node(i), 1); + mesh.boundary_info->add_node(elem->get_node(next[i]), 1); + mesh.boundary_info->add_node(elem->get_node(prev[i]), 1); + mesh.boundary_info->add_node(node, 1); + } + } + } + + // add the missing ghost elements (connecting new ghost nodes) + std::vector missing_ghost_elems; + std::vector::iterator ghost_el = ghost_elems.begin(); + const std::vector::iterator end_ghost_el = ghost_elems.end(); + for (; ghost_el != end_ghost_el; ++ghost_el) + { + Tri3Subdivision *elem = *ghost_el; + libmesh_assert(elem->is_ghost()); + + for (unsigned int i = 0; i < elem->n_sides(); ++i) + { + if (elem->neighbor(i) == NULL && elem->neighbor(prev[i]) != NULL) + { + // go around counter-clockwise + Tri3Subdivision *nb1 = static_cast(elem->neighbor(prev[i])); + Tri3Subdivision *nb2 = nb1; + unsigned int j = i; + while (nb1 != NULL && nb1->id() != elem->id()) + { + j = nb1->local_node_number(elem->node(i)); + nb2 = nb1; + nb1 = static_cast(nb1->neighbor(prev[j])); + libmesh_assert(nb1 == NULL || nb1->id() != nb2->id()); + } + + libmesh_assert_not_equal_to(nb2->id(), elem->id()); + + // Above, we merged coinciding ghost vertices. Therefore, we need + // to exclude the case where there is no ghost element to add between + // these two (identical) ghost nodes. + if (elem->get_node(next[i])->id() == nb2->get_node(prev[j])->id()) + break; + + Tri3Subdivision *newelem = new Tri3Subdivision(); + newelem->set_node(0) = elem->get_node(next[i]); + newelem->set_node(1) = elem->get_node(i); + newelem->set_node(2) = nb2->get_node(prev[j]); + newelem->set_neighbor(0,elem); + newelem->set_neighbor(1,nb2); + newelem->set_neighbor(2,NULL); + newelem->set_ghost(true); + + elem->set_neighbor(i,newelem); + nb2->set_neighbor(prev[j],newelem); + + missing_ghost_elems.push_back(newelem); + break; + } + } // end side loop + } // end ghost element loop + + // add the missing ghost elements to the mesh + std::vector::iterator missing_el = missing_ghost_elems.begin(); + const std::vector::iterator end_missing_el = missing_ghost_elems.end(); + for (; missing_el != end_missing_el; ++missing_el) + mesh.add_elem(*missing_el); +} + +} // namespace libMesh diff --git a/src/mesh/vtk_io.C b/src/mesh/vtk_io.C index 29c58614d18..7772d2b84c1 100644 --- a/src/mesh/vtk_io.C +++ b/src/mesh/vtk_io.C @@ -96,7 +96,7 @@ vtkIdType VTKIO::get_elem_type(ElemType type) celltype = VTK_QUADRATIC_EDGE; break;// 1 case TRI3: - case TRI3SD: + case TRI3SUBDIVISION: celltype = VTK_TRIANGLE; break;// 3 case TRI6: diff --git a/src/quadrature/quadrature_gauss_2D.C b/src/quadrature/quadrature_gauss_2D.C index 05221e6b851..247d3fec416 100644 --- a/src/quadrature/quadrature_gauss_2D.C +++ b/src/quadrature/quadrature_gauss_2D.C @@ -67,7 +67,7 @@ void QGauss::init_2D(const ElemType type_in, //--------------------------------------------- // Triangle quadrature rules case TRI3: - case TRI3SD: + case TRI3SUBDIVISION: case TRI6: { switch(_order + 2*p) diff --git a/src/utils/string_to_enum.C b/src/utils/string_to_enum.C index 6f43029694e..407bbdd5d65 100644 --- a/src/utils/string_to_enum.C +++ b/src/utils/string_to_enum.C @@ -104,58 +104,58 @@ void init_elem_type_to_enum () { if (elem_type_to_enum.empty()) { - elem_type_to_enum["EDGE" ]=EDGE2; - elem_type_to_enum["EDGE2" ]=EDGE2; - elem_type_to_enum["EDGE3" ]=EDGE3; - elem_type_to_enum["EDGE4" ]=EDGE4; - - elem_type_to_enum["TRI" ]=TRI3; - elem_type_to_enum["TRI3" ]=TRI3; - elem_type_to_enum["TRI3SD" ]=TRI3SD; - elem_type_to_enum["TRI6" ]=TRI6; - - elem_type_to_enum["QUAD" ]=QUAD4; - elem_type_to_enum["QUAD4" ]=QUAD4; - elem_type_to_enum["QUAD8" ]=QUAD8; - elem_type_to_enum["QUAD9" ]=QUAD9; - - elem_type_to_enum["TET" ]=TET4; - elem_type_to_enum["TET4" ]=TET4; - elem_type_to_enum["TET10" ]=TET10; - - elem_type_to_enum["HEX" ]=HEX8; - elem_type_to_enum["HEX8" ]=HEX8; - elem_type_to_enum["HEX20" ]=HEX20; - elem_type_to_enum["HEX27" ]=HEX27; - - elem_type_to_enum["PRISM" ]=PRISM6; - elem_type_to_enum["PRISM6" ]=PRISM6; - elem_type_to_enum["PRISM15" ]=PRISM15; - elem_type_to_enum["PRISM18" ]=PRISM18; - - elem_type_to_enum["PYRAMID" ]=PYRAMID5; - elem_type_to_enum["PYRAMID5" ]=PYRAMID5; - elem_type_to_enum["PYRAMID13" ]=PYRAMID13; - elem_type_to_enum["PYRAMID14" ]=PYRAMID14; - - elem_type_to_enum["INFEDGE" ]=INFEDGE2; - elem_type_to_enum["INFEDGE2" ]=INFEDGE2; - - elem_type_to_enum["INFQUAD" ]=INFQUAD4; - elem_type_to_enum["INFQUAD4" ]=INFQUAD4; - elem_type_to_enum["INFQUAD6" ]=INFQUAD6; - - elem_type_to_enum["INFHEX" ]=INFHEX8; - elem_type_to_enum["INFHEX8" ]=INFHEX8; - elem_type_to_enum["INFHEX16" ]=INFHEX16; - elem_type_to_enum["INFHEX18" ]=INFHEX18; - - elem_type_to_enum["INFPRISM" ]=INFPRISM6; - elem_type_to_enum["INFPRISM6" ]=INFPRISM6; - elem_type_to_enum["INFPRISM12"]=INFPRISM12; - - elem_type_to_enum["NODE" ]=NODEELEM; - elem_type_to_enum["NODEELEM" ]=NODEELEM; + elem_type_to_enum["EDGE" ]=EDGE2; + elem_type_to_enum["EDGE2" ]=EDGE2; + elem_type_to_enum["EDGE3" ]=EDGE3; + elem_type_to_enum["EDGE4" ]=EDGE4; + + elem_type_to_enum["TRI" ]=TRI3; + elem_type_to_enum["TRI3" ]=TRI3; + elem_type_to_enum["TRI3SUBDIVISION"]=TRI3SUBDIVISION; + elem_type_to_enum["TRI6" ]=TRI6; + + elem_type_to_enum["QUAD" ]=QUAD4; + elem_type_to_enum["QUAD4" ]=QUAD4; + elem_type_to_enum["QUAD8" ]=QUAD8; + elem_type_to_enum["QUAD9" ]=QUAD9; + + elem_type_to_enum["TET" ]=TET4; + elem_type_to_enum["TET4" ]=TET4; + elem_type_to_enum["TET10" ]=TET10; + + elem_type_to_enum["HEX" ]=HEX8; + elem_type_to_enum["HEX8" ]=HEX8; + elem_type_to_enum["HEX20" ]=HEX20; + elem_type_to_enum["HEX27" ]=HEX27; + + elem_type_to_enum["PRISM" ]=PRISM6; + elem_type_to_enum["PRISM6" ]=PRISM6; + elem_type_to_enum["PRISM15" ]=PRISM15; + elem_type_to_enum["PRISM18" ]=PRISM18; + + elem_type_to_enum["PYRAMID" ]=PYRAMID5; + elem_type_to_enum["PYRAMID5" ]=PYRAMID5; + elem_type_to_enum["PYRAMID13" ]=PYRAMID13; + elem_type_to_enum["PYRAMID14" ]=PYRAMID14; + + elem_type_to_enum["INFEDGE" ]=INFEDGE2; + elem_type_to_enum["INFEDGE2" ]=INFEDGE2; + + elem_type_to_enum["INFQUAD" ]=INFQUAD4; + elem_type_to_enum["INFQUAD4" ]=INFQUAD4; + elem_type_to_enum["INFQUAD6" ]=INFQUAD6; + + elem_type_to_enum["INFHEX" ]=INFHEX8; + elem_type_to_enum["INFHEX8" ]=INFHEX8; + elem_type_to_enum["INFHEX16" ]=INFHEX16; + elem_type_to_enum["INFHEX18" ]=INFHEX18; + + elem_type_to_enum["INFPRISM" ]=INFPRISM6; + elem_type_to_enum["INFPRISM6" ]=INFPRISM6; + elem_type_to_enum["INFPRISM12" ]=INFPRISM12; + + elem_type_to_enum["NODE" ]=NODEELEM; + elem_type_to_enum["NODEELEM" ]=NODEELEM; } } @@ -243,7 +243,7 @@ void init_fefamily_to_enum () fefamily_to_enum["LEGENDRE" ]=LEGENDRE; fefamily_to_enum["CLOUGH" ]=CLOUGH; fefamily_to_enum["HERMITE" ]=HERMITE; - fefamily_to_enum["SUBDIV" ]=SUBDIV; + fefamily_to_enum["SUBDIVISION" ]=SUBDIVISION; fefamily_to_enum["NEDELEC_ONE" ]=NEDELEC_ONE; }