diff --git a/Makefile.in b/Makefile.in index 3617963657d..39c0282d3b6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -269,15 +269,15 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.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/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/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/point.C src/geom/reference_elem.C \ + 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/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 \ @@ -602,6 +602,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dof_map.lo \ src/geom/libmesh_dbg_la-node_elem.lo \ src/geom/libmesh_dbg_la-plane.lo \ src/geom/libmesh_dbg_la-point.lo \ + src/geom/libmesh_dbg_la-reference_elem.lo \ src/geom/libmesh_dbg_la-remote_elem.lo \ src/geom/libmesh_dbg_la-sphere.lo \ src/geom/libmesh_dbg_la-surface.lo \ @@ -945,15 +946,15 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.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/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/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/point.C src/geom/reference_elem.C \ + 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/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 \ @@ -1277,6 +1278,7 @@ am__objects_2 = src/base/libmesh_devel_la-dof_map.lo \ src/geom/libmesh_devel_la-node_elem.lo \ src/geom/libmesh_devel_la-plane.lo \ src/geom/libmesh_devel_la-point.lo \ + src/geom/libmesh_devel_la-reference_elem.lo \ src/geom/libmesh_devel_la-remote_elem.lo \ src/geom/libmesh_devel_la-sphere.lo \ src/geom/libmesh_devel_la-surface.lo \ @@ -1617,15 +1619,15 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.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/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/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/point.C src/geom/reference_elem.C \ + 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/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 \ @@ -1949,6 +1951,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dof_map.lo \ src/geom/libmesh_oprof_la-node_elem.lo \ src/geom/libmesh_oprof_la-plane.lo \ src/geom/libmesh_oprof_la-point.lo \ + src/geom/libmesh_oprof_la-reference_elem.lo \ src/geom/libmesh_oprof_la-remote_elem.lo \ src/geom/libmesh_oprof_la-sphere.lo \ src/geom/libmesh_oprof_la-surface.lo \ @@ -2289,15 +2292,15 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.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/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/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/point.C src/geom/reference_elem.C \ + 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/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 \ @@ -2621,6 +2624,7 @@ am__objects_4 = src/base/libmesh_opt_la-dof_map.lo \ src/geom/libmesh_opt_la-node_elem.lo \ src/geom/libmesh_opt_la-plane.lo \ src/geom/libmesh_opt_la-point.lo \ + src/geom/libmesh_opt_la-reference_elem.lo \ src/geom/libmesh_opt_la-remote_elem.lo \ src/geom/libmesh_opt_la-sphere.lo \ src/geom/libmesh_opt_la-surface.lo \ @@ -2960,15 +2964,15 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dof_map.C \ src/geom/face_quad8.C src/geom/face_quad9.C \ src/geom/face_tri.C src/geom/face_tri3.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/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/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/point.C src/geom/reference_elem.C \ + 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/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 \ @@ -3292,6 +3296,7 @@ am__objects_5 = src/base/libmesh_prof_la-dof_map.lo \ src/geom/libmesh_prof_la-node_elem.lo \ src/geom/libmesh_prof_la-plane.lo \ src/geom/libmesh_prof_la-point.lo \ + src/geom/libmesh_prof_la-reference_elem.lo \ src/geom/libmesh_prof_la-remote_elem.lo \ src/geom/libmesh_prof_la-sphere.lo \ src/geom/libmesh_prof_la-surface.lo \ @@ -4469,6 +4474,7 @@ libmesh_SOURCES = \ src/geom/node_elem.C \ src/geom/plane.C \ src/geom/point.C \ + src/geom/reference_elem.C \ src/geom/remote_elem.C \ src/geom/sphere.C \ src/geom/surface.C \ @@ -5357,6 +5363,8 @@ src/geom/libmesh_dbg_la-plane.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_dbg_la-point.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_dbg_la-reference_elem.lo: src/geom/$(am__dirstamp) \ + src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_dbg_la-remote_elem.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_dbg_la-sphere.lo: src/geom/$(am__dirstamp) \ @@ -6388,6 +6396,8 @@ src/geom/libmesh_devel_la-plane.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_devel_la-point.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_devel_la-reference_elem.lo: src/geom/$(am__dirstamp) \ + src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_devel_la-remote_elem.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_devel_la-sphere.lo: src/geom/$(am__dirstamp) \ @@ -7356,6 +7366,8 @@ src/geom/libmesh_oprof_la-plane.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_oprof_la-point.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_oprof_la-reference_elem.lo: src/geom/$(am__dirstamp) \ + src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_oprof_la-remote_elem.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_oprof_la-sphere.lo: src/geom/$(am__dirstamp) \ @@ -8324,6 +8336,8 @@ src/geom/libmesh_opt_la-plane.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_opt_la-point.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_opt_la-reference_elem.lo: src/geom/$(am__dirstamp) \ + src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_opt_la-remote_elem.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_opt_la-sphere.lo: src/geom/$(am__dirstamp) \ @@ -9289,6 +9303,8 @@ src/geom/libmesh_prof_la-plane.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_prof_la-point.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) +src/geom/libmesh_prof_la-reference_elem.lo: src/geom/$(am__dirstamp) \ + src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_prof_la-remote_elem.lo: src/geom/$(am__dirstamp) \ src/geom/$(DEPDIR)/$(am__dirstamp) src/geom/libmesh_prof_la-sphere.lo: src/geom/$(am__dirstamp) \ @@ -10899,6 +10915,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-node_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-plane.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-point.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-reference_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-remote_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-sphere.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_dbg_la-surface.Plo@am__quote@ @@ -10948,6 +10965,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-node_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-plane.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-point.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-reference_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-remote_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-sphere.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_devel_la-surface.Plo@am__quote@ @@ -10997,6 +11015,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-node_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-plane.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-point.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-reference_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-remote_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-sphere.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_oprof_la-surface.Plo@am__quote@ @@ -11046,6 +11065,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-node_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-plane.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-point.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-reference_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-remote_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-sphere.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_opt_la-surface.Plo@am__quote@ @@ -11095,6 +11115,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-node_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-plane.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-point.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-reference_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-remote_elem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-sphere.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/geom/$(DEPDIR)/libmesh_prof_la-surface.Plo@am__quote@ @@ -13398,6 +13419,13 @@ src/geom/libmesh_dbg_la-point.lo: src/geom/point.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-point.lo `test -f 'src/geom/point.C' || echo '$(srcdir)/'`src/geom/point.C +src/geom/libmesh_dbg_la-reference_elem.lo: src/geom/reference_elem.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-reference_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_dbg_la-reference_elem.Tpo -c -o src/geom/libmesh_dbg_la-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_dbg_la-reference_elem.Tpo src/geom/$(DEPDIR)/libmesh_dbg_la-reference_elem.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/reference_elem.C' object='src/geom/libmesh_dbg_la-reference_elem.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-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C + src/geom/libmesh_dbg_la-remote_elem.lo: src/geom/remote_elem.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-remote_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_dbg_la-remote_elem.Tpo -c -o src/geom/libmesh_dbg_la-remote_elem.lo `test -f 'src/geom/remote_elem.C' || echo '$(srcdir)/'`src/geom/remote_elem.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_dbg_la-remote_elem.Tpo src/geom/$(DEPDIR)/libmesh_dbg_la-remote_elem.Plo @@ -16170,6 +16198,13 @@ src/geom/libmesh_devel_la-point.lo: src/geom/point.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-point.lo `test -f 'src/geom/point.C' || echo '$(srcdir)/'`src/geom/point.C +src/geom/libmesh_devel_la-reference_elem.lo: src/geom/reference_elem.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-reference_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_devel_la-reference_elem.Tpo -c -o src/geom/libmesh_devel_la-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_devel_la-reference_elem.Tpo src/geom/$(DEPDIR)/libmesh_devel_la-reference_elem.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/reference_elem.C' object='src/geom/libmesh_devel_la-reference_elem.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-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C + src/geom/libmesh_devel_la-remote_elem.lo: src/geom/remote_elem.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-remote_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_devel_la-remote_elem.Tpo -c -o src/geom/libmesh_devel_la-remote_elem.lo `test -f 'src/geom/remote_elem.C' || echo '$(srcdir)/'`src/geom/remote_elem.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_devel_la-remote_elem.Tpo src/geom/$(DEPDIR)/libmesh_devel_la-remote_elem.Plo @@ -18942,6 +18977,13 @@ src/geom/libmesh_oprof_la-point.lo: src/geom/point.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-point.lo `test -f 'src/geom/point.C' || echo '$(srcdir)/'`src/geom/point.C +src/geom/libmesh_oprof_la-reference_elem.lo: src/geom/reference_elem.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-reference_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_oprof_la-reference_elem.Tpo -c -o src/geom/libmesh_oprof_la-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_oprof_la-reference_elem.Tpo src/geom/$(DEPDIR)/libmesh_oprof_la-reference_elem.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/reference_elem.C' object='src/geom/libmesh_oprof_la-reference_elem.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-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C + src/geom/libmesh_oprof_la-remote_elem.lo: src/geom/remote_elem.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-remote_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_oprof_la-remote_elem.Tpo -c -o src/geom/libmesh_oprof_la-remote_elem.lo `test -f 'src/geom/remote_elem.C' || echo '$(srcdir)/'`src/geom/remote_elem.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_oprof_la-remote_elem.Tpo src/geom/$(DEPDIR)/libmesh_oprof_la-remote_elem.Plo @@ -21714,6 +21756,13 @@ src/geom/libmesh_opt_la-point.lo: src/geom/point.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-point.lo `test -f 'src/geom/point.C' || echo '$(srcdir)/'`src/geom/point.C +src/geom/libmesh_opt_la-reference_elem.lo: src/geom/reference_elem.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-reference_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_opt_la-reference_elem.Tpo -c -o src/geom/libmesh_opt_la-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_opt_la-reference_elem.Tpo src/geom/$(DEPDIR)/libmesh_opt_la-reference_elem.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/reference_elem.C' object='src/geom/libmesh_opt_la-reference_elem.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-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C + src/geom/libmesh_opt_la-remote_elem.lo: src/geom/remote_elem.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-remote_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_opt_la-remote_elem.Tpo -c -o src/geom/libmesh_opt_la-remote_elem.lo `test -f 'src/geom/remote_elem.C' || echo '$(srcdir)/'`src/geom/remote_elem.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_opt_la-remote_elem.Tpo src/geom/$(DEPDIR)/libmesh_opt_la-remote_elem.Plo @@ -24486,6 +24535,13 @@ src/geom/libmesh_prof_la-point.lo: src/geom/point.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-point.lo `test -f 'src/geom/point.C' || echo '$(srcdir)/'`src/geom/point.C +src/geom/libmesh_prof_la-reference_elem.lo: src/geom/reference_elem.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-reference_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_prof_la-reference_elem.Tpo -c -o src/geom/libmesh_prof_la-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_prof_la-reference_elem.Tpo src/geom/$(DEPDIR)/libmesh_prof_la-reference_elem.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/geom/reference_elem.C' object='src/geom/libmesh_prof_la-reference_elem.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-reference_elem.lo `test -f 'src/geom/reference_elem.C' || echo '$(srcdir)/'`src/geom/reference_elem.C + src/geom/libmesh_prof_la-remote_elem.lo: src/geom/remote_elem.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-remote_elem.lo -MD -MP -MF src/geom/$(DEPDIR)/libmesh_prof_la-remote_elem.Tpo -c -o src/geom/libmesh_prof_la-remote_elem.lo `test -f 'src/geom/remote_elem.C' || echo '$(srcdir)/'`src/geom/remote_elem.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/geom/$(DEPDIR)/libmesh_prof_la-remote_elem.Tpo src/geom/$(DEPDIR)/libmesh_prof_la-remote_elem.Plo diff --git a/include/Makefile.in b/include/Makefile.in index b0bdb85f3bc..ed064bdb939 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -573,6 +573,7 @@ include_HEADERS = \ fe/inf_fe_instantiate_2D.h \ fe/inf_fe_instantiate_3D.h \ fe/inf_fe_macro.h \ + geom/.#reference_elem.h \ geom/cell.h \ geom/cell_hex.h \ geom/cell_hex20.h \ @@ -620,6 +621,7 @@ include_HEADERS = \ geom/node_range.h \ geom/plane.h \ geom/point.h \ + geom/reference_elem.h \ geom/remote_elem.h \ geom/side.h \ geom/sphere.h \ diff --git a/include/geom/reference_elem.h b/include/geom/reference_elem.h new file mode 100644 index 00000000000..4088929aec2 --- /dev/null +++ b/include/geom/reference_elem.h @@ -0,0 +1,60 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2013 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_REFERENCE_ELEM_H +#define LIBMESH_REFERENCE_ELEM_H + +// Local includes +#include "libmesh/libmesh_common.h" +#include "libmesh/enum_elem_type.h" + +// C++ includes + +namespace libMesh +{ + + // forward declarations + class Elem; + + /** + * This namespace implements singleton reference elements for each + * fundamental element type supported by \p libMesh. + * + * \author Benjamin S. Kirk, 2013. + */ + namespace ReferenceElem + { + /** + * @returns a constant reference to the reference element of + * the user-requested type. + */ + Elem const* get (const ElemType Type); + + /** + * Cleans up static singleton data. + */ + void clear(); + + } // namespace ReferenceElem + + +} // namespace libMesh + + +#endif // LIBMESH_REFERENCE_ELEM_H diff --git a/include/include_HEADERS b/include/include_HEADERS index 178e20af64f..6423b9dd046 100644 --- a/include/include_HEADERS +++ b/include/include_HEADERS @@ -139,6 +139,7 @@ include_HEADERS = \ geom/node_range.h \ geom/plane.h \ geom/point.h \ + geom/reference_elem.h \ geom/remote_elem.h \ geom/side.h \ geom/sphere.h \ diff --git a/include/libmesh/Makefile.am b/include/libmesh/Makefile.am index 794289a08ef..d0add416e6b 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_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_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_tri6.h node.h node_elem.h node_range.h plane.h point.h remote_elem.h side.h sphere.h stored_range.h surface.h abaqus_io.h boundary_info.h boundary_mesh.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_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_ghost_sync.h parallel_hilbert.h parallel_histogram.h parallel_implementation.h parallel_sort.h threads.h threads_allocators.h centroid_partitioner.h hilbert_sfc_partitioner.h linear_partitioner.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_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 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 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_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_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_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 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_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_ghost_sync.h parallel_hilbert.h parallel_histogram.h parallel_implementation.h parallel_sort.h threads.h threads_allocators.h centroid_partitioner.h hilbert_sfc_partitioner.h linear_partitioner.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_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 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 xdr_cxx.h parallel_communicator_specializations DISTCLEANFILES = $(BUILT_SOURCES) @@ -456,6 +456,9 @@ plane.h: $(top_srcdir)/include/geom/plane.h point.h: $(top_srcdir)/include/geom/point.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ +reference_elem.h: $(top_srcdir)/include/geom/reference_elem.h + $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ + remote_elem.h: $(top_srcdir)/include/geom/remote_elem.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ diff --git a/include/libmesh/Makefile.in b/include/libmesh/Makefile.in index 4a39e5a03cd..61fd4830c3a 100644 --- a/include/libmesh/Makefile.in +++ b/include/libmesh/Makefile.in @@ -454,41 +454,42 @@ BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.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_tri6.h \ - node.h node_elem.h node_range.h plane.h point.h remote_elem.h \ - side.h sphere.h stored_range.h surface.h abaqus_io.h \ - boundary_info.h boundary_mesh.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_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_ghost_sync.h parallel_hilbert.h parallel_histogram.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 \ + 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_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_ghost_sync.h \ + parallel_hilbert.h parallel_histogram.h \ parallel_implementation.h parallel_sort.h threads.h \ threads_allocators.h centroid_partitioner.h \ hilbert_sfc_partitioner.h linear_partitioner.h \ @@ -1142,6 +1143,9 @@ plane.h: $(top_srcdir)/include/geom/plane.h point.h: $(top_srcdir)/include/geom/point.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ +reference_elem.h: $(top_srcdir)/include/geom/reference_elem.h + $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ + remote_elem.h: $(top_srcdir)/include/geom/remote_elem.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ diff --git a/src/geom/reference_elem.C b/src/geom/reference_elem.C new file mode 100644 index 00000000000..75d8962bb86 --- /dev/null +++ b/src/geom/reference_elem.C @@ -0,0 +1,349 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2013 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/node.h" +#include "libmesh/elem.h" +#include "libmesh/reference_elem.h" +#include "libmesh/threads.h" + +// C++ includes +#include + + + +// anonymous namespace for implelemntation details +namespace +{ + using namespace libMesh; + + typedef Threads::spin_mutex InitMutex; + + // Mutex for thread safety. + InitMutex init_mtx; + + // simple flag denoting if we are intitialized + bool initialized = false; + + // map from ElemType to reference element file system object name + typedef std::map FileMapType; + FileMapType ref_elem_file; + Elem* ref_elem_map[INVALID_ELEM]; + + + + class SingletonCache + { + public: + void clear() + { + for (unsigned int e=0; eclear(); } + + std::vector node_list; + std::vector elem_list; + } singleton_cache; + + + + + void find_input_file (const std::string &file_name_in, + std::ifstream &ref_elem_stream) + { + std::cout << "--> Reading reference element from \"" + << file_name_in << "\"\n"; + + if (ref_elem_stream.is_open()) + ref_elem_stream.close(); + + std::string file_name (file_name_in); + + // Try the naked filename + ref_elem_stream.open(file_name.c_str()); if (ref_elem_stream.good()) return; + + + // LIBMESH_ROOT? + const char *LIBMESH_ROOT = std::getenv("LIBMESH_ROOT"); + + if (LIBMESH_ROOT) + { + // $LIBMESH_ROOT/$filename + ref_elem_stream.close(); + + file_name = LIBMESH_ROOT; + file_name += "/"; + file_name += file_name_in; + + ref_elem_stream.open(file_name.c_str()); if (ref_elem_stream.good()) return; + + // $LIBMESH_ROOT/share/$filename + ref_elem_stream.close(); + + file_name = LIBMESH_ROOT; + file_name += "/share/"; + file_name += file_name_in; + + ref_elem_stream.open(file_name.c_str()); if (ref_elem_stream.good()) return; + } + + + // LIBMESH_DATA? + const char *LIBMESH_DATA = std::getenv("LIBMESH_DATA"); + + if (LIBMESH_DATA) + { + // $LIBMESH_DATA/$filename + ref_elem_stream.close(); + + file_name = LIBMESH_DATA; + file_name += "/"; + file_name += file_name_in; + + ref_elem_stream.open(file_name.c_str()); if (ref_elem_stream.good()) return; + + // $LIBMESH_DATA/share/$filename + ref_elem_stream.close(); + + file_name = LIBMESH_DATA; + file_name += "/share/"; + file_name += file_name_in; + + ref_elem_stream.open(file_name.c_str()); if (ref_elem_stream.good()) return; + } + + + libMesh::err << "ERROR reading file name: " + << file_name_in + << std::endl; + + libmesh_file_error(file_name_in); + } + + + + Elem* read_ref_elem (std::istream &in) + { + static const unsigned int comm_len = 1024; + char comm[comm_len]; + + // For reference: + // reference_elements/3D/one_hex.xda: + + // libMesh-0.7.0+ + // 1 # number of elements + // 8 # number of nodes + // . # boundary condition specification file + // n/a # subdomain id specification file + // n/a # processor id specification file + // n/a # p-level specification file + // 1 # n_elem at level 0, [ type (n0 ... nN-1) ] + // 10 0 1 2 3 4 5 6 7 + // -1.00000000000000000e+00 -1.00000000000000000e+00 -1.00000000000000000e+00 + // 1.00000000000000000e+00 -1.00000000000000000e+00 -1.00000000000000000e+00 + // 1.00000000000000000e+00 1.00000000000000000e+00 -1.00000000000000000e+00 + // -1.00000000000000000e+00 1.00000000000000000e+00 -1.00000000000000000e+00 + // -1.00000000000000000e+00 -1.00000000000000000e+00 1.00000000000000000e+00 + // 1.00000000000000000e+00 -1.00000000000000000e+00 1.00000000000000000e+00 + // 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 + // -1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 + // 6 # number of boundary conditions + // 0 0 1 + // 0 1 2 + // 0 2 3 + // 0 3 4 + // 0 4 5 + // 0 5 6 + + std::string foo; + unsigned int n_elem, n_nodes, elem_type, nn; + double x, y, z; + + in >> foo; + in >> n_elem; /**/ in.getline (comm, comm_len); libmesh_assert_equal_to (n_elem, 1); + in >> n_nodes; /**/ in.getline (comm, comm_len); + in >> foo; /**/ in.getline (comm, comm_len); + in >> foo; /**/ in.getline (comm, comm_len); + in >> foo; /**/ in.getline (comm, comm_len); + in >> foo; /**/ in.getline (comm, comm_len); + in >> n_elem; /**/ in.getline (comm, comm_len); libmesh_assert_equal_to (n_elem, 1); + + in >> elem_type; + + libmesh_assert_less (elem_type, INVALID_ELEM); + libmesh_assert_equal_to (n_nodes, Elem::type_to_n_nodes_map[elem_type]); + + // Construct the elem + Elem *elem = Elem::build(static_cast(elem_type)).release(); + + // We are expecing an identity map, so assert it! + for (unsigned int n=0; n> nn; + libmesh_assert_equal_to (n,nn); + } + + for (unsigned int n=0; n> x >> y >> z; + + Node *node = new Node(x,y,z,n); + singleton_cache.node_list.push_back(node); + + elem->set_node(n) = node; + } + + + // it is entirely possible we ran out of file or encountered + // another error. If so, cleanly abort. + if (!in) + { + delete elem; + elem = NULL; + libMesh::err << "ERROR while creating element singleton!\n"; + libmesh_error(); + } + + else + singleton_cache.elem_list.push_back (elem); + + return elem; + } + + + + void read_ref_elem (const ElemType Type, + const std::string &fname) + { + std::ifstream in; + + find_input_file(fname, in); + + if (!in.good()) + libmesh_file_error("error reading reference element file!"); + + libmesh_assert_less (Type, INVALID_ELEM); + + ref_elem_map[Type] = read_ref_elem(in); + } + + + + void init_ref_elem_table() + { + // ouside mutex - if this flag is set, we can + // trust it. + if (initialized) return; + + // playing with fire here - lock before touching shared + // data structures + InitMutex::scoped_lock lock(init_mtx); + + // inside mutex - flag may have changed while waiting + // for the lock to acquire, check it again. + if (initialized) return; + + // OK, if we get here we have the lock and we are not + // initialized. populate singletons. + singleton_cache.clear(); + + // initialize the reference file table + { + ref_elem_file.clear(); + + // // 1D elements + // ref_elem_file[EDGE2] = "not_implemented"; + // ref_elem_file[EDGE3] = "not_implemented"; + // ref_elem_file[EDGE4] = "not_implemented"; + + // 2D elements + ref_elem_file[TRI3] = "reference_elements/2D/one_tri.xda"; + ref_elem_file[TRI6] = "reference_elements/2D/one_tri6.xda"; + + ref_elem_file[QUAD4] = "reference_elements/2D/one_quad.xda"; + ref_elem_file[QUAD8] = "reference_elements/2D/one_quad8.xda"; + ref_elem_file[QUAD9] = "reference_elements/2D/one_quad9.xda"; + + // 3D elements + ref_elem_file[HEX8] = "reference_elements/3D/one_hex.xda"; + ref_elem_file[HEX20] = "reference_elements/3D/one_hex20.xda"; + ref_elem_file[HEX27] = "reference_elements/3D/one_hex27.xda"; + + ref_elem_file[TET4] = "reference_elements/3D/one_tet.xda"; + ref_elem_file[TET10] = "reference_elements/3D/one_tet10.xda"; + + ref_elem_file[PRISM6] = "reference_elements/3D/one_prism.xda"; + ref_elem_file[PRISM15] = "reference_elements/3D/one_prism15.xda"; + ref_elem_file[PRISM18] = "reference_elements/3D/one_prism18.xda"; + } + + // Read'em + for (FileMapType::const_iterator it=ref_elem_file.begin(); + it != ref_elem_file.end(); ++it) + read_ref_elem(it->first, + it->second); + + // set the initialized flag. + initialized = true; + } +} + + + +//---------------------------------------------------------------------------- +// external API Implementation +namespace libMesh +{ + namespace ReferenceElem + { + + + Elem const* get (const ElemType Type) + { + libmesh_assert_less (Type, INVALID_ELEM); + + init_ref_elem_table(); + + libmesh_assert (ref_elem_map[Type] != NULL); + + return ref_elem_map[Type]; + } + + + + void clear () + { + singleton_cache.clear(); + } + + + } // namespace ReferenceElem +} // namespace libMesh diff --git a/src/libmesh_SOURCES b/src/libmesh_SOURCES index b691f76e0f0..4eea125cdb8 100644 --- a/src/libmesh_SOURCES +++ b/src/libmesh_SOURCES @@ -156,6 +156,7 @@ libmesh_SOURCES = \ src/geom/node_elem.C \ src/geom/plane.C \ src/geom/point.C \ + src/geom/reference_elem.C \ src/geom/remote_elem.C \ src/geom/sphere.C \ src/geom/surface.C \