[cig-commits] commit: Initial commit. Everything builds and runs

Mercurial hg at geodynamics.org
Fri Feb 25 14:12:04 PST 2011


changeset:   0:a9a8e9ffee9a
user:        Walter Landry <wlandry at caltech.edu>
date:        Wed Dec 29 16:03:48 2010 -0800
files:       FACPoisson.C FACPoisson.h Makefile Makefile.depend Makefile.in example_inputs/const_refine.2d.input example_inputs/const_refine.3d.input example_inputs/otherbc.2d.input example_inputs/otherbc.3d.input fortran/facpoisson2d.m4 fortran/facpoisson3d.m4 main.C test_inputs/default.2d.input test_inputs/default.3d.input
description:
Initial commit.  Everything builds and runs


diff -r 000000000000 -r a9a8e9ffee9a FACPoisson.C
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FACPoisson.C	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,378 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Numerical routines for example FAC Poisson solver 
+ *
+ ************************************************************************/
+#include "FACPoisson.h"
+
+#include "SAMRAI/hier/IntVector.h"
+#include "SAMRAI/geom/CartesianGridGeometry.h"
+#include "SAMRAI/geom/CartesianPatchGeometry.h"
+#include "SAMRAI/solv/SimpleCellRobinBcCoefs.h"
+#include "SAMRAI/pdat/CellData.h"
+#include "SAMRAI/math/HierarchyCellDataOpsReal.h"
+#include "SAMRAI/pdat/SideData.h"
+#include "SAMRAI/solv/PoissonSpecifications.h"
+#include "SAMRAI/tbox/Utilities.h"
+#include "SAMRAI/hier/Variable.h"
+#include "SAMRAI/hier/VariableDatabase.h"
+
+extern "C" {
+void F77_FUNC(setexactandrhs2d, SETEXACTANDRHS2D) (const int & ifirst0,
+   const int & ilast0,
+   const int & ifirst1,
+   const int & ilast1,
+   double* exact,
+   double* rhs,
+   const double* dx,
+   const double* xlower);
+
+void F77_FUNC(setexactandrhs3d, SETEXACTANDRHS3D) (const int & ifirst0,
+   const int & ilast0,
+   const int & ifirst1,
+   const int & ilast1,
+   const int & ifirst2,
+   const int & ilast2,
+   double* exact,
+   double* rhs,
+   const double* dx,
+   const double* xlower);
+}
+
+namespace SAMRAI {
+
+/*
+ *************************************************************************
+ * Constructor creates a unique context for the object and register      *
+ * all its internal variables with the variable database.                *
+ *************************************************************************
+ */
+FACPoisson::FACPoisson(
+   const std::string& object_name,
+   const tbox::Dimension& dim,
+   tbox::Pointer<tbox::Database> database):
+   d_object_name(object_name),
+   d_dim(dim),
+   d_hierarchy(NULL),
+   d_poisson_fac_solver((d_dim),
+                        object_name + "::poisson_hypre",
+                        (!database.isNull() &&
+                         database->isDatabase("fac_solver")) ?
+                        database->getDatabase("fac_solver"):
+                           tbox::Pointer<tbox::Database>(NULL)),
+   d_bc_coefs(d_dim,
+              object_name + "::bc_coefs",
+              (!database.isNull() &&
+               database->isDatabase("bc_coefs")) ?
+              database->getDatabase("bc_coefs"):
+                 tbox::Pointer<tbox::Database>(NULL)),
+   d_context()
+{
+
+   hier::VariableDatabase* vdb =
+      hier::VariableDatabase::getDatabase();
+
+   /*
+    * Get a unique context for variables owned by this object.
+    */
+   d_context = vdb->getContext(d_object_name + ":Context");
+
+   /*
+    * Register variables with hier::VariableDatabase
+    * and get the descriptor indices for those variables.
+    */
+
+   tbox::Pointer<pdat::CellVariable<double> > comp_soln(
+      new pdat::CellVariable<double>(dim, object_name + ":computed solution", 1));
+   d_comp_soln_id =
+      vdb->registerVariableAndContext(
+         comp_soln,
+         d_context,
+         hier::IntVector(dim, 1) /* ghost cell width is 1 for stencil widths */);
+
+   tbox::Pointer<pdat::CellVariable<double> > exact_solution(
+      new pdat::CellVariable<double>(dim, object_name + ":exact solution"));
+   d_exact_id =
+      vdb->registerVariableAndContext(
+         exact_solution,
+         d_context,
+         hier::IntVector(dim, 1) /* ghost cell width is 1 in case needed */);
+
+   tbox::Pointer<pdat::CellVariable<double> > rhs_variable(
+      new pdat::CellVariable<double>(
+         dim,
+         object_name
+         + ":linear system right hand side"));
+   d_rhs_id =
+      vdb->registerVariableAndContext(
+         rhs_variable,
+         d_context,
+         hier::IntVector(dim, 0) /* ghost cell width is 0 */);
+
+   /*
+    * Specify an implementation of solv::RobinBcCoefStrategy for the solver to use.
+    * We use the implementation solv::LocationIndexRobinBcCoefs, but other
+    * implementations are possible, including user-implemented.
+    */
+   d_poisson_fac_solver.setBcObject(&d_bc_coefs);
+}
+
+/*
+ *************************************************************************
+ * Destructor does nothing interesting                                   *
+ *************************************************************************
+ */
+FACPoisson::~FACPoisson()
+{
+}
+
+/*
+ *************************************************************************
+ * Initialize data on a level.                                           *
+ *                                                                       *
+ * Allocate the solution, exact solution and rhs memory.                 *
+ * Fill the rhs and exact solution.                                      *
+ *************************************************************************
+ */
+void FACPoisson::initializeLevelData(
+   const tbox::Pointer<hier::BasePatchHierarchy> patch_hierarchy,
+   const int level_number,
+   const double init_data_time,
+   const bool can_be_refined,
+   const bool initial_time,
+   const tbox::Pointer<hier::BasePatchLevel> old_level,
+   const bool allocate_data)
+{
+
+   (void)init_data_time;
+   (void)can_be_refined;
+   (void)initial_time;
+   (void)old_level;
+
+   tbox::Pointer<hier::PatchHierarchy> hierarchy = patch_hierarchy;
+   tbox::Pointer<geom::CartesianGridGeometry> grid_geom =
+      hierarchy->getGridGeometry();
+
+   tbox::Pointer<hier::PatchLevel> level =
+      hierarchy->getPatchLevel(level_number);
+
+   if (allocate_data) {
+      level->allocatePatchData(d_comp_soln_id);
+      level->allocatePatchData(d_rhs_id);
+      level->allocatePatchData(d_exact_id);
+   }
+
+   /*
+    * Initialize data in all patches in the level.
+    */
+   hier::PatchLevel::Iterator pi(*level);
+   for (pi.initialize(*level); pi; pi++) {
+
+      tbox::Pointer<hier::Patch> patch = *pi;
+      if (patch.isNull()) {
+         TBOX_ERROR(d_object_name
+            << ": Cannot find patch.  Null patch pointer.");
+      }
+      hier::Box pbox = patch->getBox();
+      tbox::Pointer<geom::CartesianPatchGeometry> patch_geom =
+         patch->getPatchGeometry();
+
+      tbox::Pointer<pdat::CellData<double> > exact_data =
+         patch->getPatchData(d_exact_id);
+      tbox::Pointer<pdat::CellData<double> > rhs_data =
+         patch->getPatchData(d_rhs_id);
+
+      /*
+       * Set source function and exact solution.
+       */
+      if (d_dim == tbox::Dimension(2)) {
+         F77_FUNC(setexactandrhs2d, SETEXACTANDRHS2D) (
+            pbox.lower()[0],
+            pbox.upper()[0],
+            pbox.lower()[1],
+            pbox.upper()[1],
+            exact_data->getPointer(),
+            rhs_data->getPointer(),
+            patch_geom->getDx(),
+            patch_geom->getXLower());
+      } else if (d_dim == tbox::Dimension(3)) {
+         F77_FUNC(setexactandrhs3d, SETEXACTANDRHS3D) (
+            pbox.lower()[0],
+            pbox.upper()[0],
+            pbox.lower()[1],
+            pbox.upper()[1],
+            pbox.lower()[2],
+            pbox.upper()[2],
+            exact_data->getPointer(),
+            rhs_data->getPointer(),
+            patch_geom->getDx(),
+            patch_geom->getXLower());
+      }
+
+   }    // End patch loop.
+}
+
+/*
+ *************************************************************************
+ * Reset the hierarchy-dependent internal information.                   *
+ *************************************************************************
+ */
+void FACPoisson::resetHierarchyConfiguration(
+   tbox::Pointer<hier::BasePatchHierarchy> new_hierarchy,
+   int coarsest_level,
+   int finest_level)
+{
+   (void)coarsest_level;
+   (void)finest_level;
+
+   d_hierarchy = new_hierarchy;
+}
+
+/*
+ *************************************************************************
+ * Set up the initial guess and problem parameters                       *
+ * and solve the Poisson problem.  We explicitly initialize and          *
+ * deallocate the solver state in this example.                          *
+ *************************************************************************
+ */
+int FACPoisson::solvePoisson()
+{
+
+   if (d_hierarchy.isNull()) {
+      TBOX_ERROR(d_object_name
+         << "Cannot solve using an uninitialized object.\n");
+   }
+
+   int ln;
+   /*
+    * Fill in the initial guess.
+    */
+   for (ln = 0; ln <= d_hierarchy->getFinestLevelNumber(); ++ln) {
+      tbox::Pointer<hier::PatchLevel> level = d_hierarchy->getPatchLevel(ln);
+      hier::PatchLevel::Iterator ip(*level);
+      for ( ; ip; ip++) {
+         tbox::Pointer<hier::Patch> patch = *ip;
+         tbox::Pointer<pdat::CellData<double> > data = patch->getPatchData(
+               d_comp_soln_id);
+         data->fill(0.0);
+      }
+   }
+
+   /*
+    * Set the parameters for the Poisson equation.
+    * See classes solv::CellPoissonFACSolver or
+    * solv::PoissonSpecifications.
+    * (D is the diffusion coefficient.
+    * C is the source term which is not used in this example.)
+    */
+   d_poisson_fac_solver.setDConstant(1.0);
+   d_poisson_fac_solver.setCConstant(0.0);
+
+   d_poisson_fac_solver.initializeSolverState(
+      d_comp_soln_id,
+      d_rhs_id,
+      d_hierarchy,
+      0,
+      d_hierarchy->getFinestLevelNumber());
+
+   tbox::plog << "solving..." << std::endl;
+   int solver_ret;
+   solver_ret = d_poisson_fac_solver.solveSystem(d_comp_soln_id,
+         d_rhs_id);
+   /*
+    * Present data on the solve.
+    */
+   double avg_factor, final_factor;
+   d_poisson_fac_solver.getConvergenceFactors(avg_factor, final_factor);
+   tbox::plog << "\t" << (solver_ret ? "" : "NOT ") << "converged " << "\n"
+              << "	iterations: "
+              << d_poisson_fac_solver.getNumberOfIterations() << "\n"
+              << "	residual: "<< d_poisson_fac_solver.getResidualNorm()
+              << "\n"
+              << "	average convergence: "<< avg_factor << "\n"
+              << "	final convergence: "<< final_factor << "\n"
+              << std::flush;
+
+   d_poisson_fac_solver.deallocateSolverState();
+
+   return 0;
+}
+
+#ifdef HAVE_HDF5
+/*
+ *************************************************************************
+ * Set up external plotter to plot internal data from this class.        *
+ * Register variables appropriate for plotting.                          *
+ *************************************************************************
+ */
+int FACPoisson::setupPlotter(
+   appu::VisItDataWriter& plotter) const {
+   if (d_hierarchy.isNull()) {
+      TBOX_ERROR(d_object_name << ": No hierarchy in\n"
+                               << " FACPoisson::setupPlotter\n"
+                               << "The hierarchy must be set before calling\n"
+                               << "this function.\n");
+   }
+   plotter.registerPlotQuantity("Computed solution",
+      "SCALAR",
+      d_comp_soln_id);
+   plotter.registerDerivedPlotQuantity("Error",
+      "SCALAR",
+      (appu::VisDerivedDataStrategy *)this);
+   plotter.registerPlotQuantity("Exact solution",
+      "SCALAR",
+      d_exact_id);
+   plotter.registerPlotQuantity("Poisson source",
+      "SCALAR",
+      d_rhs_id);
+
+   return 0;
+}
+#endif
+
+/*
+ *************************************************************************
+ * Write derived data to the given stream.                               *
+ *************************************************************************
+ */
+bool FACPoisson::packDerivedDataIntoDoubleBuffer(
+   double* buffer,
+   const hier::Patch& patch,
+   const hier::Box& region,
+   const std::string& variable_name,
+   int depth_id) const
+{
+   (void)depth_id;
+
+   pdat::CellData<double>::Iterator icell(region);
+
+   if (variable_name == "Error") {
+      tbox::Pointer<pdat::CellData<double> > current_solution_ =
+         patch.getPatchData(d_comp_soln_id);
+      tbox::Pointer<pdat::CellData<double> > exact_solution_ =
+         patch.getPatchData(d_exact_id);
+      pdat::CellData<double>& current_solution = *current_solution_;
+      pdat::CellData<double>& exact_solution = *exact_solution_;
+      for ( ; icell; icell++) {
+         double diff = (current_solution(*icell) - exact_solution(*icell));
+         *buffer = diff;
+         buffer = buffer + 1;
+      }
+   } else {
+      // Did not register this name.
+      TBOX_ERROR(
+         "Unregistered variable name '" << variable_name << "' in\n"
+         <<
+         "FACPoissonX::packDerivedDataIntoDoubleBuffer");
+
+   }
+   // Return true if this patch has derived data on it.
+   // False otherwise.
+   return true;
+}
+
+}
diff -r 000000000000 -r a9a8e9ffee9a FACPoisson.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FACPoisson.h	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,211 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Numerical routines for example FAC Poisson solver 
+ *
+ ************************************************************************/
+#ifndef included_FACPoisson
+#define included_FACPoisson
+
+#include "SAMRAI/solv/CellPoissonFACSolver.h"
+#include "SAMRAI/pdat/CellVariable.h"
+#include "SAMRAI/tbox/Database.h"
+#include "SAMRAI/hier/Box.h"
+#include "SAMRAI/solv/LocationIndexRobinBcCoefs.h"
+#include "SAMRAI/hier/Patch.h"
+#include "SAMRAI/hier/PatchHierarchy.h"
+#include "SAMRAI/hier/PatchLevel.h"
+#include "SAMRAI/tbox/Pointer.h"
+#include "SAMRAI/pdat/SideVariable.h"
+#include "SAMRAI/mesh/StandardTagAndInitStrategy.h"
+#include "SAMRAI/hier/VariableContext.h"
+#include "SAMRAI/appu/VisDerivedDataStrategy.h"
+#include "SAMRAI/appu/VisItDataWriter.h"
+
+namespace SAMRAI {
+
+/*!
+ * @brief Class to solve a sample Poisson equation on a SAMR grid.
+ *
+ * This class demonstrates how use the FAC Poisson solver
+ * class to solve Poisson's equation on a single level
+ * within a hierarchy.
+ *
+ * We set up and solve the following problem:
+ *
+ *   2d: div(grad(u)) = -2 (pi^2) sin(pi x) sin(pi y)
+ *
+ *   3d: div(grad(u)) = -3 (pi^2) sin(pi x) sin(pi y) sin(pi z)
+ *
+ * which has the exact solution
+ *
+ *   2d: u = sin(pi x) sin(pi y)
+ *
+ *   3d: u = sin(pi x) sin(pi y) sin(pi z)
+ *
+ * This class inherits and implements virtual functions from
+ * - mesh::StandardTagAndInitStrategy to initialize data
+ *   on the SAMR grid.
+ * - appu::VisDerivedDataStrategy to write out certain data
+ *   in a vis file, such as the error of the solution.
+ *
+ * Inputs:  The only input parameter for this class is
+ * "fac_poisson", the input database for the solv::CellPoissonFACSolver
+ * object.  See the documentation for solv::CellPoissonFACSolver
+ * for its input parameters.
+ */
+class FACPoisson:
+   public mesh::StandardTagAndInitStrategy,
+   public appu::VisDerivedDataStrategy
+{
+
+public:
+   /*!
+    * @brief Constructor.
+    *
+    * If you want standard output and logging,
+    * pass in valid pointers for those streams.
+    *
+    * @param object_name Ojbect name
+    * @param database Input database (may be NULL)
+    */
+   FACPoisson(
+      const std::string& object_name,
+      const tbox::Dimension& dim,
+      tbox::Pointer<tbox::Database> database =
+         tbox::Pointer<tbox::Database>(NULL));
+
+   virtual ~FACPoisson();
+
+   //@{ @name mesh::StandardTagAndInitStrategy virtuals
+
+   /*!
+    * @brief Allocate and initialize data for a new level
+    * in the patch hierarchy.
+    *
+    * This is where you implement the code for initialize data on
+    * the grid.  All the information needed to initialize the grid
+    * are in the arguments.
+    *
+    * @see mesh::StandardTagAndInitStrategy::initializeLevelData()
+    */
+   virtual void
+   initializeLevelData(
+      const tbox::Pointer<hier::BasePatchHierarchy> hierarchy,
+      const int level_number,
+      const double init_data_time,
+      const bool can_be_refined,
+      const bool initial_time,
+      const tbox::Pointer<hier::BasePatchLevel> old_level,
+      const bool allocate_data);
+
+   /*!
+    * @brief Reset any internal hierarchy-dependent information.
+    */
+   virtual void
+   resetHierarchyConfiguration(
+      tbox::Pointer<hier::BasePatchHierarchy> new_hierarchy,
+      int coarsest_level,
+      int finest_level);
+
+   //@}
+
+   //@{ @name appu::VisDerivedDataStrategy virtuals
+
+   virtual bool
+   packDerivedDataIntoDoubleBuffer(
+      double* buffer,
+      const hier::Patch& patch,
+      const hier::Box& region,
+      const std::string& variable_name,
+      int depth_id) const;
+
+   //@}
+
+   /*!
+    * @brief Solve using HYPRE Poisson solver
+    *
+    * Set up the linear algebra problem and use a
+    * solv::CellPoissonFACSolver object to solve it.
+    * -# Set initial guess
+    * -# Set boundary conditions
+    * -# Specify Poisson equation parameters
+    * -# Call solver
+    */
+   int
+   solvePoisson();
+
+#ifdef HAVE_HDF5
+   /*!
+    * @brief Set up external plotter to plot internal
+    * data from this class.
+    *
+    * After calling this function, the external
+    * data writer may be used to write the
+    * viz file for this object.
+    *
+    * The internal hierarchy is used and must be
+    * established before calling this function.
+    * (This is commonly done by building a hierarchy
+    * with the mesh::StandardTagAndInitStrategy virtual
+    * functions implemented by this class.)
+    *
+    * @param viz_writer VisIt writer
+    */
+   int
+   setupPlotter(
+      appu::VisItDataWriter& plotter) const;
+#endif
+
+private:
+   std::string d_object_name;
+
+   const tbox::Dimension d_dim;
+
+   tbox::Pointer<hier::PatchHierarchy> d_hierarchy;
+
+   //@{
+   /*!
+    * @name Major algorithm objects.
+    */
+
+   /*!
+    * @brief FAC poisson solver.
+    */
+   solv::CellPoissonFACSolver d_poisson_fac_solver;
+
+   /*!
+    * @brief Boundary condition coefficient implementation.
+    */
+   solv::LocationIndexRobinBcCoefs d_bc_coefs;
+
+   //@}
+
+   //@{
+
+   /*!
+    * @name Private state variables for solution.
+    */
+
+   /*!
+    * @brief Context owned by this object.
+    */
+   tbox::Pointer<hier::VariableContext> d_context;
+
+   /*!
+    * @brief Descriptor indices of internal data.
+    *
+    * These are initialized in the constructor and never change.
+    */
+   int d_comp_soln_id, d_exact_id, d_rhs_id;
+
+   //@}
+
+};
+
+}
+
+#endif  // included_FACPoisson
diff -r 000000000000 -r a9a8e9ffee9a Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,95 @@
+#########################################################################
+##
+## This file is part of the SAMRAI distribution.  For full copyright 
+## information, see COPYRIGHT and COPYING.LESSER. 
+##
+## Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+## Description:   makefile for SAMRAI FAC Poisson solver example 
+##
+#########################################################################
+
+SAMRAI	      = ../AMR/SAMRAI-v3.1.0-beta
+SRCDIR        = .
+SUBDIR        = source/test/FAC_nonadaptive
+VPATH         = 
+TESTTOOLS     = ../testtools
+OBJECT        = ../AMR/SAMRAI-v3.1.0-beta-build
+
+default:      check
+
+include $(OBJECT)/config/Makefile.config
+
+CPPFLAGS_EXTRA= -DTESTING=0
+
+NUM_TESTS = 2
+
+TEST_NPROCS = 0,2
+
+CXX_OBJS      = main.o FACPoisson.o
+F_OBJS      = facpoisson2d.o facpoisson3d.o
+
+main:	$(CXX_OBJS) $(F_OBJS) $(LIBSAMRAIDEPEND)
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(CXX_OBJS) $(F_OBJS) \
+	$(LIBSAMRAI3D) $(LIBSAMRAI3D) $(LIBSAMRAI) $(LDLIBS) -o main
+
+check:
+	$(MAKE) check2d
+	$(MAKE) check3d
+
+check2d:	main
+	@for i in test_inputs/*2d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+check3d:	main
+	@for i in test_inputs/*3d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+checkcompile: main
+
+checktest:
+	rm -f makecheck.logfile
+	$(MAKE) check 2>&1 | $(TEE) makecheck.logfile
+	$(TESTTOOLS)/testcount.sh $(TEST_NPROCS) $(NUM_TESTS) makecheck.logfile
+	rm -f makecheck.logfile
+
+examples2d: main
+	@for i in $(SRCDIR)/example_inputs/*.2d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+examples3d: main
+	@for i in $(SRCDIR)/example_inputs/*.3d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+examples:
+	$(MAKE) examples2d
+	$(MAKE) examples3d
+
+clean-check:
+	$(SAMCLEAN)
+
+clean:		clean-check
+	$(RM) main
+
+redo:
+	$(RM) core main
+
+include $(SRCDIR)/Makefile.depend
+
+FORTRAN       = $(SRCDIR)/fortran
+M4DIRS          = -DFORTDIR=$(FORTRAN) $(SAMRAI_M4_FLAGS)
+
+facpoisson2d.o:	$(FORTRAN)/facpoisson2d.m4
+	$(M4) $(M4DIRS) $(FORTRAN)/facpoisson2d.m4 > facpoisson2d.f
+	$(F77) $(FFLAGS) -c facpoisson2d.f -o $@
+
+facpoisson3d.o:	$(FORTRAN)/facpoisson3d.m4
+	$(M4) $(M4DIRS) $(FORTRAN)/facpoisson3d.m4 > facpoisson3d.f
+	$(F77) $(FFLAGS) -c facpoisson3d.f -o $@
diff -r 000000000000 -r a9a8e9ffee9a Makefile.depend
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.depend	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,819 @@
+#########################################################################
+##
+## This file is part of the SAMRAI distribution.  For full copyright 
+## information, see COPYRIGHT and COPYING.LESSER. 
+##
+## Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+## Description:   makefile dependencies 
+##
+#########################################################################
+
+
+## This file is automatically generated by depend.pl.
+
+
+FILE_0=FACPoisson.o
+DEPENDS_0:=\
+	$(OBJECT)/include/SAMRAI/SAMRAI_config.h			\
+	$(INCLUDE_SAM)/SAMRAI/appu/VisDerivedDataStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/appu/VisItDataWriter.h			\
+	$(INCLUDE_SAM)/SAMRAI/appu/VisMaterialsDataStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/geom/CartesianGridGeometry.I		\
+	$(INCLUDE_SAM)/SAMRAI/geom/CartesianGridGeometry.h		\
+	$(INCLUDE_SAM)/SAMRAI/geom/CartesianPatchGeometry.I		\
+	$(INCLUDE_SAM)/SAMRAI/geom/CartesianPatchGeometry.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchHierarchy.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchHierarchy.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchLevel.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchLevel.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryBox.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryBox.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryLookupTable.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryLookupTable.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/Box.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Box.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxArray.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxArray.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxList.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxList.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxOverlap.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxOverlap.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/CoarseFineBoundary.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/ComponentSelector.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/ComponentSelector.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/Connector.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Connector.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/GlobalId.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/GlobalId.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/GridGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/GridGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/Index.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Index.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/IntVector.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/IntVector.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/LocalId.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/LocalId.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/MBUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBox.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBox.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxId.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxId.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxLevel.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxLevel.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxLevelHandle.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxSet.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxSet.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxTree.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockDataTranslator.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockGridGeometry.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockGridGeometry.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchHierarchy.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchHierarchy.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchLevel.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchLevel.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/NeighborhoodSet.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/NeighborhoodSet.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/Patch.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Patch.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchBoundaries.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchBoundaries.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchData.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchData.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDescriptor.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDescriptor.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchHierarchy.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchHierarchy.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevel.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevel.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevelFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevelFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PeriodicShiftCatalog.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/PeriodicShiftCatalog.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/PersistentOverlapConnectors.h	\
+	$(INCLUDE_SAM)/SAMRAI/hier/ProcessorMapping.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/ProcessorMapping.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/RealMappedBoxConstIterator.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/Variable.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Variable.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableContext.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableContext.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableDatabase.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableDatabase.h			\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataBasicOps.h			\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyCellDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyEdgeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyFaceDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyNodeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchySideDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/StandardTagAndInitStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataOperationUtilities.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDoubleConstantRefine.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CopyOperation.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CopyOperation.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockCellDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockEdgeDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockFaceDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockNodeDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockSideDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SumOperation.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SumOperation.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/CartesianRobinBcHelper.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACOps.I			\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACOps.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACSolver.I		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACSolver.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonHypreSolver.I		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonHypreSolver.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/FACOperatorStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/FACPreconditioner.I			\
+	$(INCLUDE_SAM)/SAMRAI/solv/FACPreconditioner.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/GhostCellRobinBcCoefs.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/LocationIndexRobinBcCoefs.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/PoissonSpecifications.I		\
+	$(INCLUDE_SAM)/SAMRAI/solv/PoissonSpecifications.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/RobinBcCoefStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/SAMRAIVectorReal.I			\
+	$(INCLUDE_SAM)/SAMRAI/solv/SAMRAIVectorReal.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/SimpleCellRobinBcCoefs.h		\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Array.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Array.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommPeer.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommPeer.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommStage.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Clock.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Complex.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointer.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointer.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointerBase.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointerBase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Database.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Database.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/DatabaseBox.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/DatabaseBox.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/DescribedClass.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Dimension.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Dimension.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/HDFDatabase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/IOStream.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/List.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/List.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Logger.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MathUtilities.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MathUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MemoryUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MessageStream.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MessageStream.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/PIO.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Pointer.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Pointer.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/PointerBase.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/PointerBase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ReferenceCounter.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ReferenceCounter.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/SAMRAIManager.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/SAMRAI_MPI.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/SAMRAI_MPI.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Schedule.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Serializable.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/StartupShutdownManager.h		\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Timer.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Timer.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/TimerManager.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Transaction.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Utilities.h				\
+	$(INCLUDE_SAM)/SAMRAI/xfer/BoxGeometryVariableFillPattern.h	\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenAlgorithm.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenClasses.I			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenClasses.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenOperator.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenPatchStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenSchedule.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenTransactionFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/Geometry.h				\
+	$(INCLUDE_SAM)/SAMRAI/xfer/PatchLevelFillPattern.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineAlgorithm.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineClasses.I			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineClasses.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineOperator.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefinePatchStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineSchedule.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineTransactionFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/TimeInterpolateOperator.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/VariableFillPattern.h FACPoisson.C	\
+	FACPoisson.h
+
+ifeq (${DEPENDS_ON_TEMPLATE_IMPLEMENTATION},yes)
+DEPENDS_0 +=\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataBasicOps.C			\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyCellDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyEdgeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyFaceDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyNodeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchySideDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataOperationUtilities.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CopyOperation.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockCellDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockEdgeDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockFaceDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockNodeDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockSideDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SumOperation.C			\
+	$(INCLUDE_SAM)/SAMRAI/solv/SAMRAIVectorReal.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Array.C				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommPeer.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointer.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Database_template_methods.C		\
+	$(INCLUDE_SAM)/SAMRAI/tbox/List.C				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MathUtilities.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MessageStream_template_methods.C	\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Pointer.C
+endif
+
+${FILE_0:X.o=${NDIM}.o}: ${DEPENDS_0}
+
+FILE_1=main.o
+DEPENDS_1:=\
+	$(OBJECT)/include/SAMRAI/SAMRAI_config.h			\
+	$(INCLUDE_SAM)/SAMRAI/appu/VisDerivedDataStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/appu/VisItDataWriter.h			\
+	$(INCLUDE_SAM)/SAMRAI/appu/VisMaterialsDataStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/geom/CartesianGridGeometry.I		\
+	$(INCLUDE_SAM)/SAMRAI/geom/CartesianGridGeometry.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchHierarchy.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchHierarchy.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchLevel.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BasePatchLevel.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryBox.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryBox.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryLookupTable.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoundaryLookupTable.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/Box.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Box.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxArray.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxArray.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxList.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxList.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxOverlap.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxOverlap.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/BoxUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/CoarseFineBoundary.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/ComponentSelector.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/ComponentSelector.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/Connector.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Connector.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/GlobalId.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/GlobalId.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/GridGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/GridGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/Index.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Index.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/IntVector.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/IntVector.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/LocalId.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/LocalId.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/MBUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBox.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBox.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxId.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxId.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxLevel.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxLevel.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxLevelHandle.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxSet.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxSet.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MappedBoxTree.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockDataTranslator.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockGridGeometry.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockGridGeometry.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchHierarchy.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchHierarchy.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchLevel.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/MultiblockPatchLevel.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/NeighborhoodSet.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/NeighborhoodSet.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/Patch.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Patch.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchBoundaries.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchBoundaries.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchData.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchData.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDescriptor.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchDescriptor.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchHierarchy.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchHierarchy.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevel.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevel.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevelFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PatchLevelFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/PeriodicShiftCatalog.I		\
+	$(INCLUDE_SAM)/SAMRAI/hier/PeriodicShiftCatalog.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/PersistentOverlapConnectors.h	\
+	$(INCLUDE_SAM)/SAMRAI/hier/ProcessorMapping.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/ProcessorMapping.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/RealMappedBoxConstIterator.h		\
+	$(INCLUDE_SAM)/SAMRAI/hier/Variable.I				\
+	$(INCLUDE_SAM)/SAMRAI/hier/Variable.h				\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableContext.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableContext.h			\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableDatabase.I			\
+	$(INCLUDE_SAM)/SAMRAI/hier/VariableDatabase.h			\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataBasicOps.h			\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyCellDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyEdgeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyFaceDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyNodeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchySideDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataBasicOps.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataMiscellaneousOpsReal.h	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataNormOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataOpsReal.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/BaseGriddingAlgorithm.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/BergerRigoutsos.h			\
+	$(INCLUDE_SAM)/SAMRAI/mesh/BoxGeneratorStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/GriddingAlgorithm.I			\
+	$(INCLUDE_SAM)/SAMRAI/mesh/GriddingAlgorithm.h			\
+	$(INCLUDE_SAM)/SAMRAI/mesh/GriddingAlgorithmConnectorWidthRequestor.h\
+	$(INCLUDE_SAM)/SAMRAI/mesh/LoadBalanceStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/StandardTagAndInitStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/StandardTagAndInitialize.I		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/StandardTagAndInitialize.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/TagAndInitializeStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/mesh/TreeLoadBalancer.I			\
+	$(INCLUDE_SAM)/SAMRAI/mesh/TreeLoadBalancer.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataOperationUtilities.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDoubleConstantRefine.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CopyOperation.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CopyOperation.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockCellDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockEdgeDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockFaceDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockNodeDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockSideDataTranslator.h	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideData.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideData.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideDataFactory.I		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideDataFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideData.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideData.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideDataFactory.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideDataFactory.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideGeometry.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideGeometry.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIndex.I				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIndex.h				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIterator.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideIterator.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideOverlap.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideOverlap.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideVariable.h			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SumOperation.I			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SumOperation.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/CartesianRobinBcHelper.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACOps.I			\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACOps.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACSolver.I		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonFACSolver.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonHypreSolver.I		\
+	$(INCLUDE_SAM)/SAMRAI/solv/CellPoissonHypreSolver.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/FACOperatorStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/FACPreconditioner.I			\
+	$(INCLUDE_SAM)/SAMRAI/solv/FACPreconditioner.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/GhostCellRobinBcCoefs.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/LocationIndexRobinBcCoefs.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/PoissonSpecifications.I		\
+	$(INCLUDE_SAM)/SAMRAI/solv/PoissonSpecifications.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/RobinBcCoefStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/solv/SAMRAIVectorReal.I			\
+	$(INCLUDE_SAM)/SAMRAI/solv/SAMRAIVectorReal.h			\
+	$(INCLUDE_SAM)/SAMRAI/solv/SimpleCellRobinBcCoefs.h		\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Array.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Array.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommPeer.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommPeer.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommStage.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Clock.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Complex.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointer.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointer.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointerBase.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointerBase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Database.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Database.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/DatabaseBox.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/DatabaseBox.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/DescribedClass.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Dimension.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Dimension.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/HDFDatabase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/IOStream.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/InputDatabase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/InputManager.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/List.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/List.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Logger.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MathUtilities.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MathUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MemoryDatabase.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MemoryDatabase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MemoryUtilities.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MessageStream.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MessageStream.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/PIO.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Pointer.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Pointer.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/PointerBase.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/PointerBase.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/RankGroup.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/RankGroup.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ReferenceCounter.I			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ReferenceCounter.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/SAMRAIManager.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/SAMRAI_MPI.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/SAMRAI_MPI.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Schedule.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Serializable.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/StartupShutdownManager.h		\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Statistic.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Statistic.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Statistician.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Timer.I				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Timer.h				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/TimerManager.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Transaction.h			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Utilities.h				\
+	$(INCLUDE_SAM)/SAMRAI/xfer/BoxGeometryVariableFillPattern.h	\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenAlgorithm.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenClasses.I			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenClasses.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenOperator.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenPatchStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenSchedule.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/CoarsenTransactionFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/Geometry.h				\
+	$(INCLUDE_SAM)/SAMRAI/xfer/PatchLevelFillPattern.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineAlgorithm.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineClasses.I			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineClasses.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineOperator.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefinePatchStrategy.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineSchedule.h			\
+	$(INCLUDE_SAM)/SAMRAI/xfer/RefineTransactionFactory.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/TimeInterpolateOperator.h		\
+	$(INCLUDE_SAM)/SAMRAI/xfer/VariableFillPattern.h FACPoisson.h	\
+	main.C
+
+ifeq (${DEPENDS_ON_TEMPLATE_IMPLEMENTATION},yes)
+DEPENDS_1 +=\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataBasicOps.C			\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/ArrayDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyCellDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyEdgeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyFaceDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchyNodeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/HierarchySideDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchCellDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchEdgeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchFaceDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchNodeDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataBasicOps.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataMiscellaneousOpsReal.C	\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataNormOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/math/PatchSideDataOpsReal.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/ArrayDataOperationUtilities.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CellVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/CopyOperation.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/EdgeVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/FaceVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockCellDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockEdgeDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockFaceDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockNodeDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/MultiblockSideDataTranslator.C	\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/NodeVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuteredgeDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuterfaceDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OuternodeDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideData.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideDataFactory.C		\
+	$(INCLUDE_SAM)/SAMRAI/pdat/OutersideVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideData.C				\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideDataFactory.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SideVariable.C			\
+	$(INCLUDE_SAM)/SAMRAI/pdat/SumOperation.C			\
+	$(INCLUDE_SAM)/SAMRAI/solv/SAMRAIVectorReal.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Array.C				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/AsyncCommPeer.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/ConstPointer.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Database_template_methods.C		\
+	$(INCLUDE_SAM)/SAMRAI/tbox/List.C				\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MathUtilities.C			\
+	$(INCLUDE_SAM)/SAMRAI/tbox/MessageStream_template_methods.C	\
+	$(INCLUDE_SAM)/SAMRAI/tbox/Pointer.C
+endif
+
+${FILE_1:X.o=${NDIM}.o}: ${DEPENDS_1}
+
diff -r 000000000000 -r a9a8e9ffee9a Makefile.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.in	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,95 @@
+#########################################################################
+##
+## This file is part of the SAMRAI distribution.  For full copyright 
+## information, see COPYRIGHT and COPYING.LESSER. 
+##
+## Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+## Description:   makefile for SAMRAI FAC Poisson solver example 
+##
+#########################################################################
+
+SAMRAI	      = @top_srcdir@
+SRCDIR        = @srcdir@
+SUBDIR        = source/test/FAC_nonadaptive
+VPATH         = @srcdir@
+TESTTOOLS     = ../testtools
+OBJECT        = ../../..
+
+default:      check
+
+include $(OBJECT)/config/Makefile.config
+
+CPPFLAGS_EXTRA= -DTESTING=0
+
+NUM_TESTS = 2
+
+TEST_NPROCS = @TEST_NPROCS@
+
+CXX_OBJS      = main.o FACPoisson.o
+F_OBJS      = facpoisson2d.o facpoisson3d.o
+
+main:	$(CXX_OBJS) $(F_OBJS) $(LIBSAMRAIDEPEND)
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(CXX_OBJS) $(F_OBJS) \
+	$(LIBSAMRAI3D) $(LIBSAMRAI3D) $(LIBSAMRAI) $(LDLIBS) -o main
+
+check:
+	$(MAKE) check2d
+	$(MAKE) check3d
+
+check2d:	main
+	@for i in test_inputs/*2d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+check3d:	main
+	@for i in test_inputs/*3d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+checkcompile: main
+
+checktest:
+	rm -f makecheck.logfile
+	$(MAKE) check 2>&1 | $(TEE) makecheck.logfile
+	$(TESTTOOLS)/testcount.sh $(TEST_NPROCS) $(NUM_TESTS) makecheck.logfile
+	rm -f makecheck.logfile
+
+examples2d: main
+	@for i in $(SRCDIR)/example_inputs/*.2d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+examples3d: main
+	@for i in $(SRCDIR)/example_inputs/*.3d.input ; do	\
+	  $(OBJECT)/config/serpa-run $(TEST_NPROCS) \
+		./main $${i};	\
+	done
+
+examples:
+	$(MAKE) examples2d
+	$(MAKE) examples3d
+
+clean-check:
+	$(SAMCLEAN)
+
+clean:		clean-check
+	$(RM) main
+
+redo:
+	$(RM) core main
+
+include $(SRCDIR)/Makefile.depend
+
+FORTRAN       = $(SRCDIR)/fortran
+M4DIRS          = -DFORTDIR=$(FORTRAN) $(SAMRAI_M4_FLAGS)
+
+facpoisson2d.o:	$(FORTRAN)/facpoisson2d.m4
+	$(M4) $(M4DIRS) $(FORTRAN)/facpoisson2d.m4 > facpoisson2d.f
+	$(F77) $(FFLAGS) -c facpoisson2d.f -o $@
+
+facpoisson3d.o:	$(FORTRAN)/facpoisson3d.m4
+	$(M4) $(M4DIRS) $(FORTRAN)/facpoisson3d.m4 > facpoisson3d.f
+	$(F77) $(FFLAGS) -c facpoisson3d.f -o $@
diff -r 000000000000 -r a9a8e9ffee9a example_inputs/const_refine.2d.input
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example_inputs/const_refine.2d.input	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Input file for example FAC Poisson solver 
+ *
+ ************************************************************************/
+// This is the input file for the 2D FAC example
+// demonstrating changes in boundary conditions.
+//
+// Note that using constant refine prolongation
+// lead to slower convergence.
+
+Main {
+  dim = 2
+  // Base name for output files.
+  base_name = "constantrefine2"
+  // Whether to log all nodes in a parallel run.
+  log_all_nodes = FALSE
+  // Visualization writers to write files for.
+  vis_writer = "Vizamrai", "VisIt"
+}
+
+FACPoisson {
+  // The FACPoisson class is the "user class" in this example.
+  // It owns the solver and contains the code to set up the solver.
+  // The inputs for FACPoisson is simply the inputs for the individual
+  // parts owned by the FACPoisson class.
+  fac_solver {
+    // This is the input for the cell-centered Poisson FAC solver
+    // class in the SAMRAI library.
+    enable_logging = TRUE   // Bool flag to switch logging on/off
+    max_cycles = 20         // Max number of FAC cycles to use
+    residual_tol = 1e-8     // Residual tolerance to solve for
+    num_pre_sweeps = 1      // Number of presmoothing sweeps to use
+    num_post_sweeps = 3     // Number of postsmoothing sweeps to use
+    prolongation_method = "CONSTANT_REFINE" // Type of refinement
+      					  // used in prolongation.
+                                          // Suggested values are
+                                          // "LINEAR_REFINE"
+                                          // "CONSTANT_REFINE"
+    use_smg = TRUE	// Whether to use HYPRE's SMG instead of PFMG.
+  }
+  bc_coefs {
+    // These are the boundary condition specifications.  The number
+    // after "boundary_" is the location index of the boundary.
+    // The inputs are arrays of strings where the first string
+    // indicates the type of values you want to set.  "slope" means
+    // boundary slope, "value" means boundary value, and "coefficients"
+    // mean the raw Robin boundary condition coefficients.
+    // The remaining strings are converted into numbers as
+    // appropriate for what boundary condition you specified with
+    // the first string.  Other boundary conditions are possible.
+    // see the solv_RobinBcCoefStrategy class.
+    // Examples:
+    // boundary_0 = "slope", "0"
+    // boundary_1 = "coefficients", "0", "0"
+    // boundary_2 = "value", "0"
+    // boundary_3 = "value", "0"
+    boundary_0 = "value", "0"
+    boundary_1 = "value", "0"
+    boundary_2 = "value", "0"
+    boundary_3 = "value", "0"
+  }
+}
+
+CartesianGridGeometry {
+  //  Specify lower/upper corners of the computational domain and a
+  //  set of non-overlapping boxes defining domain interior.  If union 
+  //  of boxes is not a parallelpiped, lower/upper corner data corresponds 
+  //  to min/max corner indices over all boxes given.
+  //  x_lo  -- (double array) lower corner of computational domain [REQD]
+  //  x_up  -- (double array) upper corner of computational domain [REQD]
+  //  domain_boxes  -- (box array) set of boxes that define interior of 
+  //                   hysical domain. [REQD]
+  //  periodic_dimension -- (int array) coordinate directions in which 
+  //                        domain is periodic.  Zero indicates not
+  //                        periodic, non-zero value indicates periodicity.
+  //                        [0]
+  domain_boxes = [(0,0), (31,31)]
+  x_lo         = 0, 0
+  x_up         = 1, 1
+}
+
+StandardTagAndInitialize {
+  tagging_method = "REFINE_BOXES"
+  RefineBoxes {
+    level_0 = [(0,0),(31,15)]
+    level_1 = [(0,0),(63,15)]
+    level_2 = [(0,0),(16,16)]
+    //etc.
+  }
+}
+
+PatchHierarchy {
+   // Information used to create patches in AMR hierarchy.
+   // max_levels -- (int) max number of mesh levels in hierarchy [REQD]
+   // 
+   // For most of the following parameters, the number of precribed data
+   // values need not match the number of levels in the hierarchy 
+   // (determined by max_levels).  If more values are given than number 
+   // of levels, extraneous values will be ignored.  If less are give, then
+   // values that correspond to individual levels will apply to those 
+   // levels.  Missing values will be taken from those for the finest
+   // level specified.
+   //
+   // ratio_to_coarser {
+   //   level_1 -- (int array) ratio between index spaces on 
+   //              level 1 to level 0 [REQD]
+   //   level_2 -- (int array)  ratio between index spaces on 
+   //              level 2 to level 1 [REQD]
+   //   etc....
+   // }
+   // largest_patch_size {
+   //   level_0 -- (int array) largest patch allowed on level 0. 
+   //              [REQD]    
+   //   level_1 -- (int array)    "       "      "   "  level 1 
+   //              [level 0 entry]
+   //   etc....                       
+   // }
+   max_levels = 3
+   ratio_to_coarser {
+      level_1            = 2, 2
+      level_2            = 2, 2
+   }
+   largest_patch_size {
+      level_0 = 32, 32
+      // all finer levels will use same values as level_0...
+   }
+}
+
+GriddingAlgorithm {
+}
diff -r 000000000000 -r a9a8e9ffee9a example_inputs/const_refine.3d.input
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example_inputs/const_refine.3d.input	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Input file for example FAC Poisson solver 
+ *
+ ************************************************************************/
+// This is the input file for the 3D FAC example
+// demonstrating changes in boundary conditions.
+//
+// Note that using constant refine prolongation
+// lead to slower convergence.
+
+Main {
+  dim = 3
+  // Base name for output files.
+  base_name = "constantrefine3"
+  // Whether to log all nodes in a parallel run.
+  log_all_nodes = FALSE
+  // Visualization writers to write files for.
+  vis_writer = "Vizamrai", "VisIt"
+}
+
+FACPoisson {
+  // The FACPoisson class is the "user class" in this example.
+  // It owns the solver and contains the code to set up the solver.
+  // The inputs for FACPoisson is simply the inputs for the individual
+  // parts owned by the FACPoisson class.
+  fac_solver {
+    // This is the input for the cell-centered Poisson FAC solver
+    // class in the SAMRAI library.
+    enable_logging = TRUE   // Bool flag to switch logging on/off
+    max_cycles = 20         // Max number of FAC cycles to use
+    residual_tol = 1e-8     // Residual tolerance to solve for
+    num_pre_sweeps = 1      // Number of presmoothing sweeps to use
+    num_post_sweeps = 3     // Number of postsmoothing sweeps to use
+    prolongation_method = "CONSTANT_REFINE" // Type of refinement
+      					  // used in prolongation.
+                                          // Suggested values are
+                                          // "LINEAR_REFINE"
+                                          // "CONSTANT_REFINE"
+    use_smg = TRUE	// Whether to use HYPRE's SMG instead of PFMG.
+  }
+  bc_coefs {
+    // These are the boundary condition specifications.  The number
+    // after "boundary_" is the location index of the boundary.
+    // The inputs are arrays of strings where the first string
+    // indicates the type of values you want to set.  "slope" means
+    // boundary slope, "value" means boundary value, and "coefficients"
+    // mean the raw Robin boundary condition coefficients.
+    // The remaining strings are converted into numbers as
+    // appropriate for what boundary condition you specified with
+    // the first string.  Other boundary conditions are possible.
+    // see the solv_RobinBcCoefStrategy class.
+    // Examples:
+    // boundary_0 = "slope", "0"
+    // boundary_1 = "coefficients", "0", "0"
+    // boundary_2 = "value", "0"
+    // boundary_3 = "value", "0"
+    boundary_0 = "value", "0"
+    boundary_1 = "value", "0"
+    boundary_2 = "value", "0"
+    boundary_3 = "value", "0"
+    boundary_4 = "value", "0"
+    boundary_5 = "value", "0"
+  }
+}
+
+CartesianGridGeometry {
+  //  Specify lower/upper corners of the computational domain and a
+  //  set of non-overlapping boxes defining domain interior.  If union 
+  //  of boxes is not a parallelpiped, lower/upper corner data corresponds 
+  //  to min/max corner indices over all boxes given.
+  //  x_lo  -- (double array) lower corner of computational domain [REQD]
+  //  x_up  -- (double array) upper corner of computational domain [REQD]
+  //  domain_boxes  -- (box array) set of boxes that define interior of 
+  //                   hysical domain. [REQD]
+  //  periodic_dimension -- (int array) coordinate directions in which 
+  //                        domain is periodic.  Zero indicates not
+  //                        periodic, non-zero value indicates periodicity.
+  //                        [0]
+  domain_boxes = [(0,0,0), (15,15,15)]
+  x_lo         = 0, 0, 0
+  x_up         = 1, 1, 1
+}
+
+StandardTagAndInitialize {
+  tagging_method = "REFINE_BOXES"
+  RefineBoxes {
+    level_0 = [(0,0,0),(7,7,7)]
+    level_1 = [(0,0,0),(7,7,7)]
+  }
+}
+
+PatchHierarchy {
+   // Information used to create patches in AMR hierarchy.
+   // max_levels -- (int) max number of mesh levels in hierarchy [REQD]
+   // 
+   // For most of the following parameters, the number of precribed data
+   // values need not match the number of levels in the hierarchy 
+   // (determined by max_levels).  If more values are given than number 
+   // of levels, extraneous values will be ignored.  If less are give, then
+   // values that correspond to individual levels will apply to those 
+   // levels.  Missing values will be taken from those for the finest
+   // level specified.
+   //
+   // ratio_to_coarser {
+   //   level_1 -- (int array) ratio between index spaces on 
+   //              level 1 to level 0 [REQD]
+   //   level_2 -- (int array)  ratio between index spaces on 
+   //              level 2 to level 1 [REQD]
+   //   etc....
+   // }
+   // largest_patch_size {
+   //   level_0 -- (int array) largest patch allowed on level 0. 
+   //              [REQD]    
+   //   level_1 -- (int array)    "       "      "   "  level 1 
+   //              [level 0 entry]
+   //   etc....                       
+   // }
+   max_levels = 3
+   ratio_to_coarser {
+      level_1            = 2, 2, 2
+      level_2            = 2, 2, 2
+   }
+   largest_patch_size {
+      level_0 = 32, 32, 32
+      // all finer levels will use same values as level_0...
+   }
+}
+
+GriddingAlgorithm {
+}
diff -r 000000000000 -r a9a8e9ffee9a example_inputs/otherbc.2d.input
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example_inputs/otherbc.2d.input	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Input file for example FAC Poisson solver 
+ *
+ ************************************************************************/
+// This is the input file for the 2D FAC example
+// demonstrating changes in boundary conditions.
+//
+// Note that you should not compare the computed
+// solution with the exact solution in the example.
+// The exact solution is only for the boundary
+// condition of 0 on all boundaries.
+
+Main {
+  dim = 2
+  // Base name for output files.
+  base_name = "otherbc2"
+  // Whether to log all nodes in a parallel run.
+  log_all_nodes = FALSE
+  // Visualization writers to write files for.
+  vis_writer = "Vizamrai", "VisIt"
+}
+
+FACPoisson {
+  // The FACPoisson class is the "user class" in this example.
+  // It owns the solver and contains the code to set up the solver.
+  // The inputs for FACPoisson is simply the inputs for the individual
+  // parts owned by the FACPoisson class.
+  fac_solver {
+    // This is the input for the cell-centered Poisson FAC solver
+    // class in the SAMRAI library.
+    enable_logging = TRUE   // Bool flag to switch logging on/off
+    max_cycles = 10         // Max number of FAC cycles to use
+    residual_tol = 1e-8     // Residual tolerance to solve for
+    num_pre_sweeps = 1      // Number of presmoothing sweeps to use
+    num_post_sweeps = 3     // Number of postsmoothing sweeps to use
+    prolongation_method = "LINEAR_REFINE" // Type of refinement
+      					  // used in prolongation.
+                                          // Suggested values are
+                                          // "LINEAR_REFINE"
+                                          // "CONSTANT_REFINE"
+    use_smg = TRUE	// Whether to use HYPRE's SMG instead of PFMG.
+  }
+  bc_coefs {
+    // These are the boundary condition specifications.  The number
+    // after "boundary_" is the location index of the boundary.
+    // The inputs are arrays of strings where the first string
+    // indicates the type of values you want to set.  "slope" means
+    // boundary slope, "value" means boundary value, and "coefficients"
+    // mean the raw Robin boundary condition coefficients.
+    // The remaining strings are converted into numbers as
+    // appropriate for what boundary condition you specified with
+    // the first string.  Other boundary conditions are possible.
+    // see the solv_RobinBcCoefStrategy class.
+    // Examples:
+    // boundary_0 = "slope", "0"
+    // boundary_1 = "coefficients", "0", "0"
+    // boundary_2 = "value", "0"
+    // boundary_3 = "value", "0"
+    boundary_0 = "slope", "0"
+    boundary_1 = "coefficients", "0", "0"
+    boundary_2 = "value", "0"
+    boundary_3 = "value", "0"
+  }
+}
+
+CartesianGridGeometry {
+  //  Specify lower/upper corners of the computational domain and a
+  //  set of non-overlapping boxes defining domain interior.  If union 
+  //  of boxes is not a parallelpiped, lower/upper corner data corresponds 
+  //  to min/max corner indices over all boxes given.
+  //  x_lo  -- (double array) lower corner of computational domain [REQD]
+  //  x_up  -- (double array) upper corner of computational domain [REQD]
+  //  domain_boxes  -- (box array) set of boxes that define interior of 
+  //                   hysical domain. [REQD]
+  //  periodic_dimension -- (int array) coordinate directions in which 
+  //                        domain is periodic.  Zero indicates not
+  //                        periodic, non-zero value indicates periodicity.
+  //                        [0]
+  domain_boxes = [(0,0), (31,31)]
+  x_lo         = 0, 0
+  x_up         = 1, 1
+}
+
+StandardTagAndInitialize {
+  tagging_method = "REFINE_BOXES"
+  RefineBoxes {
+    level_0 = [(0,0),(31,15)]
+    level_1 = [(0,0),(63,15)]
+    level_2 = [(0,0),(16,16)]
+    //etc.
+  }
+}
+
+PatchHierarchy {
+   // Information used to create patches in AMR hierarchy.
+   // max_levels -- (int) max number of mesh levels in hierarchy [REQD]
+   // 
+   // For most of the following parameters, the number of precribed data
+   // values need not match the number of levels in the hierarchy 
+   // (determined by max_levels).  If more values are given than number 
+   // of levels, extraneous values will be ignored.  If less are give, then
+   // values that correspond to individual levels will apply to those 
+   // levels.  Missing values will be taken from those for the finest
+   // level specified.
+   //
+   // ratio_to_coarser {
+   //   level_1 -- (int array) ratio between index spaces on 
+   //              level 1 to level 0 [REQD]
+   //   level_2 -- (int array)  ratio between index spaces on 
+   //              level 2 to level 1 [REQD]
+   //   etc....
+   // }
+   // largest_patch_size {
+   //   level_0 -- (int array) largest patch allowed on level 0. 
+   //              [REQD]    
+   //   level_1 -- (int array)    "       "      "   "  level 1 
+   //              [level 0 entry]
+   //   etc....                       
+   // }
+   max_levels = 3
+   ratio_to_coarser {
+      level_1            = 2, 2
+      level_2            = 2, 2
+   }
+   largest_patch_size {
+      level_0 = 32, 32
+      // all finer levels will use same values as level_0...
+   }
+}
+
+GriddingAlgorithm {
+}
diff -r 000000000000 -r a9a8e9ffee9a example_inputs/otherbc.3d.input
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example_inputs/otherbc.3d.input	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Input file for example FAC Poisson solver 
+ *
+ ************************************************************************/
+// This is the input file for the 3D FAC example
+// demonstrating changes in boundary conditions.
+//
+// Note that you should not compare the computed
+// solution with the exact solution in the example.
+// The exact solution is only for the boundary
+// condition of 0 on all boundaries.
+
+Main {
+  dim = 3
+  // Base name for output files.
+  base_name = "otherbc3"
+  // Whether to log all nodes in a parallel run.
+  log_all_nodes = FALSE
+  // Visualization writers to write files for.
+  vis_writer = "Vizamrai", "VisIt"
+}
+
+FACPoisson {
+  // The FACPoisson class is the "user class" in this example.
+  // It owns the solver and contains the code to set up the solver.
+  // The inputs for FACPoisson is simply the inputs for the individual
+  // parts owned by the FACPoisson class.
+  fac_solver {
+    // This is the input for the cell-centered Poisson FAC solver
+    // class in the SAMRAI library.
+    enable_logging = TRUE   // Bool flag to switch logging on/off
+    max_cycles = 10         // Max number of FAC cycles to use
+    residual_tol = 1e-8     // Residual tolerance to solve for
+    num_pre_sweeps = 1      // Number of presmoothing sweeps to use
+    num_post_sweeps = 3     // Number of postsmoothing sweeps to use
+    prolongation_method = "LINEAR_REFINE" // Type of refinement
+      					  // used in prolongation.
+                                          // Suggested values are
+                                          // "LINEAR_REFINE"
+                                          // "CONSTANT_REFINE"
+    use_smg = TRUE	// Whether to use HYPRE's SMG instead of PFMG.
+  }
+  bc_coefs {
+    // These are the boundary condition specifications.  The number
+    // after "boundary_" is the location index of the boundary.
+    // The inputs are arrays of strings where the first string
+    // indicates the type of values you want to set.  "slope" means
+    // boundary slope, "value" means boundary value, and "coefficients"
+    // mean the raw Robin boundary condition coefficients.
+    // The remaining strings are converted into numbers as
+    // appropriate for what boundary condition you specified with
+    // the first string.  Other boundary conditions are possible.
+    // see the solv_RobinBcCoefStrategy class.
+    // Examples:
+    // boundary_0 = "slope", "0"
+    // boundary_1 = "coefficients", "0", "0"
+    // boundary_2 = "value", "0"
+    // boundary_3 = "value", "0"
+    boundary_0 = "slope", "0"
+    boundary_1 = "coefficients", "0", "0"
+    boundary_2 = "value", "0"
+    boundary_3 = "value", "0"
+    boundary_4 = "value", "0"
+    boundary_5 = "value", "0"
+  }
+}
+
+CartesianGridGeometry {
+  //  Specify lower/upper corners of the computational domain and a
+  //  set of non-overlapping boxes defining domain interior.  If union 
+  //  of boxes is not a parallelpiped, lower/upper corner data corresponds 
+  //  to min/max corner indices over all boxes given.
+  //  x_lo  -- (double array) lower corner of computational domain [REQD]
+  //  x_up  -- (double array) upper corner of computational domain [REQD]
+  //  domain_boxes  -- (box array) set of boxes that define interior of 
+  //                   hysical domain. [REQD]
+  //  periodic_dimension -- (int array) coordinate directions in which 
+  //                        domain is periodic.  Zero indicates not
+  //                        periodic, non-zero value indicates periodicity.
+  //                        [0]
+  domain_boxes = [(0,0,0), (15,15,15)]
+  x_lo         = 0, 0, 0
+  x_up         = 1, 1, 1
+}
+
+StandardTagAndInitialize {
+  tagging_method = "REFINE_BOXES"
+  RefineBoxes {
+    level_0 = [(0,0,0),(7,7,7)]
+    level_1 = [(0,0,0),(7,7,7)]
+  }
+}
+
+PatchHierarchy {
+   // Information used to create patches in AMR hierarchy.
+   // max_levels -- (int) max number of mesh levels in hierarchy [REQD]
+   // 
+   // For most of the following parameters, the number of precribed data
+   // values need not match the number of levels in the hierarchy 
+   // (determined by max_levels).  If more values are given than number 
+   // of levels, extraneous values will be ignored.  If less are give, then
+   // values that correspond to individual levels will apply to those 
+   // levels.  Missing values will be taken from those for the finest
+   // level specified.
+   //
+   // ratio_to_coarser {
+   //   level_1 -- (int array) ratio between index spaces on 
+   //              level 1 to level 0 [REQD]
+   //   level_2 -- (int array)  ratio between index spaces on 
+   //              level 2 to level 1 [REQD]
+   //   etc....
+   // }
+   // largest_patch_size {
+   //   level_0 -- (int array) largest patch allowed on level 0. 
+   //              [REQD]    
+   //   level_1 -- (int array)    "       "      "   "  level 1 
+   //              [level 0 entry]
+   //   etc....                       
+   // }
+   max_levels = 3
+   ratio_to_coarser {
+      level_1            = 2, 2, 2
+      level_2            = 2, 2, 2
+   }
+   largest_patch_size {
+      level_0 = 32, 32, 32
+      // all finer levels will use same values as level_0...
+   }
+}
+
+GriddingAlgorithm {
+}
diff -r 000000000000 -r a9a8e9ffee9a fortran/facpoisson2d.m4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fortran/facpoisson2d.m4	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,43 @@
+define(NDIM,2)dnl
+define(REAL,`double precision')dnl
+include(SAMRAI_FORTDIR/pdat_m4arrdim2d.i)dnl
+
+      subroutine setexactandrhs2d(
+     &  ifirst0,ilast0,ifirst1,ilast1,
+     &  exact,rhs,dx,xlower)
+c***********************************************************************
+      implicit none
+c***********************************************************************
+c***********************************************************************     
+c input arrays:
+      integer ifirst0,ilast0,ifirst1,ilast1
+c variables in 1d axis indexed
+c
+      REAL 
+     &     dx(0:NDIM-1),
+     &     xlower(0:NDIM-1)
+c variables in 2d cell indexed         
+      REAL
+     &     exact(CELL2d(ifirst,ilast,1)),
+     &     rhs(CELL2d(ifirst,ilast,0))
+c
+c***********************************************************************     
+c
+      integer ic0,ic1
+      REAL x, y, sinsin, pi
+
+      pi=3.141592654
+
+      do ic1=ifirst1,ilast1
+        y = xlower(1) + dx(1)*(ic1-ifirst1+0.5)
+        do ic0=ifirst0,ilast0
+          x = xlower(0) + dx(0)*(ic0-ifirst0+0.5)
+          sinsin = sin(pi*x) * sin(pi*y)
+          exact(ic0,ic1) = sinsin
+          rhs(ic0,ic1) = -NDIM*pi*pi*sinsin
+        enddo
+      enddo
+
+      return
+      end   
+c
diff -r 000000000000 -r a9a8e9ffee9a fortran/facpoisson3d.m4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fortran/facpoisson3d.m4	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,48 @@
+define(NDIM,3)dnl
+define(REAL,`double precision')dnl
+include(SAMRAI_FORTDIR/pdat_m4arrdim3d.i)dnl
+
+      subroutine setexactandrhs3d(
+     &  ifirst0,ilast0,ifirst1,ilast1,ifirst2,ilast2,
+     &  exact,rhs,dx,xlower)
+c***********************************************************************
+      implicit none
+c***********************************************************************
+c***********************************************************************     
+c input arrays:
+      integer ifirst0,ilast0,ifirst1,ilast1,ifirst2,ilast2
+c variables in 1d axis indexed
+c
+      REAL 
+     &     dx(0:NDIM-1),
+     &     xlower(0:NDIM-1)
+c variables in 3d cell indexed         
+      REAL
+     &     exact(CELL3d(ifirst,ilast,1)),
+     &     rhs(CELL3d(ifirst,ilast,0))
+c
+c***********************************************************************     
+c
+      integer ic0,ic1,ic2
+      REAL x, y, z, sinsin, pi
+
+      pi=3.141592654
+
+c     write(6,*) "In fluxcorrec()"
+c     ******************************************************************
+      do ic2=ifirst2,ilast2
+         z = xlower(2) + dx(2)*(ic2-ifirst2+0.5)
+         do ic1=ifirst1,ilast1
+            y = xlower(1) + dx(1)*(ic1-ifirst1+0.5)
+            do ic0=ifirst0,ilast0
+               x = xlower(0) + dx(0)*(ic0-ifirst0+0.5)
+               sinsin = sin(pi*x) * sin(pi*y) * sin(pi*z)
+               exact(ic0,ic1,ic2) = sinsin
+               rhs(ic0,ic1,ic2) = -NDIM*pi*pi*sinsin
+            enddo
+         enddo
+      enddo
+
+      return
+      end   
+c
diff -r 000000000000 -r a9a8e9ffee9a main.C
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.C	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,289 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Main program for FAC Poisson example 
+ *
+ ************************************************************************/
+#include "SAMRAI/SAMRAI_config.h"
+
+#include <string>
+using namespace std;
+
+#include "SAMRAI/mesh/BergerRigoutsos.h"
+#include "SAMRAI/geom/CartesianGridGeometry.h"
+#include "SAMRAI/tbox/Database.h"
+#include "SAMRAI/mesh/GriddingAlgorithm.h"
+#include "SAMRAI/tbox/InputDatabase.h"
+#include "SAMRAI/tbox/InputManager.h"
+#include "SAMRAI/mesh/TreeLoadBalancer.h"
+#include "SAMRAI/hier/PatchHierarchy.h"
+#include "SAMRAI/tbox/PIO.h"
+#include "SAMRAI/tbox/Pointer.h"
+#include "SAMRAI/tbox/SAMRAIManager.h"
+#include "SAMRAI/mesh/StandardTagAndInitialize.h"
+#include "SAMRAI/tbox/SAMRAI_MPI.h"
+#include "SAMRAI/tbox/TimerManager.h"
+#include "SAMRAI/tbox/Utilities.h"
+#include "SAMRAI/appu/VisItDataWriter.h"
+
+#include "FACPoisson.h"
+
+using namespace SAMRAI;
+
+/*
+ ************************************************************************
+ *                                                                      *
+ * This is the driver program to demonstrate                            *
+ * how to use the FAC Poisson solver.                                   *
+ *                                                                      *
+ * We set up the simple problem                                         *
+ *          u + div(grad(u)) = sin(x)*sin(y)                            *
+ * in the domain [0:1]x[0:1], with u=0 on the                           *
+ * boundary.                                                            *
+ *                                                                      *
+ * FACPoisson is the primary object used to                             *
+ * set up and solve the system.  It maintains                           *
+ * the data for the computed solution u, the                            *
+ * exact solution, and the right hand side.                             *
+ *                                                                      *
+ * The hierarchy created to solve this problem                          *
+ * has only one level.  (The FAC Poisson solver                         *
+ * is a single-level solver.)                                           *
+ *                                                                      *
+ *************************************************************************
+ */
+
+int main(
+   int argc,
+   char* argv[])
+{
+   /*
+    * Initialize MPI, SAMRAI.
+    */
+
+   tbox::SAMRAI_MPI::init(&argc, &argv);
+   tbox::SAMRAIManager::initialize();
+   tbox::SAMRAIManager::startup();
+
+   /*
+    * Create block to force pointer deallocation.  If this is not done
+    * then there will be memory leaks reported.
+    */
+   {
+      /*
+       * Process command line arguments.  For each run, the input
+       * filename must be specified.  Usage is:
+       *
+       *    executable <input file name>
+       *
+       */
+      string input_filename;
+
+      if (argc != 2) {
+         TBOX_ERROR("USAGE:  " << argv[0] << " <input file> \n"
+                                          << "  options:\n"
+                                          << "  none at this time" << endl);
+      } else {
+         input_filename = argv[1];
+      }
+
+      /*
+       * Create input database and parse all data in input file.
+       */
+
+      tbox::Pointer<tbox::Database> input_db(new tbox::InputDatabase("input_db"));
+      tbox::InputManager::getManager()->parseInputFile(input_filename, input_db);
+
+      /*
+       * Set up the timer manager.
+       */
+      if (input_db->isDatabase("TimerManager")) {
+         tbox::TimerManager::createManager(input_db->getDatabase("TimerManager"));
+      }
+
+      /*
+       * Retrieve "Main" section from input database.
+       * The main database is used only in main().
+       * The base_name variable is a base name for
+       * all name strings in this program.
+       */
+
+      tbox::Pointer<tbox::Database> main_db = input_db->getDatabase("Main");
+
+      const tbox::Dimension dim(static_cast<unsigned short>(main_db->getInteger("dim")));
+
+      string base_name = "unnamed";
+      base_name = main_db->getStringWithDefault("base_name", base_name);
+
+      /*
+       * Start logging.
+       */
+      const string log_file_name = base_name + ".log";
+      bool log_all_nodes = false;
+      log_all_nodes = main_db->getBoolWithDefault("log_all_nodes",
+            log_all_nodes);
+      if (log_all_nodes) {
+         tbox::PIO::logAllNodes(log_file_name);
+      } else {
+         tbox::PIO::logOnlyNodeZero(log_file_name);
+      }
+
+      /*
+       * Create major algorithm and data objects which comprise application.
+       * Each object will be initialized either from input data or restart
+       * files, or a combination of both.  Refer to each class constructor
+       * for details.  For more information on the composition of objects
+       * for this application, see comments at top of file.
+       */
+
+      tbox::Pointer<geom::CartesianGridGeometry> grid_geometry(
+         new geom::CartesianGridGeometry(dim,
+            base_name + "CartesianGridGeometry",
+            input_db->getDatabase("CartesianGridGeometry")));
+      tbox::plog << "Cartesian Geometry:" << endl;
+      grid_geometry->printClassData(tbox::plog);
+
+      tbox::Pointer<hier::PatchHierarchy> patch_hierarchy(
+         new hier::PatchHierarchy(base_name + "::PatchHierarchy",
+            grid_geometry,
+            input_db->getDatabase("PatchHierarchy")));
+
+      /*
+       * The FACPoisson object is the main user object specific to the
+       * problem being solved.  It provides the implementations for setting
+       * up the grid and plotting data.  It also wraps up the solve
+       * process that includes making the initial guess, specifying the
+       * boundary conditions and call the solver.
+       */
+      FACPoisson fac_poisson(base_name + "::FACPoisson",
+                             dim,
+                             input_db->isDatabase("FACPoisson") ?
+                             input_db->getDatabase("FACPoisson") :
+                             tbox::Pointer<tbox::Database>(NULL));
+
+      /*
+       * Create the tag-and-initializer, box-generator and load-balancer
+       * object references required by the gridding_algorithm object.
+       */
+      tbox::Pointer<mesh::StandardTagAndInitialize> tag_and_initializer(
+         new mesh::StandardTagAndInitialize(
+            dim,
+            "CellTaggingMethod",
+            tbox::Pointer<mesh::StandardTagAndInitStrategy>(&fac_poisson, false),
+            input_db->getDatabase("StandardTagAndInitialize")
+            ));
+      tbox::Pointer<mesh::BergerRigoutsos> box_generator(
+         new mesh::BergerRigoutsos(dim));
+      tbox::Pointer<mesh::TreeLoadBalancer> load_balancer(
+         new mesh::TreeLoadBalancer(dim,
+            "load balancer",
+            tbox::Pointer<tbox::Database>()));
+      load_balancer->setSAMRAI_MPI(
+         SAMRAI::tbox::SAMRAI_MPI::getSAMRAIWorld());
+
+      /*
+       * Create the gridding algorithm used to generate the SAMR grid
+       * and create the grid.
+       */
+      tbox::Pointer<mesh::GriddingAlgorithm> gridding_algorithm;
+      gridding_algorithm =
+         new mesh::GriddingAlgorithm(
+            patch_hierarchy,
+            "Gridding Algorithm",
+            input_db->getDatabase("GriddingAlgorithm"),
+            tag_and_initializer,
+            box_generator,
+            load_balancer);
+      tbox::plog << "Gridding algorithm:" << endl;
+      gridding_algorithm->printClassData(tbox::plog);
+
+      /*
+       * Make the coarsest patch level where we will be solving.
+       */
+      gridding_algorithm->makeCoarsestLevel(0.0);
+      bool done = false;
+      for (int lnum = 0;
+           patch_hierarchy->levelCanBeRefined(lnum) && !done; lnum++) {
+         tbox::plog << "Adding finner levels with lnum = " << lnum << endl;
+         gridding_algorithm->makeFinerLevel(
+            0.0,
+            true,
+            0);
+         tbox::plog << "Just added finer levels with lnum = " << lnum << endl;
+         done = !(patch_hierarchy->finerLevelExists(lnum));
+      }
+
+      /*
+       * Set up the plotter for the hierarchy just created.
+       * The FACPoisson object handles the data and has the
+       * function setupExternalPlotter to register its data
+       * with the plotter.
+       */
+      tbox::Array<string> vis_writer(1);
+      vis_writer[0] = "Visit";
+      if (main_db->keyExists("vis_writer")) {
+         vis_writer = main_db->getStringArray("vis_writer");
+      }
+      bool use_visit = false;
+      for (int i = 0; i < vis_writer.getSize(); i++) {
+         if (vis_writer[i] == "VisIt") use_visit = true;
+      }
+#ifdef HAVE_HDF5
+      tbox::Pointer<appu::VisItDataWriter> visit_writer;
+      string vis_filename =
+         main_db->getStringWithDefault("vis_filename", base_name);
+      if (use_visit) {
+         visit_writer = new appu::VisItDataWriter(dim,
+               "Visit Writer",
+               vis_filename + ".visit");
+         fac_poisson.setupPlotter(*visit_writer);
+      }
+#endif
+
+      /*
+       * After creating all objects and initializing their state,
+       * we print the input database and variable database contents
+       * to the log file.
+       */
+      tbox::plog << "\nCheck input data and variables before simulation:"
+                 << endl;
+      tbox::plog << "Input database..." << endl;
+      input_db->printClassData(tbox::plog);
+
+      /*
+       * Solve.
+       */
+      fac_poisson.solvePoisson();
+
+#ifdef HAVE_HDF5
+      /*
+       * Plot.
+       */
+      if (use_visit) {
+         visit_writer->writePlotData(patch_hierarchy, 0);
+      }
+#endif
+
+      /*
+       * Deallocate objects when done.
+       */
+
+      tbox::TimerManager::getManager()->print(tbox::plog);
+   }
+
+   /*
+    * This print is for the SAMRAI testing framework.  Passing here
+    * means application ran.  A better test would actually test the
+    * results.
+    */
+   tbox::pout << "\nPASSED:  FAC" << endl;
+
+   tbox::SAMRAIManager::shutdown();
+   tbox::SAMRAIManager::finalize();
+   tbox::SAMRAI_MPI::finalize();
+
+   return 0;
+}
diff -r 000000000000 -r a9a8e9ffee9a test_inputs/default.2d.input
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_inputs/default.2d.input	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Input file for example FAC Poisson solver 
+ *
+ ************************************************************************/
+// This is the default input file for the 2D FAC example.
+
+Main {
+  dim = 2
+  // Base name for output files.
+  base_name = "default2"
+  // Whether to log all nodes in a parallel run.
+  log_all_nodes = FALSE
+  // Visualization writers to write files for.
+  vis_writer = "VisIt"
+}
+
+FACPoisson {
+  // The FACPoisson class is the "user class" in this example.
+  // It owns the solver and contains the code to set up the solver.
+  // The inputs for FACPoisson is simply the inputs for the individual
+  // parts owned by the FACPoisson class.
+  fac_solver {
+    // This is the input for the cell-centered Poisson FAC solver
+    // class in the SAMRAI library.
+    enable_logging = TRUE   // Bool flag to switch logging on/off
+    max_cycles = 10         // Max number of FAC cycles to use
+    residual_tol = 1e-8     // Residual tolerance to solve for
+    num_pre_sweeps = 1      // Number of presmoothing sweeps to use
+    num_post_sweeps = 3     // Number of postsmoothing sweeps to use
+    prolongation_method = "LINEAR_REFINE" // Type of refinement
+      					  // used in prolongation.
+                                          // Suggested values are
+                                          // "LINEAR_REFINE"
+                                          // "CONSTANT_REFINE"
+    use_smg = TRUE	// Whether to use HYPRE's SMG instead of PFMG.
+  }
+  bc_coefs {
+    // These are the boundary condition specifications.  The number
+    // after "boundary_" is the location index of the boundary.
+    // The inputs are arrays of strings where the first string
+    // indicates the type of values you want to set.  "slope" means
+    // boundary slope, "value" means boundary value, and "coefficients"
+    // mean the raw Robin boundary condition coefficients.
+    // The remaining strings are converted into numbers as
+    // appropriate for what boundary condition you specified with
+    // the first string.  Other boundary conditions are possible.
+    // see the solv_RobinBcCoefStrategy class.
+    // Examples:
+    boundary_0 = "value", "0"
+    boundary_1 = "value", "0"
+    boundary_2 = "value", "0"
+    boundary_3 = "value", "0"
+  }
+}
+
+CartesianGridGeometry {
+  //  Specify lower/upper corners of the computational domain and a
+  //  set of non-overlapping boxes defining domain interior.  If union 
+  //  of boxes is not a parallelpiped, lower/upper corner data corresponds 
+  //  to min/max corner indices over all boxes given.
+  //  x_lo  -- (double array) lower corner of computational domain [REQD]
+  //  x_up  -- (double array) upper corner of computational domain [REQD]
+  //  domain_boxes  -- (box array) set of boxes that define interior of 
+  //                   hysical domain. [REQD]
+  //  periodic_dimension -- (int array) coordinate directions in which 
+  //                        domain is periodic.  Zero indicates not
+  //                        periodic, non-zero value indicates periodicity.
+  //                        [0]
+  domain_boxes = [(0,0), (31,31)]
+  x_lo         = 0, 0
+  x_up         = 1, 1
+}
+
+StandardTagAndInitialize {
+  tagging_method = "REFINE_BOXES"
+  RefineBoxes {
+    level_0 = [(0,0),(31,15)]
+    level_1 = [(0,0),(63,15)]
+    level_2 = [(0,0),(16,16)]
+    //etc.
+  }
+}
+
+PatchHierarchy {
+   // Information used to create patches in AMR hierarchy.
+   // max_levels -- (int) max number of mesh levels in hierarchy [REQD]
+   // 
+   // For most of the following parameters, the number of precribed data
+   // values need not match the number of levels in the hierarchy 
+   // (determined by max_levels).  If more values are given than number 
+   // of levels, extraneous values will be ignored.  If less are give, then
+   // values that correspond to individual levels will apply to those 
+   // levels.  Missing values will be taken from those for the finest
+   // level specified.
+   //
+   // ratio_to_coarser {
+   //   level_1 -- (int array) ratio between index spaces on 
+   //              level 1 to level 0 [REQD]
+   //   level_2 -- (int array)  ratio between index spaces on 
+   //              level 2 to level 1 [REQD]
+   //   etc....
+   // }
+   // largest_patch_size {
+   //   level_0 -- (int array) largest patch allowed on level 0. 
+   //              [REQD]    
+   //   level_1 -- (int array)    "       "      "   "  level 1 
+   //              [level 0 entry]
+   //   etc....                       
+   // }
+   max_levels = 3
+   ratio_to_coarser {
+      level_1            = 2, 2
+      level_2            = 2, 2
+   }
+   largest_patch_size {
+      level_0 = 32, 32
+      // all finer levels will use same values as level_0...
+   }
+}
+
+GriddingAlgorithm {
+
+   // TODO this should be removed
+   sequentialize_patch_indices = TRUE
+}
+
+
+TimerManager{
+  timer_list = "hier::*::*", "mesh::*::*"
+  print_user = TRUE
+  // print_timer_overhead = TRUE
+  print_threshold = -1
+  print_summed = TRUE
+  print_max = TRUE
+}
diff -r 000000000000 -r a9a8e9ffee9a test_inputs/default.3d.input
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test_inputs/default.3d.input	Wed Dec 29 16:03:48 2010 -0800
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * This file is part of the SAMRAI distribution.  For full copyright 
+ * information, see COPYRIGHT and COPYING.LESSER. 
+ *
+ * Copyright:     (c) 1997-2010 Lawrence Livermore National Security, LLC
+ * Description:   Input file for example FAC Poisson solver 
+ *
+ ************************************************************************/
+// This is the default input file for the 3D FAC example.
+
+Main {
+  dim = 3
+  // Base name for output files.
+  base_name = "default3"
+  // Whether to log all nodes in a parallel run.
+  log_all_nodes = FALSE
+  // Visualization writers to write files for.
+  vis_writer = "VisIt"
+}
+
+FACPoisson {
+  // The FACPoisson class is the "user class" in this example.
+  // It owns the solver and contains the code to set up the solver.
+  // The inputs for FACPoisson is simply the inputs for the individual
+  // parts owned by the FACPoisson class.
+  fac_solver {
+    // This is the input for the cell-centered Poisson FAC solver
+    // class in the SAMRAI library.
+    enable_logging = TRUE   // Bool flag to switch logging on/off
+    max_cycles = 10         // Max number of FAC cycles to use
+    residual_tol = 1e-8     // Residual tolerance to solve for
+    num_pre_sweeps = 1      // Number of presmoothing sweeps to use
+    num_post_sweeps = 3     // Number of postsmoothing sweeps to use
+    prolongation_method = "LINEAR_REFINE" // Type of refinement
+      					  // used in prolongation.
+                                          // Suggested values are
+                                          // "LINEAR_REFINE"
+                                          // "CONSTANT_REFINE"
+    use_smg = TRUE	// Whether to use HYPRE's SMG instead of PFMG.
+  }
+  bc_coefs {
+    // These are the boundary condition specifications.  The number
+    // after "boundary_" is the location index of the boundary.
+    // The inputs are arrays of strings where the first string
+    // indicates the type of values you want to set.  "slope" means
+    // boundary slope, "value" means boundary value, and "coefficients"
+    // mean the raw Robin boundary condition coefficients.
+    // The remaining strings are converted into numbers as
+    // appropriate for what boundary condition you specified with
+    // the first string.  Other boundary conditions are possible.
+    // see the solv_RobinBcCoefStrategy class.
+    // Examples:
+    boundary_0 = "value", "0"
+    boundary_1 = "value", "0"
+    boundary_2 = "value", "0"
+    boundary_3 = "value", "0"
+    boundary_4 = "value", "0"
+    boundary_5 = "value", "0"
+  }
+}
+
+CartesianGridGeometry {
+  //  Specify lower/upper corners of the computational domain and a
+  //  set of non-overlapping boxes defining domain interior.  If union 
+  //  of boxes is not a parallelpiped, lower/upper corner data corresponds 
+  //  to min/max corner indices over all boxes given.
+  //  x_lo  -- (double array) lower corner of computational domain [REQD]
+  //  x_up  -- (double array) upper corner of computational domain [REQD]
+  //  domain_boxes  -- (box array) set of boxes that define interior of 
+  //                   hysical domain. [REQD]
+  //  periodic_dimension -- (int array) coordinate directions in which 
+  //                        domain is periodic.  Zero indicates not
+  //                        periodic, non-zero value indicates periodicity.
+  //                        [0]
+  domain_boxes = [(0,0,0), (15,15,15)]
+  x_lo         = 0, 0, 0
+  x_up         = 1, 1, 1
+}
+
+StandardTagAndInitialize {
+  tagging_method = "REFINE_BOXES"
+  RefineBoxes {
+    level_0 = [(0,0,0),(7,7,7)]
+    level_1 = [(0,0,0),(7,7,7)]
+  }
+}
+
+PatchHierarchy {
+   // Information used to create patches in AMR hierarchy.
+   // max_levels -- (int) max number of mesh levels in hierarchy [REQD]
+   // 
+   // For most of the following parameters, the number of precribed data
+   // values need not match the number of levels in the hierarchy 
+   // (determined by max_levels).  If more values are given than number 
+   // of levels, extraneous values will be ignored.  If less are give, then
+   // values that correspond to individual levels will apply to those 
+   // levels.  Missing values will be taken from those for the finest
+   // level specified.
+   //
+   // ratio_to_coarser {
+   //   level_1 -- (int array) ratio between index spaces on 
+   //              level 1 to level 0 [REQD]
+   //   level_2 -- (int array)  ratio between index spaces on 
+   //              level 2 to level 1 [REQD]
+   //   etc....
+   // }
+   // largest_patch_size {
+   //   level_0 -- (int array) largest patch allowed on level 0. 
+   //              [REQD]    
+   //   level_1 -- (int array)    "       "      "   "  level 1 
+   //              [level 0 entry]
+   //   etc....                       
+   // }
+   max_levels = 3
+   ratio_to_coarser {
+      level_1            = 2, 2, 2
+      level_2            = 2, 2, 2
+   }
+   largest_patch_size {
+      level_0 = 32, 32, 32
+      // all finer levels will use same values as level_0...
+   }
+}
+
+GriddingAlgorithm {
+   // TODO this should be removed
+   sequentialize_patch_indices = TRUE
+}



More information about the CIG-COMMITS mailing list