From 2bb4e23c01ead757124f0770394eb05f8ce4fc27 Mon Sep 17 00:00:00 2001 From: Derek Gaston Date: Fri, 8 Nov 2013 16:23:42 -0700 Subject: [PATCH] initial addition of CheckpointIO capability --- Makefile.in | 116 ++++-- include/Makefile.in | 1 + include/include_HEADERS | 1 + include/libmesh/Makefile.am | 5 +- include/libmesh/Makefile.in | 149 +++---- include/mesh/checkpoint_io.h | 190 +++++++++ include/mesh/mesh_base.h | 12 + include/mesh/mesh_tools.h | 9 +- include/mesh/xdr_io.h | 11 +- src/libmesh_SOURCES | 1 + src/mesh/checkpoint_io.C | 737 +++++++++++++++++++++++++++++++++++ src/mesh/unstructured_mesh.C | 15 +- 12 files changed, 1134 insertions(+), 113 deletions(-) create mode 100644 include/mesh/checkpoint_io.h create mode 100644 src/mesh/checkpoint_io.C diff --git a/Makefile.in b/Makefile.in index d5e6b364cc4..39a31f38f99 100644 --- a/Makefile.in +++ b/Makefile.in @@ -275,12 +275,12 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dof_map.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/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/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 \ @@ -614,6 +614,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dof_map.lo \ src/mesh/libmesh_dbg_la-abaqus_io.lo \ src/mesh/libmesh_dbg_la-boundary_info.lo \ src/mesh/libmesh_dbg_la-boundary_mesh.lo \ + src/mesh/libmesh_dbg_la-checkpoint_io.lo \ src/mesh/libmesh_dbg_la-diva_io.lo \ src/mesh/libmesh_dbg_la-ensight_io.lo \ src/mesh/libmesh_dbg_la-exodusII_io.lo \ @@ -957,12 +958,12 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dof_map.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/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/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 \ @@ -1295,6 +1296,7 @@ am__objects_2 = src/base/libmesh_devel_la-dof_map.lo \ src/mesh/libmesh_devel_la-abaqus_io.lo \ src/mesh/libmesh_devel_la-boundary_info.lo \ src/mesh/libmesh_devel_la-boundary_mesh.lo \ + src/mesh/libmesh_devel_la-checkpoint_io.lo \ src/mesh/libmesh_devel_la-diva_io.lo \ src/mesh/libmesh_devel_la-ensight_io.lo \ src/mesh/libmesh_devel_la-exodusII_io.lo \ @@ -1635,12 +1637,12 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dof_map.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/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/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 \ @@ -1973,6 +1975,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dof_map.lo \ src/mesh/libmesh_oprof_la-abaqus_io.lo \ src/mesh/libmesh_oprof_la-boundary_info.lo \ src/mesh/libmesh_oprof_la-boundary_mesh.lo \ + src/mesh/libmesh_oprof_la-checkpoint_io.lo \ src/mesh/libmesh_oprof_la-diva_io.lo \ src/mesh/libmesh_oprof_la-ensight_io.lo \ src/mesh/libmesh_oprof_la-exodusII_io.lo \ @@ -2313,12 +2316,12 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dof_map.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/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/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 \ @@ -2651,6 +2654,7 @@ am__objects_4 = src/base/libmesh_opt_la-dof_map.lo \ src/mesh/libmesh_opt_la-abaqus_io.lo \ src/mesh/libmesh_opt_la-boundary_info.lo \ src/mesh/libmesh_opt_la-boundary_mesh.lo \ + src/mesh/libmesh_opt_la-checkpoint_io.lo \ src/mesh/libmesh_opt_la-diva_io.lo \ src/mesh/libmesh_opt_la-ensight_io.lo \ src/mesh/libmesh_opt_la-exodusII_io.lo \ @@ -2990,12 +2994,12 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dof_map.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/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/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 \ @@ -3328,6 +3332,7 @@ am__objects_5 = src/base/libmesh_prof_la-dof_map.lo \ src/mesh/libmesh_prof_la-abaqus_io.lo \ src/mesh/libmesh_prof_la-boundary_info.lo \ src/mesh/libmesh_prof_la-boundary_mesh.lo \ + src/mesh/libmesh_prof_la-checkpoint_io.lo \ src/mesh/libmesh_prof_la-diva_io.lo \ src/mesh/libmesh_prof_la-ensight_io.lo \ src/mesh/libmesh_prof_la-exodusII_io.lo \ @@ -4540,6 +4545,7 @@ libmesh_SOURCES = \ 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 \ @@ -5461,6 +5467,8 @@ src/mesh/libmesh_dbg_la-boundary_info.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_dbg_la-boundary_mesh.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) +src/mesh/libmesh_dbg_la-checkpoint_io.lo: src/mesh/$(am__dirstamp) \ + src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_dbg_la-diva_io.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_dbg_la-ensight_io.lo: src/mesh/$(am__dirstamp) \ @@ -6495,6 +6503,8 @@ src/mesh/libmesh_devel_la-boundary_info.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_devel_la-boundary_mesh.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) +src/mesh/libmesh_devel_la-checkpoint_io.lo: src/mesh/$(am__dirstamp) \ + src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_devel_la-diva_io.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_devel_la-ensight_io.lo: src/mesh/$(am__dirstamp) \ @@ -7472,6 +7482,8 @@ src/mesh/libmesh_oprof_la-boundary_info.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_oprof_la-boundary_mesh.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) +src/mesh/libmesh_oprof_la-checkpoint_io.lo: src/mesh/$(am__dirstamp) \ + src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_oprof_la-diva_io.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_oprof_la-ensight_io.lo: src/mesh/$(am__dirstamp) \ @@ -8449,6 +8461,8 @@ src/mesh/libmesh_opt_la-boundary_info.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_opt_la-boundary_mesh.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) +src/mesh/libmesh_opt_la-checkpoint_io.lo: src/mesh/$(am__dirstamp) \ + src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_opt_la-diva_io.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_opt_la-ensight_io.lo: src/mesh/$(am__dirstamp) \ @@ -9423,6 +9437,8 @@ src/mesh/libmesh_prof_la-boundary_info.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_prof_la-boundary_mesh.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) +src/mesh/libmesh_prof_la-checkpoint_io.lo: src/mesh/$(am__dirstamp) \ + src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_prof_la-diva_io.lo: src/mesh/$(am__dirstamp) \ src/mesh/$(DEPDIR)/$(am__dirstamp) src/mesh/libmesh_prof_la-ensight_io.lo: src/mesh/$(am__dirstamp) \ @@ -11259,6 +11275,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-abaqus_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-boundary_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-boundary_mesh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-checkpoint_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-diva_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-ensight_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_dbg_la-exodusII_io.Plo@am__quote@ @@ -11318,6 +11335,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-abaqus_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-boundary_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-boundary_mesh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-checkpoint_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-diva_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-ensight_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_devel_la-exodusII_io.Plo@am__quote@ @@ -11377,6 +11395,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-abaqus_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-boundary_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-boundary_mesh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-checkpoint_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-diva_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-ensight_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_oprof_la-exodusII_io.Plo@am__quote@ @@ -11436,6 +11455,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-abaqus_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-boundary_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-boundary_mesh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-checkpoint_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-diva_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-ensight_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_opt_la-exodusII_io.Plo@am__quote@ @@ -11495,6 +11515,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-abaqus_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-boundary_info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-boundary_mesh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-checkpoint_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-diva_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-ensight_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/mesh/$(DEPDIR)/libmesh_prof_la-exodusII_io.Plo@am__quote@ @@ -13624,6 +13645,13 @@ src/mesh/libmesh_dbg_la-boundary_mesh.lo: src/mesh/boundary_mesh.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/mesh/libmesh_dbg_la-boundary_mesh.lo `test -f 'src/mesh/boundary_mesh.C' || echo '$(srcdir)/'`src/mesh/boundary_mesh.C +src/mesh/libmesh_dbg_la-checkpoint_io.lo: src/mesh/checkpoint_io.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-checkpoint_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_dbg_la-checkpoint_io.Tpo -c -o src/mesh/libmesh_dbg_la-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_dbg_la-checkpoint_io.Tpo src/mesh/$(DEPDIR)/libmesh_dbg_la-checkpoint_io.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/checkpoint_io.C' object='src/mesh/libmesh_dbg_la-checkpoint_io.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-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C + src/mesh/libmesh_dbg_la-diva_io.lo: src/mesh/diva_io.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-diva_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_dbg_la-diva_io.Tpo -c -o src/mesh/libmesh_dbg_la-diva_io.lo `test -f 'src/mesh/diva_io.C' || echo '$(srcdir)/'`src/mesh/diva_io.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_dbg_la-diva_io.Tpo src/mesh/$(DEPDIR)/libmesh_dbg_la-diva_io.Plo @@ -16424,6 +16452,13 @@ src/mesh/libmesh_devel_la-boundary_mesh.lo: src/mesh/boundary_mesh.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/mesh/libmesh_devel_la-boundary_mesh.lo `test -f 'src/mesh/boundary_mesh.C' || echo '$(srcdir)/'`src/mesh/boundary_mesh.C +src/mesh/libmesh_devel_la-checkpoint_io.lo: src/mesh/checkpoint_io.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-checkpoint_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_devel_la-checkpoint_io.Tpo -c -o src/mesh/libmesh_devel_la-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_devel_la-checkpoint_io.Tpo src/mesh/$(DEPDIR)/libmesh_devel_la-checkpoint_io.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/checkpoint_io.C' object='src/mesh/libmesh_devel_la-checkpoint_io.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-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C + src/mesh/libmesh_devel_la-diva_io.lo: src/mesh/diva_io.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-diva_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_devel_la-diva_io.Tpo -c -o src/mesh/libmesh_devel_la-diva_io.lo `test -f 'src/mesh/diva_io.C' || echo '$(srcdir)/'`src/mesh/diva_io.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_devel_la-diva_io.Tpo src/mesh/$(DEPDIR)/libmesh_devel_la-diva_io.Plo @@ -19224,6 +19259,13 @@ src/mesh/libmesh_oprof_la-boundary_mesh.lo: src/mesh/boundary_mesh.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/mesh/libmesh_oprof_la-boundary_mesh.lo `test -f 'src/mesh/boundary_mesh.C' || echo '$(srcdir)/'`src/mesh/boundary_mesh.C +src/mesh/libmesh_oprof_la-checkpoint_io.lo: src/mesh/checkpoint_io.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-checkpoint_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_oprof_la-checkpoint_io.Tpo -c -o src/mesh/libmesh_oprof_la-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_oprof_la-checkpoint_io.Tpo src/mesh/$(DEPDIR)/libmesh_oprof_la-checkpoint_io.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/checkpoint_io.C' object='src/mesh/libmesh_oprof_la-checkpoint_io.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-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C + src/mesh/libmesh_oprof_la-diva_io.lo: src/mesh/diva_io.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-diva_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_oprof_la-diva_io.Tpo -c -o src/mesh/libmesh_oprof_la-diva_io.lo `test -f 'src/mesh/diva_io.C' || echo '$(srcdir)/'`src/mesh/diva_io.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_oprof_la-diva_io.Tpo src/mesh/$(DEPDIR)/libmesh_oprof_la-diva_io.Plo @@ -22024,6 +22066,13 @@ src/mesh/libmesh_opt_la-boundary_mesh.lo: src/mesh/boundary_mesh.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/mesh/libmesh_opt_la-boundary_mesh.lo `test -f 'src/mesh/boundary_mesh.C' || echo '$(srcdir)/'`src/mesh/boundary_mesh.C +src/mesh/libmesh_opt_la-checkpoint_io.lo: src/mesh/checkpoint_io.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-checkpoint_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_opt_la-checkpoint_io.Tpo -c -o src/mesh/libmesh_opt_la-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_opt_la-checkpoint_io.Tpo src/mesh/$(DEPDIR)/libmesh_opt_la-checkpoint_io.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/checkpoint_io.C' object='src/mesh/libmesh_opt_la-checkpoint_io.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-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C + src/mesh/libmesh_opt_la-diva_io.lo: src/mesh/diva_io.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-diva_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_opt_la-diva_io.Tpo -c -o src/mesh/libmesh_opt_la-diva_io.lo `test -f 'src/mesh/diva_io.C' || echo '$(srcdir)/'`src/mesh/diva_io.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_opt_la-diva_io.Tpo src/mesh/$(DEPDIR)/libmesh_opt_la-diva_io.Plo @@ -24824,6 +24873,13 @@ src/mesh/libmesh_prof_la-boundary_mesh.lo: src/mesh/boundary_mesh.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/mesh/libmesh_prof_la-boundary_mesh.lo `test -f 'src/mesh/boundary_mesh.C' || echo '$(srcdir)/'`src/mesh/boundary_mesh.C +src/mesh/libmesh_prof_la-checkpoint_io.lo: src/mesh/checkpoint_io.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-checkpoint_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_prof_la-checkpoint_io.Tpo -c -o src/mesh/libmesh_prof_la-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_prof_la-checkpoint_io.Tpo src/mesh/$(DEPDIR)/libmesh_prof_la-checkpoint_io.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/mesh/checkpoint_io.C' object='src/mesh/libmesh_prof_la-checkpoint_io.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-checkpoint_io.lo `test -f 'src/mesh/checkpoint_io.C' || echo '$(srcdir)/'`src/mesh/checkpoint_io.C + src/mesh/libmesh_prof_la-diva_io.lo: src/mesh/diva_io.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-diva_io.lo -MD -MP -MF src/mesh/$(DEPDIR)/libmesh_prof_la-diva_io.Tpo -c -o src/mesh/libmesh_prof_la-diva_io.lo `test -f 'src/mesh/diva_io.C' || echo '$(srcdir)/'`src/mesh/diva_io.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/mesh/$(DEPDIR)/libmesh_prof_la-diva_io.Tpo src/mesh/$(DEPDIR)/libmesh_prof_la-diva_io.Plo diff --git a/include/Makefile.in b/include/Makefile.in index 9fb9cebeaf9..cd18a310f1a 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -637,6 +637,7 @@ include_HEADERS = \ mesh/abaqus_io.h \ mesh/boundary_info.h \ mesh/boundary_mesh.h \ + mesh/checkpoint_io.h \ mesh/diva_io.h \ mesh/ensight_io.h \ mesh/exodusII_io.h \ diff --git a/include/include_HEADERS b/include/include_HEADERS index 888550b8105..ba534af774b 100644 --- a/include/include_HEADERS +++ b/include/include_HEADERS @@ -148,6 +148,7 @@ include_HEADERS = \ mesh/abaqus_io.h \ mesh/boundary_info.h \ mesh/boundary_mesh.h \ + mesh/checkpoint_io.h \ mesh/diva_io.h \ mesh/ensight_io.h \ mesh/exodusII_io.h \ diff --git a/include/libmesh/Makefile.am b/include/libmesh/Makefile.am index c0866f14f0a..1080a479a3b 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 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_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_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_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 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_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_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) @@ -483,6 +483,9 @@ boundary_info.h: $(top_srcdir)/include/mesh/boundary_info.h boundary_mesh.h: $(top_srcdir)/include/mesh/boundary_mesh.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ +checkpoint_io.h: $(top_srcdir)/include/mesh/checkpoint_io.h + $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ + diva_io.h: $(top_srcdir)/include/mesh/diva_io.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ diff --git a/include/libmesh/Makefile.in b/include/libmesh/Makefile.in index 928596fa049..0f5d28562e7 100644 --- a/include/libmesh/Makefile.in +++ b/include/libmesh/Makefile.in @@ -465,79 +465,79 @@ BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.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_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_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 \ + 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_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_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 \ @@ -1179,6 +1179,9 @@ boundary_info.h: $(top_srcdir)/include/mesh/boundary_info.h boundary_mesh.h: $(top_srcdir)/include/mesh/boundary_mesh.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ +checkpoint_io.h: $(top_srcdir)/include/mesh/checkpoint_io.h + $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ + diva_io.h: $(top_srcdir)/include/mesh/diva_io.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ diff --git a/include/mesh/checkpoint_io.h b/include/mesh/checkpoint_io.h new file mode 100644 index 00000000000..e6060eaaa62 --- /dev/null +++ b/include/mesh/checkpoint_io.h @@ -0,0 +1,190 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2012 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_CHECKPOINT_IO_H +#define LIBMESH_CHECKPOINT_IO_H + + +// Local includes +#include "libmesh/libmesh.h" +#include "libmesh/mesh_input.h" +#include "libmesh/mesh_output.h" +#include "libmesh/parallel_object.h" + +// C++ includes +#include +#include + +namespace libMesh +{ +// Forward declarations +class MeshBase; +class MeshData; +class Xdr; +class Elem; + + +/** + * + * @author Benjamin Kirk, John Peterson, Derek Gaston + */ + +// ------------------------------------------------------------ +// CheckpointIO class definition +class CheckpointIO : public MeshInput, + public MeshOutput, + public ParallelObject +{ + public: + // The size used for encoding all id types in this file + typedef largest_id_type xdr_id_type; + + // The size type used to read header sizes (meta data information) + typedef uint32_t header_id_type; + + /** + * Constructor. Takes a writeable reference to a mesh object. + * This is the constructor required to read a mesh. + * The optional parameter \p binary can be used to switch + * between ASCII (\p false, the default) or binary (\p true) + * files. + */ + explicit + CheckpointIO (MeshBase&, const bool=false); + + /** + * Constructor. Takes a reference to a constant mesh object. + * This constructor will only allow us to write the mesh. + * The optional parameter \p binary can be used to switch + * between ASCII (\p false, the default) or binary (\p true) + * files. + */ + explicit + CheckpointIO (const MeshBase&, const bool=false); + + /** + * Destructor. + */ + virtual ~CheckpointIO (); + + /** + * This method implements reading a mesh from a specified file. + */ + virtual void read (const std::string&); + + /** + * This method implements writing a mesh to a specified file. + */ + virtual void write (const std::string&); + + /** + * Get/Set the flag indicating if we should read/write binary. + */ + bool binary() const { return _binary; } + bool & binary() { return _binary; } + + + /** + * Get/Set the version string. + */ + const std::string & version () const { return _version; } + std::string & version () { return _version; } + + private: + //--------------------------------------------------------------------------- + // Write Implementation + /** + * Write subdomain name information - NEW in 0.9.2 format + */ + void write_subdomain_names(Xdr &io) const; + + /** + * Write the connectivity for a parallel, distributed mesh + */ + void write_connectivity (Xdr &io) const; + + /** + * Write the nodal locations for a parallel, distributed mesh + */ + void write_nodes (Xdr &io) const; + + /** + * Write the boundary conditions for a parallel, distributed mesh + */ + void write_bcs (Xdr &io) const; + + /** + * Write the boundary conditions for a parallel, distributed mesh + */ + void write_nodesets (Xdr &io) const; + + /** + * Write boundary names information (sideset and nodeset) - NEW in 0.9.2 format + */ + void write_bc_names (Xdr &io, const BoundaryInfo & info, bool is_sideset) const; + + + //--------------------------------------------------------------------------- + // Read Implementation + /** + * Read subdomain name information - NEW in 0.9.2 format + */ + void read_subdomain_names(Xdr &io); + + /** + * Read the connectivity for a parallel, distributed mesh + */ + void read_connectivity (Xdr &io); + + /** + * Read the nodal locations for a parallel, distributed mesh + */ + void read_nodes (Xdr &io); + + /** + * Read the boundary conditions for a parallel, distributed mesh + */ + void read_bcs (Xdr &io); + + /** + * Read the nodeset conditions for a parallel, distributed mesh + */ + void read_nodesets (Xdr &io); + + /** + * Read boundary names information (sideset and nodeset) - NEW in 0.9.2 format + */ + void read_bc_names(Xdr &io, BoundaryInfo & info, bool is_sideset); + + /** + * Return the number of levels of refinement in the active mesh on this processor. + * NOTE: This includes _all_ elements on this processor even those not owned by this processor! + * Implemented by looping over all the active elements and finding + * the maximum level. + */ + unsigned int n_active_levels_on_processor(const MeshBase &mesh) const; + + bool _binary; + std::string _version; +}; + + +} // namespace libMesh + +#endif // LIBMESH_CHECKPOINT_IO_H diff --git a/include/mesh/mesh_base.h b/include/mesh/mesh_base.h index 6734141b5ad..d7eeb03c8e5 100644 --- a/include/mesh/mesh_base.h +++ b/include/mesh/mesh_base.h @@ -209,6 +209,18 @@ class MeshBase : public ParallelObject */ virtual dof_id_type max_node_id () const = 0; +#ifdef LIBMESH_ENABLE_UNIQUE_ID + /** + * Returns the next unique id to be used. + */ + unique_id_type next_unique_id() { return _next_unique_id; } + + /** + * Sets the next unique id to be used. + */ + unique_id_type set_next_unique_id(unique_id_type id) { _next_unique_id = id; } +#endif + /** * Reserves space for a known number of nodes. * Note that this method may or may not do anything, depending diff --git a/include/mesh/mesh_tools.h b/include/mesh/mesh_tools.h index 868d610930b..ddfc9f481c2 100644 --- a/include/mesh/mesh_tools.h +++ b/include/mesh/mesh_tools.h @@ -260,7 +260,7 @@ namespace MeshTools /** * Return the number of levels of refinement in the active mesh. * Implemented by looping over all the active local elements and finding - * the maximum level, then summing in parallel. + * the maximum level, then maxxing in parallel. */ unsigned int n_active_levels(const MeshBase &mesh); @@ -271,6 +271,13 @@ namespace MeshTools */ unsigned int n_active_local_levels(const MeshBase &mesh); + /** + * Return the number of levels of refinement in the active local mesh. + * Implemented by looping over all the active local elements and finding + * the maximum level. + */ + unsigned int n_active_local_levels(const MeshBase &mesh); + /** * Return the number of p-levels of refinement in the mesh. * Implemented by looping over all the local elements and finding the diff --git a/include/mesh/xdr_io.h b/include/mesh/xdr_io.h index 06dca63ed5f..527029bfe15 100644 --- a/include/mesh/xdr_io.h +++ b/include/mesh/xdr_io.h @@ -34,11 +34,6 @@ namespace libMesh { -// The size used for encoding all id types in this file -typedef largest_id_type xdr_id_type; -// The size type used to read header sizes (meta data information) -typedef uint32_t header_id_type; - // Forward declarations class MeshBase; class MeshData; @@ -57,8 +52,12 @@ class XdrIO : public MeshInput, public MeshOutput, public ParallelObject { - public: + // The size used for encoding all id types in this file + typedef largest_id_type xdr_id_type; + + // The size type used to read header sizes (meta data information) + typedef uint32_t header_id_type; /** * Constructor. Takes a writeable reference to a mesh object. diff --git a/src/libmesh_SOURCES b/src/libmesh_SOURCES index d591ee997a3..c0d01f17b4f 100644 --- a/src/libmesh_SOURCES +++ b/src/libmesh_SOURCES @@ -166,6 +166,7 @@ libmesh_SOURCES = \ 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 \ diff --git a/src/mesh/checkpoint_io.C b/src/mesh/checkpoint_io.C new file mode 100644 index 00000000000..69ba8cf7ae2 --- /dev/null +++ b/src/mesh/checkpoint_io.C @@ -0,0 +1,737 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2012 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 + +#include "libmesh/checkpoint_io.h" + +// C++ includes +#include +#include +#include +#include +#include +#include + +// Local includes +#include "libmesh/xdr_io.h" +#include "libmesh/legacy_xdr_io.h" +#include "libmesh/xdr_cxx.h" +#include "libmesh/enum_xdr_mode.h" +#include "libmesh/mesh_base.h" +#include "libmesh/node.h" +#include "libmesh/elem.h" +#include "libmesh/boundary_info.h" +#include "libmesh/parallel.h" +#include "libmesh/mesh_tools.h" +#include "libmesh/partitioner.h" +#include "libmesh/libmesh_logging.h" +#include "libmesh/mesh_communication.h" +#include "libmesh/parallel_mesh.h" + +namespace libMesh +{ + +// ------------------------------------------------------------ +// CheckpointIO members +CheckpointIO::CheckpointIO (MeshBase& mesh, const bool binary_in) : + MeshInput (mesh,/* is_parallel_format = */ true), + MeshOutput(mesh,/* is_parallel_format = */ true), + ParallelObject (mesh), + _binary (binary_in), + _version ("checkpoint-1.0") +{ +} + + + +CheckpointIO::CheckpointIO (const MeshBase& mesh, const bool binary_in) : + MeshOutput(mesh,/* is_parallel_format = */ true), + ParallelObject (mesh), + _binary (binary_in) +{ +} + + + +CheckpointIO::~CheckpointIO () +{ +} + + + + +void CheckpointIO::write (const std::string& name) +{ + // convenient reference to our mesh + const MeshBase &mesh = MeshOutput::mesh(); + + // Try to dynamic cast the mesh to see if it's a ParallelMesh object + // Note: Just using is_serial() is not good enough because the Mesh won't + // have been prepared yet when is when that flag gets set to false... sigh. + bool parallel_mesh = dynamic_cast(&mesh); + + // If this is a serial mesh then we're only going to write it on processor 0 + if(parallel_mesh || this->processor_id() == 0) + { + std::ostringstream file_name_stream; + + file_name_stream << name; + + if(parallel_mesh) + file_name_stream << "-" << this->processor_id(); + + Xdr io (file_name_stream.str(), this->binary() ? ENCODE : WRITE); + + START_LOG("write()","CheckpointIO"); + + // write the version + io.data(_version, "# version"); + + // Write out whether or not this is a serial mesh (helps with error checking on read) + { + unsigned int parallel = parallel_mesh; + io.data(parallel, "# parallel"); + } + + // If we're writing out a parallel mesh then we need to write the number of processors + // so we can check it upon reading the file + if(parallel_mesh) + { + largest_id_type n_procs = this->n_processors(); + io.data(n_procs, "# n_procs"); + } + + // write subdomain names + this->write_subdomain_names(io); + + // write the nodal locations + this->write_nodes (io); + + // write connectivity + this->write_connectivity (io); + + // write the boundary condition information + this->write_bcs (io); + + // write the nodeset information + this->write_nodesets (io); + + STOP_LOG("write()","CheckpointIO"); + + // pause all processes until the writing ends -- this will + // protect for the pathological case where a write is + // followed immediately by a read. The write must be + // guaranteed to complete first. + io.close(); + } + + this->comm().barrier(); +} + + + +void CheckpointIO::write_subdomain_names(Xdr &io) const +{ + { + const MeshBase &mesh = MeshOutput::mesh(); + + const std::map & subdomain_map = mesh.get_subdomain_name_map(); + + std::vector subdomain_ids; subdomain_ids.reserve(subdomain_map.size()); + std::vector subdomain_names; subdomain_names.reserve(subdomain_map.size()); + + // We need to loop over the map and make sure that there aren't any invalid entries. Since we + // return writable references in mesh_base, it's possible for the user to leave some entity names + // blank. We can't write those to the XDA file. + header_id_type n_subdomain_names = 0; + std::map::const_iterator it_end = subdomain_map.end(); + for (std::map::const_iterator it = subdomain_map.begin(); it != it_end; ++it) + { + if (!it->second.empty()) + { + n_subdomain_names++; + subdomain_ids.push_back(it->first); + subdomain_names.push_back(it->second); + } + } + + io.data(n_subdomain_names, "# subdomain id to name map"); + // Write out the ids and names in two vectors + if (n_subdomain_names) + { + io.data(subdomain_ids); + io.data(subdomain_names); + } + } +} + + + +void CheckpointIO::write_nodes (Xdr &io) const +{ + // convenient reference to our mesh + const MeshBase &mesh = MeshOutput::mesh(); + + MeshBase::const_node_iterator + it = mesh.nodes_begin(), + end = mesh.nodes_end(); + + unsigned int n_nodes_here = MeshTools::n_nodes(it, end); + + io.data(n_nodes_here, "# n_nodes on proc"); + + it = mesh.nodes_begin(); + + // Will hold the node id and pid + std::vector id_pid(2); + + // For the coordinates + std::vector coords(LIBMESH_DIM); + + for(; it != end; ++it) + { + Node & node = *(*it); + + id_pid[0] = node.id(); + id_pid[1] = node.processor_id(); + + io.data_stream(&id_pid[0], 2, 2); + +#ifdef LIBMESH_ENABLE_UNIQUE_ID + largest_id_type unique_id = node.unqiue_id(); + + io.data(unique_id, "# unique id"); +#endif + + coords[0] = node(0); + +#if LIBMESH_DIM > 1 + coords[1] = node(1); +#endif + +#if LIBMESH_DIM > 2 + coords[2] = node(2); +#endif + + io.data_stream(&coords[0], LIBMESH_DIM, 3); + } +} + + + +void CheckpointIO::write_connectivity (Xdr &io) const +{ + libmesh_assert (io.writing()); + + // convenient reference to our mesh + const MeshBase &mesh = MeshOutput::mesh(); + + // We will only write active elements and their parents. + unsigned int n_active_levels = n_active_levels_on_processor(mesh); + + std::vector n_elem_at_level(n_active_levels); + + // Find the number of elements at each level + for (unsigned int level=0; level > id_map_type; + id_map_type parent_id_map, child_id_map; + + io.data(n_active_levels, "# n_active_levels"); + + for(unsigned int level=0; level < n_active_levels; level++) + { + std::ostringstream comment; + comment << "# n_elem at level "; + comment << level ; + io.data (n_elem_at_level[level], comment.str().c_str()); + + MeshBase::const_element_iterator it = mesh.level_elements_begin(level); + MeshBase::const_element_iterator end = mesh.level_elements_end(level); + for (; it != end; ++it) + { + Elem & elem = *(*it); + + unsigned int n_nodes = elem.n_nodes(); + + // id type pid subdomain_id parent_id + std::vector elem_data(5); + + elem_data[0] = elem.id(); + elem_data[1] = elem.type(); + elem_data[2] = elem.processor_id(); + elem_data[3] = elem.subdomain_id(); + + if(elem.parent() != NULL) + elem_data[4] = elem.parent()->id(); + else + elem_data[4] = DofObject::invalid_processor_id; + + std::vector conn_data(n_nodes); + + for(unsigned int i=0; i::mesh(); + + // and our boundary info object + const BoundaryInfo &boundary_info = *mesh.boundary_info; + + // Version 0.9.2+ introduces entity names + write_bc_names(io, boundary_info, true); // sideset names + write_bc_names(io, boundary_info, false); // nodeset names + + std::vector element_id_list; + std::vector side_list; + std::vector bc_id_list; + + boundary_info.build_side_list(element_id_list, side_list, bc_id_list); + + io.data(element_id_list, "# element ids for bcs"); + io.data(side_list, "# sides of elements for bcs"); + io.data(bc_id_list, "# bc ids"); +} + + + +void CheckpointIO::write_nodesets (Xdr &io) const +{ + libmesh_assert (io.writing()); + + // convenient reference to our mesh + const MeshBase &mesh = MeshOutput::mesh(); + + // and our boundary info object + const BoundaryInfo &boundary_info = *mesh.boundary_info; + + std::vector node_id_list; + std::vector bc_id_list; + + boundary_info.build_node_list(node_id_list, bc_id_list); + + io.data(node_id_list, "# node id list"); + io.data(bc_id_list, "# nodeset bc id list"); +} + + + +void CheckpointIO::write_bc_names (Xdr &io, const BoundaryInfo & info, bool is_sideset) const +{ + const std::map & boundary_map = is_sideset ? + info.get_sideset_name_map() : info.get_nodeset_name_map(); + + std::vector boundary_ids; boundary_ids.reserve(boundary_map.size()); + std::vector boundary_names; boundary_names.reserve(boundary_map.size()); + + // We need to loop over the map and make sure that there aren't any invalid entries. Since we + // return writable references in boundary_info, it's possible for the user to leave some entity names + // blank. We can't write those to the XDA file. + header_id_type n_boundary_names = 0; + std::map::const_iterator it_end = boundary_map.end(); + for (std::map::const_iterator it = boundary_map.begin(); it != it_end; ++it) + { + if (!it->second.empty()) + { + n_boundary_names++; + boundary_ids.push_back(it->first); + boundary_names.push_back(it->second); + } + } + + if (is_sideset) + io.data(n_boundary_names, "# sideset id to name map"); + else + io.data(n_boundary_names, "# nodeset id to name map"); + // Write out the ids and names in two vectors + if (n_boundary_names) + { + io.data(boundary_ids); + io.data(boundary_names); + } +} + + + +void CheckpointIO::read (const std::string& name) +{ + MeshBase &mesh = MeshInput::mesh(); + + // Try to dynamic cast the mesh to see if it's a ParallelMesh object + // Note: Just using is_serial() is not good enough because the Mesh won't + // have been prepared yet when is when that flag gets set to false... sigh. + bool parallel_mesh = dynamic_cast(&mesh); + + // If this is a serial mesh then we're going to only read it on processor 0 and broadcast it + if(parallel_mesh || this->processor_id() == 0) + { + std::ostringstream file_name_stream; + + file_name_stream << name; + + if(parallel_mesh) + file_name_stream << "-" << this->processor_id(); + + { + std::ifstream in (file_name_stream.str().c_str()); + + if (!in.good()) + { + libMesh::err << "ERROR: cannot locate specified file:\n\t" + << file_name_stream.str() + << std::endl; + libmesh_error(); + } + } + + Xdr io (file_name_stream.str(), this->binary() ? DECODE : READ); + + START_LOG("read()","CheckpointIO"); + + // read the version + io.data (_version); + + // Check if the mesh we're reading is the same as the one that was written + { + unsigned int parallel; + io.data(parallel, "# parallel"); + + if(parallel_mesh != parallel) + { + libMesh::err << "Attempted to utilize a checkpoint file with an incompatible mesh distribution!" << std::endl; + libmesh_error(); + } + } + + // If this is a parallel mesh then we need to check to ensure we're reading this on the same number of procs + if(parallel_mesh) + { + largest_id_type n_procs; + io.data(n_procs, "# n_procs"); + + if(n_procs != this->n_processors()) + { + libMesh::err << "Attempted to utilize a checkpoint file on " << this->n_processors() << " processors but it was written using " << n_procs << "!!"; + libmesh_error(); + } + } + + // read subdomain names + this->read_subdomain_names(io); + + // read the nodal locations + this->read_nodes (io); + + // read connectivity + this->read_connectivity (io); + + // read the boundary conditions + this->read_bcs (io); + + // read the nodesets + this->read_nodesets (io); + + io.close(); + } + + // If the mesh is serial then we only read it on processor 0 so we need to broadcast it + if(!parallel_mesh) + MeshCommunication().broadcast(mesh); + + STOP_LOG("read()","CheckpointIO"); +} + + + +void CheckpointIO::read_subdomain_names(Xdr &io) +{ + MeshBase &mesh = MeshInput::mesh(); + + std::map & subdomain_map = mesh.set_subdomain_name_map(); + + std::vector subdomain_ids; subdomain_ids.reserve(subdomain_map.size()); + std::vector subdomain_names; subdomain_names.reserve(subdomain_map.size()); + + header_id_type n_subdomain_names = 0; + io.data(n_subdomain_names, "# subdomain id to name map"); + + if(n_subdomain_names) + { + io.data(subdomain_ids); + io.data(subdomain_names); + + for(unsigned int i=0; i::mesh(); + + unsigned int n_nodes_here; + io.data(n_nodes_here, "# n_nodes on proc"); + + // Will hold the node id and pid + std::vector id_pid(2); + + // For the coordinates + std::vector coords(LIBMESH_DIM); + + for(unsigned int i=0; i 1 + p(1) = coords[1]; +#endif + +#if LIBMESH_DIM > 2 + p(2) = coords[2]; +#endif + +#ifdef LIBMESH_ENABLE_UNIQUE_ID + Node * node = +#endif + mesh.add_point(p, id_pid[0], id_pid[1]); + +#ifdef LIBMESH_ENABLE_UNIQUE_ID + node->set_unique_id() = unique_id; +#endif + } +} + + + +void CheckpointIO::read_connectivity (Xdr &io) +{ + // convenient reference to our mesh + MeshBase &mesh = MeshInput::mesh(); + + unsigned int n_active_levels; + io.data(n_active_levels, "# n_active_levels"); + + // Keep track of the highest dimensional element we've added to the mesh + unsigned int highest_elem_dim = 1; + + for(unsigned int level=0; level < n_active_levels; level++) + { + xdr_id_type n_elem_at_level = 0; + io.data (n_elem_at_level, ""); + + for (unsigned int i=0; i elem_data(5); + io.data_stream(&elem_data[0], elem_data.size(), elem_data.size()); + +#ifdef LIBMESH_ENABLE_UNIQUE_ID + largest_id_type unique_id = 0; + io.data(unique_id, "# unique id"); +#endif + +#ifdef LIBMESH_ENABLE_AMR + unsigned int p_level = 0; + + io.data(p_level, "# p_level"); +#endif + + unsigned int n_nodes = Elem::type_to_n_nodes_map[elem_data[1]]; + + // Snag the node ids this element was connected to + std::vector conn_data(n_nodes); + io.data_stream(&conn_data[0], conn_data.size(), conn_data.size()); + + const dof_id_type id = elem_data[0]; + const ElemType elem_type = static_cast(elem_data[1]); + const processor_id_type processor_id = elem_data[2]; + const subdomain_id_type subdomain_id = elem_data[3]; + const dof_id_type parent_id = elem_data[4]; + + Elem * parent = (parent_id == DofObject::invalid_processor_id) ? NULL : mesh.elem(parent_id); + + // Create the element + Elem * elem = Elem::build(elem_type, parent).release(); + +#ifdef LIBMESH_ENABLE_UNIQUE_ID + elem->set_unique_id() = unique_id; +#endif + + if(elem->dim() > highest_elem_dim) + highest_elem_dim = elem->dim(); + + elem->set_id() = id; + elem->processor_id() = processor_id; + elem->subdomain_id() = subdomain_id; + +#ifdef LIBMESH_ENABLE_AMR + elem->hack_p_level(p_level); + + // Set parent connections + if(parent) + { + parent->add_child(elem); + parent->set_refinement_flag (Elem::INACTIVE); + elem->set_refinement_flag (Elem::JUST_REFINED); + } +#endif + + libmesh_assert(elem->n_nodes() == conn_data.size()); + + // Connect all the nodes to this element + for (unsigned int n=0; nset_node(n) = mesh.node_ptr(conn_data[n]); + + mesh.add_elem(elem); + } + } + + mesh.set_mesh_dimension(highest_elem_dim); +} + + + +void CheckpointIO::read_bcs (Xdr &io) +{ + // convenient reference to our mesh + MeshBase &mesh = MeshInput::mesh(); + + // and our boundary info object + BoundaryInfo &boundary_info = *mesh.boundary_info; + + // Version 0.9.2+ introduces entity names + read_bc_names(io, boundary_info, true); // sideset names + read_bc_names(io, boundary_info, false); // nodeset names + + std::vector element_id_list; + std::vector side_list; + std::vector bc_id_list; + + io.data(element_id_list, "# element ids for bcs"); + io.data(side_list, "# sides of elements for bcs"); + io.data(bc_id_list, "# bc ids"); + + for(unsigned int i=0; i::mesh(); + + // and our boundary info object + BoundaryInfo &boundary_info = *mesh.boundary_info; + + std::vector node_id_list; + std::vector bc_id_list; + + io.data(node_id_list, "# node id list"); + io.data(bc_id_list, "# nodeset bc id list"); + + for(unsigned int i=0; i & boundary_map = is_sideset ? + info.set_sideset_name_map() : info.set_nodeset_name_map(); + + std::vector boundary_ids; + std::vector boundary_names; + + header_id_type n_boundary_names = 0; + + if (is_sideset) + io.data(n_boundary_names, "# sideset id to name map"); + else + io.data(n_boundary_names, "# nodeset id to name map"); + + if (n_boundary_names) + { + io.data(boundary_ids); + io.data(boundary_names); + } + + // Add them back into the map + for(unsigned int i=0; ilevel(), max_level); + + return max_level + 1; +} + +} // namespace libMesh diff --git a/src/mesh/unstructured_mesh.C b/src/mesh/unstructured_mesh.C index 48d6fb04b9f..7d9045b9da1 100644 --- a/src/mesh/unstructured_mesh.C +++ b/src/mesh/unstructured_mesh.C @@ -51,6 +51,7 @@ #include "libmesh/legacy_xdr_io.h" #include "libmesh/vtk_io.h" #include "libmesh/abaqus_io.h" +#include "libmesh/checkpoint_io.h" #include LIBMESH_INCLUDE_UNORDERED_MAP @@ -66,7 +67,8 @@ namespace { return ((name.rfind(".xda") < name.size()) || (name.rfind(".xdr") < name.size()) || (name.rfind(".nem") < name.size()) || - (name.rfind(".n") < name.size()) + (name.rfind(".n") < name.size()) || + (name.rfind(".cp") < name.size()) ); } } @@ -502,6 +504,7 @@ void UnstructuredMesh::read (const std::string& name, libmesh_error(); } } + else if(name.rfind(".cp")) {} // Do error checking in the reader else { std::ifstream in (name.c_str()); @@ -575,7 +578,13 @@ void UnstructuredMesh::read (const std::string& name, else if (name.rfind(".nem") < name.size() || name.rfind(".n") < name.size()) Nemesis_IO(*this).read (name); - + else if (name.rfind(".cp") < name.size()) + { + if(name.rfind(".cpa") < name.size()) + CheckpointIO(*this, false).read(name); + else + CheckpointIO(*this, true).read(name); + } } // Serial mesh formats @@ -693,6 +702,8 @@ void UnstructuredMesh::read (const std::string& name, << " *.gz -- any above format gzipped\n" << " *.bz2 -- any above format bzip2'ed\n" << " *.xz -- any above format xzipped\n" + << " *.cpa -- libMesh Checkpoint ASCII format\n" + << " *.cpr -- libMesh Checkpoint binary format\n" << std::endl; libmesh_error();