[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