From 7243ee55c869540097dd0f331305237fa2402c92 Mon Sep 17 00:00:00 2001 From: "Roy H. Stogner" Date: Tue, 25 Feb 2014 16:00:04 -0600 Subject: [PATCH] Prepare to factor out petsc_auto_fieldsplit code --- Makefile.in | 81 ++++++++++++++++++++++-- include/Makefile.in | 1 + include/include_HEADERS | 1 + include/libmesh/Makefile.am | 7 ++- include/libmesh/Makefile.in | 26 ++++---- include/solvers/petsc_auto_fieldsplit.h | 59 +++++++++++++++++ src/libmesh_SOURCES | 1 + src/solvers/petsc_auto_fieldsplit.C | 84 +++++++++++++++++++++++++ 8 files changed, 242 insertions(+), 18 deletions(-) create mode 100644 include/solvers/petsc_auto_fieldsplit.h create mode 100644 src/solvers/petsc_auto_fieldsplit.C diff --git a/Makefile.in b/Makefile.in index 3a409f8847f..483cf0753f3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -413,7 +413,9 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dof_map.C \ src/solvers/linear_solver.C \ src/solvers/memory_solution_history.C \ src/solvers/newton_solver.C src/solvers/no_solution_history.C \ - src/solvers/nonlinear_solver.C src/solvers/petsc_diff_solver.C \ + src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ + src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ src/solvers/petsc_nonlinear_solver.C \ @@ -798,6 +800,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dof_map.lo \ src/solvers/libmesh_dbg_la-newton_solver.lo \ src/solvers/libmesh_dbg_la-no_solution_history.lo \ src/solvers/libmesh_dbg_la-nonlinear_solver.lo \ + src/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.lo \ src/solvers/libmesh_dbg_la-petsc_diff_solver.lo \ src/solvers/libmesh_dbg_la-petsc_dm_nonlinear_solver.lo \ src/solvers/libmesh_dbg_la-petsc_linear_solver.lo \ @@ -1099,7 +1102,9 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dof_map.C \ src/solvers/linear_solver.C \ src/solvers/memory_solution_history.C \ src/solvers/newton_solver.C src/solvers/no_solution_history.C \ - src/solvers/nonlinear_solver.C src/solvers/petsc_diff_solver.C \ + src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ + src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ src/solvers/petsc_nonlinear_solver.C \ @@ -1483,6 +1488,7 @@ am__objects_2 = src/base/libmesh_devel_la-dof_map.lo \ src/solvers/libmesh_devel_la-newton_solver.lo \ src/solvers/libmesh_devel_la-no_solution_history.lo \ src/solvers/libmesh_devel_la-nonlinear_solver.lo \ + src/solvers/libmesh_devel_la-petsc_auto_fieldsplit.lo \ src/solvers/libmesh_devel_la-petsc_diff_solver.lo \ src/solvers/libmesh_devel_la-petsc_dm_nonlinear_solver.lo \ src/solvers/libmesh_devel_la-petsc_linear_solver.lo \ @@ -1781,7 +1787,9 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dof_map.C \ src/solvers/linear_solver.C \ src/solvers/memory_solution_history.C \ src/solvers/newton_solver.C src/solvers/no_solution_history.C \ - src/solvers/nonlinear_solver.C src/solvers/petsc_diff_solver.C \ + src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ + src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ src/solvers/petsc_nonlinear_solver.C \ @@ -2165,6 +2173,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dof_map.lo \ src/solvers/libmesh_oprof_la-newton_solver.lo \ src/solvers/libmesh_oprof_la-no_solution_history.lo \ src/solvers/libmesh_oprof_la-nonlinear_solver.lo \ + src/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.lo \ src/solvers/libmesh_oprof_la-petsc_diff_solver.lo \ src/solvers/libmesh_oprof_la-petsc_dm_nonlinear_solver.lo \ src/solvers/libmesh_oprof_la-petsc_linear_solver.lo \ @@ -2463,7 +2472,9 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dof_map.C \ src/solvers/linear_solver.C \ src/solvers/memory_solution_history.C \ src/solvers/newton_solver.C src/solvers/no_solution_history.C \ - src/solvers/nonlinear_solver.C src/solvers/petsc_diff_solver.C \ + src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ + src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ src/solvers/petsc_nonlinear_solver.C \ @@ -2847,6 +2858,7 @@ am__objects_4 = src/base/libmesh_opt_la-dof_map.lo \ src/solvers/libmesh_opt_la-newton_solver.lo \ src/solvers/libmesh_opt_la-no_solution_history.lo \ src/solvers/libmesh_opt_la-nonlinear_solver.lo \ + src/solvers/libmesh_opt_la-petsc_auto_fieldsplit.lo \ src/solvers/libmesh_opt_la-petsc_diff_solver.lo \ src/solvers/libmesh_opt_la-petsc_dm_nonlinear_solver.lo \ src/solvers/libmesh_opt_la-petsc_linear_solver.lo \ @@ -3144,7 +3156,9 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dof_map.C \ src/solvers/linear_solver.C \ src/solvers/memory_solution_history.C \ src/solvers/newton_solver.C src/solvers/no_solution_history.C \ - src/solvers/nonlinear_solver.C src/solvers/petsc_diff_solver.C \ + src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ + src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ src/solvers/petsc_nonlinear_solver.C \ @@ -3528,6 +3542,7 @@ am__objects_5 = src/base/libmesh_prof_la-dof_map.lo \ src/solvers/libmesh_prof_la-newton_solver.lo \ src/solvers/libmesh_prof_la-no_solution_history.lo \ src/solvers/libmesh_prof_la-nonlinear_solver.lo \ + src/solvers/libmesh_prof_la-petsc_auto_fieldsplit.lo \ src/solvers/libmesh_prof_la-petsc_diff_solver.lo \ src/solvers/libmesh_prof_la-petsc_dm_nonlinear_solver.lo \ src/solvers/libmesh_prof_la-petsc_linear_solver.lo \ @@ -4745,6 +4760,7 @@ libmesh_SOURCES = \ src/solvers/newton_solver.C \ src/solvers/no_solution_history.C \ src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ @@ -6022,6 +6038,9 @@ src/solvers/libmesh_dbg_la-no_solution_history.lo: \ src/solvers/libmesh_dbg_la-nonlinear_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) +src/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.lo: \ + src/solvers/$(am__dirstamp) \ + src/solvers/$(DEPDIR)/$(am__dirstamp) src/solvers/libmesh_dbg_la-petsc_diff_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) @@ -7015,6 +7034,9 @@ src/solvers/libmesh_devel_la-no_solution_history.lo: \ src/solvers/libmesh_devel_la-nonlinear_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) +src/solvers/libmesh_devel_la-petsc_auto_fieldsplit.lo: \ + src/solvers/$(am__dirstamp) \ + src/solvers/$(DEPDIR)/$(am__dirstamp) src/solvers/libmesh_devel_la-petsc_diff_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) @@ -7998,6 +8020,9 @@ src/solvers/libmesh_oprof_la-no_solution_history.lo: \ src/solvers/libmesh_oprof_la-nonlinear_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) +src/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.lo: \ + src/solvers/$(am__dirstamp) \ + src/solvers/$(DEPDIR)/$(am__dirstamp) src/solvers/libmesh_oprof_la-petsc_diff_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) @@ -8980,6 +9005,9 @@ src/solvers/libmesh_opt_la-no_solution_history.lo: \ src/solvers/libmesh_opt_la-nonlinear_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) +src/solvers/libmesh_opt_la-petsc_auto_fieldsplit.lo: \ + src/solvers/$(am__dirstamp) \ + src/solvers/$(DEPDIR)/$(am__dirstamp) src/solvers/libmesh_opt_la-petsc_diff_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) @@ -9960,6 +9988,9 @@ src/solvers/libmesh_prof_la-no_solution_history.lo: \ src/solvers/libmesh_prof_la-nonlinear_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) +src/solvers/libmesh_prof_la-petsc_auto_fieldsplit.lo: \ + src/solvers/$(am__dirstamp) \ + src/solvers/$(DEPDIR)/$(am__dirstamp) src/solvers/libmesh_prof_la-petsc_diff_solver.lo: \ src/solvers/$(am__dirstamp) \ src/solvers/$(DEPDIR)/$(am__dirstamp) @@ -12189,6 +12220,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-newton_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-no_solution_history.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-nonlinear_solver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_auto_fieldsplit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_diff_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_dm_nonlinear_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_linear_solver.Plo@am__quote@ @@ -12214,6 +12246,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-newton_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-no_solution_history.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-nonlinear_solver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_auto_fieldsplit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_diff_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_dm_nonlinear_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_linear_solver.Plo@am__quote@ @@ -12239,6 +12272,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-newton_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-no_solution_history.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-nonlinear_solver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_auto_fieldsplit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_diff_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_dm_nonlinear_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_linear_solver.Plo@am__quote@ @@ -12264,6 +12298,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-newton_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-no_solution_history.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-nonlinear_solver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_auto_fieldsplit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_diff_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_dm_nonlinear_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_linear_solver.Plo@am__quote@ @@ -12289,6 +12324,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-newton_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-no_solution_history.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-nonlinear_solver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_auto_fieldsplit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_diff_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_dm_nonlinear_solver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_linear_solver.Plo@am__quote@ @@ -14975,6 +15011,13 @@ src/solvers/libmesh_dbg_la-nonlinear_solver.lo: src/solvers/nonlinear_solver.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/solvers/libmesh_dbg_la-nonlinear_solver.lo `test -f 'src/solvers/nonlinear_solver.C' || echo '$(srcdir)/'`src/solvers/nonlinear_solver.C +src/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.lo: src/solvers/petsc_auto_fieldsplit.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/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_auto_fieldsplit.Tpo -c -o src/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_auto_fieldsplit.Tpo src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_auto_fieldsplit.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/solvers/petsc_auto_fieldsplit.C' object='src/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.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/solvers/libmesh_dbg_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C + src/solvers/libmesh_dbg_la-petsc_diff_solver.lo: src/solvers/petsc_diff_solver.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/solvers/libmesh_dbg_la-petsc_diff_solver.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_diff_solver.Tpo -c -o src/solvers/libmesh_dbg_la-petsc_diff_solver.lo `test -f 'src/solvers/petsc_diff_solver.C' || echo '$(srcdir)/'`src/solvers/petsc_diff_solver.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_diff_solver.Tpo src/solvers/$(DEPDIR)/libmesh_dbg_la-petsc_diff_solver.Plo @@ -17796,6 +17839,13 @@ src/solvers/libmesh_devel_la-nonlinear_solver.lo: src/solvers/nonlinear_solver.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/solvers/libmesh_devel_la-nonlinear_solver.lo `test -f 'src/solvers/nonlinear_solver.C' || echo '$(srcdir)/'`src/solvers/nonlinear_solver.C +src/solvers/libmesh_devel_la-petsc_auto_fieldsplit.lo: src/solvers/petsc_auto_fieldsplit.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/solvers/libmesh_devel_la-petsc_auto_fieldsplit.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_auto_fieldsplit.Tpo -c -o src/solvers/libmesh_devel_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_auto_fieldsplit.Tpo src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_auto_fieldsplit.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/solvers/petsc_auto_fieldsplit.C' object='src/solvers/libmesh_devel_la-petsc_auto_fieldsplit.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/solvers/libmesh_devel_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C + src/solvers/libmesh_devel_la-petsc_diff_solver.lo: src/solvers/petsc_diff_solver.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/solvers/libmesh_devel_la-petsc_diff_solver.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_diff_solver.Tpo -c -o src/solvers/libmesh_devel_la-petsc_diff_solver.lo `test -f 'src/solvers/petsc_diff_solver.C' || echo '$(srcdir)/'`src/solvers/petsc_diff_solver.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_diff_solver.Tpo src/solvers/$(DEPDIR)/libmesh_devel_la-petsc_diff_solver.Plo @@ -20617,6 +20667,13 @@ src/solvers/libmesh_oprof_la-nonlinear_solver.lo: src/solvers/nonlinear_solver.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/solvers/libmesh_oprof_la-nonlinear_solver.lo `test -f 'src/solvers/nonlinear_solver.C' || echo '$(srcdir)/'`src/solvers/nonlinear_solver.C +src/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.lo: src/solvers/petsc_auto_fieldsplit.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/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_auto_fieldsplit.Tpo -c -o src/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_auto_fieldsplit.Tpo src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_auto_fieldsplit.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/solvers/petsc_auto_fieldsplit.C' object='src/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.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/solvers/libmesh_oprof_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C + src/solvers/libmesh_oprof_la-petsc_diff_solver.lo: src/solvers/petsc_diff_solver.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/solvers/libmesh_oprof_la-petsc_diff_solver.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_diff_solver.Tpo -c -o src/solvers/libmesh_oprof_la-petsc_diff_solver.lo `test -f 'src/solvers/petsc_diff_solver.C' || echo '$(srcdir)/'`src/solvers/petsc_diff_solver.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_diff_solver.Tpo src/solvers/$(DEPDIR)/libmesh_oprof_la-petsc_diff_solver.Plo @@ -23438,6 +23495,13 @@ src/solvers/libmesh_opt_la-nonlinear_solver.lo: src/solvers/nonlinear_solver.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/solvers/libmesh_opt_la-nonlinear_solver.lo `test -f 'src/solvers/nonlinear_solver.C' || echo '$(srcdir)/'`src/solvers/nonlinear_solver.C +src/solvers/libmesh_opt_la-petsc_auto_fieldsplit.lo: src/solvers/petsc_auto_fieldsplit.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/solvers/libmesh_opt_la-petsc_auto_fieldsplit.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_auto_fieldsplit.Tpo -c -o src/solvers/libmesh_opt_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_auto_fieldsplit.Tpo src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_auto_fieldsplit.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/solvers/petsc_auto_fieldsplit.C' object='src/solvers/libmesh_opt_la-petsc_auto_fieldsplit.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/solvers/libmesh_opt_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C + src/solvers/libmesh_opt_la-petsc_diff_solver.lo: src/solvers/petsc_diff_solver.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/solvers/libmesh_opt_la-petsc_diff_solver.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_diff_solver.Tpo -c -o src/solvers/libmesh_opt_la-petsc_diff_solver.lo `test -f 'src/solvers/petsc_diff_solver.C' || echo '$(srcdir)/'`src/solvers/petsc_diff_solver.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_diff_solver.Tpo src/solvers/$(DEPDIR)/libmesh_opt_la-petsc_diff_solver.Plo @@ -26259,6 +26323,13 @@ src/solvers/libmesh_prof_la-nonlinear_solver.lo: src/solvers/nonlinear_solver.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/solvers/libmesh_prof_la-nonlinear_solver.lo `test -f 'src/solvers/nonlinear_solver.C' || echo '$(srcdir)/'`src/solvers/nonlinear_solver.C +src/solvers/libmesh_prof_la-petsc_auto_fieldsplit.lo: src/solvers/petsc_auto_fieldsplit.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/solvers/libmesh_prof_la-petsc_auto_fieldsplit.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_auto_fieldsplit.Tpo -c -o src/solvers/libmesh_prof_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_auto_fieldsplit.Tpo src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_auto_fieldsplit.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/solvers/petsc_auto_fieldsplit.C' object='src/solvers/libmesh_prof_la-petsc_auto_fieldsplit.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/solvers/libmesh_prof_la-petsc_auto_fieldsplit.lo `test -f 'src/solvers/petsc_auto_fieldsplit.C' || echo '$(srcdir)/'`src/solvers/petsc_auto_fieldsplit.C + src/solvers/libmesh_prof_la-petsc_diff_solver.lo: src/solvers/petsc_diff_solver.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/solvers/libmesh_prof_la-petsc_diff_solver.lo -MD -MP -MF src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_diff_solver.Tpo -c -o src/solvers/libmesh_prof_la-petsc_diff_solver.lo `test -f 'src/solvers/petsc_diff_solver.C' || echo '$(srcdir)/'`src/solvers/petsc_diff_solver.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_diff_solver.Tpo src/solvers/$(DEPDIR)/libmesh_prof_la-petsc_diff_solver.Plo diff --git a/include/Makefile.in b/include/Makefile.in index 04e9539f8be..c419ab8faf5 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -815,6 +815,7 @@ include_HEADERS = \ solvers/newton_solver.h \ solvers/no_solution_history.h \ solvers/nonlinear_solver.h \ + solvers/petsc_auto_fieldsplit.h \ solvers/petsc_diff_solver.h \ solvers/petsc_dm_nonlinear_solver.h \ solvers/petsc_linear_solver.h \ diff --git a/include/include_HEADERS b/include/include_HEADERS index 9bbf85c4138..8dbfc8ac5ef 100644 --- a/include/include_HEADERS +++ b/include/include_HEADERS @@ -326,6 +326,7 @@ include_HEADERS = \ solvers/newton_solver.h \ solvers/no_solution_history.h \ solvers/nonlinear_solver.h \ + solvers/petsc_auto_fieldsplit.h \ solvers/petsc_diff_solver.h \ solvers/petsc_dm_nonlinear_solver.h \ solvers/petsc_linear_solver.h \ diff --git a/include/libmesh/Makefile.am b/include/libmesh/Makefile.am index 57b44f91191..9ac22535f7b 100644 --- a/include/libmesh/Makefile.am +++ b/include/libmesh/Makefile.am @@ -1,11 +1,11 @@ -# Note - this file is automatically generated by ./rebuild_makefile.sh +# Note - this file is automatically generated by ./rebuild_makefile.sh # do not edit manually # # include the magic script! EXTRA_DIST = rebuild_makefile.sh -BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.h dof_object.h factory.h getpot.h id_types.h libmesh.h libmesh_C_isnan.h libmesh_augment_std_namespace.h libmesh_base.h libmesh_common.h libmesh_documentation.h libmesh_exceptions.h libmesh_logging.h libmesh_singleton.h libmesh_version.h multi_predicates.h periodic_boundaries.h periodic_boundary.h periodic_boundary_base.h print_trace.h reference_counted_object.h reference_counter.h single_predicates.h sparsity_pattern.h variable.h variant_filter_iterator.h enum_convergence_flags.h enum_eigen_solver_type.h enum_elem_quality.h enum_elem_type.h enum_fe_family.h enum_inf_map_type.h enum_io_package.h enum_norm_type.h enum_order.h enum_parallel_type.h enum_point_locator_type.h enum_preconditioner_type.h enum_quadrature_type.h enum_solver_package.h enum_solver_type.h enum_subset_solve_mode.h enum_xdr_mode.h adjoint_refinement_estimator.h adjoint_residual_error_estimator.h discontinuity_measure.h error_estimator.h exact_error_estimator.h exact_solution.h fourth_error_estimators.h hp_coarsentest.h hp_selector.h hp_singular.h jump_error_estimator.h kelly_error_estimator.h patch_recovery_error_estimator.h uniform_refinement_estimator.h weighted_patch_recovery_error_estimator.h fe.h fe_abstract.h fe_base.h fe_compute_data.h fe_interface.h fe_macro.h fe_map.h fe_transformation_base.h fe_type.h fe_xyz_map.h h1_fe_transformation.h hcurl_fe_transformation.h inf_fe.h inf_fe_instantiate_1D.h inf_fe_instantiate_2D.h inf_fe_instantiate_3D.h inf_fe_macro.h cell.h cell_hex.h cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h cell_inf_hex.h cell_inf_hex16.h cell_inf_hex18.h cell_inf_hex8.h cell_inf_prism.h cell_inf_prism12.h cell_inf_prism6.h cell_prism.h cell_prism15.h cell_prism18.h cell_prism6.h cell_pyramid.h cell_pyramid13.h cell_pyramid14.h cell_pyramid5.h cell_tet.h cell_tet10.h cell_tet4.h edge.h edge_edge2.h edge_edge3.h edge_edge4.h edge_inf_edge2.h elem.h elem_quality.h elem_range.h elem_type.h face.h face_inf_quad.h face_inf_quad4.h face_inf_quad6.h face_quad.h face_quad4.h face_quad8.h face_quad9.h face_tri.h face_tri3.h face_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 +BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.h dof_object.h factory.h getpot.h id_types.h libmesh.h libmesh_C_isnan.h libmesh_augment_std_namespace.h libmesh_base.h libmesh_common.h libmesh_documentation.h libmesh_exceptions.h libmesh_logging.h libmesh_singleton.h libmesh_version.h multi_predicates.h periodic_boundaries.h periodic_boundary.h periodic_boundary_base.h print_trace.h reference_counted_object.h reference_counter.h single_predicates.h sparsity_pattern.h variable.h variant_filter_iterator.h enum_convergence_flags.h enum_eigen_solver_type.h enum_elem_quality.h enum_elem_type.h enum_fe_family.h enum_inf_map_type.h enum_io_package.h enum_norm_type.h enum_order.h enum_parallel_type.h enum_point_locator_type.h enum_preconditioner_type.h enum_quadrature_type.h enum_solver_package.h enum_solver_type.h enum_subset_solve_mode.h enum_xdr_mode.h adjoint_refinement_estimator.h adjoint_residual_error_estimator.h discontinuity_measure.h error_estimator.h exact_error_estimator.h exact_solution.h fourth_error_estimators.h hp_coarsentest.h hp_selector.h hp_singular.h jump_error_estimator.h kelly_error_estimator.h patch_recovery_error_estimator.h uniform_refinement_estimator.h weighted_patch_recovery_error_estimator.h fe.h fe_abstract.h fe_base.h fe_compute_data.h fe_interface.h fe_macro.h fe_map.h fe_transformation_base.h fe_type.h fe_xyz_map.h h1_fe_transformation.h hcurl_fe_transformation.h inf_fe.h inf_fe_instantiate_1D.h inf_fe_instantiate_2D.h inf_fe_instantiate_3D.h inf_fe_macro.h cell.h cell_hex.h cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h cell_inf_hex.h cell_inf_hex16.h cell_inf_hex18.h cell_inf_hex8.h cell_inf_prism.h cell_inf_prism12.h cell_inf_prism6.h cell_prism.h cell_prism15.h cell_prism18.h cell_prism6.h cell_pyramid.h cell_pyramid13.h cell_pyramid14.h cell_pyramid5.h cell_tet.h cell_tet10.h cell_tet4.h edge.h edge_edge2.h edge_edge3.h edge_edge4.h edge_inf_edge2.h elem.h elem_quality.h elem_range.h elem_type.h face.h face_inf_quad.h face_inf_quad4.h face_inf_quad6.h face_quad.h face_quad4.h face_quad8.h face_quad9.h face_tri.h face_tri3.h face_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_auto_fieldsplit.h petsc_diff_solver.h petsc_dm_nonlinear_solver.h petsc_linear_solver.h petsc_nonlinear_solver.h petscdmlibmesh.h slepc_eigen_solver.h slepc_macro.h solution_history.h solver.h steady_solver.h time_solver.h trilinos_aztec_linear_solver.h trilinos_nox_nonlinear_solver.h twostep_time_solver.h unsteady_solver.h condensed_eigen_system.h continuation_system.h dg_fem_context.h diff_context.h diff_system.h eigen_system.h elem_assembly.h equation_systems.h explicit_system.h fem_context.h fem_system.h frequency_system.h implicit_system.h linear_implicit_system.h newmark_system.h nonlinear_implicit_system.h parameter_vector.h qoi_set.h sensitivity_data.h steady_system.h system.h system_norm.h system_subset.h system_subset_by_subdomain.h transient_system.h compare_types.h error_vector.h hashword.h ignore_warnings.h location_maps.h mapvector.h null_output_iterator.h number_lookups.h ostream_proxy.h parameters.h perf_log.h perfmon.h plt_loader.h point_locator_base.h point_locator_list.h point_locator_tree.h pool_allocator.h restore_warnings.h statistics.h string_to_enum.h timestamp.h tree.h tree_base.h tree_node.h utility.h vectormap.h xdr_cxx.h parallel_communicator_specializations DISTCLEANFILES = $(BUILT_SOURCES) @@ -1035,6 +1035,9 @@ no_solution_history.h: $(top_srcdir)/include/solvers/no_solution_history.h nonlinear_solver.h: $(top_srcdir)/include/solvers/nonlinear_solver.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ +petsc_auto_fieldsplit.h: $(top_srcdir)/include/solvers/petsc_auto_fieldsplit.h + $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ + petsc_diff_solver.h: $(top_srcdir)/include/solvers/petsc_diff_solver.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ diff --git a/include/libmesh/Makefile.in b/include/libmesh/Makefile.in index 8cfb0d39cf9..e55cb8152ca 100644 --- a/include/libmesh/Makefile.in +++ b/include/libmesh/Makefile.in @@ -527,17 +527,18 @@ BUILT_SOURCES = auto_ptr.h dirichlet_boundaries.h dof_map.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 \ + petsc_auto_fieldsplit.h petsc_diff_solver.h \ + petsc_dm_nonlinear_solver.h petsc_linear_solver.h \ + petsc_nonlinear_solver.h petscdmlibmesh.h slepc_eigen_solver.h \ + slepc_macro.h solution_history.h solver.h steady_solver.h \ + time_solver.h trilinos_aztec_linear_solver.h \ + trilinos_nox_nonlinear_solver.h twostep_time_solver.h \ + unsteady_solver.h condensed_eigen_system.h \ + continuation_system.h dg_fem_context.h diff_context.h \ + diff_system.h eigen_system.h elem_assembly.h \ + equation_systems.h explicit_system.h fem_context.h \ + fem_system.h frequency_system.h implicit_system.h \ + linear_implicit_system.h newmark_system.h \ nonlinear_implicit_system.h parameter_vector.h qoi_set.h \ sensitivity_data.h steady_system.h system.h system_norm.h \ system_subset.h system_subset_by_subdomain.h \ @@ -1731,6 +1732,9 @@ no_solution_history.h: $(top_srcdir)/include/solvers/no_solution_history.h nonlinear_solver.h: $(top_srcdir)/include/solvers/nonlinear_solver.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ +petsc_auto_fieldsplit.h: $(top_srcdir)/include/solvers/petsc_auto_fieldsplit.h + $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ + petsc_diff_solver.h: $(top_srcdir)/include/solvers/petsc_diff_solver.h $(AM_V_GEN)rm -f $@ && $(LN_S) $< $@ diff --git a/include/solvers/petsc_auto_fieldsplit.h b/include/solvers/petsc_auto_fieldsplit.h new file mode 100644 index 00000000000..e18bfdb915f --- /dev/null +++ b/include/solvers/petsc_auto_fieldsplit.h @@ -0,0 +1,59 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + +#ifndef LIBMESH_PETSC_AUTO_FIELDSPLIT_H +#define LIBMESH_PETSC_AUTO_FIELDSPLIT_H + +#include "libmesh/libmesh_config.h" + +#ifdef LIBMESH_HAVE_PETSC + +#include "libmesh/petsc_macro.h" + +/** + * Petsc include files. + */ + +// PCFieldSplitSetIs seems to have appeared late in the PETSc 3.1 +// releases; we'll support it in 3.2 onward so we don't have to worry +// about compilation errors + +#if !PETSC_VERSION_LESS_THAN(3,2,0) +EXTERN_C_FOR_PETSC_BEGIN +# include +EXTERN_C_FOR_PETSC_END + +// Local includes + +// C++ includes + +namespace libMesh +{ + // Forward declarations + class System; + +void petsc_auto_fieldsplit (PC my_pc, const System &sys); + +} // namespace libMesh + + +#else // #PETSC_VERSION < 2.2.0 +#endif // #PETSC_VERSION > 2.2.0 +#endif // #ifdef LIBMESH_HAVE_PETSC +#endif // LIBMESH_PETSC_AUTO_FIELDSPLIT_H diff --git a/src/libmesh_SOURCES b/src/libmesh_SOURCES index 9c7f3388958..40279bb4d18 100644 --- a/src/libmesh_SOURCES +++ b/src/libmesh_SOURCES @@ -349,6 +349,7 @@ libmesh_SOURCES = \ src/solvers/newton_solver.C \ src/solvers/no_solution_history.C \ src/solvers/nonlinear_solver.C \ + src/solvers/petsc_auto_fieldsplit.C \ src/solvers/petsc_diff_solver.C \ src/solvers/petsc_dm_nonlinear_solver.C \ src/solvers/petsc_linear_solver.C \ diff --git a/src/solvers/petsc_auto_fieldsplit.C b/src/solvers/petsc_auto_fieldsplit.C new file mode 100644 index 00000000000..8455882d93e --- /dev/null +++ b/src/solvers/petsc_auto_fieldsplit.C @@ -0,0 +1,84 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "libmesh/petsc_auto_fieldsplit.h" + +#ifdef LIBMESH_HAVE_PETSC + +#if !PETSC_VERSION_LESS_THAN(3,2,0) + +// Local includes +#include "libmesh/dof_map.h" +#include "libmesh/system.h" + +EXTERN_C_FOR_PETSC_BEGIN +# include +EXTERN_C_FOR_PETSC_END + +// C++ includes + +namespace libMesh +{ + +void petsc_auto_fieldsplit (PC my_pc, + const System &sys) +{ + if (libMesh::on_command_line("--solver_variable_names")) + { + for (unsigned int v = 0; v != sys.n_vars(); ++v) + { + const std::string& var_name = sys.variable_name(v); + std::vector var_idx; + sys.get_dof_map().local_variable_indices + (var_idx, sys.get_mesh(), v); + + IS is; + + PetscInt *idx = PETSC_NULL; + if (!var_idx.empty()) + idx = reinterpret_cast(&var_idx[0]); + + int ierr = ISCreateLibMesh(sys.comm().get(), var_idx.size(), + idx, PETSC_COPY_VALUES, &is); + CHKERRABORT(sys.comm().get(), ierr); + + ierr = PCFieldSplitSetIS(my_pc, var_name.c_str(), is); + CHKERRABORT(sys.comm().get(), ierr); + } + } +} + +} // namespace libMesh + + +#else // #PETSC_VERSION < 3.2.0 +void assign_solver_fieldsplit_names (PC my_pc, + const System &sys) +{ + if (libMesh::on_command_line("--solver_variable_names")) + { + libmesh_do_once( + libMesh::out << + "WARNING: libMesh does not support setting field splits" << + std::endl << "with PETSc " << + LIBMESH_DETECTED_PETSC_VERSION_MAJOR << '.' + LIBMESH_DETECTED_PETSC_VERSION_MINOR << '.' + LIBMESH_DETECTED_PETSC_VERSION_SUBMINOR << std::endl;); + } +} +#endif // #PETSC_VERSION > 3.2.0 +#endif // #ifdef LIBMESH_HAVE_PETSC