[cig-commits] r1286 - in branches/active_compositions: . cookbooks include/aspect include/aspect/particle include/aspect/postprocess include/aspect/velocity_boundary_conditions source/compositional_initial_conditions source/material_model source/postprocess source/simulator tests/adiabatic_conditions tests/box-first-time-step tests/box-first-time-step-alternate-bc tests/conservative_with_mpi tests/graphical_output tests/inclusion_2 tests/inclusion_4 tests/inclusion_adaptive tests/non_conservative_with_mpi tests/passive_comp tests/sol_cx_2 tests/sol_cx_2_conservative tests/sol_cx_2_normalized_pressure tests/sol_cx_2_q3 tests/sol_cx_4 tests/sol_cx_4_conservative tests/sol_cx_4_normalized_pressure tests/sol_cx_4_normalized_pressure_large_static_pressure tests/sol_cx_4_normalized_pressure_low_solver_tolerance tests/sol_kz_2 tests/sol_kz_2_conservative tests/sol_kz_2_q3 tests/sol_kz_4 tests/sol_kz_4_conservative

dannberg at dealii.org dannberg at dealii.org
Thu Oct 18 13:18:18 PDT 2012


Author: dannberg
Date: 2012-10-18 14:18:18 -0600 (Thu, 18 Oct 2012)
New Revision: 1286

Modified:
   branches/active_compositions/
   branches/active_compositions/cookbooks/table_model.prm
   branches/active_compositions/include/aspect/particle/integrator.h
   branches/active_compositions/include/aspect/particle/output.h
   branches/active_compositions/include/aspect/particle/particle.h
   branches/active_compositions/include/aspect/particle/world.h
   branches/active_compositions/include/aspect/postprocess/tracer.h
   branches/active_compositions/include/aspect/simulator.h
   branches/active_compositions/include/aspect/velocity_boundary_conditions/interface.h
   branches/active_compositions/source/compositional_initial_conditions/interface.cc
   branches/active_compositions/source/material_model/steinberger.cc
   branches/active_compositions/source/material_model/table.cc
   branches/active_compositions/source/postprocess/tracer.cc
   branches/active_compositions/source/postprocess/visualization.cc
   branches/active_compositions/source/simulator/core.cc
   branches/active_compositions/source/simulator/helper_functions.cc
   branches/active_compositions/source/simulator/initial_conditions.cc
   branches/active_compositions/source/simulator/simulator_access.cc
   branches/active_compositions/source/simulator/solver.cc
   branches/active_compositions/tests/adiabatic_conditions/depthaverage.plt
   branches/active_compositions/tests/adiabatic_conditions/screen-output
   branches/active_compositions/tests/adiabatic_conditions/statistics
   branches/active_compositions/tests/box-first-time-step-alternate-bc/screen-output
   branches/active_compositions/tests/box-first-time-step-alternate-bc/statistics
   branches/active_compositions/tests/box-first-time-step/screen-output
   branches/active_compositions/tests/box-first-time-step/statistics
   branches/active_compositions/tests/conservative_with_mpi/screen-output
   branches/active_compositions/tests/conservative_with_mpi/statistics
   branches/active_compositions/tests/graphical_output/screen-output
   branches/active_compositions/tests/graphical_output/statistics
   branches/active_compositions/tests/inclusion_2/screen-output
   branches/active_compositions/tests/inclusion_2/statistics
   branches/active_compositions/tests/inclusion_4/screen-output
   branches/active_compositions/tests/inclusion_4/statistics
   branches/active_compositions/tests/inclusion_adaptive/screen-output
   branches/active_compositions/tests/inclusion_adaptive/statistics
   branches/active_compositions/tests/non_conservative_with_mpi/screen-output
   branches/active_compositions/tests/non_conservative_with_mpi/statistics
   branches/active_compositions/tests/passive_comp/depthaverage.plt
   branches/active_compositions/tests/passive_comp/screen-output
   branches/active_compositions/tests/passive_comp/statistics
   branches/active_compositions/tests/sol_cx_2/screen-output
   branches/active_compositions/tests/sol_cx_2/statistics
   branches/active_compositions/tests/sol_cx_2_conservative/screen-output
   branches/active_compositions/tests/sol_cx_2_conservative/statistics
   branches/active_compositions/tests/sol_cx_2_normalized_pressure/screen-output
   branches/active_compositions/tests/sol_cx_2_normalized_pressure/statistics
   branches/active_compositions/tests/sol_cx_2_q3/screen-output
   branches/active_compositions/tests/sol_cx_2_q3/statistics
   branches/active_compositions/tests/sol_cx_4/screen-output
   branches/active_compositions/tests/sol_cx_4/statistics
   branches/active_compositions/tests/sol_cx_4_conservative/screen-output
   branches/active_compositions/tests/sol_cx_4_conservative/statistics
   branches/active_compositions/tests/sol_cx_4_normalized_pressure/screen-output
   branches/active_compositions/tests/sol_cx_4_normalized_pressure/statistics
   branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/screen-output
   branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/statistics
   branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/screen-output
   branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/statistics
   branches/active_compositions/tests/sol_kz_2/screen-output
   branches/active_compositions/tests/sol_kz_2/statistics
   branches/active_compositions/tests/sol_kz_2_conservative/screen-output
   branches/active_compositions/tests/sol_kz_2_conservative/statistics
   branches/active_compositions/tests/sol_kz_2_q3/screen-output
   branches/active_compositions/tests/sol_kz_2_q3/statistics
   branches/active_compositions/tests/sol_kz_4/screen-output
   branches/active_compositions/tests/sol_kz_4/statistics
   branches/active_compositions/tests/sol_kz_4_conservative/screen-output
   branches/active_compositions/tests/sol_kz_4_conservative/statistics
Log:
merge from mainline


Property changes on: branches/active_compositions
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/compositional:1141-1251
/branches/fully-nonlinear:542-728
   + /branches/compositional:1141-1251
/branches/fully-nonlinear:542-728
/trunk/aspect:1257-1285

Modified: branches/active_compositions/cookbooks/table_model.prm
===================================================================
--- branches/active_compositions/cookbooks/table_model.prm	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/cookbooks/table_model.prm	2012-10-18 20:18:18 UTC (rev 1286)
@@ -71,7 +71,7 @@
     subsection Viscosity
       set Reference Viscosity             = 5e24
       set Viscosity increase lower mantle = 1e0
-      set ViscositycModel                 = Exponential
+      set Viscosity Model                 = Exponential
       subsection Composite
         set Activation energy diffusion   = 335e3
         set Activation energy dislocation = 540e3

Modified: branches/active_compositions/include/aspect/particle/integrator.h
===================================================================
--- branches/active_compositions/include/aspect/particle/integrator.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/particle/integrator.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,18 +1,18 @@
 /*
  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
- 
+
  This file is part of ASPECT.
- 
+
  ASPECT is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
- 
+
  ASPECT is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
- 
+
  You should have received a copy of the GNU General Public License
  along with ASPECT; see the file doc/COPYING.  If not see
  <http://www.gnu.org/licenses/>.
@@ -27,258 +27,594 @@
 
 namespace aspect
 {
-    namespace Particle
+  namespace Particle
+  {
+    // Integrator is an abstract class defining virtual methods for performing integration of
+    // particle paths through the simulation velocity field
+    template <int dim, class T>
+    class Integrator
     {
-        // Integrator is an abstract class defining virtual methods for performing integration of
-        // particle paths through the simulation velocity field
-        template <int dim, class T>
-        class Integrator {
-        public:
-            // Perform an integration step of moving the particles by the specified timestep dt.
-            // Implementations of this function should update the particle location.
-            // If the integrator requires multiple internal steps, this should return true until
-            // all internal steps are finished.  Between calls to this, the particles will be moved
-            // based on the velocities at their newly specified positions.
-            virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt) = 0;
-            
-            // Specify the MPI types and data sizes involved in transferring integration related
-            // information between processes. If the integrator samples velocities at different
-            // locations and the particle moves between processes during the integration step,
-            // the sampled velocities must be transferred with the particle.
-            virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info) = 0;
-            
-            // Must reutnr data length in bytes of the integration related data
-            // for a particle in a given format.
-            virtual unsigned int data_len(ParticleDataFormat format) const = 0;
-            // Read integration related data for a particle specified by id_num
-            // Returns the data pointer updated to point to the next unwritten byte
-            virtual char *read_data(ParticleDataFormat format, double id_num, char *data) = 0;
-            // Write integration related data for a particle specified by id_num
-            // Returns the data pointer updated to point to the next unwritten byte
-            virtual char *write_data(ParticleDataFormat format, double id_num, char *data) = 0;
+      public:
+        virtual ~Integrator(void) {};
+
+        // Perform an integration step of moving the particles by the specified timestep dt.
+        // Implementations of this function should update the particle location.
+        // If the integrator requires multiple internal steps, this should return true until
+        // all internal steps are finished.  Between calls to this, the particles will be moved
+        // based on the velocities at their newly specified positions.
+        virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt) = 0;
+
+        // Specify the MPI types and data sizes involved in transferring integration related
+        // information between processes. If the integrator samples velocities at different
+        // locations and the particle moves between processes during the integration step,
+        // the sampled velocities must be transferred with the particle.
+        virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info) = 0;
+
+        // Must return data length in bytes of the integration related data
+        // for a particle in a given format.
+        virtual unsigned int data_len(ParticleDataFormat format) const = 0;
+
+        // Read integration related data for a particle specified by id_num
+        // Returns the data pointer updated to point to the next unwritten byte
+        virtual char *read_data(ParticleDataFormat format, double id_num, char *data) = 0;
+
+        // Write integration related data for a particle specified by id_num
+        // Returns the data pointer updated to point to the next unwritten byte
+        virtual char *write_data(ParticleDataFormat format, double id_num, char *data) = 0;
+    };
+
+    // Euler scheme integrator, where y_{n+1} = y_n + dt * v(y_n)
+    // This requires only one step per integration, and doesn't involve any extra data.
+    template <int dim, class T>
+    class EulerIntegrator : public Integrator<dim, T>
+    {
+      public:
+        virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt)
+        {
+          typename std::multimap<LevelInd, T>::iterator       it;
+          Point<dim>                          loc, vel;
+
+          for (it=particles.begin(); it!=particles.end(); ++it)
+            {
+              loc = it->second.location();
+              vel = it->second.velocity();
+              it->second.set_location(loc + dt*vel);
+            }
+
+          return false;
         };
-        
-        // Euler scheme integrator, where y_{n+1} = y_n + dt * v(y_n)
-        // This requires only one step per integration, and doesn't involve any extra data.
-        template <int dim, class T>
-        class EulerIntegrator : public Integrator<dim, T> {
-        public:
-            virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt) {
-                typename std::multimap<LevelInd, T>::iterator       it;
-                Point<dim>                          loc, vel;
-                
-                for (it=particles.begin();it!=particles.end();++it) {
-                    loc = it->second.location();
-                    vel = it->second.velocity();
-                    it->second.set_location(loc + dt*vel);
+        virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info) {};
+        virtual unsigned int data_len(ParticleDataFormat format) const
+        {
+          return 0;
+        };
+        virtual char *read_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          return data;
+        };
+        virtual char *write_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          return data;
+        };
+    };
+
+    // Runge Kutta second order integrator, where y_{n+1} = y_n + dt*f(k_1, k_1 = v(
+    // This scheme requires storing the original location, and the read/write_data functions reflect this
+    template <int dim, class T>
+    class RK2Integrator : public Integrator<dim, T>
+    {
+      private:
+        unsigned int                    _step;
+        std::map<double, Point<dim> >   _loc0;
+
+      public:
+        RK2Integrator(void)
+        {
+          _step = 0;
+          _loc0.clear();
+        };
+
+        virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt)
+        {
+          typename std::multimap<LevelInd, T>::iterator       it;
+          Point<dim>                          loc, vel;
+          double                              id_num;
+
+          for (it=particles.begin(); it!=particles.end(); ++it)
+            {
+              id_num = it->second.id_num();
+              loc = it->second.location();
+              vel = it->second.velocity();
+              if (_step == 0)
+                {
+                  _loc0[id_num] = loc;
+                  it->second.set_location(loc + 0.5*dt*vel);
                 }
-                
-                return false;
-            };
-            virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info) {};
-            virtual unsigned int data_len(ParticleDataFormat format) const { return 0; };
-            virtual char *read_data(ParticleDataFormat format, double id_num, char *data) { return data; };
-            virtual char *write_data(ParticleDataFormat format, double id_num, char *data) { return data; };
+              else if (_step == 1)
+                {
+                  it->second.set_location(_loc0[id_num] + dt*vel);
+                }
+              else
+                {
+                  // Error!
+                }
+            }
+
+          if (_step == 1) _loc0.clear();
+          _step = (_step+1)%2;
+
+          // Continue until we're at the last step
+          return (_step != 0);
         };
-        
-        // Runge Kutta second order integrator, where y_{n+1} = y_n + dt*f(k_1, k_1 = v(
-        // This scheme requires storing the original location, and the read/write_data functions reflect this
-        template <int dim, class T>
-        class RK2Integrator : public Integrator<dim, T> {
-        private:
-            unsigned int                    _step;
-            std::map<double, Point<dim> >   _loc0;
-            
-        public:
-            RK2Integrator(void) {
-                _step = 0;
-                _loc0.clear();
-            };
-            
-            virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt) {
-                typename std::multimap<LevelInd, T>::iterator       it;
-                Point<dim>                          loc, vel;
-                double                              id_num;
-                
-                for (it=particles.begin();it!=particles.end();++it) {
-                    id_num = it->second.id_num();
-                    loc = it->second.location();
-                    vel = it->second.velocity();
-                    if (_step == 0) {
-                        _loc0[id_num] = loc;
-                        it->second.set_location(loc + 0.5*dt*vel);
-                    } else if (_step == 1) {
-                        it->second.set_location(_loc0[id_num] + dt*vel);
-                    } else {
-                        // Error!
-                    }
+
+        virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info)
+        {
+          // Add the _loc0 data
+          data_info.push_back(MPIDataInfo("loc0", dim, MPI_DOUBLE, sizeof(double)));
+        };
+
+        virtual unsigned int data_len(ParticleDataFormat format) const
+        {
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                return dim*sizeof(double);
+            }
+          return 0;
+        };
+
+        virtual char *read_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          char            *p = data;
+          unsigned int    i;
+
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Read location data
+                for (i=0; i<dim; ++i)
+                  {
+                    _loc0[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                break;
+            }
+
+          return p;
+        };
+
+        virtual char *write_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          char          *p = data;
+          unsigned int  i;
+
+          // Then write our data in the appropriate format
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Write location data
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _loc0[id_num](i);
+                    p += sizeof(double);
+                  }
+                break;
+            }
+
+          return p;
+        };
+    };
+
+
+    template <int dim, class T>
+    class RK4Integrator : public Integrator<dim, T>
+    {
+      private:
+        unsigned int                    _step;
+        std::map<double, Point<dim> >   _loc0, _k1, _k2, _k3;
+
+      public:
+        RK4Integrator(void)
+        {
+          _step = 0;
+          _loc0.clear();
+          _k1.clear();
+          _k2.clear();
+          _k3.clear();
+        };
+
+        virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt)
+        {
+          typename std::multimap<LevelInd, T>::iterator       it;
+          Point<dim>                          loc, vel, k4;
+          double                              id_num;
+
+          for (it=particles.begin(); it!=particles.end(); ++it)
+            {
+              id_num = it->second.id_num();
+              loc = it->second.location();
+              vel = it->second.velocity();
+              if (_step == 0)
+                {
+                  _loc0[id_num] = loc;
+                  _k1[id_num] = dt*vel;
+                  it->second.set_location(loc + 0.5*_k1[id_num]);
                 }
-                
-                if (_step == 1) _loc0.clear();
-                _step = (_step+1)%2;
-                
-                // Continue until we're at the last step
-                return (_step != 0);
-            };
-            
-            virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info) {
-                // Add the _loc0 data
-                data_info.push_back(MPIDataInfo("loc0", dim, MPI_DOUBLE, sizeof(double)));
-            };
-            
-            virtual unsigned int data_len(ParticleDataFormat format) const {
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        return dim*sizeof(double);
+              else if (_step == 1)
+                {
+                  _k2[id_num] = dt*vel;
+                  it->second.set_location(_loc0[id_num] + 0.5*_k2[id_num]);
                 }
-                return 0;
-            };
-            
-            virtual char *read_data(ParticleDataFormat format, double id_num, char *data) {
-                char            *p = data;
-                unsigned int    i;
-                
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        // Read location data
-                        for (i=0;i<dim;++i) { _loc0[id_num](i) = ((double *)p)[0]; p += sizeof(double); }
-                        break;
+              else if (_step == 2)
+                {
+                  _k3[id_num] = dt*vel;
+                  it->second.set_location(_loc0[id_num] + _k3[id_num]);
                 }
-                
-                return p;
-            };
-            
-            virtual char *write_data(ParticleDataFormat format, double id_num, char *data) {
-                char          *p = data;
-                unsigned int  i;
-                
-                // Then write our data in the appropriate format
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        // Write location data
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _loc0[id_num](i); p += sizeof(double); }
-                        break;
+              else if (_step == 3)
+                {
+                  k4 = dt*vel;
+                  it->second.set_location(_loc0[id_num] + (_k1[id_num]+2*_k2[id_num]+2*_k3[id_num]+k4)/6.0);
                 }
-                
-                return p;
-            };
+              else
+                {
+                  // Error!
+                }
+            }
+
+          _step = (_step+1)%4;
+          if (_step == 0)
+            {
+              _loc0.clear();
+              _k1.clear();
+              _k2.clear();
+              _k3.clear();
+            }
+
+          // Continue until we're at the last step
+          return (_step != 0);
         };
 
-        
-        template <int dim, class T>
-        class RK4Integrator : public Integrator<dim, T> {
-        private:
-            unsigned int                    _step;
-            std::map<double, Point<dim> >   _loc0, _k1, _k2, _k3;
-            
-        public:
-            RK4Integrator(void) {
-                _step = 0;
-                _loc0.clear();
-                _k1.clear();
-                _k2.clear();
-                _k3.clear();
-            };
-            
-            virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt) {
-                typename std::multimap<LevelInd, T>::iterator       it;
-                Point<dim>                          loc, vel, k4;
-                double                              id_num;
-                
-                for (it=particles.begin();it!=particles.end();++it) {
-                    id_num = it->second.id_num();
-                    loc = it->second.location();
-                    vel = it->second.velocity();
-                    if (_step == 0) {
+        virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info)
+        {
+          // Add the _loc0, _k1, _k2, and _k3 data
+          data_info.push_back(MPIDataInfo("loc0", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("k1", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("k2", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("k3", dim, MPI_DOUBLE, sizeof(double)));
+        };
+
+        virtual unsigned int data_len(ParticleDataFormat format) const
+        {
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                return 4*dim*sizeof(double);
+            }
+          return 0;
+        };
+
+        virtual char *read_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          char            *p = data;
+          unsigned int    i;
+
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Read location data
+                for (i=0; i<dim; ++i)
+                  {
+                    _loc0[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                // Read k1, k2 and k3
+                for (i=0; i<dim; ++i)
+                  {
+                    _k1[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    _k2[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    _k3[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                break;
+            }
+
+          return p;
+        };
+
+        virtual char *write_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          char          *p = data;
+          unsigned int  i;
+
+          // Then write our data in the appropriate format
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Write location data
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _loc0[id_num](i);
+                    p += sizeof(double);
+                  }
+                // Write k1, k2 and k3
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _k1[id_num](i);
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _k2[id_num](i);
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _k3[id_num](i);
+                    p += sizeof(double);
+                  }
+                break;
+            }
+
+          return p;
+        };
+    };
+
+    // Integrator which chooses Euler, RK2 or RK4 depending on characteristics of the cell a particle is in
+    // Currently used for research only
+    template <int dim, class T>
+    class HybridIntegrator : public Integrator<dim, T>
+    {
+      private:
+        enum IntegrationScheme
+        {
+          SCHEME_UNDEFINED,
+          SCHEME_EULER,
+          SCHEME_RK2,
+          SCHEME_RK4
+        };
+
+        unsigned int                    _step;
+        std::map<double, Point<dim> >   _loc0, _k1, _k2, _k3;
+        std::map<double, IntegrationScheme>        _scheme;
+        const parallel::distributed::Triangulation<dim>   *_tria;
+        const DoFHandler<dim>           *_dh;
+
+        virtual IntegrationScheme select_scheme(const std::vector<Point<dim> > &cell_vertices, const std::vector<Point<dim> > &cell_velocities)
+        {
+          return cell_vertices[0][0] > 0.5 ? SCHEME_RK4 : SCHEME_EULER;
+        };
+
+      public:
+        HybridIntegrator(const parallel::distributed::Triangulation<dim> *new_tria, const DoFHandler<dim> *new_dh)
+        {
+          _step = 0;
+          _loc0.clear();
+          _k1.clear();
+          _k2.clear();
+          _k3.clear();
+          _scheme.clear();
+          _tria = new_tria;
+          _dh = new_dh;
+        };
+
+        virtual bool integrate_step(std::multimap<LevelInd, T> &particles, double dt)
+        {
+          typename std::multimap<LevelInd, T>::iterator       it;
+          Point<dim>                          loc, vel, k4;
+          double                              id_num;
+          LevelInd                            cur_level_ind;
+          IntegrationScheme                   cur_scheme;
+          typename parallel::distributed::Triangulation<dim>::cell_iterator found_cell;
+
+          // If this is the first step, go through all the cells and determine
+          // which integration scheme the particles in each cell should use
+          if (_step == 0)
+            {
+              std::vector<Point<dim> >    cell_vertices, cell_velocities;
+              cell_vertices.resize(GeometryInfo<dim>::vertices_per_cell);
+              cell_velocities.resize(GeometryInfo<dim>::vertices_per_cell);
+              cur_level_ind.first = cur_level_ind.second = -1;
+              cur_scheme = SCHEME_UNDEFINED;
+
+              for (it=particles.begin(); it!=particles.end(); ++it)
+                {
+                  if (cur_level_ind != it->first)
+                    {
+                      cur_level_ind = it->first;
+                      found_cell = typename DoFHandler<dim>::active_cell_iterator(_tria, cur_level_ind.first, cur_level_ind.second, _dh);
+                      for (unsigned int i=0; i<GeometryInfo<dim>::vertices_per_cell; ++i) cell_vertices[i] = found_cell->vertex(i);
+
+                      cur_scheme = select_scheme(cell_vertices, cell_velocities);
+                    }
+                  _scheme[it->second.id_num()] = cur_scheme;
+                }
+            }
+
+          for (it=particles.begin(); it!=particles.end(); ++it)
+            {
+              id_num = it->second.id_num();
+              loc = it->second.location();
+              vel = it->second.velocity();
+              switch (_scheme[id_num])
+                {
+                  case SCHEME_EULER:
+                    if (_step == 0)
+                      {
+                        it->second.set_location(loc + dt*vel);
+                      }
+                    it->second.set_vel_check(false);
+                    break;
+                  case SCHEME_RK2:
+                    if (_step == 0)
+                      {
                         _loc0[id_num] = loc;
+                        it->second.set_location(loc + 0.5*dt*vel);
+                      }
+                    else if (_step == 1)
+                      {
+                        it->second.set_location(_loc0[id_num] + dt*vel);
+                      }
+                    if (_step != 0) it->second.set_vel_check(false);
+                    break;
+                  case SCHEME_RK4:
+                    if (_step == 0)
+                      {
+                        _loc0[id_num] = loc;
                         _k1[id_num] = dt*vel;
                         it->second.set_location(loc + 0.5*_k1[id_num]);
-                    } else if (_step == 1) {
+                      }
+                    else if (_step == 1)
+                      {
                         _k2[id_num] = dt*vel;
                         it->second.set_location(_loc0[id_num] + 0.5*_k2[id_num]);
-                    } else if (_step == 2) {
+                      }
+                    else if (_step == 2)
+                      {
                         _k3[id_num] = dt*vel;
                         it->second.set_location(_loc0[id_num] + _k3[id_num]);
-                    } else if (_step == 3) {
+                      }
+                    else if (_step == 3)
+                      {
                         k4 = dt*vel;
                         it->second.set_location(_loc0[id_num] + (_k1[id_num]+2*_k2[id_num]+2*_k3[id_num]+k4)/6.0);
-                    } else {
-                        // Error!
-                    }
+                      }
+                    break;
+                  default:
+                    AssertThrow(false, ExcMessage("Unknown integration scheme for hybrid integrator."));
+                    break;
                 }
-                
-                _step = (_step+1)%4;
-                if (_step == 0) {
-                    _loc0.clear();
-                    _k1.clear();
-                    _k2.clear();
-                    _k3.clear();
-                }
-                
-                // Continue until we're at the last step
-                return (_step != 0);
-            };
-            
-            virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info) {
-                // Add the _loc0, _k1, _k2, and _k3 data
-                data_info.push_back(MPIDataInfo("loc0", dim, MPI_DOUBLE, sizeof(double)));
-                data_info.push_back(MPIDataInfo("k1", dim, MPI_DOUBLE, sizeof(double)));
-                data_info.push_back(MPIDataInfo("k2", dim, MPI_DOUBLE, sizeof(double)));
-                data_info.push_back(MPIDataInfo("k3", dim, MPI_DOUBLE, sizeof(double)));
-            };
-            
-            virtual unsigned int data_len(ParticleDataFormat format) const {
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        return 4*dim*sizeof(double);
-                }
-                return 0;
-            };
-            
-            virtual char *read_data(ParticleDataFormat format, double id_num, char *data) {
-                char            *p = data;
-                unsigned int    i;
-                
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        // Read location data
-                        for (i=0;i<dim;++i) { _loc0[id_num](i) = ((double *)p)[0]; p += sizeof(double); }
-                        // Read k1, k2 and k3
-                        for (i=0;i<dim;++i) { _k1[id_num](i) = ((double *)p)[0]; p += sizeof(double); }
-                        for (i=0;i<dim;++i) { _k2[id_num](i) = ((double *)p)[0]; p += sizeof(double); }
-                        for (i=0;i<dim;++i) { _k3[id_num](i) = ((double *)p)[0]; p += sizeof(double); }
-                        break;
-                }
-                
-                return p;
-            };
-            
-            virtual char *write_data(ParticleDataFormat format, double id_num, char *data) {
-                char          *p = data;
-                unsigned int  i;
-                
-                // Then write our data in the appropriate format
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        // Write location data
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _loc0[id_num](i); p += sizeof(double); }
-                        // Write k1, k2 and k3
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _k1[id_num](i); p += sizeof(double); }
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _k2[id_num](i); p += sizeof(double); }
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _k3[id_num](i); p += sizeof(double); }
-                        break;
-                }
-                
-                return p;
-            };
+            }
+
+          _step = (_step+1)%4;
+          if (_step == 0)
+            {
+              _loc0.clear();
+              _k1.clear();
+              _k2.clear();
+              _k3.clear();
+              _scheme.clear();
+            }
+
+          // Continue until we're at the last step
+          return (_step != 0);
         };
-    }
+
+        virtual void add_mpi_types(std::vector<MPIDataInfo> &data_info)
+        {
+          // Add the _loc0, _k1, _k2, and _k3 data
+          data_info.push_back(MPIDataInfo("loc0", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("k1", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("k2", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("k3", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("scheme", 1, MPI_DOUBLE, sizeof(double)));
+        };
+
+        virtual unsigned int data_len(ParticleDataFormat format) const
+        {
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                return (4*dim+1)*sizeof(double);
+            }
+          return 0;
+        };
+
+        virtual char *read_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          char            *p = data;
+          unsigned int    i;
+
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Read location data
+                for (i=0; i<dim; ++i)
+                  {
+                    _loc0[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                // Read k1, k2 and k3
+                for (i=0; i<dim; ++i)
+                  {
+                    _k1[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    _k2[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    _k3[id_num](i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                _scheme[id_num] = (IntegrationScheme)((double *)p)[0];
+                p += sizeof(double);
+                break;
+            }
+
+          return p;
+        };
+
+        virtual char *write_data(ParticleDataFormat format, double id_num, char *data)
+        {
+          char          *p = data;
+          unsigned int  i;
+
+          // Then write our data in the appropriate format
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Write location data
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _loc0[id_num](i);
+                    p += sizeof(double);
+                  }
+                // Write k1, k2 and k3
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _k1[id_num](i);
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _k2[id_num](i);
+                    p += sizeof(double);
+                  }
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _k3[id_num](i);
+                    p += sizeof(double);
+                  }
+                // Write the integration scheme for this particle
+                ((double *)p)[0] = _scheme[id_num];
+                p += sizeof(double);
+                break;
+            }
+
+          return p;
+        };
+    };
+  }
 }
 
 #endif

Modified: branches/active_compositions/include/aspect/particle/output.h
===================================================================
--- branches/active_compositions/include/aspect/particle/output.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/particle/output.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,18 +1,18 @@
 /*
  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
- 
+
  This file is part of ASPECT.
- 
+
  ASPECT is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
- 
+
  ASPECT is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
- 
+
  You should have received a copy of the GNU General Public License
  along with ASPECT; see the file doc/COPYING.  If not see
  <http://www.gnu.org/licenses/>.
@@ -31,368 +31,430 @@
 
 namespace aspect
 {
-    namespace Particle
+  namespace Particle
+  {
+    // Abstract class representing particle output
+    template <int dim, class T>
+    class Output
     {
-        // Abstract class representing particle output
-        template <int dim, class T>
-        class Output
+      protected:
+        // Rank and world size of MPI communicator
+        unsigned int    self_rank, world_size;
+        // Internal index of file output number, must be incremented by subclasses when they create a new file
+        unsigned int    file_index;
+
+        std::string     output_dir;
+
+      public:
+        Output(void)
         {
-        protected:
-            // Rank and world size of MPI communicator
-            unsigned int    self_rank, world_size;
-            // Internal index of file output number, must be incremented by subclasses when they create a new file
-            unsigned int    file_index;
-            
-            std::string     output_dir;
-            
-        public:
-            Output(void) {
-                self_rank = Utilities::MPI::this_mpi_process(MPI_COMM_WORLD);
-                world_size = Utilities::MPI::n_mpi_processes(MPI_COMM_WORLD);
-                file_index = 0;
-            };
-            void set_output_directory(std::string new_out_dir) { output_dir = new_out_dir; };
-            virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time) = 0;
+          self_rank = Utilities::MPI::this_mpi_process(MPI_COMM_WORLD);
+          world_size = Utilities::MPI::n_mpi_processes(MPI_COMM_WORLD);
+          file_index = 0;
         };
-        
-        template <int dim, class T>
-        class NullOutput : public Output<dim, T>
+        virtual ~Output(void) {};
+
+        void set_output_directory(std::string new_out_dir)
         {
-        public:
-            virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time) { return ""; };
+          output_dir = new_out_dir;
         };
-        
-        template <int dim, class T>
-        class ASCIIOutput : public Output<dim, T>
+        virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time) = 0;
+    };
+
+    template <int dim, class T>
+    class NullOutput : public Output<dim, T>
+    {
+      public:
+        virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time)
         {
-        public:
-            virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time) {
-                typename std::multimap<LevelInd, T>::const_iterator  it;
-                unsigned int            d;
-                std::string             output_file_prefix, output_path_prefix, full_filename;
-                
-                output_file_prefix = "particle-" + Utilities::int_to_string (Output<dim, T>::file_index, 5);
-                output_path_prefix = Output<dim, T>::output_dir + output_file_prefix;
-                full_filename = output_path_prefix + "." + Utilities::int_to_string(Output<dim, T>::self_rank, 4) + ".txt";
-                std::ofstream output (full_filename.c_str());
-                if (!output) std::cout << "ERROR: proc " << Output<dim, T>::self_rank << " could not create " << full_filename << std::endl;
-                output << "# ";
-                for (d=0; d<dim; ++d) output << "pos[" << d << "] ";
-                for (d=0; d<dim; ++d) output << "vel[" << d << "] ";
-                output << "id\n";
-                for (it=particles.begin(); it!=particles.end(); ++it)
-                {
-                    for (d=0; d<dim; ++d) output << it->second.location()[d] << " ";
-                    for (d=0; d<dim; ++d) output << it->second.velocity()[d] << " ";
-                    output << it->second.id_num();
-                    output << "\n";
-                }
-                
-                output.close();
-                
-                Output<dim, T>::file_index++;
-                
-                return output_path_prefix;
-            };
+          return "";
         };
-        
-        template <int dim, class T>
-        class VTUOutput : public Output<dim, T>
+    };
+
+    template <int dim, class T>
+    class ASCIIOutput : public Output<dim, T>
+    {
+      public:
+        virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time)
         {
-            /**
-             * A list of pairs (time, pvtu_filename) that have so far been written
-             * and that we will pass to DataOutInterface::write_pvd_record
-             * to create a master file that can make the association
-             * between simulation time and corresponding file name (this
-             * is done because there is no way to store the simulation
-             * time inside the .pvtu or .vtu files).
-             */
-            std::vector<std::pair<double,std::string> > times_and_pvtu_names;
-            
-        public:
-            virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time) {
-                typename std::multimap<LevelInd, T>::const_iterator  it;
-                unsigned int            d, i;
-                DataOut<dim>            data_out;
-                std::string             output_file_prefix, output_path_prefix;
-                
-                output_file_prefix = "particle-" + Utilities::int_to_string (Output<dim, T>::file_index, 5);
-                output_path_prefix = Output<dim, T>::output_dir + output_file_prefix;
-                
-                const std::string filename = (output_file_prefix +
-                                              "." +
-                                              Utilities::int_to_string(Output<dim, T>::self_rank, 4) +
-                                              ".vtu");
-                const std::string full_filename = (Output<dim, T>::output_dir + filename);
-                
-                std::ofstream output (full_filename.c_str());
-                if (!output) std::cout << "ERROR: proc " << Output<dim, T>::self_rank << " could not create " << filename << std::endl;
-                
-                // Write VTU file XML
-                output << "<?xml version=\"1.0\"?>\n";
-                output << "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n";
-                output << "  <UnstructuredGrid>\n";
-                output << "    <Piece NumberOfPoints=\"" << particles.size() << "\" NumberOfCells=\"" << particles.size() << "\">\n";
-                
-                // Go through the particles on this domain and print the position of each one
-                // TODO: can we change this to dim-dimensions rather than 3?
-                output << "      <Points>\n";
-                output << "        <DataArray name=\"Position\" type=\"Float64\" NumberOfComponents=\"3\" Format=\"ascii\">\n";
-                for (it=particles.begin(); it!=particles.end(); ++it)
+          typename std::multimap<LevelInd, T>::const_iterator  it;
+          unsigned int                            i;
+          std::string                             output_file_prefix, output_path_prefix, full_filename;
+          std::vector<MPIDataInfo>                data_info;
+          std::vector<MPIDataInfo>::iterator      dit;
+          char                                    *particle_data, *p;
+
+          output_file_prefix = "particle-" + Utilities::int_to_string (Output<dim, T>::file_index, 5);
+          output_path_prefix = Output<dim, T>::output_dir + output_file_prefix;
+          full_filename = output_path_prefix + "." + Utilities::int_to_string(Output<dim, T>::self_rank, 4) + ".txt";
+          std::ofstream output (full_filename.c_str());
+          if (!output) std::cout << "ERROR: proc " << Output<dim, T>::self_rank << " could not create " << full_filename << std::endl;
+
+          // Get the data types
+          T::add_mpi_types(data_info);
+
+          // Print the header line
+          output << "# ";
+          for (dit=data_info.begin(); dit!=data_info.end(); ++dit)
+            {
+              // If it's a 1D element, print just the name, otherwise use []
+              if (dit->_num_elems == 1)
                 {
-                    output << "          ";
-                    for (d=0; d<3; ++d)
-                    {
-                        if (d < dim) output << it->second.location()[d] << " ";
-                        else output << "0.0 ";
-                    }
-                    output << "\n";
+                  output << dit->_name << " ";
                 }
-                output << "        </DataArray>\n";
-                output << "      </Points>\n";
-                
-                // Write cell related data (empty)
-                output << "      <Cells>\n";
-                output << "        <DataArray type=\"Int32\" Name=\"connectivity\" Format=\"ascii\">\n";
-                for (i=1; i<=particles.size(); ++i) output << "          " << i-1 << "\n";
-                output << "        </DataArray>\n";
-                output << "        <DataArray type=\"Int32\" Name=\"offsets\" Format=\"ascii\">\n";
-                for (i=1; i<=particles.size(); ++i) output << "          " << i << "\n";
-                output << "        </DataArray>\n";
-                output << "        <DataArray type=\"UInt8\" Name=\"types\" Format=\"ascii\">\n";
-                for (i=1; i<=particles.size(); ++i) output << "          1\n";
-                output << "        </DataArray>\n";
-                output << "      </Cells>\n";
-                
-                // Write point related data (id, velocity, etc)
-                output << "      <PointData Scalars=\"scalars\">\n";
-                
-                output << "        <DataArray type=\"Float64\" Name=\"velocity\" NumberOfComponents=\"3\" Format=\"ascii\">\n";
-                for (it=particles.begin(); it!=particles.end(); ++it)
+              else
                 {
-                    output << "          ";
-                    for (d=0; d<3; ++d)
+                  for (i=0; i<dit->_num_elems; ++i) output << dit->_name << "[" << i << "] ";
+                }
+            }
+          output << "\n";
+
+          // And print the data for each particle
+          particle_data = new char[T::data_len(HDF5_DATA)];
+          for (it=particles.begin(); it!=particles.end(); ++it)
+            {
+              it->second.write_data(HDF5_DATA, particle_data);
+              p = particle_data;
+              for (dit=data_info.begin(); dit!=data_info.end(); ++dit)
+                {
+                  // Currently assumes all data is double, may need to change this
+                  for (i=0; i<dit->_num_elems; ++i)
                     {
-                        if (d < dim) output << it->second.velocity()[d] << " ";
-                        else output << "0.0 ";
+                      output << ((double *)p)[0] << " ";
+                      p += sizeof(double);
                     }
-                    output << "\n";
                 }
-                output << "        </DataArray>\n";
-                output << "        <DataArray type=\"Float64\" Name=\"id\" Format=\"ascii\">\n";
-                for (it=particles.begin(); it!=particles.end(); ++it)
+              output << "\n";
+            }
+          delete[] particle_data;
+
+          output.close();
+
+          Output<dim, T>::file_index++;
+
+          return output_path_prefix;
+        };
+    };
+
+    template <int dim, class T>
+    class VTUOutput : public Output<dim, T>
+    {
+        /**
+         * A list of pairs (time, pvtu_filename) that have so far been written
+         * and that we will pass to DataOutInterface::write_pvd_record
+         * to create a master file that can make the association
+         * between simulation time and corresponding file name (this
+         * is done because there is no way to store the simulation
+         * time inside the .pvtu or .vtu files).
+         */
+        std::vector<std::pair<double,std::string> > times_and_pvtu_names;
+
+      public:
+        virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time)
+        {
+          typename std::multimap<LevelInd, T>::const_iterator  it;
+          unsigned int                            d, i, num_particles;
+          DataOut<dim>                            data_out;
+          std::vector<MPIDataInfo>                data_info;
+          std::vector<MPIDataInfo>::iterator      dit;
+          std::string                             output_file_prefix, output_path_prefix;
+          unsigned int                            data_offset;
+          char                                    *particle_data, *p;
+
+          output_file_prefix = "particle-" + Utilities::int_to_string (Output<dim, T>::file_index, 5);
+          output_path_prefix = Output<dim, T>::output_dir + output_file_prefix;
+
+          const std::string filename = (output_file_prefix +
+                                        "." +
+                                        Utilities::int_to_string(Output<dim, T>::self_rank, 4) +
+                                        ".vtu");
+          const std::string full_filename = (Output<dim, T>::output_dir + filename);
+
+          std::ofstream output (full_filename.c_str());
+          if (!output) std::cout << "ERROR: proc " << Output<dim, T>::self_rank << " could not create " << filename << std::endl;
+
+          num_particles = particles.size();
+
+          // Write VTU file XML
+          output << "<?xml version=\"1.0\"?>\n";
+          output << "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n";
+          output << "  <UnstructuredGrid>\n";
+          output << "    <Piece NumberOfPoints=\"" << num_particles << "\" NumberOfCells=\"" << num_particles << "\">\n";
+
+          // Go through the particles on this domain and print the position of each one
+          // TODO: can we change this to dim-dimensions rather than 3?
+          output << "      <Points>\n";
+          output << "        <DataArray name=\"Position\" type=\"Float64\" NumberOfComponents=\"3\" Format=\"ascii\">\n";
+          for (it=particles.begin(); it!=particles.end(); ++it)
+            {
+              output << "          ";
+              for (d=0; d<3; ++d)
                 {
-                    output << "          " << it->second.id_num() << "\n";
+                  if (d < dim) output << it->second.location()[d] << " ";
+                  else output << "0.0 ";
                 }
-                output << "        </DataArray>\n";
-                output << "      </PointData>\n";
-                
-                output << "    </Piece>\n";
-                output << "  </UnstructuredGrid>\n";
-                output << "</VTKFile>\n";
-                
-                output.close();
-                
-                // Write the parallel pvtu and pvd files on the root process
-                if (Output<dim, T>::self_rank == 0)
+              output << "\n";
+            }
+          output << "        </DataArray>\n";
+          output << "      </Points>\n";
+
+          // Write cell related data (empty)
+          output << "      <Cells>\n";
+          output << "        <DataArray type=\"Int32\" Name=\"connectivity\" Format=\"ascii\">\n";
+          for (i=1; i<=num_particles; ++i) output << "          " << i-1 << "\n";
+          output << "        </DataArray>\n";
+          output << "        <DataArray type=\"Int32\" Name=\"offsets\" Format=\"ascii\">\n";
+          for (i=1; i<=num_particles; ++i) output << "          " << i << "\n";
+          output << "        </DataArray>\n";
+          output << "        <DataArray type=\"UInt8\" Name=\"types\" Format=\"ascii\">\n";
+          for (i=1; i<=num_particles; ++i) output << "          1\n";
+          output << "        </DataArray>\n";
+          output << "      </Cells>\n";
+
+          // Get the data types
+          T::add_mpi_types(data_info);
+
+          // Write data for each particle (id, velocity, etc)
+          output << "      <PointData Scalars=\"scalars\">\n";
+
+          // Print the data associated with the particles, skipping the first entry (assumed to be position)
+          particle_data = new char[T::data_len(HDF5_DATA)];
+          dit = data_info.begin();
+          data_offset = dit->_num_elems*dit->_elem_size_bytes;
+          dit++;
+          for (; dit!=data_info.end(); ++dit)
+            {
+              output << "        <DataArray type=\"Float64\" Name=\"" << dit->_name << "\" NumberOfComponents=\"" << (dit->_num_elems == 2 ? 3 : dit->_num_elems) << "\" Format=\"ascii\">\n";
+              for (it=particles.begin(); it!=particles.end(); ++it)
                 {
-                    const std::string pvtu_filename = (output_path_prefix + ".pvtu");
-                    
-                    std::ofstream pvtu_output (pvtu_filename.c_str());
-                    if (!pvtu_output) std::cout << "ERROR: Could not create " << filename << std::endl;
-                    
-                    pvtu_output << "<?xml version=\"1.0\"?>\n";
-                    pvtu_output << "<VTKFile type=\"PUnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n";
-                    pvtu_output << "  <PUnstructuredGrid GhostLevel=\"0\">\n";
-                    pvtu_output << "    <PPoints>\n";
-                    pvtu_output << "      <PDataArray type=\"Float64\" NumberOfComponents=\"3\" format=\"ascii\"/>\n";
-                    pvtu_output << "    </PPoints>\n";
-                    pvtu_output << "    <PPointData Scalars=\"scalars\">\n";
-                    pvtu_output << "      <PDataArray type=\"Float64\" Name=\"velocity\" NumberOfComponents=\"3\" format=\"ascii\"/>\n";
-                    pvtu_output << "      <PDataArray type=\"Float64\" Name=\"id\" format=\"ascii\"/>\n";
-                    pvtu_output << "    </PPointData>\n";
-                    for (i=0; i<Output<dim, T>::world_size; ++i)
+                  it->second.write_data(HDF5_DATA, particle_data);
+                  p = particle_data+data_offset;
+                  output << "          ";
+                  for (d=0; d<dit->_num_elems; ++d)
                     {
-                        pvtu_output << "    <Piece Source=\"" << output_file_prefix << "." << Utilities::int_to_string(i, 4) << ".vtu\"/>\n";
+                      output << ((double *)p)[0] << " ";
+                      p += sizeof(double);
                     }
-                    pvtu_output << "  </PUnstructuredGrid>\n";
-                    pvtu_output << "</VTKFile>\n";
-                    pvtu_output.close();
-                    
-                    times_and_pvtu_names.push_back(std::pair<double,std::string>(current_time, output_file_prefix+".pvtu"));
-                    const std::string pvd_master_filename = (Output<dim, T>::output_dir + "particle.pvd");
-                    std::ofstream pvd_master (pvd_master_filename.c_str());
-                    data_out.write_pvd_record (pvd_master, times_and_pvtu_names);
+                  if (dit->_num_elems == 2) output << "0 ";
+                  output << "\n";
                 }
-                Output<dim, T>::file_index++;
-                
-                return output_path_prefix;
-            };
+              data_offset += dit->_num_elems*dit->_elem_size_bytes;
+              output << "        </DataArray>\n";
+            }
+          delete[] particle_data;
+          output << "      </PointData>\n";
+
+          output << "    </Piece>\n";
+          output << "  </UnstructuredGrid>\n";
+          output << "</VTKFile>\n";
+
+          output.close();
+
+          // Write the parallel pvtu and pvd files on the root process
+          if (Output<dim, T>::self_rank == 0)
+            {
+              const std::string pvtu_filename = (output_path_prefix + ".pvtu");
+
+              std::ofstream pvtu_output (pvtu_filename.c_str());
+              if (!pvtu_output) std::cout << "ERROR: Could not create " << filename << std::endl;
+
+              pvtu_output << "<?xml version=\"1.0\"?>\n";
+              pvtu_output << "<VTKFile type=\"PUnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n";
+              pvtu_output << "  <PUnstructuredGrid GhostLevel=\"0\">\n";
+              pvtu_output << "    <PPoints>\n";
+              pvtu_output << "      <PDataArray type=\"Float64\" NumberOfComponents=\"3\" format=\"ascii\"/>\n";
+              pvtu_output << "    </PPoints>\n";
+              pvtu_output << "    <PPointData Scalars=\"scalars\">\n";
+
+              for (dit=data_info.begin()+1; dit!=data_info.end(); ++dit)
+                {
+                  pvtu_output << "      <PDataArray type=\"Float64\" Name=\"" << dit->_name << "\" NumberOfComponents=\"" << (dit->_num_elems == 2 ? 3 : dit->_num_elems) << "\" format=\"ascii\"/>\n";
+                }
+              pvtu_output << "    </PPointData>\n";
+              for (i=0; i<Output<dim, T>::world_size; ++i)
+                {
+                  pvtu_output << "    <Piece Source=\"" << output_file_prefix << "." << Utilities::int_to_string(i, 4) << ".vtu\"/>\n";
+                }
+              pvtu_output << "  </PUnstructuredGrid>\n";
+              pvtu_output << "</VTKFile>\n";
+              pvtu_output.close();
+
+              times_and_pvtu_names.push_back(std::pair<double,std::string>(current_time, output_file_prefix+".pvtu"));
+              const std::string pvd_master_filename = (Output<dim, T>::output_dir + "particle.pvd");
+              std::ofstream pvd_master (pvd_master_filename.c_str());
+              data_out.write_pvd_record (pvd_master, times_and_pvtu_names);
+              pvd_master.close();
+            }
+          Output<dim, T>::file_index++;
+
+          return output_path_prefix;
         };
-        
-        template <int dim, class T>
-        class HDF5Output : public Output<dim, T>
+    };
+
+    template <int dim, class T>
+    class HDF5Output : public Output<dim, T>
+    {
+        // A set of XDMF data objects to create the XDMF file for particles
+        std::vector<XDMFEntry>          xdmf_entries;
+
+      public:
+        virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time)
         {
-            // A set of XDMF data objects to create the XDMF file for particles
-            std::vector<XDMFEntry>          xdmf_entries;
-            
-        public:
-            virtual std::string output_particle_data(const std::multimap<LevelInd, T> &particles, const double &current_time) {
-                typename std::multimap<LevelInd, T>::const_iterator  it;
-                unsigned int            d, i;
-                std::string             output_file_prefix, output_path_prefix, full_filename;
-                
-                output_file_prefix = "particle-" + Utilities::int_to_string (Output<dim, T>::file_index, 5);
-                output_path_prefix = Output<dim, T>::output_dir + output_file_prefix;
+          typename std::multimap<LevelInd, T>::const_iterator  it;
+          unsigned int            d, i;
+          std::string             output_file_prefix, output_path_prefix, full_filename;
+
+          output_file_prefix = "particle-" + Utilities::int_to_string (Output<dim, T>::file_index, 5);
+          output_path_prefix = Output<dim, T>::output_dir + output_file_prefix;
 #ifdef DEAL_II_HAVE_HDF5
-                // TODO: error checking for H5 calls
-                hid_t   h5_file_id;
-                hid_t   plist_id, xfer_plist_id, position_dataset_id, velocity_dataset_id, pid_dataset_id;
-                hid_t   file_dataspace_id, pos_file_dataspace_id, vel_file_dataspace_id, pid_file_dataspace_id;
-                hid_t   dim_dataspace_id, one_dim_ds_id;
-                hid_t   dim_mem_ds_id, one_dim_mem_ds_id;
-                hid_t   pattr_id;
-                herr_t  status;
-                hsize_t dims[2], offset[2], count[2];
-                unsigned int  mpi_offset, mpi_count, local_particle_count, global_particle_count;
-                
-                double  *pos_data, *vel_data, *id_data;
-                
-                std::string h5_filename = output_path_prefix+".h5";
-                
-                // Create parallel file access
-                plist_id = H5Pcreate(H5P_FILE_ACCESS);
+          // TODO: error checking for H5 calls
+          hid_t   h5_file_id;
+          hid_t   plist_id, xfer_plist_id, position_dataset_id, velocity_dataset_id, pid_dataset_id;
+          hid_t   file_dataspace_id, pos_file_dataspace_id, vel_file_dataspace_id, pid_file_dataspace_id;
+          hid_t   dim_dataspace_id, one_dim_ds_id;
+          hid_t   dim_mem_ds_id, one_dim_mem_ds_id;
+          hid_t   pattr_id;
+          herr_t  status;
+          hsize_t dims[2], offset[2], count[2];
+          unsigned int  mpi_offset, mpi_count, local_particle_count, global_particle_count;
+
+          double  *pos_data, *vel_data, *id_data;
+
+          std::string h5_filename = output_path_prefix+".h5";
+
+          // Create parallel file access
+          plist_id = H5Pcreate(H5P_FILE_ACCESS);
 #ifdef H5_HAVE_PARALLEL
-                H5Pset_fapl_mpio(plist_id, MPI_COMM_WORLD, MPI_INFO_NULL);
+          H5Pset_fapl_mpio(plist_id, MPI_COMM_WORLD, MPI_INFO_NULL);
 #endif
-                
-                // Create the file
-                h5_file_id = H5Fcreate(h5_filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, plist_id);
-                
-                // Create the file dataspace descriptions
-                local_particle_count = particles.size();
-                // TODO: error checking on MPI call
-                MPI_Allreduce(&local_particle_count, &global_particle_count, 1, MPI_UNSIGNED, MPI_SUM, MPI_COMM_WORLD);
-                dims[0] = global_particle_count;
-                dims[1] = 3;
-                one_dim_ds_id = H5Screate_simple(1, dims, NULL);
-                dim_dataspace_id = H5Screate_simple(2, dims, NULL);
-                
-                // Create the datasets
+
+          // Create the file
+          h5_file_id = H5Fcreate(h5_filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, plist_id);
+
+          // Create the file dataspace descriptions
+          local_particle_count = particles.size();
+          // TODO: error checking on MPI call
+          MPI_Allreduce(&local_particle_count, &global_particle_count, 1, MPI_UNSIGNED, MPI_SUM, MPI_COMM_WORLD);
+          dims[0] = global_particle_count;
+          dims[1] = 3;
+          one_dim_ds_id = H5Screate_simple(1, dims, NULL);
+          dim_dataspace_id = H5Screate_simple(2, dims, NULL);
+
+          // Create the datasets
 #if H5Dcreate_vers == 1
-                position_dataset_id = H5Dcreate(h5_file_id, "nodes", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT);
-                velocity_dataset_id = H5Dcreate(h5_file_id, "velocity", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT);
-                pid_dataset_id = H5Dcreate(h5_file_id, "id", H5T_NATIVE_DOUBLE, one_dim_ds_id, H5P_DEFAULT);
+          position_dataset_id = H5Dcreate(h5_file_id, "nodes", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT);
+          velocity_dataset_id = H5Dcreate(h5_file_id, "velocity", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT);
+          pid_dataset_id = H5Dcreate(h5_file_id, "id", H5T_NATIVE_DOUBLE, one_dim_ds_id, H5P_DEFAULT);
 #else
-                position_dataset_id = H5Dcreate(h5_file_id, "nodes", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-                velocity_dataset_id = H5Dcreate(h5_file_id, "velocity", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-                pid_dataset_id = H5Dcreate(h5_file_id, "id", H5T_NATIVE_DOUBLE, one_dim_ds_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+          position_dataset_id = H5Dcreate(h5_file_id, "nodes", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+          velocity_dataset_id = H5Dcreate(h5_file_id, "velocity", H5T_NATIVE_DOUBLE, dim_dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+          pid_dataset_id = H5Dcreate(h5_file_id, "id", H5T_NATIVE_DOUBLE, one_dim_ds_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
 #endif
-                
-                // Close the file dataspaces
-                H5Sclose(dim_dataspace_id);
-                H5Sclose(one_dim_ds_id);
-                
-                // Just in case we forget what they are
-                count[0] = 1;
-                file_dataspace_id = H5Screate_simple (1, count, NULL);
+
+          // Close the file dataspaces
+          H5Sclose(dim_dataspace_id);
+          H5Sclose(one_dim_ds_id);
+
+          // Just in case we forget what they are
+          count[0] = 1;
+          file_dataspace_id = H5Screate_simple (1, count, NULL);
 #if H5Acreate_vers == 1
-                pattr_id = H5Acreate(h5_file_id, "Ermahgerd! Pertecrs!", H5T_NATIVE_INT, file_dataspace_id, H5P_DEFAULT);
+          pattr_id = H5Acreate(h5_file_id, "Ermahgerd! Pertecrs!", H5T_NATIVE_INT, file_dataspace_id, H5P_DEFAULT);
 #else
-                pattr_id = H5Acreate(h5_file_id, "Ermahgerd! Pertecrs!", H5T_NATIVE_INT, file_dataspace_id, H5P_DEFAULT, H5P_DEFAULT);
+          pattr_id = H5Acreate(h5_file_id, "Ermahgerd! Pertecrs!", H5T_NATIVE_INT, file_dataspace_id, H5P_DEFAULT, H5P_DEFAULT);
 #endif
-                H5Aclose(pattr_id);
-                H5Sclose(file_dataspace_id);
-                
-                // Count the number of particles on this process and get the offset among all processes
-                mpi_count = particles.size();
-                MPI_Scan(&mpi_count, &mpi_offset, 1, MPI_UNSIGNED, MPI_SUM, MPI_COMM_WORLD);
-                count[0] = mpi_count;
-                count[1] = 3;
-                offset[0] = mpi_offset-mpi_count;
-                offset[1] = 0;
-                
-                // Select the appropriate dataspace for this process
-                one_dim_mem_ds_id = H5Screate_simple(1, count, NULL);
-                dim_mem_ds_id = H5Screate_simple(2, count, NULL);
-                pos_file_dataspace_id = H5Dget_space(position_dataset_id);
-                vel_file_dataspace_id = H5Dget_space(velocity_dataset_id);
-                pid_file_dataspace_id = H5Dget_space(pid_dataset_id);
-                
-                // And select the hyperslabs from each dataspace
-                status = H5Sselect_hyperslab(pos_file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, NULL);
-                status = H5Sselect_hyperslab(vel_file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, NULL);
-                status = H5Sselect_hyperslab(pid_file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, NULL);
-                
-                // Create property list for collective dataset write
-                xfer_plist_id = H5Pcreate(H5P_DATASET_XFER);
+          H5Aclose(pattr_id);
+          H5Sclose(file_dataspace_id);
+
+          // Count the number of particles on this process and get the offset among all processes
+          mpi_count = particles.size();
+          MPI_Scan(&mpi_count, &mpi_offset, 1, MPI_UNSIGNED, MPI_SUM, MPI_COMM_WORLD);
+          count[0] = mpi_count;
+          count[1] = 3;
+          offset[0] = mpi_offset-mpi_count;
+          offset[1] = 0;
+
+          // Select the appropriate dataspace for this process
+          one_dim_mem_ds_id = H5Screate_simple(1, count, NULL);
+          dim_mem_ds_id = H5Screate_simple(2, count, NULL);
+          pos_file_dataspace_id = H5Dget_space(position_dataset_id);
+          vel_file_dataspace_id = H5Dget_space(velocity_dataset_id);
+          pid_file_dataspace_id = H5Dget_space(pid_dataset_id);
+
+          // And select the hyperslabs from each dataspace
+          status = H5Sselect_hyperslab(pos_file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, NULL);
+          status = H5Sselect_hyperslab(vel_file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, NULL);
+          status = H5Sselect_hyperslab(pid_file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, NULL);
+
+          // Create property list for collective dataset write
+          xfer_plist_id = H5Pcreate(H5P_DATASET_XFER);
 #ifdef H5_HAVE_PARALLEL
-                H5Pset_dxpl_mpio(xfer_plist_id, H5FD_MPIO_COLLECTIVE);
+          H5Pset_dxpl_mpio(xfer_plist_id, H5FD_MPIO_COLLECTIVE);
 #endif
-                
-                // Read the local particle data
-                pos_data = new double[3*particles.size()];
-                vel_data = new double[3*particles.size()];
-                id_data = new double[particles.size()];
-                
-                for (i=0,it=particles.begin(); it!=particles.end(); ++i,++it)
+
+          // Read the local particle data
+          pos_data = new double[3*particles.size()];
+          vel_data = new double[3*particles.size()];
+          id_data = new double[particles.size()];
+
+          for (i=0,it=particles.begin(); it!=particles.end(); ++i,++it)
+            {
+              for (d=0; d<dim; ++d)
                 {
-                    for (d=0; d<dim; ++d)
-                    {
-                        pos_data[i*3+d] = it->second.location()(d);
-                        vel_data[i*3+d] = it->second.velocity()(d);
-                    }
-                    if (dim < 3)
-                    {
-                        pos_data[i*3+2] = 0;
-                        vel_data[i*3+2] = 0;
-                    }
-                    id_data[i] = it->second.id_num();
+                  pos_data[i*3+d] = it->second.location()(d);
+                  vel_data[i*3+d] = it->second.velocity()(d);
                 }
-                
-                // Write particle data to the HDF5 file
-                H5Dwrite(position_dataset_id, H5T_NATIVE_DOUBLE, dim_mem_ds_id, pos_file_dataspace_id, xfer_plist_id, pos_data);
-                H5Dwrite(velocity_dataset_id, H5T_NATIVE_DOUBLE, dim_mem_ds_id, vel_file_dataspace_id, xfer_plist_id, vel_data);
-                H5Dwrite(pid_dataset_id, H5T_NATIVE_DOUBLE, one_dim_mem_ds_id, pid_file_dataspace_id, xfer_plist_id, id_data);
-                
-                // Clear allocated resources
-                delete pos_data;
-                delete vel_data;
-                delete id_data;
-                status = H5Pclose(xfer_plist_id);
-                status = H5Sclose(one_dim_mem_ds_id);
-                status = H5Sclose(dim_mem_ds_id);
-                status = H5Sclose(pos_file_dataspace_id);
-                status = H5Sclose(vel_file_dataspace_id);
-                status = H5Sclose(pid_file_dataspace_id);
-                status = H5Dclose(position_dataset_id);
-                status = H5Dclose(velocity_dataset_id);
-                status = H5Dclose(pid_dataset_id);
-                status = H5Pclose(plist_id);
-                status = H5Fclose(h5_file_id);
-                
-                // Record and output XDMF info on root process
-                if (Output<dim, T>::self_rank == 0)
+              if (dim < 3)
                 {
-                    std::string local_h5_filename = output_file_prefix+".h5";
-                    XDMFEntry   entry(local_h5_filename, current_time, global_particle_count, 0, 3);
-                    DataOut<dim> data_out;
-                    const std::string xdmf_filename = (Output<dim, T>::output_dir + "particle.xdmf");
-                    
-                    entry.add_attribute("velocity", 3);
-                    entry.add_attribute("id", 1);
-                    xdmf_entries.push_back(entry);
-                    
-                    data_out.write_xdmf_file(xdmf_entries, xdmf_filename.c_str(), MPI_COMM_WORLD);
+                  pos_data[i*3+2] = 0;
+                  vel_data[i*3+2] = 0;
                 }
+              id_data[i] = it->second.id_num();
+            }
+
+          // Write particle data to the HDF5 file
+          H5Dwrite(position_dataset_id, H5T_NATIVE_DOUBLE, dim_mem_ds_id, pos_file_dataspace_id, xfer_plist_id, pos_data);
+          H5Dwrite(velocity_dataset_id, H5T_NATIVE_DOUBLE, dim_mem_ds_id, vel_file_dataspace_id, xfer_plist_id, vel_data);
+          H5Dwrite(pid_dataset_id, H5T_NATIVE_DOUBLE, one_dim_mem_ds_id, pid_file_dataspace_id, xfer_plist_id, id_data);
+
+          // Clear allocated resources
+          delete[] pos_data;
+          delete[] vel_data;
+          delete[] id_data;
+          status = H5Pclose(xfer_plist_id);
+          status = H5Sclose(one_dim_mem_ds_id);
+          status = H5Sclose(dim_mem_ds_id);
+          status = H5Sclose(pos_file_dataspace_id);
+          status = H5Sclose(vel_file_dataspace_id);
+          status = H5Sclose(pid_file_dataspace_id);
+          status = H5Dclose(position_dataset_id);
+          status = H5Dclose(velocity_dataset_id);
+          status = H5Dclose(pid_dataset_id);
+          status = H5Pclose(plist_id);
+          status = H5Fclose(h5_file_id);
+
+          // Record and output XDMF info on root process
+          if (Output<dim, T>::self_rank == 0)
+            {
+              std::string local_h5_filename = output_file_prefix+".h5";
+              XDMFEntry   entry(local_h5_filename, current_time, global_particle_count, 0, 3);
+              DataOut<dim> data_out;
+              const std::string xdmf_filename = (Output<dim, T>::output_dir + "particle.xdmf");
+
+              entry.add_attribute("velocity", 3);
+              entry.add_attribute("id", 1);
+              xdmf_entries.push_back(entry);
+
+              data_out.write_xdmf_file(xdmf_entries, xdmf_filename.c_str(), MPI_COMM_WORLD);
+            }
 #endif
-                
-                Output<dim, T>::file_index++;
-                
-                return output_path_prefix;
-            };
+
+          Output<dim, T>::file_index++;
+
+          return output_path_prefix;
         };
-    }
+    };
+  }
 }
 
 #endif

Modified: branches/active_compositions/include/aspect/particle/particle.h
===================================================================
--- branches/active_compositions/include/aspect/particle/particle.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/particle/particle.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,18 +1,18 @@
 /*
  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
- 
+
  This file is part of ASPECT.
- 
+
  ASPECT is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
- 
+
  ASPECT is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
- 
+
  You should have received a copy of the GNU General Public License
  along with ASPECT; see the file doc/COPYING.  If not see
  <http://www.gnu.org/licenses/>.
@@ -27,199 +27,289 @@
 
 namespace aspect
 {
-    namespace Particle
+  namespace Particle
+  {
+    // Typedef of cell level/index pair
+    typedef std::pair<int, int> LevelInd;
+
+    class MPIDataInfo
     {
-        // Typedef of cell level/index pair
-        typedef std::pair<int, int> LevelInd;
-        
-        class MPIDataInfo {
-        public:
-            std::string     _name;
-            unsigned int    _num_elems;
-            MPI_Datatype    _data_type;
-            unsigned int    _elem_size_bytes;
-            
-            MPIDataInfo(std::string name, unsigned int num_elems, MPI_Datatype data_type, unsigned int elem_size_bytes) : _name(name), _num_elems(num_elems), _data_type(data_type), _elem_size_bytes(elem_size_bytes) {};
+      public:
+        std::string     _name;
+        unsigned int    _num_elems;
+        MPI_Datatype    _data_type;
+        unsigned int    _elem_size_bytes;
+
+        MPIDataInfo(std::string name, unsigned int num_elems, MPI_Datatype data_type, unsigned int elem_size_bytes) : _name(name), _num_elems(num_elems), _data_type(data_type), _elem_size_bytes(elem_size_bytes) {};
+    };
+
+    enum ParticleDataFormat
+    {
+      MPI_DATA,
+      HDF5_DATA
+    };
+
+    // Base class of particles - represents a particle with position, velocity, and an ID number
+    template <int dim>
+    class BaseParticle
+    {
+      private:
+        // Current particle location
+        Point<dim>      _loc;
+
+        // Current particle velocity
+        Point<dim>      _vel;
+
+        // Globally unique ID of particle
+        double          _id;
+
+        // Whether this particle is in the local subdomain or not
+        bool            _local;
+
+        // Whether to check the velocity of this particle
+        // This is used for integration schemes which require multiple
+        // integration steps for some particles, but not for others
+        bool            _check_vel;
+
+      public:
+        BaseParticle(void) : _loc(), _vel(), _id(0), _local(true), _check_vel(true) {};
+
+        BaseParticle(const Point<dim> &new_loc, const double &new_id) : _loc(new_loc), _id(new_id), _local(true), _check_vel(true) {};
+
+        virtual ~BaseParticle(void) {};
+
+        static unsigned int data_len(ParticleDataFormat format)
+        {
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                return (dim+dim+1)*sizeof(double);
+            }
+          return 0;
         };
-        
-        enum ParticleDataFormat {
-            MPI_DATA,
-            HDF5_DATA
+        virtual char *read_data(ParticleDataFormat format, char *data)
+        {
+          char            *p = data;
+          unsigned int    i;
+
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Read location data
+                for (i=0; i<dim; ++i)
+                  {
+                    _loc(i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                // Write velocity data
+                for (i=0; i<dim; ++i)
+                  {
+                    _vel(i) = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                _id = ((double *)p)[0];
+                p += sizeof(double);
+                break;
+            }
+
+          return p;
         };
-        
-        // Base class of particles - represents a particle with position, velocity, and an ID number
-        template <int dim>
-        class BaseParticle
+        virtual char *write_data(ParticleDataFormat format, char *data) const
         {
-        private:
-            // Current particle location
-            Point<dim>      _loc;
-            
-            // Current particle velocity
-            Point<dim>      _vel;
-            
-            // Globally unique ID of particle
-            double          _id;
-            
-            // Whether this particle is in the local subdomain or not
-            bool            _local;
-            
-        public:
-            BaseParticle(void) : _loc(), _vel(), _id(0), _local(true) {};
-            
-            BaseParticle(const Point<dim> &new_loc, const double &new_id) : _loc(new_loc), _id(new_id), _local(true) {};
-            
-            static unsigned int data_len(ParticleDataFormat format) {
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        return (dim+dim+1)*sizeof(double);
-                }
-                return 0;
-            };
-            virtual char *read_data(ParticleDataFormat format, char *data) {
-                char            *p = data;
-                unsigned int    i;
-                
-                switch (format) {
-                    case MPI_DATA:
-                        // Read location data
-                        for (i=0;i<dim;++i) { _loc(i) = ((double *)p)[0]; p += sizeof(double); }
-                        // Write velocity data
-                        for (i=0;i<dim;++i) { _vel(i) = ((double *)p)[0]; p += sizeof(double); }
-                        _id = ((double *)p)[0]; p += sizeof(double);
-                        break;
-                    case HDF5_DATA:
-                        break;
-                }
-                
-                return p;
-            };
-            virtual char *write_data(ParticleDataFormat format, char *data) const {
-                char          *p = data;
-                unsigned int  i;
-                
-                // Then write our data in the appropriate format
-                switch (format) {
-                    case MPI_DATA:
-                        // Write location data
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _loc(i); p += sizeof(double); }
-                        // Write velocity data
-                        for (i=0;i<dim;++i) { ((double *)p)[0] = _vel(i); p += sizeof(double); }
-                        ((double *)p)[0] = _id; p += sizeof(double);
-                        break;
-                    case HDF5_DATA:
-                        break;
-                }
-                
-                return p;
-            };
-            
-            void set_location(Point<dim> new_loc) { _loc = new_loc; };
-            Point<dim> location(void) const { return _loc; };
-            
-            void set_velocity(Point<dim> new_vel) { _vel = new_vel; };
-            Point<dim> velocity(void) const { return _vel; };
-            
-            double id_num(void) const { return _id; };
-            
-            bool local(void) const { return _local; };
-            void set_local(bool new_local) { _local = new_local; };
-            
-            static void add_mpi_types(std::vector<MPIDataInfo> &data_info) {
-                // Add the position, velocity, ID
-                data_info.push_back(MPIDataInfo("pos", dim, MPI_DOUBLE, sizeof(double)));
-                data_info.push_back(MPIDataInfo("velocity", dim, MPI_DOUBLE, sizeof(double)));
-                data_info.push_back(MPIDataInfo("id", 1, MPI_DOUBLE, sizeof(double)));
-            };
+          char          *p = data;
+          unsigned int  i;
+
+          // Then write our data in the appropriate format
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                // Write location data
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _loc(i);
+                    p += sizeof(double);
+                  }
+                // Write velocity data
+                for (i=0; i<dim; ++i)
+                  {
+                    ((double *)p)[0] = _vel(i);
+                    p += sizeof(double);
+                  }
+                ((double *)p)[0] = _id;
+                p += sizeof(double);
+                break;
+            }
+
+          return p;
         };
-        
-        // A particle with associated values, such as scalars, vectors or tensors
-        template <int dim, int data_dim>
-        class DataParticle : public BaseParticle<dim> {
-        private:
-            double      _val[data_dim];
-            
-        public:
-            DataParticle(void) { for (unsigned int i=0;i<data_dim;++i) _val[i] = 0; };
-            
-            static unsigned int data_len(ParticleDataFormat format) {
-                unsigned int        base_size  = BaseParticle<dim>::data_len(format);
-                
-                switch (format) {
-                    case MPI_DATA:
-                    case HDF5_DATA:
-                        return base_size + data_dim * sizeof(double);
-                }
-                return 0;
-            };
-            virtual char *read_data(ParticleDataFormat format, char *data) {
-                char          *p = data;
-                unsigned int  i;
-                
-                // Read the parent data first
-                p = BaseParticle<dim>::read_data(format, data);
-                
-                // Then read our data in the appropriate format
-                switch (format) {
-                    case MPI_DATA:
-                        for (i=0;i<data_dim;++i) { _val[i] = ((double *)p)[0]; p += sizeof(double); }
-                        break;
-                    case HDF5_DATA:
-                        break;
-                }
-                
-                return p;
-            };
-            virtual char *write_data(ParticleDataFormat format, char *data) const {
-                char          *p = data;
-                unsigned int  i;
-                
-                // Write the parent data first
-                p = BaseParticle<dim>::write_data(format, data);
-                
-                // Then write our data in the appropriate format
-                switch (format) {
-                    case MPI_DATA:
-                        for (i=0;i<data_dim;++i) { ((double *)p)[0] = _val[i]; p += sizeof(double); }
-                        break;
-                    case HDF5_DATA:
-                        break;
-                }
-                
-                return p;
-            };
-            
-            // Returns a vector from the first dim components of _val
-            Point<dim> get_vector(void) const {
-                AssertThrow(data_dim>=dim, std::out_of_range("get_vector"));
-                Point<dim>  p;
-                for (unsigned int i=0;i<dim;++i) p(i) = _val[i];
-            };
-            // Sets the first dim components of _val to the specified vector value
-            void set_vector(Point<dim> new_vec) {
-                AssertThrow(data_dim>=dim, std::out_of_range("set_vector"));
-                for (unsigned int i=0;i<dim;++i) _val[i] = new_vec(i);
-            };
-            
-            double &operator[](const unsigned int &ind) {
-                AssertThrow(data_dim>ind, std::out_of_range("DataParticle[]"));
-                return _val[ind];
-            };
-            const double operator[](const unsigned int &ind) const {
-                AssertThrow(data_dim>ind, std::out_of_range("DataParticle[]"));
-                return _val[ind];
-            };
-            
-            static void add_mpi_types(std::vector<MPIDataInfo> &data_info) {
-                // Set up the parent types first
-                BaseParticle<dim>::add_mpi_types(data_info);
-                
-                // Then add our own
-                data_info.push_back(MPIDataInfo(data_dim, MPI_DOUBLE, sizeof(double)));
-            };
-       };
-    }
+
+        void set_location(Point<dim> new_loc)
+        {
+          _loc = new_loc;
+        };
+        Point<dim> location(void) const
+        {
+          return _loc;
+        };
+
+        void set_velocity(Point<dim> new_vel)
+        {
+          _vel = new_vel;
+        };
+        Point<dim> velocity(void) const
+        {
+          return _vel;
+        };
+
+        double id_num(void) const
+        {
+          return _id;
+        };
+
+        bool local(void) const
+        {
+          return _local;
+        };
+        void set_local(bool new_local)
+        {
+          _local = new_local;
+        };
+
+        bool vel_check(void) const
+        {
+          return _check_vel;
+        };
+        void set_vel_check(bool new_vel_check)
+        {
+          _check_vel = new_vel_check;
+        };
+
+        static void add_mpi_types(std::vector<MPIDataInfo> &data_info)
+        {
+          // Add the position, velocity, ID
+          data_info.push_back(MPIDataInfo("pos", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("velocity", dim, MPI_DOUBLE, sizeof(double)));
+          data_info.push_back(MPIDataInfo("id", 1, MPI_DOUBLE, sizeof(double)));
+        };
+    };
+
+    // A particle with associated values, such as scalars, vectors or tensors
+    template <int dim, int data_dim>
+    class DataParticle : public BaseParticle<dim>
+    {
+      private:
+        double      _val[data_dim];
+
+      public:
+        DataParticle(void)
+        {
+          for (unsigned int i=0; i<data_dim; ++i) _val[i] = 0;
+        };
+
+        DataParticle(const Point<dim> &new_loc, const double &new_id) : BaseParticle<dim>(new_loc, new_id)
+        {
+          for (unsigned int i=0; i<data_dim; ++i) _val[i] = 0;
+        };
+
+        static unsigned int data_len(ParticleDataFormat format)
+        {
+          unsigned int        base_size  = BaseParticle<dim>::data_len(format);
+
+          switch (format)
+            {
+              case MPI_DATA:
+              case HDF5_DATA:
+                return base_size + data_dim * sizeof(double);
+            }
+          return 0;
+        };
+        virtual char *read_data(ParticleDataFormat format, char *data)
+        {
+          char          *p = data;
+          unsigned int  i;
+
+          // Read the parent data first
+          p = BaseParticle<dim>::read_data(format, data);
+
+          // Then read our data in the appropriate format
+          switch (format)
+            {
+              case MPI_DATA:
+                for (i=0; i<data_dim; ++i)
+                  {
+                    _val[i] = ((double *)p)[0];
+                    p += sizeof(double);
+                  }
+                break;
+              case HDF5_DATA:
+                break;
+            }
+
+          return p;
+        };
+        virtual char *write_data(ParticleDataFormat format, char *data) const
+        {
+          char          *p = data;
+          unsigned int  i;
+
+          // Write the parent data first
+          p = BaseParticle<dim>::write_data(format, data);
+
+          // Then write our data in the appropriate format
+          switch (format)
+            {
+              case MPI_DATA:
+                for (i=0; i<data_dim; ++i)
+                  {
+                    ((double *)p)[0] = _val[i];
+                    p += sizeof(double);
+                  }
+                break;
+              case HDF5_DATA:
+                break;
+            }
+
+          return p;
+        };
+
+        // Returns a vector from the first dim components of _val
+        Point<dim> get_vector(void) const
+        {
+          AssertThrow(data_dim>=dim, std::out_of_range("get_vector"));
+          Point<dim>  p;
+          for (unsigned int i=0; i<dim; ++i) p(i) = _val[i];
+        };
+        // Sets the first dim components of _val to the specified vector value
+        void set_vector(Point<dim> new_vec)
+        {
+          AssertThrow(data_dim>=dim, std::out_of_range("set_vector"));
+          for (unsigned int i=0; i<dim; ++i) _val[i] = new_vec(i);
+        };
+
+        double &operator[](const unsigned int &ind)
+        {
+          AssertThrow(data_dim>ind, std::out_of_range("DataParticle[]"));
+          return _val[ind];
+        };
+        const double operator[](const unsigned int &ind) const
+        {
+          AssertThrow(data_dim>ind, std::out_of_range("DataParticle[]"));
+          return _val[ind];
+        };
+
+        static void add_mpi_types(std::vector<MPIDataInfo> &data_info)
+        {
+          // Set up the parent types first
+          BaseParticle<dim>::add_mpi_types(data_info);
+
+          // Then add our own
+          data_info.push_back(MPIDataInfo("data", data_dim, MPI_DOUBLE, sizeof(double)));
+        };
+    };
+  }
 }
 
 #endif

Modified: branches/active_compositions/include/aspect/particle/world.h
===================================================================
--- branches/active_compositions/include/aspect/particle/world.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/particle/world.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,18 +1,18 @@
 /*
  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
- 
+
  This file is part of ASPECT.
- 
+
  ASPECT is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
- 
+
  ASPECT is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
- 
+
  You should have received a copy of the GNU General Public License
  along with ASPECT; see the file doc/COPYING.  If not see
  <http://www.gnu.org/licenses/>.
@@ -29,574 +29,622 @@
 
 namespace aspect
 {
-    namespace Particle
+  namespace Particle
+  {
+    // TODO: in the future, upgrade multimap to ParticleMap typedef
+    // with C++11 standard "using" syntax
+
+    // MPI tag for particle transfers
+    const int           PARTICLE_XFER_TAG = 382;
+
+    template <int dim, class T>
+    class World
     {
-        // TODO: in the future, upgrade multimap to ParticleMap typedef
-        // with C++11 standard "using" syntax
-        
-        // MPI tag for particle transfers
-        const int           PARTICLE_XFER_TAG = 382;
-        
-        template <int dim, class T>
-        class World
+      private:
+        // Mapping for the simulation this particle world exists in
+        const Mapping<dim>              *_mapping;
+
+        // Triangulation for the simulation this particle world exists in
+        const parallel::distributed::Triangulation<dim>   *_tria;
+
+        // DoFHandler for the simulation this particle world exists in
+        const DoFHandler<dim>           *_dh;
+
+        // Integration scheme for moving particles in this world
+        Integrator<dim, T>              *_integrator;
+
+        // MPI communicator to be used for this world
+        MPI_Comm                        _communicator;
+
+        // If the triangulation was changed (e.g. through refinement), in which
+        // case we must treat all recorded particle level/index values as invalid
+        bool                            _triangulation_changed;
+
+        // Set of particles currently in the local domain, organized by
+        // the level/index of the cell they are in
+        std::multimap<LevelInd, T>      _particles;
+
+        // Total number of particles in simulation
+        double                          global_sum_particles;
+
+        // MPI related variables
+        // MPI registered datatype encapsulating the MPI_Particle struct
+        MPI_Datatype                    _particle_type;
+
+        // Size and rank in the MPI communication world
+        int                             _world_size;
+        int                             _self_rank;
+
+        // Buffers count, offset, request data for sending and receiving particles
+        int                             *_num_send, *_num_recv;
+        int                             _total_send, _total_recv;
+        int                             *_send_offset, *_recv_offset;
+        MPI_Request                     *_send_reqs, *_recv_reqs;
+
+        // Generate a set of particles uniformly distributed within the specified triangulation.
+        // This is done using "roulette wheel" style selection weighted by cell size.
+        // We do cell-by-cell assignment of particles because the decomposition of the mesh may
+        // result in a highly non-rectangular local mesh which makes uniform particle distribution difficult.
+        void generate_particles_in_subdomain(unsigned int num_particles, unsigned int start_id)
         {
-        private:
-            // Mapping for the simulation this particle world exists in
-            const Mapping<dim>              *_mapping;
-            
-            // Triangulation for the simulation this particle world exists in
-            const parallel::distributed::Triangulation<dim>   *_tria;
-            
-            // DoFHandler for the simulation this particle world exists in
-            const DoFHandler<dim>           *_dh;
-            
-            // Integration scheme for moving particles in this world
-            Integrator<dim, T>              *_integrator;
-            
-            // MPI communicator to be used for this world
-            MPI_Comm                        _communicator;
-            
-            // If the triangulation was changed (e.g. through refinement), in which
-            // case we must treat all recorded particle level/index values as invalid
-            bool                            _triangulation_changed;
-            
-            // Set of particles currently in the local domain, organized by
-            // the level/index of the cell they are in
-            std::multimap<LevelInd, T>      _particles;
-            
-            // Total number of particles in simulation
-            double                          global_sum_particles;
-            
-            // MPI related variables
-            // MPI registered datatype encapsulating the MPI_Particle struct
-            MPI_Datatype                    _particle_type;
-            
-            // Size and rank in the MPI communication world
-            int                             _world_size;
-            int                             _self_rank;
-            
-            // Buffers count, offset, request data for sending and receiving particles
-            int                             *_num_send, *_num_recv;
-            int                             _total_send, _total_recv;
-            int                             *_send_offset, *_recv_offset;
-            MPI_Request                     *_send_reqs, *_recv_reqs;
-            
-            // Generate a set of particles uniformly distributed within the specified triangulation.
-            // This is done using "roulette wheel" style selection weighted by cell size.
-            // We do cell-by-cell assignment of particles because the decomposition of the mesh may
-            // result in a highly non-rectangular local mesh which makes uniform particle distribution difficult.
-            void generate_particles_in_subdomain(unsigned int num_particles, unsigned int start_id) {
-                unsigned int          i, d, v, num_tries, cur_id;
-                double                total_volume, roulette_spin;
-                typename parallel::distributed::Triangulation<dim>::active_cell_iterator  it;
-                std::map<double, LevelInd>        roulette_wheel;
-                const unsigned int n_vertices_per_cell = GeometryInfo<dim>::vertices_per_cell;
-                Point<dim>            pt, max_bounds, min_bounds;
-                LevelInd              select_cell;
-                
-                // Create the roulette wheel based on volumes of local cells
-                total_volume = 0;
-                for (it=_tria->begin_active(); it!=_tria->end(); ++it)
+          unsigned int          i, d, v, num_tries, cur_id;
+          double                total_volume, roulette_spin;
+          typename parallel::distributed::Triangulation<dim>::active_cell_iterator  it;
+          std::map<double, LevelInd>        roulette_wheel;
+          const unsigned int n_vertices_per_cell = GeometryInfo<dim>::vertices_per_cell;
+          Point<dim>            pt, max_bounds, min_bounds;
+          LevelInd              select_cell;
+
+          // Create the roulette wheel based on volumes of local cells
+          total_volume = 0;
+          for (it=_tria->begin_active(); it!=_tria->end(); ++it)
+            {
+              if (it->is_locally_owned())
                 {
-                    if (it->is_locally_owned())
+                  // Assign an index to each active cell for selection purposes
+                  total_volume += it->measure();
+                  // Save the cell index and level for later access
+                  roulette_wheel.insert(std::make_pair(total_volume, std::make_pair(it->level(), it->index())));
+                }
+            }
+
+          // Pick cells and assign particles at random points inside them
+          cur_id = start_id;
+          for (i=0; i<num_particles; ++i)
+            {
+              // Select a cell based on relative volume
+              roulette_spin = total_volume*drand48();
+              select_cell = roulette_wheel.lower_bound(roulette_spin)->second;
+              it = typename parallel::distributed::Triangulation<dim>::active_cell_iterator(_tria, select_cell.first, select_cell.second);
+
+              // Get the bounds of the cell defined by the vertices
+              for (d=0; d<dim; ++d)
+                {
+                  min_bounds[d] = INFINITY;
+                  max_bounds[d] = -INFINITY;
+                }
+              for (v=0; v<n_vertices_per_cell; ++v)
+                {
+                  pt = it->vertex(v);
+                  for (d=0; d<dim; ++d)
                     {
-                        // Assign an index to each active cell for selection purposes
-                        total_volume += it->measure();
-                        // Save the cell index and level for later access
-                        roulette_wheel.insert(std::make_pair(total_volume, std::make_pair(it->level(), it->index())));
+                      min_bounds[d] = fmin(pt[d], min_bounds[d]);
+                      max_bounds[d] = fmax(pt[d], max_bounds[d]);
                     }
                 }
-                
-                // Pick cells and assign particles at random points inside them
-                cur_id = start_id;
-                for (i=0; i<num_particles; ++i)
+
+              // Generate random points in these bounds until one is within the cell
+              num_tries = 0;
+              while (num_tries < 100)
                 {
-                    // Select a cell based on relative volume
-                    roulette_spin = total_volume*drand48();
-                    select_cell = roulette_wheel.lower_bound(roulette_spin)->second;
-                    it = typename parallel::distributed::Triangulation<dim>::active_cell_iterator(_tria, select_cell.first, select_cell.second);
-                    
-                    // Get the bounds of the cell defined by the vertices
-                    for (d=0; d<dim; ++d)
+                  for (d=0; d<dim; ++d)
                     {
-                        min_bounds[d] = INFINITY;
-                        max_bounds[d] = -INFINITY;
+                      pt[d] = drand48()*(max_bounds[d]-min_bounds[d]) + min_bounds[d];
                     }
-                    for (v=0; v<n_vertices_per_cell; ++v)
+                  try
                     {
-                        pt = it->vertex(v);
-                        for (d=0; d<dim; ++d)
-                        {
-                            min_bounds[d] = fmin(pt[d], min_bounds[d]);
-                            max_bounds[d] = fmax(pt[d], max_bounds[d]);
-                        }
+                      if (it->point_inside(pt)) break;
                     }
-                    
-                    // Generate random points in these bounds until one is within the cell
-                    num_tries = 0;
-                    while (num_tries < 100)
+                  catch (...)
                     {
-                        for (d=0; d<dim; ++d)
-                        {
-                            pt[d] = drand48()*(max_bounds[d]-min_bounds[d]) + min_bounds[d];
-                        }
-                        try
-                        {
-                            if (it->point_inside(pt)) break;
-                        }
-                        catch (...)
-                        {
-                            // Debugging output, remove when Q4 mapping 3D sphere problem is resolved
-                            //std::cerr << "ooo eee ooo aaa aaa " << pt << " " << select_cell.first << " " << select_cell.second << std::endl;
-                            //for (int z=0;z<8;++z) std::cerr << "V" << z <<": " << it->vertex(z) << ", ";
-                            //std::cerr << std::endl;
-                            MPI_Abort(_communicator, 1);
-                        }
-                        num_tries++;
+                      // Debugging output, remove when Q4 mapping 3D sphere problem is resolved
+                      //std::cerr << "ooo eee ooo aaa aaa " << pt << " " << select_cell.first << " " << select_cell.second << std::endl;
+                      //for (int z=0;z<8;++z) std::cerr << "V" << z <<": " << it->vertex(z) << ", ";
+                      //std::cerr << std::endl;
+                      MPI_Abort(_communicator, 1);
                     }
-                    AssertThrow (num_tries < 100, ExcMessage ("Couldn't generate particle (unusual cell shape?)."));
-                    
-                    // Add the generated particle to the set
-                    T new_particle(pt, cur_id);
-                    _particles.insert(std::make_pair(select_cell, new_particle));
-                    
-                    cur_id++;
+                  num_tries++;
                 }
-            };
-            
-            // Recursively determines which cell the given particle belongs to
-            // Returns true if the particle is in the specified cell and sets the particle
-            // cell information appropriately, false otherwise
-            LevelInd recursive_find_cell(T &particle, LevelInd cur_cell) {
-                typename parallel::distributed::Triangulation<dim>::cell_iterator it, found_cell, child_cell;
-                unsigned int    child_num;
-                LevelInd        res, child_li;
-                
-                // If the particle is in the specified cell
-                found_cell = typename parallel::distributed::Triangulation<dim>::cell_iterator(_tria, cur_cell.first, cur_cell.second);
-                if (found_cell != _tria->end() && found_cell->point_inside(particle.location()))
-                {
-                    // If the cell is active, we're at the finest level of refinement and can finish
-                    if (found_cell->active())
-                    {
-                        particle.set_local(found_cell->is_locally_owned());
-                        return cur_cell;
-                    }
-                    else
-                    {
-                        // Otherwise we need to search deeper
-                        for (child_num=0; child_num<found_cell->n_children(); ++child_num)
-                        {
-                            child_cell = found_cell->child(child_num);
-                            child_li = LevelInd(child_cell->level(), child_cell->index());
-                            res = recursive_find_cell(particle, child_li);
-                            if (res.first != -1 && res.second != -1) return res;
-                        }
-                    }
-                }
-                
-                // If we still can't find it, return false
-                return LevelInd(-1, -1);
-            };
-            
-            void mesh_changed(void)
+              AssertThrow (num_tries < 100, ExcMessage ("Couldn't generate particle (unusual cell shape?)."));
+
+              // Add the generated particle to the set
+              T new_particle(pt, cur_id);
+              _particles.insert(std::make_pair(select_cell, new_particle));
+
+              cur_id++;
+            }
+        };
+
+        // Recursively determines which cell the given particle belongs to
+        // Returns true if the particle is in the specified cell and sets the particle
+        // cell information appropriately, false otherwise
+        LevelInd recursive_find_cell(T &particle, LevelInd cur_cell)
+        {
+          typename parallel::distributed::Triangulation<dim>::cell_iterator it, found_cell, child_cell;
+          unsigned int    child_num;
+          LevelInd        res, child_li;
+
+          // If the particle is in the specified cell
+          found_cell = typename parallel::distributed::Triangulation<dim>::cell_iterator(_tria, cur_cell.first, cur_cell.second);
+          if (found_cell != _tria->end() && found_cell->point_inside(particle.location()))
             {
-                _triangulation_changed = true;
-            };
-            
-        public:
-            World(void) {
-                _triangulation_changed = true;
-                _total_send = _total_recv = 0;
-                _world_size = _self_rank = 0;
-                _num_send = _num_recv = _send_offset = _recv_offset = NULL;
-                _send_reqs = _recv_reqs = NULL;
-                _tria = NULL;
-                _mapping = NULL;
-                _dh = NULL;
-                _integrator = NULL;
-                //MPI_Comm                        _communicator;
-            };
-            ~World(void) {
-                if (_world_size) MPI_Type_free(&_particle_type);
-                
-                if (_num_send) delete _num_send;
-                if (_num_recv) delete _num_recv;
-                if (_send_offset) delete _send_offset;
-                if (_recv_offset) delete _recv_offset;
-                if (_send_reqs) delete _send_reqs;
-                if (_recv_reqs) delete _recv_reqs;
-            };
-            
-            void set_mapping(const Mapping<dim> *new_mapping) { _mapping = new_mapping; };
-            void set_triangulation(const parallel::distributed::Triangulation<dim> *new_tria) {
-                //if (_tria) _tria.signals.post_refinement.disconnect(std_cxx1x::bind(&World::mesh_changed, std_cxx1x::ref(*this)));
-                _tria = new_tria;
-                _tria->signals.post_refinement.connect(std_cxx1x::bind(&World::mesh_changed, std_cxx1x::ref(*this)));
-            };
-            void set_dof_handler(const DoFHandler<dim> *new_dh) { _dh = new_dh; };
-            void set_integrator(Integrator<dim, T> *new_integrator) { _integrator = new_integrator; };
-            void set_mpi_comm(MPI_Comm new_comm_world) { _communicator = new_comm_world; };
-            const std::multimap<LevelInd, T> particles(void) const { return _particles; };
-            
-            // TODO: add better error checking to MPI calls
-            void init(void) {
-                int                                   *block_lens;
-                MPI_Aint                              *indices;
-                MPI_Datatype                          *old_types;
-                std::vector<MPIDataInfo>              data_info;
-                std::vector<MPIDataInfo>::iterator    it;
-                int                                   num_entries, res, i;
-                
-                // Assert that all necessary parameters have been set
-                
-                // Construct MPI data type for this particle
-                T::add_mpi_types(data_info);
-                
-                // And data associated with the integration scheme
-                _integrator->add_mpi_types(data_info);
-                
-                // Set up the block lengths, indices and internal types
-                num_entries = data_info.size();
-                block_lens = new int[num_entries];
-                indices = new MPI_Aint[num_entries];
-                old_types = new MPI_Datatype[num_entries];
-                for (i=0;i<num_entries;++i) {
-                    block_lens[i] = data_info[i]._num_elems;
-                    indices[i] = (i == 0 ? 0 : indices[i-1]+data_info[i-1]._elem_size_bytes*data_info[i-1]._num_elems);
-                    old_types[i] = data_info[i]._data_type;
-                }
-                
-                // Create and commit the MPI type
-                res = MPI_Type_struct(num_entries, block_lens, indices, old_types, &_particle_type);
-                if (res != MPI_SUCCESS) exit(-1);
-                
-                res = MPI_Type_commit(&_particle_type);
-                if (res != MPI_SUCCESS) exit(-1);
-                
-                // Delete temporary arrays
-                delete old_types;
-                delete indices;
-                delete block_lens;
-                
-                // Determine the size of the MPI comm world
-                MPI_Comm_size(_communicator, &_world_size);
-                MPI_Comm_rank(_communicator, &_self_rank);
-                
-                // Initialize send/recv structures appropriately
-                _num_send = new int[_world_size];
-                _num_recv = new int[_world_size];
-                _send_offset = new int[_world_size];
-                _recv_offset = new int[_world_size];
-                _send_reqs = new MPI_Request[_world_size];
-                _recv_reqs = new MPI_Request[_world_size];
-            };
-            
-            // TODO: determine file format, write this function
-            void read_particles_from_file(std::string filename);
-            
-            // Generate a set of particles in the current triangulation
-            // TODO: fix the numbering scheme so we have exactly the right number of particles for all processor configurations
-            // TODO: fix the particle system so it works even with processors assigned 0 cells
-            void global_add_particles(double total_particles) {
-                double      total_volume, local_volume, subdomain_fraction, start_fraction, end_fraction;
-                typename parallel::distributed::Triangulation<dim>::active_cell_iterator  it;
-                
-                global_sum_particles = total_particles;
-                // Calculate the number of particles in this domain as a fraction of total volume
-                total_volume = local_volume = 0;
-                for (it=_tria->begin_active(); it!=_tria->end(); ++it)
+              // If the cell is active, we're at the finest level of refinement and can finish
+              if (found_cell->active())
                 {
-                    double cell_volume = it->measure();
-                    AssertThrow (cell_volume != 0, ExcMessage ("Found cell with zero volume."));
-                    if (it->is_locally_owned()) local_volume += cell_volume;
+                  particle.set_local(found_cell->is_locally_owned());
+                  return cur_cell;
                 }
-                
-                // Sum the local volumes over all nodes
-                MPI_Allreduce(&local_volume, &total_volume, 1, MPI_DOUBLE, MPI_SUM, _communicator);
-                
-                // Assign this subdomain the appropriate fraction
-                subdomain_fraction = local_volume/total_volume;
-                
-                // Sum the subdomain fractions so we don't miss particles from rounding and to create unique IDs
-                MPI_Scan(&subdomain_fraction, &end_fraction, 1, MPI_DOUBLE, MPI_SUM, _communicator);
-                start_fraction = end_fraction-subdomain_fraction;
-                
-                // Calculate start and end IDs so there are no gaps
-                const unsigned int  start_id = static_cast<unsigned int>(std::floor(start_fraction*total_particles));
-                const unsigned int  end_id   = static_cast<unsigned int>(std::floor(end_fraction*total_particles));
-                const unsigned int  subdomain_particles = end_id - start_id;
-                
-                generate_particles_in_subdomain(subdomain_particles, start_id);
-            };
-            std::string output_particle_data(const std::string &output_dir);
-            void find_all_cells(void) {
-                typename std::multimap<LevelInd, T>::iterator   it;
-                std::multimap<LevelInd, T>                      tmp_map;
-                LevelInd                                        found_cell;
-                
-                // Find the cells that the particles moved to
-                tmp_map.clear();
-                for (it=_particles.begin(); it!=_particles.end();)
+              else
                 {
-                    found_cell = find_cell(it->second, it->first);
-                    if (found_cell != it->first)
+                  // Otherwise we need to search deeper
+                  for (child_num=0; child_num<found_cell->n_children(); ++child_num)
                     {
-                        tmp_map.insert(std::make_pair(found_cell, it->second));
-                        _particles.erase(it++);
+                      child_cell = found_cell->child(child_num);
+                      child_li = LevelInd(child_cell->level(), child_cell->index());
+                      res = recursive_find_cell(particle, child_li);
+                      if (res.first != -1 && res.second != -1) return res;
                     }
-                    else ++it;
                 }
-                _particles.insert(tmp_map.begin(),tmp_map.end());
-            };
-            
-            // Advance particles by the specified timestep using the current integration scheme.
-            void advance_timestep(double timestep, const TrilinosWrappers::MPI::BlockVector &solution) {
-                bool        continue_integrator = true;
-                
-                // Find the cells that the particles moved to
-                find_all_cells();
-                
-                // If the triangulation changed, we may need to move particles between processors
-                if (_triangulation_changed) send_recv_particles();
-                
-                // If particles fell out of the mesh, put them back in at the closest point in the mesh
-                move_particles_back_in_mesh();
-                
-                // Keep calling the integrator until it indicates it is finished
-                while (continue_integrator) {
-                    // Starting out, particles must know which cells they belong to
-                    // Using this we can quickly interpolate the velocities
-                    get_particle_velocities(solution);
-                    
-                    // Call the integrator
-                    continue_integrator = _integrator->integrate_step(_particles, timestep);
-                    
-                    // Find the cells that the particles moved to
-                    find_all_cells();
-                    
-                    // If particles fell out of the mesh, put them back in at the closest point in the mesh
-                    move_particles_back_in_mesh();
-                    
-                    // Swap particles between processors if needed
-                    send_recv_particles();
-                }
-                
-                // Ensure we didn't lose any particles
-                check_particle_count();
-            };
-            
-            void move_particles_back_in_mesh(void) {
-                // TODO: fix this to work with arbitrary meshes
-            };
-            
-            // Finds the cell the particle is contained in and returns the corresponding level/index
-            LevelInd find_cell(T &particle, LevelInd cur_cell) {
-                typename parallel::distributed::Triangulation<dim>::cell_iterator         it, found_cell;
-                typename parallel::distributed::Triangulation<dim>::active_cell_iterator  ait;
-                LevelInd    res;
-                
-                // First check the last recorded cell since particles will generally stay in the same area
-                if (!_triangulation_changed)
+            }
+
+          // If we still can't find it, return false
+          return LevelInd(-1, -1);
+        };
+
+        void mesh_changed(void)
+        {
+          _triangulation_changed = true;
+        };
+
+      public:
+        World(void)
+        {
+          _triangulation_changed = true;
+          _total_send = _total_recv = 0;
+          _world_size = _self_rank = 0;
+          _num_send = _num_recv = _send_offset = _recv_offset = NULL;
+          _send_reqs = _recv_reqs = NULL;
+          _tria = NULL;
+          _mapping = NULL;
+          _dh = NULL;
+          _integrator = NULL;
+          //MPI_Comm                        _communicator;
+        };
+        ~World(void)
+        {
+          if (_world_size) MPI_Type_free(&_particle_type);
+
+          if (_num_send) delete _num_send;
+          if (_num_recv) delete _num_recv;
+          if (_send_offset) delete _send_offset;
+          if (_recv_offset) delete _recv_offset;
+          if (_send_reqs) delete _send_reqs;
+          if (_recv_reqs) delete _recv_reqs;
+        };
+
+        void set_mapping(const Mapping<dim> *new_mapping)
+        {
+          _mapping = new_mapping;
+        };
+        void set_triangulation(const parallel::distributed::Triangulation<dim> *new_tria)
+        {
+          //if (_tria) _tria.signals.post_refinement.disconnect(std_cxx1x::bind(&World::mesh_changed, std_cxx1x::ref(*this)));
+          _tria = new_tria;
+          _tria->signals.post_refinement.connect(std_cxx1x::bind(&World::mesh_changed, std_cxx1x::ref(*this)));
+        };
+        void set_dof_handler(const DoFHandler<dim> *new_dh)
+        {
+          _dh = new_dh;
+        };
+        void set_integrator(Integrator<dim, T> *new_integrator)
+        {
+          _integrator = new_integrator;
+        };
+        void set_mpi_comm(MPI_Comm new_comm_world)
+        {
+          _communicator = new_comm_world;
+        };
+        const std::multimap<LevelInd, T> particles(void) const
+        {
+          return _particles;
+        };
+
+        // TODO: add better error checking to MPI calls
+        void init(void)
+        {
+          int                                   *block_lens;
+          MPI_Aint                              *indices;
+          MPI_Datatype                          *old_types;
+          std::vector<MPIDataInfo>              data_info;
+          std::vector<MPIDataInfo>::iterator    it;
+          int                                   num_entries, res, i;
+
+          // TODO: Assert that all necessary parameters have been set
+
+          // Construct MPI data type for this particle
+          T::add_mpi_types(data_info);
+
+          // And data associated with the integration scheme
+          _integrator->add_mpi_types(data_info);
+
+          // Set up the block lengths, indices and internal types
+          num_entries = data_info.size();
+          block_lens = new int[num_entries];
+          indices = new MPI_Aint[num_entries];
+          old_types = new MPI_Datatype[num_entries];
+          for (i=0; i<num_entries; ++i)
+            {
+              block_lens[i] = data_info[i]._num_elems;
+              indices[i] = (i == 0 ? 0 : indices[i-1]+data_info[i-1]._elem_size_bytes*data_info[i-1]._num_elems);
+              old_types[i] = data_info[i]._data_type;
+            }
+
+          // Create and commit the MPI type
+          res = MPI_Type_struct(num_entries, block_lens, indices, old_types, &_particle_type);
+          if (res != MPI_SUCCESS) exit(-1);
+
+          res = MPI_Type_commit(&_particle_type);
+          if (res != MPI_SUCCESS) exit(-1);
+
+          // Delete temporary arrays
+          delete old_types;
+          delete indices;
+          delete block_lens;
+
+          // Determine the size of the MPI comm world
+          MPI_Comm_size(_communicator, &_world_size);
+          MPI_Comm_rank(_communicator, &_self_rank);
+
+          // Initialize send/recv structures appropriately
+          _num_send = new int[_world_size];
+          _num_recv = new int[_world_size];
+          _send_offset = new int[_world_size];
+          _recv_offset = new int[_world_size];
+          _send_reqs = new MPI_Request[_world_size];
+          _recv_reqs = new MPI_Request[_world_size];
+        };
+
+        // TODO: determine file format, write this function
+        void read_particles_from_file(std::string filename);
+
+        // Generate a set of particles in the current triangulation
+        // TODO: fix the numbering scheme so we have exactly the right number of particles for all processor configurations
+        // TODO: fix the particle system so it works even with processors assigned 0 cells
+        void global_add_particles(double total_particles)
+        {
+          double      total_volume, local_volume, subdomain_fraction, start_fraction, end_fraction;
+          typename parallel::distributed::Triangulation<dim>::active_cell_iterator  it;
+
+          global_sum_particles = total_particles;
+          // Calculate the number of particles in this domain as a fraction of total volume
+          total_volume = local_volume = 0;
+          for (it=_tria->begin_active(); it!=_tria->end(); ++it)
+            {
+              double cell_volume = it->measure();
+              AssertThrow (cell_volume != 0, ExcMessage ("Found cell with zero volume."));
+              if (it->is_locally_owned()) local_volume += cell_volume;
+            }
+
+          // Sum the local volumes over all nodes
+          MPI_Allreduce(&local_volume, &total_volume, 1, MPI_DOUBLE, MPI_SUM, _communicator);
+
+          // Assign this subdomain the appropriate fraction
+          subdomain_fraction = local_volume/total_volume;
+
+          // Sum the subdomain fractions so we don't miss particles from rounding and to create unique IDs
+          MPI_Scan(&subdomain_fraction, &end_fraction, 1, MPI_DOUBLE, MPI_SUM, _communicator);
+          start_fraction = end_fraction-subdomain_fraction;
+
+          // Calculate start and end IDs so there are no gaps
+          const unsigned int  start_id = static_cast<unsigned int>(std::floor(start_fraction*total_particles));
+          const unsigned int  end_id   = static_cast<unsigned int>(std::floor(end_fraction*total_particles));
+          const unsigned int  subdomain_particles = end_id - start_id;
+
+          generate_particles_in_subdomain(subdomain_particles, start_id);
+        };
+        std::string output_particle_data(const std::string &output_dir);
+        void find_all_cells(void)
+        {
+          typename std::multimap<LevelInd, T>::iterator   it;
+          std::multimap<LevelInd, T>                      tmp_map;
+          LevelInd                                        found_cell;
+
+          // Find the cells that the particles moved to
+          tmp_map.clear();
+          for (it=_particles.begin(); it!=_particles.end();)
+            {
+              found_cell = find_cell(it->second, it->first);
+              if (found_cell != it->first)
                 {
-                    found_cell = typename parallel::distributed::Triangulation<dim>::cell_iterator(_tria, cur_cell.first, cur_cell.second);
-                    if (found_cell != _tria->end() && found_cell->point_inside(particle.location()) && found_cell->active())
-                    {
-                        // If the cell is active, we're at the finest level of refinement and can finish
-                        particle.set_local(found_cell->is_locally_owned());
-                        return cur_cell;
-                    }
+                  tmp_map.insert(std::make_pair(found_cell, it->second));
+                  _particles.erase(it++);
                 }
-                
-                // Check all the cells on level 0 and recurse down
-                for (it=_tria->begin(0); it!=_tria->end(0); ++it)
+              else ++it;
+            }
+          _particles.insert(tmp_map.begin(),tmp_map.end());
+        };
+
+        // Advance particles by the specified timestep using the current integration scheme.
+        void advance_timestep(double timestep, const TrilinosWrappers::MPI::BlockVector &solution)
+        {
+          bool        continue_integrator = true;
+
+          // Find the cells that the particles moved to
+          find_all_cells();
+
+          // If the triangulation changed, we may need to move particles between processors
+          if (_triangulation_changed) send_recv_particles();
+
+          // If particles fell out of the mesh, put them back in at the closest point in the mesh
+          move_particles_back_in_mesh();
+
+          // Mark all particles to be checked for velocity based on position
+          mark_particles_for_check();
+
+          // Keep calling the integrator until it indicates it is finished
+          while (continue_integrator)
+            {
+              // Starting out, particles must know which cells they belong to
+              // Using this we can quickly interpolate the velocities
+              get_particle_velocities(solution);
+
+              // Call the integrator
+              continue_integrator = _integrator->integrate_step(_particles, timestep);
+
+              // Find the cells that the particles moved to
+              find_all_cells();
+
+              // If particles fell out of the mesh, put them back in at the closest point in the mesh
+              move_particles_back_in_mesh();
+
+              // Swap particles between processors if needed
+              send_recv_particles();
+            }
+
+          // Ensure we didn't lose any particles
+          check_particle_count();
+        };
+
+        void move_particles_back_in_mesh(void)
+        {
+          // TODO: fix this to work with arbitrary meshes
+        };
+
+        // Mark all particles to be checked for velocity
+        void mark_particles_for_check(void)
+        {
+          typename std::multimap<LevelInd, T>::iterator  it;
+          for (it=_particles.begin(); it!=_particles.end(); ++it) it->second.set_vel_check(true);
+        }
+
+        // Finds the cell the particle is contained in and returns the corresponding level/index
+        LevelInd find_cell(T &particle, LevelInd cur_cell)
+        {
+          typename parallel::distributed::Triangulation<dim>::cell_iterator         it, found_cell;
+          typename parallel::distributed::Triangulation<dim>::active_cell_iterator  ait;
+          LevelInd    res;
+
+          // First check the last recorded cell since particles will generally stay in the same area
+          if (!_triangulation_changed)
+            {
+              found_cell = typename parallel::distributed::Triangulation<dim>::cell_iterator(_tria, cur_cell.first, cur_cell.second);
+              if (found_cell != _tria->end() && found_cell->point_inside(particle.location()) && found_cell->active())
                 {
-                    res = recursive_find_cell(particle, std::make_pair(it->level(), it->index()));
-                    if (res.first != -1 && res.second != -1) return res;
+                  // If the cell is active, we're at the finest level of refinement and can finish
+                  particle.set_local(found_cell->is_locally_owned());
+                  return cur_cell;
                 }
-                
-                // If we couldn't find it there, we need to check the active cells
-                // since the particle could be on a curved boundary not included in the
-                // coarse grid
-                for (ait=_tria->begin_active(); ait!=_tria->end(); ++ait)
+            }
+
+          // Check all the cells on level 0 and recurse down
+          for (it=_tria->begin(0); it!=_tria->end(0); ++it)
+            {
+              res = recursive_find_cell(particle, std::make_pair(it->level(), it->index()));
+              if (res.first != -1 && res.second != -1) return res;
+            }
+
+          // If we couldn't find it there, we need to check the active cells
+          // since the particle could be on a curved boundary not included in the
+          // coarse grid
+          for (ait=_tria->begin_active(); ait!=_tria->end(); ++ait)
+            {
+              if (ait->point_inside(particle.location()))
                 {
-                    if (ait->point_inside(particle.location()))
-                    {
-                        particle.set_local(ait->is_locally_owned());
-                        return std::make_pair(ait->level(), ait->index());
-                    }
+                  particle.set_local(ait->is_locally_owned());
+                  return std::make_pair(ait->level(), ait->index());
                 }
-                
-                // If it failed all these tests, the particle is outside the mesh
-                particle.set_local(false);
-                return std::make_pair(-1, -1);
-            };
-            
-            /*
-             Transfer particles that have crossed domain boundaries to other processors
-             Because domains can change drastically during mesh refinement, particle transfer occurs as follows:
-             - Each domain finds particles that have fallen outside it
-             - If the new particle position is in a known domain (e.g. artificial cells), send the particle only to that domain
-             - If the new particle position is not in a known domain (e.g. due to mesh refinement), send the particle to all domains
-             - The position of each of these particles is broadcast to the specified domains
-             - Each domain determines which of the broadcast particles is in itself, keeps these and deletes the others
-             - TODO: handle particles outside any domain
-             - TODO: if we know the domain of a particle (e.g. bordering domains), send it only to that domain
-             */
-            void send_recv_particles(void) {
-                typename std::multimap<LevelInd, T>::iterator  it;
-                typename parallel::distributed::Triangulation<dim>::cell_iterator found_cell;
-                int                 i, rank;
-                std::vector<T>      send_particles;
-                typename std::vector<T>::const_iterator    sit;
-                char                *send_data, *recv_data, *cur_send_ptr, *cur_recv_ptr;
-                unsigned int        integrator_data_len, particle_data_len;
-                
-                // Go through the particles and take out those which need to be moved to another processor
-                for (it=_particles.begin(); it!=_particles.end();)
+            }
+
+          // If it failed all these tests, the particle is outside the mesh
+          particle.set_local(false);
+          return std::make_pair(-1, -1);
+        };
+
+        /*
+         Transfer particles that have crossed domain boundaries to other processors
+         Because domains can change drastically during mesh refinement, particle transfer occurs as follows:
+         - Each domain finds particles that have fallen outside it
+         - If the new particle position is in a known domain (e.g. artificial cells), send the particle only to that domain
+         - If the new particle position is not in a known domain (e.g. due to mesh refinement), send the particle to all domains
+         - The position of each of these particles is broadcast to the specified domains
+         - Each domain determines which of the broadcast particles is in itself, keeps these and deletes the others
+         - TODO: handle particles outside any domain
+         - TODO: if we know the domain of a particle (e.g. bordering domains), send it only to that domain
+         */
+        void send_recv_particles(void)
+        {
+          typename std::multimap<LevelInd, T>::iterator  it;
+          typename parallel::distributed::Triangulation<dim>::cell_iterator found_cell;
+          int                 i, rank;
+          std::vector<T>      send_particles;
+          typename std::vector<T>::const_iterator    sit;
+          char                *send_data, *recv_data, *cur_send_ptr, *cur_recv_ptr;
+          unsigned int        integrator_data_len, particle_data_len;
+
+          // Go through the particles and take out those which need to be moved to another processor
+          for (it=_particles.begin(); it!=_particles.end();)
+            {
+              if (!it->second.local())
                 {
-                    if (!it->second.local())
-                    {
-                        send_particles.push_back(it->second);
-                        _particles.erase(it++);
-                    }
-                    else
-                    {
-                        ++it;
-                    }
+                  send_particles.push_back(it->second);
+                  _particles.erase(it++);
                 }
-                
-                // Determine the total number of particles we will send to other processors
-                _total_send = send_particles.size();
-                for (rank=0; rank<_world_size; ++rank)
+              else
                 {
-                    if (rank != _self_rank) _num_send[rank] = _total_send;
-                    else _num_send[rank] = 0;
-                    _send_offset[rank] = 0;
+                  ++it;
                 }
-                
-                // Notify other processors how many particles we will be sending
-                MPI_Alltoall(_num_send, 1, MPI_INT, _num_recv, 1, MPI_INT, _communicator);
-                
-                _total_recv = 0;
-                for (rank=0; rank<_world_size; ++rank)
+            }
+
+          // Determine the total number of particles we will send to other processors
+          _total_send = send_particles.size();
+          for (rank=0; rank<_world_size; ++rank)
+            {
+              if (rank != _self_rank) _num_send[rank] = _total_send;
+              else _num_send[rank] = 0;
+              _send_offset[rank] = 0;
+            }
+
+          // Notify other processors how many particles we will be sending
+          MPI_Alltoall(_num_send, 1, MPI_INT, _num_recv, 1, MPI_INT, _communicator);
+
+          _total_recv = 0;
+          for (rank=0; rank<_world_size; ++rank)
+            {
+              _recv_offset[rank] = _total_recv;
+              _total_recv += _num_recv[rank];
+            }
+
+          // Allocate space for sending and receiving particle data
+          integrator_data_len = _integrator->data_len(MPI_DATA);
+          particle_data_len = T::data_len(MPI_DATA);
+          send_data = (char *)malloc(_total_send*(integrator_data_len+particle_data_len));
+          recv_data = (char *)malloc(_total_recv*(integrator_data_len+particle_data_len));
+
+          // Copy the particle data into the send array
+          // TODO: add integrator data
+          cur_send_ptr = send_data;
+          for (i=0,sit=send_particles.begin(); sit!=send_particles.end(); ++sit,++i)
+            {
+              cur_send_ptr = sit->write_data(MPI_DATA, cur_send_ptr);
+              cur_send_ptr = _integrator->write_data(MPI_DATA, sit->id_num(), cur_send_ptr);
+            }
+
+          // Exchange the particle data between domains
+          MPI_Alltoallv(send_data, _num_send, _send_offset, _particle_type,
+                        recv_data, _num_recv, _recv_offset, _particle_type,
+                        _communicator);
+
+          int put_in_domain = 0;
+          // Put the received particles into the domain if they are in the triangulation
+          cur_recv_ptr = recv_data;
+          for (i=0; i<_total_recv; ++i)
+            {
+              T                   recv_particle;
+              LevelInd            found_cell;
+              cur_recv_ptr = recv_particle.read_data(MPI_DATA, cur_recv_ptr);
+              cur_recv_ptr = _integrator->read_data(MPI_DATA, recv_particle.id_num(), cur_recv_ptr);
+              found_cell = find_cell(recv_particle, std::make_pair(-1,-1));
+              if (recv_particle.local())
                 {
-                    _recv_offset[rank] = _total_recv;
-                    _total_recv += _num_recv[rank];
+                  put_in_domain++;
+                  _particles.insert(std::make_pair(found_cell, recv_particle));
                 }
-                
-                // Allocate space for sending and receiving particle data
-                integrator_data_len = _integrator->data_len(MPI_DATA);
-                particle_data_len = T::data_len(MPI_DATA);
-                send_data = (char *)malloc(_total_send*(integrator_data_len+particle_data_len));
-                recv_data = (char *)malloc(_total_recv*(integrator_data_len+particle_data_len));
-                
-                // Copy the particle data into the send array
-                // TODO: add integrator data
-                cur_send_ptr = send_data;
-                for (i=0,sit=send_particles.begin(); sit!=send_particles.end(); ++sit,++i)
+            }
+
+          free(send_data);
+          free(recv_data);
+        };
+
+        void get_particle_velocities(const TrilinosWrappers::MPI::BlockVector &solution)
+        {
+          Vector<double>                single_res(dim+2);
+          std::vector<Vector<double> >  result;
+          Point<dim>                    velocity;
+          unsigned int                  i, num_cell_particles;
+          LevelInd                      cur_cell;
+          typename std::multimap<LevelInd, T>::iterator  it, sit;
+          typename DoFHandler<dim>::active_cell_iterator  found_cell;
+          std::vector<Point<dim> >      particle_points;
+
+          // Prepare the field function
+          Functions::FEFieldFunction<dim, DoFHandler<dim>, TrilinosWrappers::MPI::BlockVector> fe_value(*_dh, solution, *_mapping);
+
+          // Get the velocity for each cell at a time so we can take advantage of knowing the active cell
+          for (it=_particles.begin(); it!=_particles.end();)
+            {
+              // Save a pointer to the first particle in this cell
+              sit = it;
+
+              // Get the current cell
+              cur_cell = it->first;
+
+              // Resize the vectors to the number of particles in this cell
+              num_cell_particles = _particles.count(cur_cell);
+              particle_points.resize(num_cell_particles);
+
+              // Get a vector of the particle locations in this cell
+              i=0;
+              while (it != _particles.end() && it->first == cur_cell)
                 {
-                    cur_send_ptr = sit->write_data(MPI_DATA, cur_send_ptr);
-                    cur_send_ptr = _integrator->write_data(MPI_DATA, sit->id_num(), cur_send_ptr);
+                  if (it->second.vel_check()) particle_points[i++] = it->second.location();
+                  it++;
                 }
-                
-                // Exchange the particle data between domains
-                MPI_Alltoallv(send_data, _num_send, _send_offset, _particle_type,
-                              recv_data, _num_recv, _recv_offset, _particle_type,
-                              _communicator);
-                
-                int put_in_domain = 0;
-                // Put the received particles into the domain if they are in the triangulation
-                cur_recv_ptr = recv_data;
-                for (i=0; i<_total_recv; ++i)
+              result.resize(i, single_res);
+              particle_points.resize(i);
+
+              // Get the cell the particle is in
+              found_cell = typename DoFHandler<dim>::active_cell_iterator(_tria, cur_cell.first, cur_cell.second, _dh);
+
+              // Interpolate the velocity field for each of the particles
+              fe_value.set_active_cell(found_cell);
+              fe_value.vector_value_list(particle_points, result);
+
+              // Copy the resulting velocities to the appropriate vector
+              it = sit;
+              i = 0;
+              while (it != _particles.end() && it->first == cur_cell)
                 {
-                    T                   recv_particle;
-                    LevelInd            found_cell;
-                    cur_recv_ptr = recv_particle.read_data(MPI_DATA, cur_recv_ptr);
-                    cur_recv_ptr = _integrator->read_data(MPI_DATA, recv_particle.id_num(), cur_recv_ptr);
-                    found_cell = find_cell(recv_particle, std::make_pair(-1,-1));
-                    if (recv_particle.local())
+                  if (it->second.vel_check())
                     {
-                        put_in_domain++;
-                        _particles.insert(std::make_pair(found_cell, recv_particle));
+                      for (int d=0; d<dim; ++d) velocity(d) = result[i](d);
+                      it->second.set_velocity(velocity);
+                      i++;
                     }
+                  it++;
                 }
-                
-                free(send_data);
-                free(recv_data);
-            };
-            
-            void get_particle_velocities(const TrilinosWrappers::MPI::BlockVector &solution) {
-                Vector<double>                single_res(dim+2);
-                std::vector<Vector<double> >  result;
-                Point<dim>                    velocity;
-                unsigned int                  i, num_cell_particles;
-                LevelInd                      cur_cell;
-                typename std::multimap<LevelInd, T>::iterator  it, sit;
-                typename DoFHandler<dim>::active_cell_iterator  found_cell;
-                std::vector<Point<dim> >      particle_points;
-                
-                // Prepare the field function
-                Functions::FEFieldFunction<dim, DoFHandler<dim>, TrilinosWrappers::MPI::BlockVector> fe_value(*_dh, solution, *_mapping);
-                
-                // Get the velocity for each cell at a time so we can take advantage of knowing the active cell
-                for (it=_particles.begin(); it!=_particles.end();)
-                {
-                    // Save a pointer to the first particle in this cell
-                    sit = it;
-                    
-                    // Get the current cell
-                    cur_cell = it->first;
-                    
-                    // Resize the vectors to the number of particles in this cell
-                    num_cell_particles = _particles.count(cur_cell);
-                    particle_points.resize(num_cell_particles);
-                    result.resize(num_cell_particles, single_res);
-                    
-                    // Get a vector of the point positions in this cell
-                    i=0;
-                    while (it != _particles.end() && it->first == cur_cell)
-                    {
-                        particle_points[i++] = it->second.location();
-                        it++;
-                    }
-                    
-                    // Get the cell the particle is in
-                    found_cell = typename DoFHandler<dim>::active_cell_iterator(_tria, cur_cell.first, cur_cell.second, _dh);
-                    
-                    // Interpolate the velocity field for each of the particles
-                    fe_value.set_active_cell(found_cell);
-                    fe_value.vector_value_list(particle_points, result);
-                    
-                    // Copy the resulting velocities to the appropriate vector
-                    it = sit;
-                    for (i=0; i<num_cell_particles; ++i)
-                    {
-                        for (int d=0; d<dim; ++d) velocity(d) = result[i](d);
-                        it->second.set_velocity(velocity);
-                        it++;
-                    }
-                }
-            };
-            
-            unsigned int get_global_particle_count(void) {
-                unsigned int    local_particles = _particles.size();
-                unsigned int    global_particles;
-                int             res;
-                
-                res = MPI_Allreduce(&local_particles, &global_particles, 1, MPI_UNSIGNED, MPI_SUM, _communicator);
-                if (res != MPI_SUCCESS) exit(-1);
-                return global_particles;
-            };
-            
-            // Ensures that particles are not lost in the simulation
-            void check_particle_count(void) {
-                unsigned int    global_particles = get_global_particle_count();
-                
-                AssertThrow (global_particles==global_sum_particles, ExcMessage ("Particle count unexpectedly changed."));
-            };
+            }
         };
-    }
+
+        unsigned int get_global_particle_count(void)
+        {
+          unsigned int    local_particles = _particles.size();
+          unsigned int    global_particles;
+          int             res;
+
+          res = MPI_Allreduce(&local_particles, &global_particles, 1, MPI_UNSIGNED, MPI_SUM, _communicator);
+          if (res != MPI_SUCCESS) exit(-1);
+          return global_particles;
+        };
+
+        // Ensures that particles are not lost in the simulation
+        void check_particle_count(void)
+        {
+          unsigned int    global_particles = get_global_particle_count();
+
+          AssertThrow (global_particles==global_sum_particles, ExcMessage ("Particle count unexpectedly changed."));
+        };
+    };
+  }
 }
 
 #endif

Modified: branches/active_compositions/include/aspect/postprocess/tracer.h
===================================================================
--- branches/active_compositions/include/aspect/postprocess/tracer.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/postprocess/tracer.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,18 +1,18 @@
 /*
  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
- 
+
  This file is part of ASPECT.
- 
+
  ASPECT is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
- 
+
  ASPECT is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
- 
+
  You should have received a copy of the GNU General Public License
  along with ASPECT; see the file doc/COPYING.  If not see
  <http://www.gnu.org/licenses/>.
@@ -29,65 +29,64 @@
 
 namespace aspect
 {
-    namespace Postprocess
+  namespace Postprocess
+  {
+    template <int dim>
+    class PassiveTracers : public Interface<dim>, public ::aspect::SimulatorAccess<dim>
     {
-        template <int dim>
-        class PassiveTracers : public Interface<dim>, public ::aspect::SimulatorAccess<dim>
-        {
-        private:
-            // The world holding the particles
-            Particle::World<dim, Particle::BaseParticle<dim> >              _world;
-            
-            // The integrator to use in moving the particles
-            Particle::Integrator<dim, Particle::BaseParticle<dim> >         *_integrator;
-            
-            // Abstract output object
-            Particle::Output<dim, Particle::BaseParticle<dim> >             *_output;
-            
-            // Whether this set has been initialized yet or not
-            bool                            _initialized;
-            
-            // Number of initial particles to create
-            // Use a double rather than int since doubles can represent up to 2^52
-            double                          _num_initial_tracers;
-            
-            // Interval between output (in years if appropriate
-            // simulation parameter is set, otherwise seconds)
-            double                          _data_output_interval;
-            
-            // Output format for particle data
-            std::string                     _data_output_format;
-            
-            // Integration scheme to move particles
-            std::string                     _integration_scheme;
-            
-            // Records time for next output to occur
-            double                          _next_data_output_time;
-            
-        public:
-            PassiveTracers(void) : _initialized(false), _next_data_output_time(std::numeric_limits<double>::quiet_NaN()) {};
-            
-            virtual std::pair<std::string,std::string> execute (TableHandler &statistics);
-            
-            void set_next_data_output_time (const double current_time);
-            
-            
-            /**
-             * Declare the parameters this class takes through input files.
-             */
-            static
-            void
-            declare_parameters (ParameterHandler &prm);
-            
-            /**
-             * Read the parameters this class declares from the parameter
-             * file.
-             */
-            virtual
-            void
-            parse_parameters (ParameterHandler &prm);
-        };
-    }
+      private:
+        // The world holding the particles
+        Particle::World<dim, Particle::BaseParticle<dim> >              _world;
+
+        // The integrator to use in moving the particles
+        Particle::Integrator<dim, Particle::BaseParticle<dim> >         *_integrator;
+
+        // Abstract output object
+        Particle::Output<dim, Particle::BaseParticle<dim> >             *_output;
+
+        // Whether this set has been initialized yet or not
+        bool                            _initialized;
+
+        // Number of initial particles to create
+        // Use a double rather than int since doubles can represent up to 2^52
+        double                          _num_initial_tracers;
+
+        // Interval between output (in years if appropriate
+        // simulation parameter is set, otherwise seconds)
+        double                          _data_output_interval;
+
+        // Output format for particle data
+        std::string                     _data_output_format;
+
+        // Integration scheme to move particles
+        std::string                     _integration_scheme;
+
+        // Records time for next output to occur
+        double                          _next_data_output_time;
+
+      public:
+        PassiveTracers(void) : _initialized(false), _next_data_output_time(std::numeric_limits<double>::quiet_NaN()) {};
+
+        virtual std::pair<std::string,std::string> execute (TableHandler &statistics);
+
+        void set_next_data_output_time (const double current_time);
+
+        /**
+         * Declare the parameters this class takes through input files.
+         */
+        static
+        void
+        declare_parameters (ParameterHandler &prm);
+
+        /**
+         * Read the parameters this class declares from the parameter
+         * file.
+         */
+        virtual
+        void
+        parse_parameters (ParameterHandler &prm);
+    };
+  }
 }
 
 #endif

Modified: branches/active_compositions/include/aspect/simulator.h
===================================================================
--- branches/active_compositions/include/aspect/simulator.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/simulator.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1035,7 +1035,7 @@
        * <code>source/simulator/helper_functions.cc</code>.
        */
       void compute_depth_average_field(const unsigned int index,
-				       std::vector<double> &values) const;
+                                       std::vector<double> &values) const;
 
       /**
        * Compute a depth average of the current temperature. The function

Modified: branches/active_compositions/include/aspect/velocity_boundary_conditions/interface.h
===================================================================
--- branches/active_compositions/include/aspect/velocity_boundary_conditions/interface.h	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/include/aspect/velocity_boundary_conditions/interface.h	2012-10-18 20:18:18 UTC (rev 1286)
@@ -60,6 +60,7 @@
          * Initialization function. Takes a reference to the geometry model so
          * that derived classes can access them.
          */
+        virtual
         void
         initialize (const GeometryModel::Interface<dim> &geometry_model);
 

Modified: branches/active_compositions/source/compositional_initial_conditions/interface.cc
===================================================================
--- branches/active_compositions/source/compositional_initial_conditions/interface.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/compositional_initial_conditions/interface.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -103,15 +103,15 @@
       prm.leave_subsection ();
 
       if (n_compositional_fields == 0)
-	return NULL;
+        return NULL;
       else
-	{
-	  std::string model_name;
-	  prm.enter_subsection ("Compositional initial conditions");
-	  {
-	    model_name = prm.get ("Model name");
-	  }
-	  prm.leave_subsection ();
+        {
+          std::string model_name;
+          prm.enter_subsection ("Compositional initial conditions");
+          {
+            model_name = prm.get ("Model name");
+          }
+          prm.leave_subsection ();
 
 	  Interface<dim> *plugin = std_cxx1x::get<dim>(registered_plugins).create_plugin (model_name, prm);
 	  plugin->initialize (geometry_model,

Modified: branches/active_compositions/source/material_model/steinberger.cc
===================================================================
--- branches/active_compositions/source/material_model/steinberger.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/material_model/steinberger.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -226,11 +226,11 @@
             const double np = get_np(pressure);
             const unsigned int inp = static_cast<unsigned int>(np);
 
-            Assert(nT<values.n_rows(), ExcMessage("not in range"));
-            Assert(np<values.n_cols(), ExcMessage("not in range"));
+            Assert(inT<values.n_rows(), ExcMessage("not in range"));
+            Assert(inp<values.n_cols(), ExcMessage("not in range"));
 
             if (!interpol)
-              return values[nT][np];
+              return values[inT][inp];
             else
               {
                 // compute the coordinates of this point in the
@@ -242,10 +242,10 @@
                 Assert ((0 <= eta) && (eta <= 1), ExcInternalError());
 
                 // use these coordinates for a bilinear interpolation
-                return ((1-xi)*(1-eta)*values[nT][np] +
-                        xi    *(1-eta)*values[nT+1][np] +
-                        (1-xi)*eta    *values[nT][np+1] +
-                        xi    *eta    *values[nT+1][np+1]);
+                return ((1-xi)*(1-eta)*values[inT][inp] +
+                        xi    *(1-eta)*values[inT+1][inp] +
+                        (1-xi)*eta    *values[inT][inp+1] +
+                        xi    *eta    *values[inT+1][inp+1]);
               }
           }
 
@@ -419,7 +419,7 @@
       static internal::lateral_viscosity_lookup lat_table(datadirectory+lateral_viscosity_file_name);
 
       const double depth = this->get_geometry_model().depth(position);
-      const unsigned int idx = 100 * depth / this->get_geometry_model().maximal_depth();
+      const unsigned int idx = static_cast<unsigned int>(avg_temp.size() * depth / this->get_geometry_model().maximal_depth());
       const double delta_temp = temperature-avg_temp[idx];
       const double adia_temp = this->get_adiabatic_conditions().temperature(position);
 

Modified: branches/active_compositions/source/material_model/table.cc
===================================================================
--- branches/active_compositions/source/material_model/table.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/material_model/table.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -682,7 +682,7 @@
                              "whether the model is compressible. ");
           prm.enter_subsection ("Viscosity");
           {
-            prm.declare_entry ("ViscositycModel", "Exponential",
+            prm.declare_entry ("Viscosity Model", "Exponential",
                                Patterns::Anything (),
                                "Viscosity Model");
             prm.declare_entry ("Reference Viscosity", "5e24",

Modified: branches/active_compositions/source/postprocess/tracer.cc
===================================================================
--- branches/active_compositions/source/postprocess/tracer.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/postprocess/tracer.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,18 +1,18 @@
 /*
  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
- 
+
  This file is part of ASPECT.
- 
+
  ASPECT is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
- 
+
  ASPECT is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
- 
+
  You should have received a copy of the GNU General Public License
  along with ASPECT; see the file doc/COPYING.  If not see
  <http://www.gnu.org/licenses/>.
@@ -24,166 +24,183 @@
 
 namespace aspect
 {
-    namespace Postprocess
+  namespace Postprocess
+  {
+    template <int dim>
+    std::pair<std::string,std::string> PassiveTracers<dim>::execute (TableHandler &statistics)
     {
-        template <int dim>
-        std::pair<std::string,std::string> PassiveTracers<dim>::execute (TableHandler &statistics)
+      std::string     result_string = "done.", data_file_name;
+      bool            output_data = false;
+
+      if (!_initialized)
         {
-            std::string     result_string = "done.", data_file_name;
-            bool            output_data = false;
-            
-            if (!_initialized)
+          // Create an output object depending on what the parameters specify
+          if (_data_output_format == "ascii")
             {
-                // Create an output object depending on what the parameters specify
-                if (_data_output_format == "ascii") {
-                    _output = new Particle::ASCIIOutput<dim,Particle::BaseParticle<dim> >();
-                } else if (_data_output_format == "vtu") {
-                    _output = new Particle::VTUOutput<dim,Particle::BaseParticle<dim> >();
-                } else if (_data_output_format == "hdf5") {
-                    _output = new Particle::HDF5Output<dim,Particle::BaseParticle<dim> >();
-                } else {
-                    _output = new Particle::NullOutput<dim,Particle::BaseParticle<dim> >();
-                }
-                
-                // Set the output directory for the particle output to be stored in
-                _output->set_output_directory(this->get_output_directory());
-                
-                // Create an integrator object depending on the specified parameter
-                if (_integration_scheme == "euler") {
-                    _integrator = new Particle::EulerIntegrator<dim, Particle::BaseParticle<dim> >;
-                } else if (_integration_scheme == "rk2") {
-                    _integrator = new Particle::RK2Integrator<dim, Particle::BaseParticle<dim> >;
-                } else if (_integration_scheme == "rk4") {
-                    _integrator = new Particle::RK4Integrator<dim, Particle::BaseParticle<dim> >;
-                }
-                
-                // Set up the particle world with the appropriate simulation objects
-                _world.set_mapping(&(this->get_mapping()));
-                _world.set_triangulation(&(this->get_triangulation()));
-                _world.set_dof_handler(&(this->get_dof_handler()));
-                _world.set_integrator(_integrator);
-                _world.set_mpi_comm(this->get_mpi_communicator());
-                
-                // And initialize the world
-                _world.init();
-                
-                _next_data_output_time = this->get_time();
-                
-                // Add the specified number of particles
-                _world.global_add_particles(_num_initial_tracers);
-                
-                _initialized = true;
+              _output = new Particle::ASCIIOutput<dim,Particle::BaseParticle<dim> >();
             }
-            
-            // Advance the particles in the world by the current timestep
-            _world.advance_timestep(this->get_timestep(), this->get_solution());
-            
-            // If it's time to generate an output file, call the appropriate functions and reset the timer
-            if (this->get_time() >= _next_data_output_time)
+          else if (_data_output_format == "vtu")
             {
-                set_next_data_output_time (this->get_time());
-                data_file_name = _output->output_particle_data(_world.particles(), this->get_time());
-                output_data = true;
+              _output = new Particle::VTUOutput<dim,Particle::BaseParticle<dim> >();
             }
-            if (output_data) result_string += " Wrote particle data: " + data_file_name + ".";
-            
-            return std::make_pair("Advecting particles...", result_string);
-        }
-        
-        
-        
-        template <int dim>
-        void
-        PassiveTracers<dim>::set_next_data_output_time (const double current_time)
-        {
-            // if output_interval is positive, then set the next output interval to
-            // a positive multiple; we need to interpret output_interval either
-            // as years or as seconds
-            if (_data_output_interval > 0)
+          else if (_data_output_format == "hdf5")
             {
-                if (this->convert_output_to_years() == true)
-                    _next_data_output_time = std::ceil(current_time / (_data_output_interval * year_in_seconds)) *
-                    (_data_output_interval * year_in_seconds);
-                else
-                    _next_data_output_time = std::ceil(current_time / (_data_output_interval)) *
-                    (_data_output_interval);
+              _output = new Particle::HDF5Output<dim,Particle::BaseParticle<dim> >();
             }
-        }
-        
-        template <int dim>
-        void
-        PassiveTracers<dim>::declare_parameters (ParameterHandler &prm)
-        {
-            prm.enter_subsection("Postprocess");
+          else
             {
-                prm.enter_subsection("Tracers");
-                {
-                    prm.declare_entry ("Number of tracers", "1e3",
-                                       Patterns::Double (0),
-                                       "Total number of tracers to create (not per processor or per element).");
-                    prm.declare_entry ("Time between data output", "1e8",
-                                       Patterns::Double (0),
-                                       "The time interval between each generation of "
-                                       "output files. A value of zero indicates that "
-                                       "output should be generated every time step. "
-                                       "Units: years if the "
-                                       "'Use years in output instead of seconds' parameter is set; "
-                                       "seconds otherwise.");
-                    prm.declare_entry("Data output format", "none",
-                                      Patterns::Selection("none|"
-                                                          "ascii|"
-                                                          "vtu|"
-                                                          "hdf5"
-                                                          ),
-                                      "File format to output raw particle data in.");
-                    prm.declare_entry("Integration scheme", "rk2",
-                                      Patterns::Selection("euler|"
-                                                          "rk2|"
-                                                          "rk4"
-                                                          ),
-                                      "Integration scheme to move particles.");
-                }
-                prm.leave_subsection ();
+              _output = new Particle::NullOutput<dim,Particle::BaseParticle<dim> >();
             }
-            prm.leave_subsection ();
+
+          // Set the output directory for the particle output to be stored in
+          _output->set_output_directory(this->get_output_directory());
+
+          // Create an integrator object depending on the specified parameter
+          if (_integration_scheme == "euler")
+            {
+              _integrator = new Particle::EulerIntegrator<dim, Particle::BaseParticle<dim> >;
+            }
+          else if (_integration_scheme == "rk2")
+            {
+              _integrator = new Particle::RK2Integrator<dim, Particle::BaseParticle<dim> >;
+            }
+          else if (_integration_scheme == "rk4")
+            {
+              _integrator = new Particle::RK4Integrator<dim, Particle::BaseParticle<dim> >;
+            }
+          else if (_integration_scheme == "hybrid")
+            {
+              _integrator = new Particle::HybridIntegrator<dim, Particle::BaseParticle<dim> >(&(this->get_triangulation()), &(this->get_dof_handler()));
+            }
+
+          // Set up the particle world with the appropriate simulation objects
+          _world.set_mapping(&(this->get_mapping()));
+          _world.set_triangulation(&(this->get_triangulation()));
+          _world.set_dof_handler(&(this->get_dof_handler()));
+          _world.set_integrator(_integrator);
+          _world.set_mpi_comm(this->get_mpi_communicator());
+
+          // And initialize the world
+          _world.init();
+
+          _next_data_output_time = this->get_time();
+
+          // Add the specified number of particles
+          _world.global_add_particles(_num_initial_tracers);
+
+          _initialized = true;
         }
-        
-        
-        template <int dim>
-        void
-        PassiveTracers<dim>::parse_parameters (ParameterHandler &prm)
+
+      // Advance the particles in the world by the current timestep
+      _world.advance_timestep(this->get_timestep(), this->get_solution());
+
+      // If it's time to generate an output file, call the appropriate functions and reset the timer
+      if (this->get_time() >= _next_data_output_time)
         {
-            prm.enter_subsection("Postprocess");
-            {
-                prm.enter_subsection("Tracers");
-                {
-                    _num_initial_tracers = prm.get_double ("Number of tracers");
-                    _data_output_interval = prm.get_double ("Time between data output");
-                    _data_output_format = prm.get("Data output format");
+          set_next_data_output_time (this->get_time());
+          data_file_name = _output->output_particle_data(_world.particles(), this->get_time());
+          output_data = true;
+        }
+      if (output_data) result_string += " Wrote particle data: " + data_file_name + ".";
+
+      return std::make_pair("Advecting particles...", result_string);
+    }
+
+
+
+    template <int dim>
+    void
+    PassiveTracers<dim>::set_next_data_output_time (const double current_time)
+    {
+      // if output_interval is positive, then set the next output interval to
+      // a positive multiple; we need to interpret output_interval either
+      // as years or as seconds
+      if (_data_output_interval > 0)
+        {
+          if (this->convert_output_to_years() == true)
+            _next_data_output_time = std::ceil(current_time / (_data_output_interval * year_in_seconds)) *
+                                     (_data_output_interval * year_in_seconds);
+          else
+            _next_data_output_time = std::ceil(current_time / (_data_output_interval)) *
+                                     (_data_output_interval);
+        }
+    }
+
+    template <int dim>
+    void
+    PassiveTracers<dim>::declare_parameters (ParameterHandler &prm)
+    {
+      prm.enter_subsection("Postprocess");
+      {
+        prm.enter_subsection("Tracers");
+        {
+          prm.declare_entry ("Number of tracers", "1e3",
+                             Patterns::Double (0),
+                             "Total number of tracers to create (not per processor or per element).");
+          prm.declare_entry ("Time between data output", "1e8",
+                             Patterns::Double (0),
+                             "The time interval between each generation of "
+                             "output files. A value of zero indicates that "
+                             "output should be generated every time step. "
+                             "Units: years if the "
+                             "'Use years in output instead of seconds' parameter is set; "
+                             "seconds otherwise.");
+          prm.declare_entry("Data output format", "none",
+                            Patterns::Selection("none|"
+                                                "ascii|"
+                                                "vtu|"
+                                                "hdf5"
+                                               ),
+                            "File format to output raw particle data in.");
+          prm.declare_entry("Integration scheme", "rk2",
+                            Patterns::Selection("euler|"
+                                                "rk2|"
+                                                "rk4|"
+                                                "hybrid"
+                                               ),
+                            "Integration scheme to move particles.");
+        }
+        prm.leave_subsection ();
+      }
+      prm.leave_subsection ();
+    }
+
+
+    template <int dim>
+    void
+    PassiveTracers<dim>::parse_parameters (ParameterHandler &prm)
+    {
+      prm.enter_subsection("Postprocess");
+      {
+        prm.enter_subsection("Tracers");
+        {
+          _num_initial_tracers = prm.get_double ("Number of tracers");
+          _data_output_interval = prm.get_double ("Time between data output");
+          _data_output_format = prm.get("Data output format");
 #ifndef DEAL_II_HAVE_HDF5
-                    AssertThrow (_data_output_format == "hdf5",
-                                 ExcMessage ("deal.ii was not compiled with HDF5 support, "
-                                             "so HDF5 output is not possible. Please "
-                                             "recompile deal.ii with HDF5 support turned on."));
+          AssertThrow (_data_output_format == "hdf5",
+                       ExcMessage ("deal.ii was not compiled with HDF5 support, "
+                                   "so HDF5 output is not possible. Please "
+                                   "recompile deal.ii with HDF5 support turned on."));
 #endif
-                    _integration_scheme = prm.get("Integration scheme");
-                }
-                prm.leave_subsection ();
-            }
-            prm.leave_subsection ();
+          _integration_scheme = prm.get("Integration scheme");
         }
+        prm.leave_subsection ();
+      }
+      prm.leave_subsection ();
     }
+  }
 }
 
 
 // explicit instantiations
 namespace aspect
 {
-    namespace Postprocess
-    {
-        ASPECT_REGISTER_POSTPROCESSOR(PassiveTracers,
-                                      "tracers",
-                                      "Postprocessor that propagates passive tracer particles based on the "
-                                      "velocity field.")
-    }
+  namespace Postprocess
+  {
+    ASPECT_REGISTER_POSTPROCESSOR(PassiveTracers,
+                                  "tracers",
+                                  "Postprocessor that propagates passive tracer particles based on the "
+                                  "velocity field.")
+  }
 }

Modified: branches/active_compositions/source/postprocess/visualization.cc
===================================================================
--- branches/active_compositions/source/postprocess/visualization.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/postprocess/visualization.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -130,7 +130,7 @@
       solution_names.push_back ("p");
       solution_names.push_back ("T");
       for (unsigned int i=0; i<this->n_compositional_fields(); ++i)
-	solution_names.push_back ("C_" + boost::lexical_cast<std::string>(i+1));
+        solution_names.push_back ("C_" + boost::lexical_cast<std::string>(i+1));
 
 
       std::vector<DataComponentInterpretation::DataComponentInterpretation>

Modified: branches/active_compositions/source/simulator/core.cc
===================================================================
--- branches/active_compositions/source/simulator/core.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/simulator/core.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -290,14 +290,14 @@
          * convert this into an object that matches the Function@<dim@>
          * interface.
          *
-	 * @param n_comp_fields The number of compositional fields used in
-	 *        this vector-valued problem. Needed to determine
-	 *        the total size of the output vectors.
+        * @param n_comp_fields The number of compositional fields used in
+        *        this vector-valued problem. Needed to determine
+        *        the total size of the output vectors.
          * @param function_object The scalar function that will form one component
          *     of the resulting Function object.
          */
         VectorFunctionFromVelocityFunctionObject (const unsigned int n_comp_fields,
-						  const std_cxx1x::function<Tensor<1,dim> (const Point<dim> &)> &function_object);
+                                                  const std_cxx1x::function<Tensor<1,dim> (const Point<dim> &)> &function_object);
 
         /**
          * Return the value of the
@@ -420,7 +420,7 @@
     statistics.add_value("Number of temperature degrees of freedom",
                          system_dofs_per_block[2]);
     statistics.add_value("Number of composition degrees of freedom",
-        (parameters.n_compositional_fields>0)?system_dofs_per_block[3]:0);
+                         (parameters.n_compositional_fields>0)?system_dofs_per_block[3]:0);
 
 
     // then interpolate the current boundary velocities. this adds to
@@ -630,16 +630,16 @@
       system_relevant_partitioning.push_back(system_relevant_set.get_view(n_u+n_p, n_u+n_p+n_T));
 
       {
-	unsigned int n_C_so_far = 0;
+        unsigned int n_C_so_far = 0;
 
-	for (unsigned int i=0; i<parameters.n_compositional_fields; ++i)
-	  {
-	    system_partitioning.push_back(system_index_set.get_view(n_u+n_p+n_T+n_C_so_far,
-								    n_u+n_p+n_T+n_C_so_far+n_C[i]));
-          system_relevant_partitioning.push_back(system_relevant_set.get_view(n_u+n_p+n_T+n_C_so_far,
-									      n_u+n_p+n_T+n_C_so_far+n_C[i]));
-	    n_C_so_far += n_C[i];
-        }
+        for (unsigned int i=0; i<parameters.n_compositional_fields; ++i)
+          {
+            system_partitioning.push_back(system_index_set.get_view(n_u+n_p+n_T+n_C_so_far,
+                                                                    n_u+n_p+n_T+n_C_so_far+n_C[i]));
+            system_relevant_partitioning.push_back(system_relevant_set.get_view(n_u+n_p+n_T+n_C_so_far,
+                                                                                n_u+n_p+n_T+n_C_so_far+n_C[i]));
+            n_C_so_far += n_C[i];
+          }
       }
     }
 
@@ -894,13 +894,10 @@
                                                         estimated_error_per_cell_rho,
                                                         dim+1);
 
-        // Scale gradient in each cell with the
-        // correct power of h. Otherwise, error
-        // indicators do not reduce when
-        // refined if there is a density
-        // jump. We need at least order 1 for
-        // the error not to grow when refining,
-        // so anything >1 should work.
+        // Scale gradient in each cell with the correct power of h. Otherwise,
+        // error indicators do not reduce when refined if there is a density
+        // jump. We need at least order 1 for the error not to grow when
+        // refining, so anything >1 should work.
         double power = 0.0;
         if (parameters.refinement_strategy == "Density c_p temperature")
           power = 1.5;
@@ -973,7 +970,7 @@
     if (parameters.refinement_strategy == "Velocity")
       {
         std::vector<bool> velocity_mask (dim+2+parameters.n_compositional_fields, false);
-        for (unsigned int i=0;i<dim;++i)
+        for (unsigned int i=0; i<dim; ++i)
           velocity_mask[i] = true;
         KellyErrorEstimator<dim>::estimate (dof_handler,
                                             QGauss<dim-1>(parameters.stokes_velocity_degree+1),
@@ -1030,7 +1027,8 @@
                 << std::endl;
 
           for (unsigned int i=0; i<estimated_error_per_cell.size(); ++i)
-            estimated_error_per_cell(i) = estimated_error_per_cell_T(i)*(1.0+estimated_error_per_cell_rho(i));
+            estimated_error_per_cell(i)
+	      = estimated_error_per_cell_T(i)*(1.0+estimated_error_per_cell_rho(i));
         }
       else if (parameters.refinement_strategy == "Density c_p temperature")
         {
@@ -1128,7 +1126,8 @@
     current_linearization_point = old_solution;
     if (timestep_number > 1)
       {
-        //Trilinos sadd does not like ghost vectors even as input. Copy into distributed vectors for now:
+        //TODO: Trilinos sadd does not like ghost vectors even as input. Copy
+        //into distributed vectors for now:
         LinearAlgebra::BlockVector distr_solution (system_rhs);
         distr_solution = current_linearization_point;
         LinearAlgebra::BlockVector distr_old_solution (system_rhs);
@@ -1189,13 +1188,15 @@
                 {
                   assemble_composition_system (n);
                   build_composition_preconditioner(n);
-                  composition_residual[n] = solve_temperature_or_composition(1+n); // 1+n is correct, because 0 is for temperature
+                  composition_residual[n]
+		    = solve_temperature_or_composition(1+n); // 1+n is correct, because 0 is for temperature
                   current_linearization_point.block(3+n) = solution.block(3+n);
                 }
 
               assemble_stokes_system();
               if (iteration == 0)
                 build_stokes_preconditioner();
+
               const double stokes_residual = solve_stokes();
 
               current_linearization_point = solution;

Modified: branches/active_compositions/source/simulator/helper_functions.cc
===================================================================
--- branches/active_compositions/source/simulator/helper_functions.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/simulator/helper_functions.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -299,9 +299,9 @@
             {
               fe_values.reinit (cell);
               fe_values[field].get_function_values (old_solution,
-                                                          old_field_values);
+                                                    old_field_values);
               fe_values[field].get_function_values (old_old_solution,
-                                                          old_old_field_values);
+                                                    old_old_field_values);
 
               for (unsigned int q=0; q<n_q_points; ++q)
                 {
@@ -310,9 +310,9 @@
                     time_step/old_time_step * old_old_field_values[q];
 
                   min_local_field = std::min (min_local_field,
-                                                    extrapolated_field);
+                                              extrapolated_field);
                   max_local_field = std::max (max_local_field,
-                                                    extrapolated_field);
+                                              extrapolated_field);
                 }
             }
       }
@@ -326,16 +326,16 @@
             {
               fe_values.reinit (cell);
               fe_values[field].get_function_values (old_solution,
-                                                          old_field_values);
+                                                    old_field_values);
 
               for (unsigned int q=0; q<n_q_points; ++q)
                 {
                   const double extrapolated_field = old_field_values[q];
 
                   min_local_field = std::min (min_local_field,
-                                                    extrapolated_field);
+                                              extrapolated_field);
                   max_local_field = std::max (max_local_field,
-                                                    extrapolated_field);
+                                              extrapolated_field);
                 }
             }
       }
@@ -548,7 +548,7 @@
 //TODO: unify the following functions
   template <int dim>
   void Simulator<dim>::compute_depth_average_field(const unsigned int index,
-						   std::vector<double> &values) const
+                                                   std::vector<double> &values) const
   {
     // make sure that what we get here is really an index of one of the temperature/compositional fields
     AssertIndexRange(index,parameters.n_compositional_fields+1);

Modified: branches/active_compositions/source/simulator/initial_conditions.cc
===================================================================
--- branches/active_compositions/source/simulator/initial_conditions.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/simulator/initial_conditions.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -108,9 +108,9 @@
                      : compositional_initial_conditions->initial_composition(fe_values.quadrature_point(i),n-1));
                   initial_solution(local_dof_indices[system_local_dof]) = value;
 
-		  if (base_element != 2)
-		    Assert (value >= 0,
-			    ExcMessage("Invalid initial conditions: Composition is negative"));
+                  if (base_element != 2)
+                    Assert (value >= 0,
+                            ExcMessage("Invalid initial conditions: Composition is negative"));
 
                   // if it is specified in the parameter file that the sum of all compositional fields
                   // must not exceed one, this should be checked

Modified: branches/active_compositions/source/simulator/simulator_access.cc
===================================================================
--- branches/active_compositions/source/simulator/simulator_access.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/simulator/simulator_access.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -189,14 +189,14 @@
   }
 
   template <int dim>
-   void
-   SimulatorAccess<dim>::get_depth_average_composition(const unsigned int composition_index, std::vector<double> &values) const
-   {
+  void
+  SimulatorAccess<dim>::get_depth_average_composition(const unsigned int composition_index, std::vector<double> &values) const
+  {
     // make sure that what we get here is really an index of one of the compositional fields
     AssertIndexRange(composition_index,this->n_compositional_fields());
 
-     simulator->compute_depth_average_field(composition_index+1, values);
-   }
+    simulator->compute_depth_average_field(composition_index+1, values);
+  }
 
   template <int dim>
   void
@@ -307,6 +307,6 @@
 {
 #define INSTANTIATE(dim) \
   template class SimulatorAccess<dim>; \
-
+   
   ASPECT_INSTANTIATE(INSTANTIATE)
 }

Modified: branches/active_compositions/source/simulator/solver.cc
===================================================================
--- branches/active_compositions/source/simulator/solver.cc	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/source/simulator/solver.cc	2012-10-18 20:18:18 UTC (rev 1286)
@@ -294,8 +294,8 @@
       block_remap = current_linearization_point.block (index+2);
       // (ab)use the distributed solution vector to temporarily put a residual in
       initial_residual = system_matrix.block(index+2,index+2).residual (distributed_solution.block(index+2),
-                                                                                  block_remap,
-                                                                                  system_rhs.block(index+2));
+                                                                        block_remap,
+                                                                        system_rhs.block(index+2));
       current_constraints.set_zero(distributed_solution);
 
       // then overwrite it again with the current best guess and solve the linear system

Modified: branches/active_compositions/tests/adiabatic_conditions/depthaverage.plt
===================================================================
--- branches/active_compositions/tests/adiabatic_conditions/depthaverage.plt	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/adiabatic_conditions/depthaverage.plt	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,102 +1,102 @@
 # time, depth, avg T, adiabatic T, velocity magnitude, avg sinking velocity, avg Vs, avg Vp, avg viscosity
-0.000000e+00 0.000000e+00 1.613000e+03 1.613000e+03 1.076478e+34 3.771359e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.890000e+04 1.613000e+03 1.620407e+03 2.933324e+34 6.117999e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 5.780000e+04 1.613000e+03 1.627849e+03 2.002527e+34 1.877558e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 8.670000e+04 1.613000e+03 1.635325e+03 3.161616e+34 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.156000e+05 1.613000e+03 1.642835e+03 2.291657e+33 5.262167e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.445000e+05 1.613000e+03 1.650379e+03 5.339901e+33 3.968225e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.734000e+05 1.613000e+03 1.657958e+03 5.914134e+33 4.186749e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.023000e+05 1.613000e+03 1.665572e+03 1.066451e+33 1.449489e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.312000e+05 1.613000e+03 1.673221e+03 3.412001e+32 1.102139e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.601000e+05 1.613000e+03 1.680905e+03 6.321215e+32 9.175466e+13 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.890000e+05 1.613000e+03 1.688625e+03 3.104828e+32 1.005661e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 3.179000e+05 1.613000e+03 1.696379e+03 1.523759e+32 3.020796e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 3.468000e+05 1.613000e+03 1.704170e+03 1.673683e+32 4.333519e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 3.757000e+05 1.613000e+03 1.711996e+03 1.512983e+32 3.919175e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 4.046000e+05 1.613000e+03 1.719858e+03 1.290822e+32 2.916747e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 4.335000e+05 1.613000e+03 1.727756e+03 1.275452e+32 2.442986e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 4.624000e+05 1.613000e+03 1.735691e+03 1.256400e+32 2.353860e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 4.913000e+05 1.613000e+03 1.743662e+03 1.224816e+32 2.585525e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 5.202000e+05 1.613000e+03 1.751669e+03 1.175171e+32 2.685407e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 5.491000e+05 1.613000e+03 1.759714e+03 1.148043e+32 2.682201e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 5.780000e+05 1.613000e+03 1.767795e+03 1.121838e+32 2.624251e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 6.069000e+05 1.613000e+03 1.775913e+03 1.099644e+32 2.582253e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 6.358000e+05 1.613000e+03 1.784069e+03 1.084645e+32 2.541116e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 6.647000e+05 1.613000e+03 1.792262e+03 1.070315e+32 2.527808e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 6.936000e+05 1.613000e+03 1.800493e+03 1.035194e+32 2.474213e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 7.225000e+05 1.613000e+03 1.808761e+03 1.001764e+32 2.441282e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 7.514000e+05 1.613000e+03 1.817068e+03 9.645664e+31 2.409429e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 7.803000e+05 1.613000e+03 1.825413e+03 9.399241e+31 2.425585e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 8.092000e+05 1.613000e+03 1.833796e+03 9.039187e+31 2.390412e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 8.381000e+05 1.613000e+03 1.842217e+03 8.884488e+31 2.377236e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 8.670000e+05 1.613000e+03 1.850677e+03 8.695470e+31 2.361498e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 8.959000e+05 1.613000e+03 1.859176e+03 8.502199e+31 2.324921e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 9.248000e+05 1.613000e+03 1.867714e+03 8.243795e+31 2.291625e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 9.537000e+05 1.613000e+03 1.876291e+03 7.976327e+31 2.255069e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 9.826000e+05 1.613000e+03 1.884908e+03 7.854831e+31 2.230525e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.011500e+06 1.613000e+03 1.893564e+03 7.697677e+31 2.210723e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.040400e+06 1.613000e+03 1.902260e+03 7.457242e+31 2.197351e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.069300e+06 1.613000e+03 1.910996e+03 7.416471e+31 2.214634e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.098200e+06 1.613000e+03 1.919772e+03 7.119711e+31 2.156711e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.127100e+06 1.613000e+03 1.928588e+03 7.000761e+31 2.156972e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.156000e+06 1.613000e+03 1.937445e+03 6.855171e+31 2.123460e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.184900e+06 1.613000e+03 1.946343e+03 6.697413e+31 2.107466e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.213800e+06 1.613000e+03 1.955281e+03 6.588616e+31 2.099265e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.242700e+06 1.613000e+03 1.964260e+03 6.362847e+31 2.038452e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.271600e+06 1.613000e+03 1.973281e+03 6.199416e+31 2.019308e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.300500e+06 1.613000e+03 1.982343e+03 6.048874e+31 1.985564e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.329400e+06 1.613000e+03 1.991447e+03 5.969401e+31 1.989474e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.358300e+06 1.613000e+03 2.000592e+03 5.907901e+31 1.991689e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.387200e+06 1.613000e+03 2.009780e+03 5.695565e+31 1.942372e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.416100e+06 1.613000e+03 2.019009e+03 5.496715e+31 1.904391e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.445000e+06 1.613000e+03 2.028281e+03 5.301632e+31 1.877371e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.473900e+06 1.613000e+03 2.037596e+03 4.944718e+31 1.830227e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.502800e+06 1.613000e+03 2.046953e+03 4.558157e+31 1.786508e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.531700e+06 1.613000e+03 2.056354e+03 4.304507e+31 1.761305e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.560600e+06 1.613000e+03 2.065797e+03 4.063826e+31 1.800801e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.589500e+06 1.613000e+03 2.075284e+03 4.077020e+31 1.741749e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.618400e+06 1.613000e+03 2.084815e+03 3.982321e+31 1.792959e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.647300e+06 1.613000e+03 2.094389e+03 3.830460e+31 1.703883e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.676200e+06 1.613000e+03 2.104007e+03 3.712136e+31 1.699546e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.705100e+06 1.613000e+03 2.113669e+03 3.611368e+31 1.689342e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.734000e+06 1.613000e+03 2.123376e+03 3.504255e+31 1.639863e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.762900e+06 1.613000e+03 2.133128e+03 3.400428e+31 1.649527e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.791800e+06 1.613000e+03 2.142924e+03 3.291582e+31 1.608715e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.820700e+06 1.613000e+03 2.152765e+03 3.153683e+31 1.571040e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.849600e+06 1.613000e+03 2.162651e+03 3.109841e+31 1.580243e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.878500e+06 1.613000e+03 2.172583e+03 2.982505e+31 1.536216e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.907400e+06 1.613000e+03 2.182560e+03 2.885470e+31 1.512409e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.936300e+06 1.613000e+03 2.192583e+03 2.829708e+31 1.538275e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.965200e+06 1.613000e+03 2.202652e+03 2.716209e+31 1.467144e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 1.994100e+06 1.613000e+03 2.212768e+03 2.622395e+31 1.469769e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.023000e+06 1.613000e+03 2.222930e+03 2.567342e+31 1.443206e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.051900e+06 1.613000e+03 2.233138e+03 2.458275e+31 1.409237e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.080800e+06 1.613000e+03 2.243394e+03 2.402652e+31 1.407206e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.109700e+06 1.613000e+03 2.253696e+03 2.333732e+31 1.412856e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.138600e+06 1.613000e+03 2.264046e+03 2.258749e+31 1.382760e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.167500e+06 1.613000e+03 2.274443e+03 2.192187e+31 1.341816e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.196400e+06 1.613000e+03 2.284888e+03 2.100306e+31 1.318281e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.225300e+06 1.613000e+03 2.295381e+03 2.042049e+31 1.317989e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.254200e+06 1.613000e+03 2.305923e+03 1.976659e+31 1.319846e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.283100e+06 1.613000e+03 2.316512e+03 1.891861e+31 1.263410e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.312000e+06 1.613000e+03 2.327151e+03 1.845274e+31 1.262534e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.340900e+06 1.613000e+03 2.337838e+03 1.793589e+31 1.255245e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.369800e+06 1.613000e+03 2.348574e+03 1.744275e+31 1.224077e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.398700e+06 1.613000e+03 2.359359e+03 1.685265e+31 1.177019e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.427600e+06 1.613000e+03 2.370194e+03 1.630638e+31 1.218726e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.456500e+06 1.613000e+03 2.381079e+03 1.598152e+31 1.295233e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.485400e+06 1.613000e+03 2.392014e+03 1.536570e+31 1.288296e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.514300e+06 1.613000e+03 2.402999e+03 1.534598e+31 1.074727e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.543200e+06 1.613000e+03 2.414035e+03 1.688949e+31 6.693185e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.572100e+06 1.613000e+03 2.425121e+03 1.663505e+31 6.812702e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.601000e+06 1.613000e+03 2.436258e+03 1.894833e+31 1.811255e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.629900e+06 1.613000e+03 2.447446e+03 5.230322e+31 4.751702e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.658800e+06 1.613000e+03 2.458686e+03 4.335472e+31 4.075767e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.687700e+06 1.613000e+03 2.469977e+03 9.648384e+31 4.233328e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.716600e+06 1.613000e+03 2.481320e+03 6.390745e+32 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.745500e+06 1.613000e+03 2.492715e+03 3.804546e+32 2.283399e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.774400e+06 1.613000e+03 2.504162e+03 1.378192e+33 2.450999e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.803300e+06 1.613000e+03 2.515663e+03 2.324771e+33 3.342235e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.832200e+06 1.613000e+03 2.527215e+03 1.166649e+33 5.763486e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
-0.000000e+00 2.861100e+06 1.613000e+03 2.538821e+03 6.975717e+32 1.424615e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 0.000000e+00 1.613000e+03 1.613000e+03 1.076506e+34 3.771468e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.890000e+04 1.613000e+03 1.620406e+03 2.933398e+34 6.118201e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 5.780000e+04 1.613000e+03 1.627846e+03 2.002438e+34 1.877722e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 8.670000e+04 1.613000e+03 1.635320e+03 3.161305e+34 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.156000e+05 1.613000e+03 1.642829e+03 2.291495e+33 5.267771e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.445000e+05 1.613000e+03 1.650372e+03 5.343252e+33 3.969531e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.734000e+05 1.613000e+03 1.657949e+03 5.915942e+33 4.188154e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.023000e+05 1.613000e+03 1.665561e+03 1.066040e+33 1.450521e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.312000e+05 1.613000e+03 1.673209e+03 3.394143e+32 1.103842e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.601000e+05 1.613000e+03 1.680891e+03 6.303023e+32 9.382921e+13 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.890000e+05 1.613000e+03 1.688609e+03 3.097193e+32 1.013811e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 3.179000e+05 1.613000e+03 1.696362e+03 1.522514e+32 3.033659e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 3.468000e+05 1.613000e+03 1.704151e+03 1.673588e+32 4.349316e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 3.757000e+05 1.613000e+03 1.711975e+03 1.509008e+32 3.930617e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 4.046000e+05 1.613000e+03 1.719836e+03 1.283860e+32 2.925526e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 4.335000e+05 1.613000e+03 1.727732e+03 1.267613e+32 2.452507e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 4.624000e+05 1.613000e+03 1.735665e+03 1.248468e+32 2.363781e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 4.913000e+05 1.613000e+03 1.743634e+03 1.217053e+32 2.594774e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 5.202000e+05 1.613000e+03 1.751640e+03 1.166762e+32 2.693980e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 5.491000e+05 1.613000e+03 1.759682e+03 1.138421e+32 2.690019e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 5.780000e+05 1.613000e+03 1.767762e+03 1.111257e+32 2.632545e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 6.069000e+05 1.613000e+03 1.775878e+03 1.088559e+32 2.590338e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 6.358000e+05 1.613000e+03 1.784032e+03 1.073289e+32 2.549884e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 6.647000e+05 1.613000e+03 1.792224e+03 1.058368e+32 2.536022e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 6.936000e+05 1.613000e+03 1.800452e+03 1.022272e+32 2.481818e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 7.225000e+05 1.613000e+03 1.808719e+03 9.881382e+31 2.448670e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 7.514000e+05 1.613000e+03 1.817024e+03 9.502679e+31 2.416720e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 7.803000e+05 1.613000e+03 1.825366e+03 9.249774e+31 2.432706e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 8.092000e+05 1.613000e+03 1.833748e+03 8.881693e+31 2.397185e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 8.381000e+05 1.613000e+03 1.842167e+03 8.722209e+31 2.383690e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 8.670000e+05 1.613000e+03 1.850625e+03 8.527815e+31 2.368076e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 8.959000e+05 1.613000e+03 1.859122e+03 8.329637e+31 2.330822e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 9.248000e+05 1.613000e+03 1.867658e+03 8.063706e+31 2.297496e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 9.537000e+05 1.613000e+03 1.876233e+03 7.791991e+31 2.260587e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 9.826000e+05 1.613000e+03 1.884848e+03 7.661392e+31 2.236067e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.011500e+06 1.613000e+03 1.893502e+03 7.496653e+31 2.216327e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.040400e+06 1.613000e+03 1.902196e+03 7.251043e+31 2.203398e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.069300e+06 1.613000e+03 1.910930e+03 7.204819e+31 2.220453e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.098200e+06 1.613000e+03 1.919704e+03 6.903449e+31 2.163181e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.127100e+06 1.613000e+03 1.928518e+03 6.780991e+31 2.164149e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.156000e+06 1.613000e+03 1.937373e+03 6.630086e+31 2.131167e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.184900e+06 1.613000e+03 1.946268e+03 6.466469e+31 2.116218e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.213800e+06 1.613000e+03 1.955204e+03 6.353271e+31 2.108668e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.242700e+06 1.613000e+03 1.964181e+03 6.121659e+31 2.048099e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.271600e+06 1.613000e+03 1.973200e+03 5.953919e+31 2.029722e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.300500e+06 1.613000e+03 1.982260e+03 5.798902e+31 1.996073e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.329400e+06 1.613000e+03 1.991361e+03 5.717013e+31 2.000887e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.358300e+06 1.613000e+03 2.000504e+03 5.652675e+31 2.003787e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.387200e+06 1.613000e+03 2.009689e+03 5.438149e+31 1.955045e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.416100e+06 1.613000e+03 2.018917e+03 5.236390e+31 1.918472e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.445000e+06 1.613000e+03 2.028186e+03 5.040030e+31 1.892205e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.473900e+06 1.613000e+03 2.037499e+03 4.682540e+31 1.846185e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.502800e+06 1.613000e+03 2.046854e+03 4.297005e+31 1.804295e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.531700e+06 1.613000e+03 2.056252e+03 4.046162e+31 1.779688e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.560600e+06 1.613000e+03 2.065693e+03 3.820175e+31 1.819427e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.589500e+06 1.613000e+03 2.075177e+03 3.833467e+31 1.760640e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.618400e+06 1.613000e+03 2.084705e+03 3.741295e+31 1.812914e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.647300e+06 1.613000e+03 2.094277e+03 3.583802e+31 1.722854e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.676200e+06 1.613000e+03 2.103893e+03 3.466924e+31 1.719269e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.705100e+06 1.613000e+03 2.113553e+03 3.363342e+31 1.709332e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.734000e+06 1.613000e+03 2.123257e+03 3.256073e+31 1.659905e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.762900e+06 1.613000e+03 2.133006e+03 3.150760e+31 1.670262e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.791800e+06 1.613000e+03 2.142799e+03 3.041003e+31 1.628005e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.820700e+06 1.613000e+03 2.152638e+03 2.900493e+31 1.589826e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.849600e+06 1.613000e+03 2.162522e+03 2.859733e+31 1.598318e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.878500e+06 1.613000e+03 2.172451e+03 2.725831e+31 1.552201e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.907400e+06 1.613000e+03 2.182425e+03 2.633890e+31 1.528196e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.936300e+06 1.613000e+03 2.192446e+03 2.575130e+31 1.553362e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.965200e+06 1.613000e+03 2.202512e+03 2.462155e+31 1.480507e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.994100e+06 1.613000e+03 2.212625e+03 2.366633e+31 1.482779e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.023000e+06 1.613000e+03 2.222784e+03 2.316757e+31 1.455373e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.051900e+06 1.613000e+03 2.232990e+03 2.200575e+31 1.418892e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.080800e+06 1.613000e+03 2.243242e+03 2.149435e+31 1.415761e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.109700e+06 1.613000e+03 2.253542e+03 2.081031e+31 1.420736e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.138600e+06 1.613000e+03 2.263889e+03 2.004874e+31 1.388595e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.167500e+06 1.613000e+03 2.274284e+03 1.937995e+31 1.346128e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.196400e+06 1.613000e+03 2.284726e+03 1.846569e+31 1.321736e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.225300e+06 1.613000e+03 2.295216e+03 1.793075e+31 1.320664e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.254200e+06 1.613000e+03 2.305754e+03 1.724264e+31 1.320965e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.283100e+06 1.613000e+03 2.316341e+03 1.642310e+31 1.263760e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.312000e+06 1.613000e+03 2.326976e+03 1.594610e+31 1.261995e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.340900e+06 1.613000e+03 2.337660e+03 1.543635e+31 1.253098e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.369800e+06 1.613000e+03 2.348394e+03 1.497064e+31 1.220041e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.398700e+06 1.613000e+03 2.359176e+03 1.432517e+31 1.171291e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.427600e+06 1.613000e+03 2.370008e+03 1.385378e+31 1.210629e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.456500e+06 1.613000e+03 2.380890e+03 1.341869e+31 1.285574e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.485400e+06 1.613000e+03 2.391822e+03 1.290311e+31 1.277510e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.514300e+06 1.613000e+03 2.402803e+03 1.282866e+31 1.064289e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.543200e+06 1.613000e+03 2.413836e+03 1.458402e+31 6.599404e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.572100e+06 1.613000e+03 2.424919e+03 1.420152e+31 6.707581e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.601000e+06 1.613000e+03 2.436053e+03 1.641006e+31 1.795452e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.629900e+06 1.613000e+03 2.447238e+03 4.956763e+31 4.733427e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.658800e+06 1.613000e+03 2.458474e+03 4.071948e+31 4.066132e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.687700e+06 1.613000e+03 2.469762e+03 9.412446e+31 4.216810e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.716600e+06 1.613000e+03 2.481102e+03 6.365493e+32 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.745500e+06 1.613000e+03 2.492493e+03 3.779807e+32 2.281238e+14 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.774400e+06 1.613000e+03 2.503938e+03 1.375793e+33 2.451081e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.803300e+06 1.613000e+03 2.515434e+03 2.322047e+33 3.341896e+16 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.832200e+06 1.613000e+03 2.526984e+03 1.164418e+33 5.762237e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 2.861100e+06 1.613000e+03 2.538586e+03 6.954306e+32 1.424040e+15 -1.000000e+00 -1.000000e+00 1.000000e+00
 

Modified: branches/active_compositions/tests/adiabatic_conditions/screen-output
===================================================================
--- branches/active_compositions/tests/adiabatic_conditions/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/adiabatic_conditions/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -2,9 +2,9 @@
 Number of degrees of freedom: 40,836 (25,090+3,201+12,545)
 
 *** Timestep 0:  t=0 seconds
-   Solving temperature system... 0 iterations.
+   Solving temperature system... 1 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+2 iterations.
+   Solving Stokes system... 30+3 iterations.
 
    Postprocessing:
 
@@ -20,27 +20,27 @@
      reference_cp:                                  1250
      reference_thermal_diffusivity:                 2.42424e-13
 
-     Writing graphical output:           output_adiabatic_conditions/solution-00000
-     RMS, max velocity:                  7.1e+08 m/s, 4.38e+09 m/s
+     Writing graphical output:           output-adiabatic_conditions/solution-00000
+     RMS, max velocity:                  7.09e+08 m/s, 4.38e+09 m/s
      Temperature min/avg/max:            1613 K, 1613 K, 1613 K
-     Heat fluxes through boundary parts: 1.309e-17 W, 1.453e-17 W, 4.979e-18 W, 7.033e-18 W
-     Writing depth average               output_adiabatic_conditions/depthaverage.plt
+     Heat fluxes through boundary parts: 3.628e-17 W, 6.092e-17 W, -2.625e-17 W, 2.246e-17 W
+     Writing depth average               output-adiabatic_conditions/depthaverage.plt
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |      48.7s |            |
+| Total wallclock time elapsed since start    |      39.2s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |      5.84s |        12% |
-| Assemble temperature system     |         1 |      13.4s |        27% |
-| Build Stokes preconditioner     |         1 |      3.74s |       7.7% |
-| Build temperature preconditioner|         1 |    0.0605s |      0.12% |
-| Solve Stokes system             |         1 |      1.01s |       2.1% |
-| Solve temperature system        |         1 |    0.0204s |     0.042% |
-| Initialization                  |         2 |      1.56s |       3.2% |
-| Postprocessing                  |         1 |      19.5s |        40% |
-| Setup dof systems               |         1 |      2.63s |       5.4% |
+| Assemble Stokes system          |         1 |      2.19s |       5.6% |
+| Assemble temperature system     |         1 |      5.58s |        14% |
+| Build Stokes preconditioner     |         1 |      1.32s |       3.4% |
+| Build temperature preconditioner|         1 |    0.0928s |      0.24% |
+| Solve Stokes system             |         1 |      1.55s |       3.9% |
+| Solve temperature system        |         1 |     0.153s |      0.39% |
+| Initialization                  |         2 |      1.12s |       2.9% |
+| Postprocessing                  |         1 |        18s |        46% |
+| Setup dof systems               |         1 |      7.85s |        20% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/adiabatic_conditions/statistics
===================================================================
--- branches/active_compositions/tests/adiabatic_conditions/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/adiabatic_conditions/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,18 +3,19 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-# 10: RMS velocity (m/s)
-# 11: Max. velocity (m/s)
-# 12: Minimal temperature (K)
-# 13: Average temperature (K)
-# 14: Maximal temperature (K)
-# 15: Average nondimensional temperature (K)
-# 16: Outward heat flux through boundary with indicator 0 (W)
-# 17: Outward heat flux through boundary with indicator 1 (W)
-# 18: Outward heat flux through boundary with indicator 2 (W)
-# 19: Outward heat flux through boundary with indicator 3 (W)
-0 0.0000e+00 3072 28291 12545 0 32 7.6881e-06 output_adiabatic_conditions/solution-00000 7.09961542e+08 4.38438852e+09 1.61300000e+03 1.61300000e+03 1.61300000e+03 1.00000000e+00 1.30856102e-17 1.45259708e-17 4.97853591e-18 7.03261716e-18 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+# 11: RMS velocity (m/s)
+# 12: Max. velocity (m/s)
+# 13: Minimal temperature (K)
+# 14: Average temperature (K)
+# 15: Maximal temperature (K)
+# 16: Average nondimensional temperature (K)
+# 17: Outward heat flux through boundary with indicator 0 (W)
+# 18: Outward heat flux through boundary with indicator 1 (W)
+# 19: Outward heat flux through boundary with indicator 2 (W)
+# 20: Outward heat flux through boundary with indicator 3 (W)
+0 0.0000e+00 3072 28291 12545 0 1 33 7.6904e-06 output-adiabatic_conditions/solution-00000 7.09365756e+08 4.38331430e+09 1.61300000e+03 1.61300000e+03 1.61300000e+03 1.00000000e+00 3.62797575e-17 6.09249752e-17 -2.62504621e-17 2.24556340e-17 

Modified: branches/active_compositions/tests/box-first-time-step/screen-output
===================================================================
--- branches/active_compositions/tests/box-first-time-step/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/box-first-time-step/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -2,7 +2,7 @@
 Number of degrees of freedom: 13,764 (8,450+1,089+4,225)
 
 *** Timestep 0:  t=0 seconds
-   Solving temperature system... 0 iterations.
+   Solving temperature system... 1 iterations.
    Rebuilding Stokes preconditioner...
    Solving Stokes system... 21 iterations.
 
@@ -21,25 +21,25 @@
      reference_thermal_diffusivity:                 8e-10
 
      Writing graphical output:           output-box-first-time-step/solution-00000
-     RMS, max velocity:                  9.06e-09 m/s, 3.25e-08 m/s
+     RMS, max velocity:                  9.07e-09 m/s, 3.25e-08 m/s
      Temperature min/avg/max:            0 K, 1.035 K, 1.1 K
      Heat fluxes through boundary parts: 1.668e-07 W, 8.017e-05 W, 2.402e-07 W, 2.402e-07 W
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.906s |            |
+| Total wallclock time elapsed since start    |        12s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0401s |       4.4% |
-| Assemble temperature system     |         1 |    0.0653s |       7.2% |
-| Build Stokes preconditioner     |         1 |    0.0665s |       7.3% |
-| Build temperature preconditioner|         1 |    0.0181s |         2% |
-| Solve Stokes system             |         1 |    0.0927s |        10% |
-| Solve temperature system        |         1 |   0.00163s |      0.18% |
-| Initialization                  |         2 |      0.03s |       3.3% |
-| Postprocessing                  |         1 |     0.463s |        51% |
-| Setup dof systems               |         1 |     0.102s |        11% |
+| Assemble Stokes system          |         1 |      0.87s |       7.2% |
+| Assemble temperature system     |         1 |      2.19s |        18% |
+| Build Stokes preconditioner     |         1 |     0.631s |       5.3% |
+| Build temperature preconditioner|         1 |    0.0313s |      0.26% |
+| Solve Stokes system             |         1 |     0.261s |       2.2% |
+| Solve temperature system        |         1 |    0.0394s |      0.33% |
+| Initialization                  |         2 |      0.16s |       1.3% |
+| Postprocessing                  |         1 |      4.84s |        40% |
+| Setup dof systems               |         1 |       2.2s |        18% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/box-first-time-step/statistics
===================================================================
--- branches/active_compositions/tests/box-first-time-step/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/box-first-time-step/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,18 +3,19 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-# 10: RMS velocity (m/s)
-# 11: Max. velocity (m/s)
-# 12: Minimal temperature (K)
-# 13: Average temperature (K)
-# 14: Maximal temperature (K)
-# 15: Average nondimensional temperature (K)
-# 16: Outward heat flux through boundary with indicator 0
-# 17: Outward heat flux through boundary with indicator 1
-# 18: Outward heat flux through boundary with indicator 2
-# 19: Outward heat flux through boundary with indicator 3
-0 0.0000e+00 1024 9539 4225 0 21 4.7533e+05 output-box-first-time-step/solution-00000 9.06251153e-09 3.24776919e-08 0.00000000e+00 1.03532014e+00 1.10000000e+00 1.03532014e+00 1.66800424e-07 8.01668004e-05 2.40192611e-07 2.40192611e-07 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+# 11: RMS velocity (m/s)
+# 12: Max. velocity (m/s)
+# 13: Minimal temperature (K)
+# 14: Average temperature (K)
+# 15: Maximal temperature (K)
+# 16: Average nondimensional temperature (K)
+# 17: Outward heat flux through boundary with indicator 0 (W)
+# 18: Outward heat flux through boundary with indicator 1 (W)
+# 19: Outward heat flux through boundary with indicator 2 (W)
+# 20: Outward heat flux through boundary with indicator 3 (W)
+0 0.0000e+00 1024 9539 4225 0 1 21 4.7507e+05 output-box-first-time-step/solution-00000 9.06752486e-09 3.24958188e-08 0.00000000e+00 1.03532014e+00 1.10000000e+00 1.03532014e+00 1.66800424e-07 8.01668004e-05 2.40192611e-07 2.40192611e-07 

Modified: branches/active_compositions/tests/box-first-time-step-alternate-bc/screen-output
===================================================================
--- branches/active_compositions/tests/box-first-time-step-alternate-bc/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/box-first-time-step-alternate-bc/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -2,7 +2,7 @@
 Number of degrees of freedom: 13,764 (8,450+1,089+4,225)
 
 *** Timestep 0:  t=0 seconds
-   Solving temperature system... 0 iterations.
+   Solving temperature system... 1 iterations.
    Rebuilding Stokes preconditioner...
    Solving Stokes system... 21 iterations.
 
@@ -21,25 +21,25 @@
      reference_thermal_diffusivity:                 8e-10
 
      Writing graphical output:           output-box-first-time-step-alternate-bc/solution-00000
-     RMS, max velocity:                  9.06e-09 m/s, 3.25e-08 m/s
+     RMS, max velocity:                  9.07e-09 m/s, 3.25e-08 m/s
      Temperature min/avg/max:            0 K, 1.035 K, 1.1 K
      Heat fluxes through boundary parts: 1.668e-07 W, 8.017e-05 W, 2.402e-07 W, 2.402e-07 W
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.906s |            |
+| Total wallclock time elapsed since start    |      11.1s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0433s |       4.8% |
-| Assemble temperature system     |         1 |    0.0616s |       6.8% |
-| Build Stokes preconditioner     |         1 |    0.0674s |       7.4% |
-| Build temperature preconditioner|         1 |    0.0189s |       2.1% |
-| Solve Stokes system             |         1 |    0.0968s |        11% |
-| Solve temperature system        |         1 |   0.00167s |      0.18% |
-| Initialization                  |         2 |    0.0301s |       3.3% |
-| Postprocessing                  |         1 |     0.453s |        50% |
-| Setup dof systems               |         1 |     0.103s |        11% |
+| Assemble Stokes system          |         1 |     0.908s |       8.2% |
+| Assemble temperature system     |         1 |      1.89s |        17% |
+| Build Stokes preconditioner     |         1 |     0.783s |       7.1% |
+| Build temperature preconditioner|         1 |    0.0595s |      0.54% |
+| Solve Stokes system             |         1 |     0.255s |       2.3% |
+| Solve temperature system        |         1 |    0.0591s |      0.53% |
+| Initialization                  |         2 |      0.19s |       1.7% |
+| Postprocessing                  |         1 |      4.42s |        40% |
+| Setup dof systems               |         1 |      1.46s |        13% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/box-first-time-step-alternate-bc/statistics
===================================================================
--- branches/active_compositions/tests/box-first-time-step-alternate-bc/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/box-first-time-step-alternate-bc/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,18 +3,19 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-# 10: RMS velocity (m/s)
-# 11: Max. velocity (m/s)
-# 12: Minimal temperature (K)
-# 13: Average temperature (K)
-# 14: Maximal temperature (K)
-# 15: Average nondimensional temperature (K)
-# 16: Outward heat flux through boundary with indicator 0
-# 17: Outward heat flux through boundary with indicator 1
-# 18: Outward heat flux through boundary with indicator 2
-# 19: Outward heat flux through boundary with indicator 3
-0 0.0000e+00 1024 9539 4225 0 21 4.7533e+05 output-box-first-time-step-alternate-bc/solution-00000 9.06251153e-09 3.24776919e-08 0.00000000e+00 1.03532014e+00 1.10000000e+00 1.03532014e+00 1.66800424e-07 8.01668004e-05 2.40192611e-07 2.40192611e-07 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+# 11: RMS velocity (m/s)
+# 12: Max. velocity (m/s)
+# 13: Minimal temperature (K)
+# 14: Average temperature (K)
+# 15: Maximal temperature (K)
+# 16: Average nondimensional temperature (K)
+# 17: Outward heat flux through boundary with indicator 0 (W)
+# 18: Outward heat flux through boundary with indicator 1 (W)
+# 19: Outward heat flux through boundary with indicator 2 (W)
+# 20: Outward heat flux through boundary with indicator 3 (W)
+0 0.0000e+00 1024 9539 4225 0 1 21 4.7507e+05 output-box-first-time-step-alternate-bc/solution-00000 9.06752486e-09 3.24958188e-08 0.00000000e+00 1.03532014e+00 1.10000000e+00 1.03532014e+00 1.66800424e-07 8.01668004e-05 2.40192611e-07 2.40192611e-07 

Modified: branches/active_compositions/tests/conservative_with_mpi/screen-output
===================================================================
--- branches/active_compositions/tests/conservative_with_mpi/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/conservative_with_mpi/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -4,25 +4,25 @@
 *** Timestep 0:  t=0 years
    Solving temperature system... 0 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+3 iterations.
+   Solving Stokes system... 30+2 iterations.
 
    Postprocessing:
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.132s |            |
+| Total wallclock time elapsed since start    |      1.04s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |   0.00596s |       4.5% |
-| Assemble temperature system     |         1 |     0.027s |        21% |
-| Build Stokes preconditioner     |         1 |    0.0121s |       9.2% |
-| Build temperature preconditioner|         1 |   0.00125s |      0.95% |
-| Solve Stokes system             |         1 |    0.0162s |        12% |
-| Solve temperature system        |         1 |  0.000857s |      0.65% |
-| Initialization                  |         2 |    0.0403s |        31% |
-| Postprocessing                  |         1 |  0.000157s |      0.12% |
-| Setup dof systems               |         1 |    0.0114s |       8.6% |
+| Assemble Stokes system          |         1 |    0.0775s |       7.5% |
+| Assemble temperature system     |         1 |     0.401s |        39% |
+| Build Stokes preconditioner     |         1 |     0.113s |        11% |
+| Build temperature preconditioner|         1 |   0.00113s |      0.11% |
+| Solve Stokes system             |         1 |    0.0348s |       3.4% |
+| Solve temperature system        |         1 |   0.00149s |      0.14% |
+| Initialization                  |         2 |    0.0834s |         8% |
+| Postprocessing                  |         1 |   0.00026s |     0.025% |
+| Setup dof systems               |         1 |      0.23s |        22% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/conservative_with_mpi/statistics
===================================================================
--- branches/active_compositions/tests/conservative_with_mpi/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/conservative_with_mpi/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (years)
-0 0.0000e+00 16 210 81 0 33 1.1317e-06 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (years)
+0 0.0000e+00 16 210 81 0 0 32 1.1317e-06 

Modified: branches/active_compositions/tests/graphical_output/screen-output
===================================================================
--- branches/active_compositions/tests/graphical_output/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/graphical_output/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -13,17 +13,18 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.308s |            |
+| Total wallclock time elapsed since start    |      1.02s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0194s |       6.3% |
-| Assemble temperature system     |         1 |    0.0892s |        29% |
-| Build Stokes preconditioner     |         1 |    0.0217s |         7% |
-| Build temperature preconditioner|         1 |  0.000785s |      0.26% |
-| Solve Stokes system             |         1 |    0.0132s |       4.3% |
-| Solve temperature system        |         1 |  0.000484s |      0.16% |
-| Postprocessing                  |         1 |    0.0825s |        27% |
-| Setup dof systems               |         1 |     0.033s |        11% |
+| Assemble Stokes system          |         1 |    0.0626s |       6.1% |
+| Assemble temperature system     |         1 |     0.323s |        32% |
+| Build Stokes preconditioner     |         1 |     0.102s |        10% |
+| Build temperature preconditioner|         1 |   0.00134s |      0.13% |
+| Solve Stokes system             |         1 |    0.0336s |       3.3% |
+| Solve temperature system        |         1 |   0.00111s |      0.11% |
+| Initialization                  |         2 |    0.0355s |       3.5% |
+| Postprocessing                  |         1 |     0.192s |        19% |
+| Setup dof systems               |         1 |     0.211s |        21% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/graphical_output/statistics
===================================================================
--- branches/active_compositions/tests/graphical_output/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/graphical_output/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,8 +3,9 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-0 0.0000e+00 16 187 81 0 28 3.4287e+01 output-graphical_output/solution-00000 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+0 0.0000e+00 16 187 81 0 0 28 3.4287e+01 output-graphical_output/solution-00000 

Modified: branches/active_compositions/tests/inclusion_2/screen-output
===================================================================
--- branches/active_compositions/tests/inclusion_2/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/inclusion_2/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -8,23 +8,23 @@
 
    Postprocessing:
      Writing graphical output:      output-inclusion_2/solution-00000
-     Errors u_L1, p_L1, u_L2, p_L2: 4.145860e-02, 5.044068e-01, 2.432442e-02, 3.912139e-01
+     Errors u_L1, p_L1, u_L2, p_L2: 4.145861e-02, 5.044066e-01, 2.432442e-02, 3.912138e-01
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.125s |            |
+| Total wallclock time elapsed since start    |     0.927s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |   0.00429s |       3.4% |
-| Assemble temperature system     |         1 |    0.0229s |        18% |
-| Build Stokes preconditioner     |         1 |    0.0102s |       8.1% |
-| Build temperature preconditioner|         1 |   0.00119s |      0.95% |
-| Solve Stokes system             |         1 |    0.0286s |        23% |
-| Solve temperature system        |         1 |   0.00047s |      0.37% |
-| Initialization                  |         2 |    0.0226s |        18% |
-| Postprocessing                  |         1 |     0.015s |        12% |
-| Setup dof systems               |         1 |   0.00741s |       5.9% |
+| Assemble Stokes system          |         1 |    0.0767s |       8.3% |
+| Assemble temperature system     |         1 |     0.334s |        36% |
+| Build Stokes preconditioner     |         1 |    0.0745s |         8% |
+| Build temperature preconditioner|         1 |   0.00128s |      0.14% |
+| Solve Stokes system             |         1 |    0.0475s |       5.1% |
+| Solve temperature system        |         1 |   0.00115s |      0.12% |
+| Initialization                  |         2 |    0.0353s |       3.8% |
+| Postprocessing                  |         1 |     0.211s |        23% |
+| Setup dof systems               |         1 |    0.0608s |       6.6% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/inclusion_2/statistics
===================================================================
--- branches/active_compositions/tests/inclusion_2/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/inclusion_2/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,8 +3,9 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-0 0.0000e+00 16 187 81 0 39 1.7685e-01 output-inclusion_2/solution-00000 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+0 0.0000e+00 16 187 81 0 0 39 1.7685e-01 output-inclusion_2/solution-00000 

Modified: branches/active_compositions/tests/inclusion_4/screen-output
===================================================================
--- branches/active_compositions/tests/inclusion_4/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/inclusion_4/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -4,27 +4,27 @@
 *** Timestep 0:  t=0 seconds
    Solving temperature system... 0 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+10 iterations.
+   Solving Stokes system... 30+11 iterations.
 
    Postprocessing:
      Writing graphical output:      output-inclusion_4/solution-00000
-     Errors u_L1, p_L1, u_L2, p_L2: 1.101014e-01, 1.242409e+00, 5.763692e-02, 1.475856e+00
+     Errors u_L1, p_L1, u_L2, p_L2: 1.101014e-01, 1.242403e+00, 5.763690e-02, 1.475836e+00
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.436s |            |
+| Total wallclock time elapsed since start    |      3.11s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0135s |       3.1% |
-| Assemble temperature system     |         1 |    0.0324s |       7.4% |
-| Build Stokes preconditioner     |         1 |    0.0258s |       5.9% |
-| Build temperature preconditioner|         1 |   0.00544s |       1.2% |
-| Solve Stokes system             |         1 |     0.176s |        40% |
-| Solve temperature system        |         1 |  0.000785s |      0.18% |
-| Initialization                  |         2 |    0.0252s |       5.8% |
-| Postprocessing                  |         1 |      0.11s |        25% |
-| Setup dof systems               |         1 |    0.0295s |       6.8% |
+| Assemble Stokes system          |         1 |     0.217s |         7% |
+| Assemble temperature system     |         1 |     0.692s |        22% |
+| Build Stokes preconditioner     |         1 |     0.174s |       5.6% |
+| Build temperature preconditioner|         1 |   0.00533s |      0.17% |
+| Solve Stokes system             |         1 |     0.256s |       8.3% |
+| Solve temperature system        |         1 |    0.0053s |      0.17% |
+| Initialization                  |         2 |    0.0767s |       2.5% |
+| Postprocessing                  |         1 |      1.02s |        33% |
+| Setup dof systems               |         1 |     0.348s |        11% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/inclusion_4/statistics
===================================================================
--- branches/active_compositions/tests/inclusion_4/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/inclusion_4/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,8 +3,9 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-0 0.0000e+00 256 2467 1089 0 40 4.4212e-02 output-inclusion_4/solution-00000 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+0 0.0000e+00 256 2467 1089 0 0 41 4.4212e-02 output-inclusion_4/solution-00000 

Modified: branches/active_compositions/tests/inclusion_adaptive/screen-output
===================================================================
--- branches/active_compositions/tests/inclusion_adaptive/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/inclusion_adaptive/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -8,10 +8,10 @@
 
    Postprocessing:
      Writing graphical output:      output-inclusion_adaptive/solution-00000
-     Errors u_L1, p_L1, u_L2, p_L2: 1.728441e-01, 1.486559e+00, 8.838171e-02, 1.109955e+00
+     Errors u_L1, p_L1, u_L2, p_L2: 1.728441e-01, 1.486558e+00, 8.838170e-02, 1.109955e+00
 
-Number of active cells: 94 (on 5 levels)
-Number of degrees of freedom: 1,442 (882+119+441)
+Number of active cells: 91 (on 5 levels)
+Number of degrees of freedom: 1,403 (858+116+429)
 
 *** Timestep 0:  t=0 seconds
    Solving temperature system... 0 iterations.
@@ -20,19 +20,19 @@
 
    Postprocessing:
      Writing graphical output:      output-inclusion_adaptive/solution-00001
-     Errors u_L1, p_L1, u_L2, p_L2: 1.197106e-01, 1.286040e+00, 6.230476e-02, 1.287985e+00
+     Errors u_L1, p_L1, u_L2, p_L2: 1.242982e-01, 1.255978e+00, 6.452254e-02, 1.175021e+00
 
-Number of active cells: 148 (on 6 levels)
-Number of degrees of freedom: 2,326 (1,426+187+713)
+Number of active cells: 145 (on 6 levels)
+Number of degrees of freedom: 2,287 (1,402+184+701)
 
 *** Timestep 0:  t=0 seconds
    Solving temperature system... 0 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+15 iterations.
+   Solving Stokes system... 30+13 iterations.
 
    Postprocessing:
      Writing graphical output:      output-inclusion_adaptive/solution-00002
-     Errors u_L1, p_L1, u_L2, p_L2: 6.243732e-02, 6.581966e-01, 3.272050e-02, 7.599117e-01
+     Errors u_L1, p_L1, u_L2, p_L2: 7.327782e-02, 6.591830e-01, 3.820852e-02, 5.526678e-01
 
 Number of active cells: 229 (on 7 levels)
 Number of degrees of freedom: 3,509 (2,154+278+1,077)
@@ -44,10 +44,10 @@
 
    Postprocessing:
      Writing graphical output:      output-inclusion_adaptive/solution-00003
-     Errors u_L1, p_L1, u_L2, p_L2: 2.996881e-02, 5.410807e-01, 1.591665e-02, 1.177301e+00
+     Errors u_L1, p_L1, u_L2, p_L2: 3.200656e-02, 5.565040e-01, 1.704239e-02, 1.142766e+00
 
-Number of active cells: 340 (on 8 levels)
-Number of degrees of freedom: 5,264 (3,234+413+1,617)
+Number of active cells: 325 (on 8 levels)
+Number of degrees of freedom: 5,082 (3,122+399+1,561)
 
 *** Timestep 0:  t=0 seconds
    Solving temperature system... 0 iterations.
@@ -56,37 +56,37 @@
 
    Postprocessing:
      Writing graphical output:      output-inclusion_adaptive/solution-00004
-     Errors u_L1, p_L1, u_L2, p_L2: 1.926539e-02, 4.014865e-01, 1.030092e-02, 9.626832e-01
+     Errors u_L1, p_L1, u_L2, p_L2: 2.209050e-02, 4.386382e-01, 1.174566e-02, 9.889714e-01
 
-Number of active cells: 502 (on 8 levels)
-Number of degrees of freedom: 7,734 (4,754+603+2,377)
+Number of active cells: 505 (on 8 levels)
+Number of degrees of freedom: 7,812 (4,802+609+2,401)
 
 *** Timestep 0:  t=0 seconds
    Solving temperature system... 0 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+13 iterations.
+   Solving Stokes system... 30+12 iterations.
 
    Postprocessing:
      Writing graphical output:      output-inclusion_adaptive/solution-00005
-     Errors u_L1, p_L1, u_L2, p_L2: 1.233480e-02, 2.860685e-01, 6.633396e-03, 8.115277e-01
+     Errors u_L1, p_L1, u_L2, p_L2: 1.259834e-02, 3.095804e-01, 6.762907e-03, 8.868306e-01
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |      2.45s |            |
+| Total wallclock time elapsed since start    |      25.5s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         6 |    0.0863s |       3.5% |
-| Assemble temperature system     |         6 |     0.183s |       7.5% |
-| Build Stokes preconditioner     |         6 |     0.139s |       5.7% |
-| Build temperature preconditioner|         6 |    0.0261s |       1.1% |
-| Solve Stokes system             |         6 |      1.31s |        54% |
-| Solve temperature system        |         6 |   0.00465s |      0.19% |
-| Initialization                  |         7 |    0.0414s |       1.7% |
-| Postprocessing                  |         6 |     0.281s |        11% |
-| Refine mesh structure, part 1   |         5 |     0.139s |       5.7% |
-| Refine mesh structure, part 2   |         5 |   0.00496s |       0.2% |
-| Setup dof systems               |         6 |     0.201s |       8.2% |
+| Assemble Stokes system          |         6 |      2.24s |       8.8% |
+| Assemble temperature system     |         6 |      4.46s |        18% |
+| Build Stokes preconditioner     |         6 |      1.86s |       7.3% |
+| Build temperature preconditioner|         6 |    0.0253s |     0.099% |
+| Solve Stokes system             |         6 |      3.04s |        12% |
+| Solve temperature system        |         6 |    0.0567s |      0.22% |
+| Initialization                  |         7 |     0.642s |       2.5% |
+| Postprocessing                  |         6 |      4.72s |        19% |
+| Refine mesh structure, part 1   |         5 |      2.12s |       8.3% |
+| Refine mesh structure, part 2   |         5 |    0.0842s |      0.33% |
+| Setup dof systems               |         6 |      4.18s |        16% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/inclusion_adaptive/statistics
===================================================================
--- branches/active_compositions/tests/inclusion_adaptive/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/inclusion_adaptive/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,13 +3,14 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-# 9: Visualization file name
-0 0.0000e+00  64  659  289 0 36 8.8424e-02 output-inclusion_adaptive/solution-00000 
-0 0.0000e+00  94 1001  441 0 42 8.8424e-02 output-inclusion_adaptive/solution-00001 
-0 0.0000e+00 148 1613  713 0 45 8.7135e-02 output-inclusion_adaptive/solution-00002 
-0 0.0000e+00 229 2432 1077 0 44 7.5246e-02 output-inclusion_adaptive/solution-00003 
-0 0.0000e+00 340 3647 1617 0 43 6.3933e-02 output-inclusion_adaptive/solution-00004 
-0 0.0000e+00 502 5357 2377 0 43 4.5800e-02 output-inclusion_adaptive/solution-00005 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+# 10: Visualization file name
+0 0.0000e+00  64  659  289 0 0 36 8.8424e-02 output-inclusion_adaptive/solution-00000 
+0 0.0000e+00  91  974  429 0 0 42 8.8424e-02 output-inclusion_adaptive/solution-00001 
+0 0.0000e+00 145 1586  701 0 0 43 8.6708e-02 output-inclusion_adaptive/solution-00002 
+0 0.0000e+00 229 2432 1077 0 0 44 7.5177e-02 output-inclusion_adaptive/solution-00003 
+0 0.0000e+00 325 3521 1561 0 0 43 6.3999e-02 output-inclusion_adaptive/solution-00004 
+0 0.0000e+00 505 5411 2401 0 0 42 4.5840e-02 output-inclusion_adaptive/solution-00005 

Modified: branches/active_compositions/tests/non_conservative_with_mpi/screen-output
===================================================================
--- branches/active_compositions/tests/non_conservative_with_mpi/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/non_conservative_with_mpi/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -11,18 +11,18 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |      1.44s |            |
+| Total wallclock time elapsed since start    |      0.73s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |     0.124s |       8.6% |
-| Assemble temperature system     |         1 |     0.496s |        34% |
-| Build Stokes preconditioner     |         1 |     0.137s |       9.5% |
-| Build temperature preconditioner|         1 |    0.0211s |       1.5% |
-| Solve Stokes system             |         1 |    0.0484s |       3.4% |
-| Solve temperature system        |         1 |   0.00125s |     0.087% |
-| Initialization                  |         2 |      0.17s |        12% |
-| Postprocessing                  |         1 |  0.000486s |     0.034% |
-| Setup dof systems               |         1 |     0.278s |        19% |
+| Assemble Stokes system          |         1 |    0.0992s |        14% |
+| Assemble temperature system     |         1 |     0.338s |        46% |
+| Build Stokes preconditioner     |         1 |    0.0858s |        12% |
+| Build temperature preconditioner|         1 |   0.00116s |      0.16% |
+| Solve Stokes system             |         1 |    0.0299s |       4.1% |
+| Solve temperature system        |         1 |   0.00146s |       0.2% |
+| Initialization                  |         2 |     0.039s |       5.3% |
+| Postprocessing                  |         1 |  0.000244s |     0.033% |
+| Setup dof systems               |         1 |    0.0834s |        11% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/non_conservative_with_mpi/statistics
===================================================================
--- branches/active_compositions/tests/non_conservative_with_mpi/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/non_conservative_with_mpi/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (years)
-0 0.0000e+00 16 187 81 0 28 1.0865e-06 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (years)
+0 0.0000e+00 16 187 81 0 0 28 1.0865e-06 

Modified: branches/active_compositions/tests/passive_comp/depthaverage.plt
===================================================================
--- branches/active_compositions/tests/passive_comp/depthaverage.plt	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/passive_comp/depthaverage.plt	2012-10-18 20:18:18 UTC (rev 1286)
@@ -1,304 +1,304 @@
 # time, depth, avg T, avg C_1, adiabatic T, velocity magnitude, avg sinking velocity, avg Vs, avg Vp, avg viscosity
-0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 0.000000e+00 2.012118e+02 1.187016e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.855000e+04 0.000000e+00 5.000000e-01 0.000000e+00 1.897418e+02 2.536934e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 5.710000e+04 0.000000e+00 5.000000e-01 0.000000e+00 1.993509e+02 3.214750e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 8.565000e+04 0.000000e+00 5.000000e-01 0.000000e+00 1.924846e+02 4.159435e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.142000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.884987e+02 4.580267e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.427500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.786890e+02 3.310375e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.713000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.861899e+02 4.396974e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.998500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.816332e+02 3.510838e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.284000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.775940e+02 1.943937e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.569500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.689824e+02 1.174468e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.855000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.745266e+02 2.606016e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 0.000000e+00 2.012118e+02 1.187018e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.855000e+04 0.000000e+00 5.000000e-01 0.000000e+00 1.897418e+02 2.536941e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 5.710000e+04 0.000000e+00 5.000000e-01 0.000000e+00 1.993509e+02 3.214753e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 8.565000e+04 0.000000e+00 5.000000e-01 0.000000e+00 1.924846e+02 4.159441e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.142000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.884987e+02 4.580274e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.427500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.786890e+02 3.310390e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.713000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.861899e+02 4.396979e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.998500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.816332e+02 3.510846e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.284000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.775940e+02 1.943944e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.569500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.689824e+02 1.174522e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.855000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.745266e+02 2.606044e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 3.140500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.716378e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 3.426000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.660466e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 3.711500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.653715e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 3.997000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.639405e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 4.282500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.614007e+02 3.197444e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 4.568000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.560390e+02 1.771588e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 4.853500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.566735e+02 3.580115e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 5.139000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.543210e+02 1.218454e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 5.424500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.518750e+02 2.870310e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 5.710000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.465781e+02 3.857780e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 4.282500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.614007e+02 3.197741e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 4.568000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.560390e+02 1.771596e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 4.853500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.566735e+02 3.580126e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 5.139000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.543210e+02 1.218456e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 5.424500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.518750e+02 2.870311e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 5.710000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.465781e+02 3.857779e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 5.995500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.479401e+02 3.808518e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 6.281000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.455619e+02 3.912991e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 6.566500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.423338e+02 3.470575e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 6.852000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.394083e+02 2.729165e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 6.566500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.423338e+02 3.470574e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 6.852000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.394083e+02 2.729163e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 7.137500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.391185e+02 1.801824e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 7.423000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.365503e+02 8.301008e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 7.708500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.320790e+02 5.540257e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 7.423000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.365503e+02 8.301015e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 7.708500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.320790e+02 5.540253e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 7.994000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.311070e+02 1.002646e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 8.279500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.291416e+02 1.101862e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 8.565000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.276230e+02 1.606873e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 8.279500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.291416e+02 1.101861e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 8.565000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.276230e+02 1.606872e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 8.850500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.236285e+02 1.353831e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 9.136000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.234168e+02 1.530943e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 9.421500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.214399e+02 1.378130e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 9.707000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.196474e+02 1.191817e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 9.992500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.154719e+02 4.189362e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.027800e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.159218e+02 4.391646e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.056350e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.140651e+02 1.132825e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 9.136000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.234168e+02 1.530942e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 9.421500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.214399e+02 1.378128e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 9.707000e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.196474e+02 1.191815e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 9.992500e+05 0.000000e+00 5.000000e-01 0.000000e+00 1.154719e+02 4.189356e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.027800e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.159218e+02 4.391631e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.056350e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.140651e+02 1.132819e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 1.084900e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.120144e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.113450e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.080349e+02 7.213622e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.142000e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.084907e+02 1.301575e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.170550e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.067114e+02 1.695531e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.199100e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.049824e+02 3.079848e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.227650e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.009258e+02 1.148141e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.256200e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.013853e+02 9.826697e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.284750e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.968169e+01 1.158756e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.313300e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.738458e+01 2.007671e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.341850e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.594707e+01 1.571179e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.370400e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.474175e+01 1.449613e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.398950e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.298856e+01 1.147349e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.427500e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.016104e+01 6.367200e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.456050e+06 0.000000e+00 5.000000e-01 0.000000e+00 8.959000e+01 6.117152e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.484600e+06 0.000000e+00 5.000000e-01 0.000000e+00 8.748786e+01 2.241943e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.513150e+06 0.000000e+00 5.000000e-01 0.000000e+00 8.424067e+01 2.452705e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.541700e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.564109e+01 4.919469e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.570250e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.434013e+01 7.337485e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.598800e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.299828e+01 1.063164e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.627350e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.161096e+01 1.347953e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.655900e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.035508e+01 1.466773e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.684450e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.898270e+01 1.307139e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.713000e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.762137e+01 8.946918e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.741550e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.624960e+01 6.584273e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.770100e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.531208e+01 2.650382e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.798650e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.421609e+01 5.933294e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.827200e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.291830e+01 4.423956e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.855750e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.170267e+01 1.773382e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.884300e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.047019e+01 3.565837e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.912850e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.927047e+01 7.691540e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.941400e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.804984e+01 1.477485e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.969950e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.685619e+01 2.041132e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 1.998500e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.595186e+01 2.376373e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.027050e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.496441e+01 1.847350e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.055600e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.382243e+01 1.393246e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.084150e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.273088e+01 6.458029e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.112700e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.161442e+01 1.101014e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.113450e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.080349e+02 7.213523e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.142000e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.084907e+02 1.301568e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.170550e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.067114e+02 1.695520e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.199100e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.049824e+02 3.079826e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.227650e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.009258e+02 1.148134e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.256200e+06 0.000000e+00 5.000000e-01 0.000000e+00 1.013853e+02 9.826630e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.284750e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.968170e+01 1.158748e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.313300e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.738458e+01 2.007659e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.341850e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.594707e+01 1.571167e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.370400e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.474175e+01 1.449602e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.398950e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.298857e+01 1.147338e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.427500e+06 0.000000e+00 5.000000e-01 0.000000e+00 9.016104e+01 6.367104e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.456050e+06 0.000000e+00 5.000000e-01 0.000000e+00 8.959000e+01 6.117076e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.484600e+06 0.000000e+00 5.000000e-01 0.000000e+00 8.748786e+01 2.241904e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.513150e+06 0.000000e+00 5.000000e-01 0.000000e+00 8.424067e+01 2.452667e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.541700e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.564110e+01 4.919415e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.570250e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.434013e+01 7.337413e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.598800e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.299828e+01 1.063150e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.627350e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.161096e+01 1.347935e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.655900e+06 0.000000e+00 5.000000e-01 0.000000e+00 7.035508e+01 1.466752e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.684450e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.898270e+01 1.307114e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.713000e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.762137e+01 8.946676e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.741550e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.624960e+01 6.584131e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.770100e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.531208e+01 2.650285e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.798650e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.421609e+01 5.932932e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.827200e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.291830e+01 4.423590e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.855750e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.170267e+01 1.773344e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.884300e+06 0.000000e+00 5.000000e-01 0.000000e+00 6.047019e+01 3.565743e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.912850e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.927047e+01 7.691366e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.941400e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.804984e+01 1.477462e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.969950e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.685619e+01 2.041104e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 1.998500e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.595186e+01 2.376345e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.027050e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.496441e+01 1.847323e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.055600e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.382243e+01 1.393220e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.084150e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.273088e+01 6.457878e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.112700e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.161442e+01 1.100977e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 2.141250e+06 0.000000e+00 5.000000e-01 0.000000e+00 5.052045e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.169800e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.926079e+01 8.947379e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.198350e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.807402e+01 8.298580e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.226900e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.735885e+01 4.050458e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.255450e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.641569e+01 1.005802e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.284000e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.537305e+01 1.612989e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.312550e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.437731e+01 1.978594e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.341100e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.344287e+01 2.432840e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.369650e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.249957e+01 2.257211e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.398200e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.146628e+01 1.484452e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.426750e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.047953e+01 5.908212e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.455300e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.953862e+01 6.588931e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.169800e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.926079e+01 8.946796e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.198350e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.807402e+01 8.297999e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.226900e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.735885e+01 4.050397e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.255450e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.641569e+01 1.005791e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.284000e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.537305e+01 1.612978e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.312550e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.437731e+01 1.978583e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.341100e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.344287e+01 2.432829e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.369650e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.249957e+01 2.257200e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.398200e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.146628e+01 1.484442e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.426750e+06 0.000000e+00 5.000000e-01 0.000000e+00 4.047953e+01 5.908138e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.455300e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.953862e+01 6.588069e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 2.483850e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.926663e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 0.000000e+00 2.512400e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.815811e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.540950e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.724872e+01 2.197559e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.569500e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.633305e+01 1.379029e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.598050e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.538326e+01 6.197270e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.626600e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.460461e+01 8.532277e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.655150e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.378657e+01 1.478432e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.683700e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.285148e+01 1.789126e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.712250e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.260658e+01 2.403297e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.740800e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.149024e+01 1.567468e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.769350e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.070152e+01 1.477675e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.797900e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.008072e+01 1.203530e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-0.000000e+00 2.826450e+06 0.000000e+00 5.000000e-01 0.000000e+00 2.916253e+01 4.725847e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.540950e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.724872e+01 2.197459e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.569500e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.633305e+01 1.379019e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.598050e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.538326e+01 6.197234e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.626600e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.460461e+01 8.532224e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.655150e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.378657e+01 1.478426e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.683700e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.285148e+01 1.789119e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.712250e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.260658e+01 2.403290e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.740800e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.149024e+01 1.567463e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.769350e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.070152e+01 1.477670e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.797900e+06 0.000000e+00 5.000000e-01 0.000000e+00 3.008072e+01 1.203527e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+0.000000e+00 2.826450e+06 0.000000e+00 5.000000e-01 0.000000e+00 2.916253e+01 4.725835e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 
-2.816248e+12 0.000000e+00 8.655388e-05 5.000000e-01 0.000000e+00 2.012118e+02 1.187016e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.855000e+04 2.703004e-04 5.000000e-01 0.000000e+00 1.897418e+02 2.536934e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 5.710000e+04 2.546403e-04 5.000000e-01 0.000000e+00 1.993509e+02 3.214750e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 8.565000e+04 4.303867e-04 5.000000e-01 0.000000e+00 1.924846e+02 4.159435e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.142000e+05 6.008735e-04 5.000000e-01 0.000000e+00 1.884987e+02 4.580267e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.427500e+05 7.793808e-04 5.000000e-01 0.000000e+00 1.786890e+02 3.310375e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.713000e+05 7.803644e-04 5.000000e-01 0.000000e+00 1.861899e+02 4.396974e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.998500e+05 9.371656e-04 5.000000e-01 0.000000e+00 1.816332e+02 3.510838e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.284000e+05 1.106615e-03 5.000000e-01 0.000000e+00 1.775940e+02 1.943937e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.569500e+05 1.239990e-03 5.000000e-01 0.000000e+00 1.689824e+02 1.174468e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.855000e+05 1.304476e-03 5.000000e-01 0.000000e+00 1.745266e+02 2.606016e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 0.000000e+00 8.655391e-05 5.000000e-01 0.000000e+00 2.012118e+02 1.187018e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.855000e+04 2.703006e-04 5.000000e-01 0.000000e+00 1.897418e+02 2.536941e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 5.710000e+04 2.546403e-04 5.000000e-01 0.000000e+00 1.993509e+02 3.214753e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 8.565000e+04 4.303868e-04 5.000000e-01 0.000000e+00 1.924846e+02 4.159441e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.142000e+05 6.008735e-04 5.000000e-01 0.000000e+00 1.884987e+02 4.580274e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.427500e+05 7.793809e-04 5.000000e-01 0.000000e+00 1.786890e+02 3.310390e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.713000e+05 7.803644e-04 5.000000e-01 0.000000e+00 1.861899e+02 4.396979e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.998500e+05 9.371657e-04 5.000000e-01 0.000000e+00 1.816332e+02 3.510846e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.284000e+05 1.106615e-03 5.000000e-01 0.000000e+00 1.775940e+02 1.943944e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.569500e+05 1.239990e-03 5.000000e-01 0.000000e+00 1.689824e+02 1.174522e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.855000e+05 1.304476e-03 5.000000e-01 0.000000e+00 1.745266e+02 2.606044e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 2.816248e+12 3.140500e+05 1.440487e-03 5.000000e-01 0.000000e+00 1.716378e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 2.816248e+12 3.426000e+05 1.581894e-03 5.000000e-01 0.000000e+00 1.660466e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 2.816248e+12 3.711500e+05 1.559042e-03 5.000000e-01 0.000000e+00 1.653715e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 2.816248e+12 3.997000e+05 1.484566e-03 5.000000e-01 0.000000e+00 1.639405e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 4.282500e+05 1.190403e-03 5.000000e-01 0.000000e+00 1.614007e+02 3.197444e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 4.568000e+05 9.339095e-04 5.000000e-01 0.000000e+00 1.560390e+02 1.771588e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 4.853500e+05 8.562536e-04 5.000000e-01 0.000000e+00 1.566735e+02 3.580115e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 5.139000e+05 6.838836e-04 5.000000e-01 0.000000e+00 1.543210e+02 1.218454e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 5.424500e+05 5.307964e-04 5.000000e-01 0.000000e+00 1.518750e+02 2.870310e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 5.710000e+05 4.070724e-04 5.000000e-01 0.000000e+00 1.465781e+02 3.857780e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 5.995500e+05 3.587907e-04 5.000000e-01 0.000000e+00 1.479401e+02 3.808518e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 6.281000e+05 2.844744e-04 5.000000e-01 0.000000e+00 1.455619e+02 3.912991e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 6.566500e+05 2.422570e-04 5.000000e-01 0.000000e+00 1.423338e+02 3.470575e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 6.852000e+05 2.398861e-04 5.000000e-01 0.000000e+00 1.394083e+02 2.729165e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 7.137500e+05 2.327468e-04 5.000000e-01 0.000000e+00 1.391185e+02 1.801824e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 7.423000e+05 2.518383e-04 5.000000e-01 0.000000e+00 1.365503e+02 8.301008e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 7.708500e+05 2.292527e-04 5.000000e-01 0.000000e+00 1.320790e+02 5.540257e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 7.994000e+05 2.094494e-04 5.000000e-01 0.000000e+00 1.311070e+02 1.002646e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 8.279500e+05 1.733966e-04 5.000000e-01 0.000000e+00 1.291416e+02 1.101862e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 8.565000e+05 1.491044e-04 5.000000e-01 0.000000e+00 1.276230e+02 1.606873e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 8.850500e+05 1.263787e-04 5.000000e-01 0.000000e+00 1.236285e+02 1.353831e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 9.136000e+05 1.298418e-04 5.000000e-01 0.000000e+00 1.234168e+02 1.530943e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 9.421500e+05 1.359821e-04 5.000000e-01 0.000000e+00 1.214399e+02 1.378130e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 9.707000e+05 1.584705e-04 5.000000e-01 0.000000e+00 1.196474e+02 1.191817e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 9.992500e+05 1.868805e-04 5.000000e-01 0.000000e+00 1.154719e+02 4.189362e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.027800e+06 2.117798e-04 5.000000e-01 0.000000e+00 1.159218e+02 4.391646e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.056350e+06 2.593110e-04 5.000000e-01 0.000000e+00 1.140651e+02 1.132825e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.084900e+06 3.233751e-04 5.000000e-01 0.000000e+00 1.120144e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.113450e+06 3.493757e-04 5.000000e-01 0.000000e+00 1.080349e+02 7.213622e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.142000e+06 3.640197e-04 5.000000e-01 0.000000e+00 1.084907e+02 1.301575e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.170550e+06 3.479519e-04 5.000000e-01 0.000000e+00 1.067114e+02 1.695531e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.199100e+06 2.908806e-04 5.000000e-01 0.000000e+00 1.049824e+02 3.079848e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.227650e+06 2.174643e-04 5.000000e-01 0.000000e+00 1.009258e+02 1.148141e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.256200e+06 2.185184e-04 5.000000e-01 0.000000e+00 1.013853e+02 9.826697e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.284750e+06 1.879573e-04 5.000000e-01 0.000000e+00 9.968169e+01 1.158756e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.313300e+06 1.773583e-04 5.000000e-01 0.000000e+00 9.738458e+01 2.007671e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.341850e+06 1.734029e-04 5.000000e-01 0.000000e+00 9.594707e+01 1.571179e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.370400e+06 1.745907e-04 5.000000e-01 0.000000e+00 9.474175e+01 1.449613e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.398950e+06 1.870562e-04 5.000000e-01 0.000000e+00 9.298856e+01 1.147349e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.427500e+06 2.277700e-04 5.000000e-01 0.000000e+00 9.016104e+01 6.367200e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.456050e+06 2.295074e-04 5.000000e-01 0.000000e+00 8.959000e+01 6.117152e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.484600e+06 2.353072e-04 5.000000e-01 0.000000e+00 8.748786e+01 2.241943e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.513150e+06 2.453856e-04 5.000000e-01 0.000000e+00 8.424067e+01 2.452705e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.541700e+06 2.232303e-04 5.000000e-01 0.000000e+00 7.564109e+01 4.919469e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.570250e+06 1.909631e-04 5.000000e-01 0.000000e+00 7.434013e+01 7.337485e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.598800e+06 1.647535e-04 5.000000e-01 0.000000e+00 7.299828e+01 1.063164e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.627350e+06 1.459704e-04 5.000000e-01 0.000000e+00 7.161096e+01 1.347953e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.655900e+06 1.424832e-04 5.000000e-01 0.000000e+00 7.035508e+01 1.466773e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.684450e+06 1.536405e-04 5.000000e-01 0.000000e+00 6.898270e+01 1.307139e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.713000e+06 1.825147e-04 5.000000e-01 0.000000e+00 6.762137e+01 8.946918e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.741550e+06 2.239034e-04 5.000000e-01 0.000000e+00 6.624960e+01 6.584273e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.770100e+06 3.024685e-04 5.000000e-01 0.000000e+00 6.531208e+01 2.650382e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.798650e+06 3.404528e-04 5.000000e-01 0.000000e+00 6.421609e+01 5.933294e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.827200e+06 3.666257e-04 5.000000e-01 0.000000e+00 6.291830e+01 4.423956e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.855750e+06 3.712864e-04 5.000000e-01 0.000000e+00 6.170267e+01 1.773382e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.884300e+06 3.312680e-04 5.000000e-01 0.000000e+00 6.047019e+01 3.565837e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.912850e+06 2.628759e-04 5.000000e-01 0.000000e+00 5.927047e+01 7.691540e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.941400e+06 2.206961e-04 5.000000e-01 0.000000e+00 5.804984e+01 1.477485e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.969950e+06 2.029753e-04 5.000000e-01 0.000000e+00 5.685619e+01 2.041132e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 1.998500e+06 2.161352e-04 5.000000e-01 0.000000e+00 5.595186e+01 2.376373e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.027050e+06 2.385333e-04 5.000000e-01 0.000000e+00 5.496441e+01 1.847350e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.055600e+06 2.810429e-04 5.000000e-01 0.000000e+00 5.382243e+01 1.393246e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.084150e+06 3.568878e-04 5.000000e-01 0.000000e+00 5.273088e+01 6.458029e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.112700e+06 4.513244e-04 5.000000e-01 0.000000e+00 5.161442e+01 1.101014e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.141250e+06 5.585547e-04 5.000000e-01 0.000000e+00 5.052045e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.169800e+06 6.294444e-04 5.000000e-01 0.000000e+00 4.926079e+01 8.947379e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.198350e+06 5.914374e-04 5.000000e-01 0.000000e+00 4.807402e+01 8.298580e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.226900e+06 4.643528e-04 5.000000e-01 0.000000e+00 4.735885e+01 4.050458e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.255450e+06 3.884428e-04 5.000000e-01 0.000000e+00 4.641569e+01 1.005802e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.284000e+06 3.177334e-04 5.000000e-01 0.000000e+00 4.537305e+01 1.612989e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.312550e+06 2.660381e-04 5.000000e-01 0.000000e+00 4.437731e+01 1.978594e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.341100e+06 2.395586e-04 5.000000e-01 0.000000e+00 4.344287e+01 2.432840e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.369650e+06 2.430232e-04 5.000000e-01 0.000000e+00 4.249957e+01 2.257211e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.398200e+06 2.670473e-04 5.000000e-01 0.000000e+00 4.146628e+01 1.484452e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.426750e+06 3.264835e-04 5.000000e-01 0.000000e+00 4.047953e+01 5.908212e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.455300e+06 4.142146e-04 5.000000e-01 0.000000e+00 3.953862e+01 6.588931e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.483850e+06 5.825914e-04 5.000000e-01 0.000000e+00 3.926663e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.512400e+06 5.783514e-04 5.000000e-01 0.000000e+00 3.815811e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.540950e+06 5.720743e-04 5.000000e-01 0.000000e+00 3.724872e+01 2.197559e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.569500e+06 5.225546e-04 5.000000e-01 0.000000e+00 3.633305e+01 1.379029e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.598050e+06 5.085552e-04 5.000000e-01 0.000000e+00 3.538326e+01 6.197270e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.626600e+06 4.504700e-04 5.000000e-01 0.000000e+00 3.460461e+01 8.532277e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.655150e+06 4.037731e-04 5.000000e-01 0.000000e+00 3.378657e+01 1.478432e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.683700e+06 3.416737e-04 5.000000e-01 0.000000e+00 3.285148e+01 1.789126e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.712250e+06 2.771370e-04 5.000000e-01 0.000000e+00 3.260658e+01 2.403297e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.740800e+06 2.493680e-04 5.000000e-01 0.000000e+00 3.149024e+01 1.567468e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.769350e+06 2.057522e-04 5.000000e-01 0.000000e+00 3.070152e+01 1.477675e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.797900e+06 1.252051e-04 5.000000e-01 0.000000e+00 3.008072e+01 1.203530e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-2.816248e+12 2.826450e+06 4.299212e-05 5.000000e-01 0.000000e+00 2.916253e+01 4.725847e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 4.282500e+05 1.190403e-03 5.000000e-01 0.000000e+00 1.614007e+02 3.197741e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 4.568000e+05 9.339090e-04 5.000000e-01 0.000000e+00 1.560390e+02 1.771596e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 4.853500e+05 8.562532e-04 5.000000e-01 0.000000e+00 1.566735e+02 3.580126e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 5.139000e+05 6.838831e-04 5.000000e-01 0.000000e+00 1.543210e+02 1.218456e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 5.424500e+05 5.307961e-04 5.000000e-01 0.000000e+00 1.518750e+02 2.870311e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 5.710000e+05 4.070720e-04 5.000000e-01 0.000000e+00 1.465781e+02 3.857779e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 5.995500e+05 3.587904e-04 5.000000e-01 0.000000e+00 1.479401e+02 3.808518e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 6.281000e+05 2.844741e-04 5.000000e-01 0.000000e+00 1.455619e+02 3.912991e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 6.566500e+05 2.422568e-04 5.000000e-01 0.000000e+00 1.423338e+02 3.470574e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 6.852000e+05 2.398860e-04 5.000000e-01 0.000000e+00 1.394083e+02 2.729163e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 7.137500e+05 2.327467e-04 5.000000e-01 0.000000e+00 1.391185e+02 1.801824e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 7.423000e+05 2.518383e-04 5.000000e-01 0.000000e+00 1.365503e+02 8.301015e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 7.708500e+05 2.292527e-04 5.000000e-01 0.000000e+00 1.320790e+02 5.540253e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 7.994000e+05 2.094495e-04 5.000000e-01 0.000000e+00 1.311070e+02 1.002646e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 8.279500e+05 1.733967e-04 5.000000e-01 0.000000e+00 1.291416e+02 1.101861e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 8.565000e+05 1.491044e-04 5.000000e-01 0.000000e+00 1.276230e+02 1.606872e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 8.850500e+05 1.263788e-04 5.000000e-01 0.000000e+00 1.236285e+02 1.353831e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 9.136000e+05 1.298418e-04 5.000000e-01 0.000000e+00 1.234168e+02 1.530942e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 9.421500e+05 1.359822e-04 5.000000e-01 0.000000e+00 1.214399e+02 1.378128e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 9.707000e+05 1.584705e-04 5.000000e-01 0.000000e+00 1.196474e+02 1.191815e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 9.992500e+05 1.868805e-04 5.000000e-01 0.000000e+00 1.154719e+02 4.189356e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.027800e+06 2.117798e-04 5.000000e-01 0.000000e+00 1.159218e+02 4.391631e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.056350e+06 2.593109e-04 5.000000e-01 0.000000e+00 1.140651e+02 1.132819e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.084900e+06 3.233750e-04 5.000000e-01 0.000000e+00 1.120144e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.113450e+06 3.493757e-04 5.000000e-01 0.000000e+00 1.080349e+02 7.213523e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.142000e+06 3.640196e-04 5.000000e-01 0.000000e+00 1.084907e+02 1.301568e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.170550e+06 3.479518e-04 5.000000e-01 0.000000e+00 1.067114e+02 1.695520e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.199100e+06 2.908805e-04 5.000000e-01 0.000000e+00 1.049824e+02 3.079826e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.227650e+06 2.174643e-04 5.000000e-01 0.000000e+00 1.009258e+02 1.148134e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.256200e+06 2.185183e-04 5.000000e-01 0.000000e+00 1.013853e+02 9.826630e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.284750e+06 1.879572e-04 5.000000e-01 0.000000e+00 9.968170e+01 1.158748e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.313300e+06 1.773583e-04 5.000000e-01 0.000000e+00 9.738458e+01 2.007659e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.341850e+06 1.734029e-04 5.000000e-01 0.000000e+00 9.594707e+01 1.571167e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.370400e+06 1.745906e-04 5.000000e-01 0.000000e+00 9.474175e+01 1.449602e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.398950e+06 1.870561e-04 5.000000e-01 0.000000e+00 9.298857e+01 1.147338e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.427500e+06 2.277700e-04 5.000000e-01 0.000000e+00 9.016104e+01 6.367104e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.456050e+06 2.295074e-04 5.000000e-01 0.000000e+00 8.959000e+01 6.117076e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.484600e+06 2.353072e-04 5.000000e-01 0.000000e+00 8.748786e+01 2.241904e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.513150e+06 2.453856e-04 5.000000e-01 0.000000e+00 8.424067e+01 2.452667e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.541700e+06 2.232303e-04 5.000000e-01 0.000000e+00 7.564110e+01 4.919415e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.570250e+06 1.909631e-04 5.000000e-01 0.000000e+00 7.434013e+01 7.337413e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.598800e+06 1.647535e-04 5.000000e-01 0.000000e+00 7.299828e+01 1.063150e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.627350e+06 1.459704e-04 5.000000e-01 0.000000e+00 7.161096e+01 1.347935e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.655900e+06 1.424832e-04 5.000000e-01 0.000000e+00 7.035508e+01 1.466752e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.684450e+06 1.536406e-04 5.000000e-01 0.000000e+00 6.898270e+01 1.307114e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.713000e+06 1.825148e-04 5.000000e-01 0.000000e+00 6.762137e+01 8.946676e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.741550e+06 2.239035e-04 5.000000e-01 0.000000e+00 6.624960e+01 6.584131e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.770100e+06 3.024687e-04 5.000000e-01 0.000000e+00 6.531208e+01 2.650285e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.798650e+06 3.404530e-04 5.000000e-01 0.000000e+00 6.421609e+01 5.932932e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.827200e+06 3.666259e-04 5.000000e-01 0.000000e+00 6.291830e+01 4.423590e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.855750e+06 3.712866e-04 5.000000e-01 0.000000e+00 6.170267e+01 1.773344e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.884300e+06 3.312682e-04 5.000000e-01 0.000000e+00 6.047019e+01 3.565743e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.912850e+06 2.628760e-04 5.000000e-01 0.000000e+00 5.927047e+01 7.691366e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.941400e+06 2.206960e-04 5.000000e-01 0.000000e+00 5.804984e+01 1.477462e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.969950e+06 2.029751e-04 5.000000e-01 0.000000e+00 5.685619e+01 2.041104e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 1.998500e+06 2.161349e-04 5.000000e-01 0.000000e+00 5.595186e+01 2.376345e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.027050e+06 2.385331e-04 5.000000e-01 0.000000e+00 5.496441e+01 1.847323e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.055600e+06 2.810427e-04 5.000000e-01 0.000000e+00 5.382243e+01 1.393220e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.084150e+06 3.568876e-04 5.000000e-01 0.000000e+00 5.273088e+01 6.457878e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.112700e+06 4.513242e-04 5.000000e-01 0.000000e+00 5.161442e+01 1.100977e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.141250e+06 5.585546e-04 5.000000e-01 0.000000e+00 5.052045e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.169800e+06 6.294442e-04 5.000000e-01 0.000000e+00 4.926079e+01 8.946796e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.198350e+06 5.914373e-04 5.000000e-01 0.000000e+00 4.807402e+01 8.297999e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.226900e+06 4.643529e-04 5.000000e-01 0.000000e+00 4.735885e+01 4.050397e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.255450e+06 3.884429e-04 5.000000e-01 0.000000e+00 4.641569e+01 1.005791e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.284000e+06 3.177335e-04 5.000000e-01 0.000000e+00 4.537305e+01 1.612978e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.312550e+06 2.660383e-04 5.000000e-01 0.000000e+00 4.437731e+01 1.978583e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.341100e+06 2.395588e-04 5.000000e-01 0.000000e+00 4.344287e+01 2.432829e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.369650e+06 2.430234e-04 5.000000e-01 0.000000e+00 4.249957e+01 2.257200e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.398200e+06 2.670476e-04 5.000000e-01 0.000000e+00 4.146628e+01 1.484442e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.426750e+06 3.264837e-04 5.000000e-01 0.000000e+00 4.047953e+01 5.908138e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.455300e+06 4.142148e-04 5.000000e-01 0.000000e+00 3.953862e+01 6.588069e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.483850e+06 5.825915e-04 5.000000e-01 0.000000e+00 3.926663e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.512400e+06 5.783515e-04 5.000000e-01 0.000000e+00 3.815811e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.540950e+06 5.720744e-04 5.000000e-01 0.000000e+00 3.724872e+01 2.197459e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.569500e+06 5.225546e-04 5.000000e-01 0.000000e+00 3.633305e+01 1.379019e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.598050e+06 5.085552e-04 5.000000e-01 0.000000e+00 3.538326e+01 6.197234e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.626600e+06 4.504700e-04 5.000000e-01 0.000000e+00 3.460461e+01 8.532224e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.655150e+06 4.037731e-04 5.000000e-01 0.000000e+00 3.378657e+01 1.478426e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.683700e+06 3.416737e-04 5.000000e-01 0.000000e+00 3.285148e+01 1.789119e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.712250e+06 2.771370e-04 5.000000e-01 0.000000e+00 3.260658e+01 2.403290e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.740800e+06 2.493679e-04 5.000000e-01 0.000000e+00 3.149024e+01 1.567463e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.769350e+06 2.057522e-04 5.000000e-01 0.000000e+00 3.070152e+01 1.477670e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.797900e+06 1.252050e-04 5.000000e-01 0.000000e+00 3.008072e+01 1.203527e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+2.816248e+12 2.826450e+06 4.299211e-05 5.000000e-01 0.000000e+00 2.916253e+01 4.725835e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 
-5.632497e+12 0.000000e+00 1.910030e-04 5.000000e-01 0.000000e+00 2.012118e+02 1.187016e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.855000e+04 5.621492e-04 5.000000e-01 0.000000e+00 1.897418e+02 2.536934e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 0.000000e+00 1.910030e-04 5.000000e-01 0.000000e+00 2.012118e+02 1.187017e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.855000e+04 5.621494e-04 5.000000e-01 0.000000e+00 1.897418e+02 2.536937e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
 5.632497e+12 5.710000e+04 5.559895e-04 5.000000e-01 0.000000e+00 1.993509e+02 3.214750e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 8.565000e+04 9.039297e-04 5.000000e-01 0.000000e+00 1.924846e+02 4.159435e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.142000e+05 1.229742e-03 5.000000e-01 0.000000e+00 1.884987e+02 4.580267e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.427500e+05 1.525779e-03 5.000000e-01 0.000000e+00 1.786890e+02 3.310375e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.713000e+05 1.557020e-03 5.000000e-01 0.000000e+00 1.861899e+02 4.396974e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.998500e+05 1.820720e-03 5.000000e-01 0.000000e+00 1.816332e+02 3.510838e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.284000e+05 2.084573e-03 5.000000e-01 0.000000e+00 1.775940e+02 1.943937e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.569500e+05 2.269472e-03 5.000000e-01 0.000000e+00 1.689824e+02 1.174468e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.855000e+05 2.373268e-03 5.000000e-01 0.000000e+00 1.745266e+02 2.606016e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 8.565000e+04 9.039297e-04 5.000000e-01 0.000000e+00 1.924846e+02 4.159437e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.142000e+05 1.229742e-03 5.000000e-01 0.000000e+00 1.884987e+02 4.580270e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.427500e+05 1.525779e-03 5.000000e-01 0.000000e+00 1.786890e+02 3.310382e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.713000e+05 1.557020e-03 5.000000e-01 0.000000e+00 1.861899e+02 4.396977e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.998500e+05 1.820720e-03 5.000000e-01 0.000000e+00 1.816332e+02 3.510843e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.284000e+05 2.084573e-03 5.000000e-01 0.000000e+00 1.775940e+02 1.943941e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.569500e+05 2.269472e-03 5.000000e-01 0.000000e+00 1.689824e+02 1.174493e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.855000e+05 2.373268e-03 5.000000e-01 0.000000e+00 1.745266e+02 2.606048e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 5.632497e+12 3.140500e+05 2.560127e-03 5.000000e-01 0.000000e+00 1.716378e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 3.426000e+05 2.721961e-03 5.000000e-01 0.000000e+00 1.660466e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 3.426000e+05 2.721960e-03 5.000000e-01 0.000000e+00 1.660466e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
 5.632497e+12 3.711500e+05 2.687512e-03 5.000000e-01 0.000000e+00 1.653715e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 3.997000e+05 2.577207e-03 5.000000e-01 0.000000e+00 1.639405e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 4.282500e+05 2.187229e-03 5.000000e-01 0.000000e+00 1.614007e+02 3.197444e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 4.568000e+05 1.817476e-03 5.000000e-01 0.000000e+00 1.560390e+02 1.771588e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 4.853500e+05 1.710444e-03 5.000000e-01 0.000000e+00 1.566735e+02 3.580115e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 5.139000e+05 1.458446e-03 5.000000e-01 0.000000e+00 1.543210e+02 1.218454e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 5.424500e+05 1.215479e-03 5.000000e-01 0.000000e+00 1.518750e+02 2.870310e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 5.710000e+05 9.938032e-04 5.000000e-01 0.000000e+00 1.465781e+02 3.857780e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 5.995500e+05 9.201726e-04 5.000000e-01 0.000000e+00 1.479401e+02 3.808518e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 6.281000e+05 7.720908e-04 5.000000e-01 0.000000e+00 1.455619e+02 3.912991e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 6.566500e+05 6.473017e-04 5.000000e-01 0.000000e+00 1.423338e+02 3.470575e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 6.852000e+05 5.785018e-04 5.000000e-01 0.000000e+00 1.394083e+02 2.729165e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 7.137500e+05 5.289823e-04 5.000000e-01 0.000000e+00 1.391185e+02 1.801824e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 7.423000e+05 4.906283e-04 5.000000e-01 0.000000e+00 1.365503e+02 8.301008e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 7.708500e+05 4.346050e-04 5.000000e-01 0.000000e+00 1.320790e+02 5.540257e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 7.994000e+05 4.125040e-04 5.000000e-01 0.000000e+00 1.311070e+02 1.002646e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 8.279500e+05 3.729970e-04 5.000000e-01 0.000000e+00 1.291416e+02 1.101862e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 8.565000e+05 3.485869e-04 5.000000e-01 0.000000e+00 1.276230e+02 1.606873e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 8.850500e+05 3.236175e-04 5.000000e-01 0.000000e+00 1.236285e+02 1.353831e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 9.136000e+05 3.309207e-04 5.000000e-01 0.000000e+00 1.234168e+02 1.530943e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 9.421500e+05 3.413344e-04 5.000000e-01 0.000000e+00 1.214399e+02 1.378130e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 9.707000e+05 3.701497e-04 5.000000e-01 0.000000e+00 1.196474e+02 1.191817e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 9.992500e+05 3.998319e-04 5.000000e-01 0.000000e+00 1.154719e+02 4.189362e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.027800e+06 4.367466e-04 5.000000e-01 0.000000e+00 1.159218e+02 4.391646e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.056350e+06 4.958249e-04 5.000000e-01 0.000000e+00 1.140651e+02 1.132825e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.084900e+06 5.727310e-04 5.000000e-01 0.000000e+00 1.120144e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.113450e+06 5.984853e-04 5.000000e-01 0.000000e+00 1.080349e+02 7.213622e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.142000e+06 6.276797e-04 5.000000e-01 0.000000e+00 1.084907e+02 1.301575e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.170550e+06 6.132617e-04 5.000000e-01 0.000000e+00 1.067114e+02 1.695531e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.199100e+06 5.479173e-04 5.000000e-01 0.000000e+00 1.049824e+02 3.079848e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.227650e+06 4.596518e-04 5.000000e-01 0.000000e+00 1.009258e+02 1.148141e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.256200e+06 4.635175e-04 5.000000e-01 0.000000e+00 1.013853e+02 9.826697e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.284750e+06 4.255764e-04 5.000000e-01 0.000000e+00 9.968169e+01 1.158756e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.313300e+06 4.071939e-04 5.000000e-01 0.000000e+00 9.738458e+01 2.007671e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.341850e+06 3.998485e-04 5.000000e-01 0.000000e+00 9.594707e+01 1.571179e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.370400e+06 3.941879e-04 5.000000e-01 0.000000e+00 9.474175e+01 1.449613e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.398950e+06 3.992455e-04 5.000000e-01 0.000000e+00 9.298856e+01 1.147349e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.427500e+06 4.375563e-04 5.000000e-01 0.000000e+00 9.016104e+01 6.367200e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.456050e+06 4.323977e-04 5.000000e-01 0.000000e+00 8.959000e+01 6.117152e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.484600e+06 4.326149e-04 5.000000e-01 0.000000e+00 8.748786e+01 2.241943e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.513150e+06 4.394144e-04 5.000000e-01 0.000000e+00 8.424067e+01 2.452705e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.541700e+06 4.233425e-04 5.000000e-01 0.000000e+00 7.564109e+01 4.919469e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.570250e+06 3.900381e-04 5.000000e-01 0.000000e+00 7.434013e+01 7.337485e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.598800e+06 3.670117e-04 5.000000e-01 0.000000e+00 7.299828e+01 1.063164e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.627350e+06 3.517636e-04 5.000000e-01 0.000000e+00 7.161096e+01 1.347953e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.655900e+06 3.556851e-04 5.000000e-01 0.000000e+00 7.035508e+01 1.466773e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.684450e+06 3.745550e-04 5.000000e-01 0.000000e+00 6.898270e+01 1.307139e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.713000e+06 4.119810e-04 5.000000e-01 0.000000e+00 6.762137e+01 8.946918e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.741550e+06 4.614714e-04 5.000000e-01 0.000000e+00 6.624960e+01 6.584273e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.770100e+06 5.570768e-04 5.000000e-01 0.000000e+00 6.531208e+01 2.650382e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.798650e+06 6.007293e-04 5.000000e-01 0.000000e+00 6.421609e+01 5.933294e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.827200e+06 6.326300e-04 5.000000e-01 0.000000e+00 6.291830e+01 4.423956e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.855750e+06 6.457560e-04 5.000000e-01 0.000000e+00 6.170267e+01 1.773382e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.884300e+06 6.125568e-04 5.000000e-01 0.000000e+00 6.047019e+01 3.565837e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.912850e+06 5.513857e-04 5.000000e-01 0.000000e+00 5.927047e+01 7.691540e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.941400e+06 5.183082e-04 5.000000e-01 0.000000e+00 5.804984e+01 1.477485e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.969950e+06 5.133723e-04 5.000000e-01 0.000000e+00 5.685619e+01 2.041132e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 1.998500e+06 5.481299e-04 5.000000e-01 0.000000e+00 5.595186e+01 2.376373e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.027050e+06 5.792856e-04 5.000000e-01 0.000000e+00 5.496441e+01 1.847350e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.055600e+06 6.349774e-04 5.000000e-01 0.000000e+00 5.382243e+01 1.393246e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.084150e+06 7.316225e-04 5.000000e-01 0.000000e+00 5.273088e+01 6.458029e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.112700e+06 8.480058e-04 5.000000e-01 0.000000e+00 5.161442e+01 1.101014e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.141250e+06 9.774916e-04 5.000000e-01 0.000000e+00 5.052045e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.169800e+06 1.060610e-03 5.000000e-01 0.000000e+00 4.926079e+01 8.947379e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.198350e+06 1.016471e-03 5.000000e-01 0.000000e+00 4.807402e+01 8.298580e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.226900e+06 8.746658e-04 5.000000e-01 0.000000e+00 4.735885e+01 4.050458e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.255450e+06 7.822442e-04 5.000000e-01 0.000000e+00 4.641569e+01 1.005802e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.284000e+06 6.944887e-04 5.000000e-01 0.000000e+00 4.537305e+01 1.612989e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.312550e+06 6.328336e-04 5.000000e-01 0.000000e+00 4.437731e+01 1.978594e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.341100e+06 6.030194e-04 5.000000e-01 0.000000e+00 4.344287e+01 2.432840e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.369650e+06 6.102775e-04 5.000000e-01 0.000000e+00 4.249957e+01 2.257211e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.398200e+06 6.393760e-04 5.000000e-01 0.000000e+00 4.146628e+01 1.484452e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.426750e+06 7.130820e-04 5.000000e-01 0.000000e+00 4.047953e+01 5.908212e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.455300e+06 8.234899e-04 5.000000e-01 0.000000e+00 3.953862e+01 6.588931e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 3.997000e+05 2.577206e-03 5.000000e-01 0.000000e+00 1.639405e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 4.282500e+05 2.187229e-03 5.000000e-01 0.000000e+00 1.614007e+02 3.197987e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 4.568000e+05 1.817475e-03 5.000000e-01 0.000000e+00 1.560390e+02 1.771655e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 4.853500e+05 1.710443e-03 5.000000e-01 0.000000e+00 1.566735e+02 3.580222e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 5.139000e+05 1.458445e-03 5.000000e-01 0.000000e+00 1.543210e+02 1.218480e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 5.424500e+05 1.215478e-03 5.000000e-01 0.000000e+00 1.518750e+02 2.870354e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 5.710000e+05 9.938026e-04 5.000000e-01 0.000000e+00 1.465781e+02 3.857821e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 5.995500e+05 9.201720e-04 5.000000e-01 0.000000e+00 1.479401e+02 3.808567e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 6.281000e+05 7.720903e-04 5.000000e-01 0.000000e+00 1.455619e+02 3.913044e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 6.566500e+05 6.473013e-04 5.000000e-01 0.000000e+00 1.423338e+02 3.470629e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 6.852000e+05 5.785016e-04 5.000000e-01 0.000000e+00 1.394083e+02 2.729216e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 7.137500e+05 5.289821e-04 5.000000e-01 0.000000e+00 1.391185e+02 1.801871e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 7.423000e+05 4.906282e-04 5.000000e-01 0.000000e+00 1.365503e+02 8.301321e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 7.708500e+05 4.346050e-04 5.000000e-01 0.000000e+00 1.320790e+02 5.540479e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 7.994000e+05 4.125041e-04 5.000000e-01 0.000000e+00 1.311070e+02 1.002678e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 8.279500e+05 3.729970e-04 5.000000e-01 0.000000e+00 1.291416e+02 1.101899e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 8.565000e+05 3.485869e-04 5.000000e-01 0.000000e+00 1.276230e+02 1.606922e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 8.850500e+05 3.236176e-04 5.000000e-01 0.000000e+00 1.236285e+02 1.353874e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 9.136000e+05 3.309208e-04 5.000000e-01 0.000000e+00 1.234168e+02 1.530983e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 9.421500e+05 3.413345e-04 5.000000e-01 0.000000e+00 1.214399e+02 1.378168e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 9.707000e+05 3.701497e-04 5.000000e-01 0.000000e+00 1.196474e+02 1.191846e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 9.992500e+05 3.998319e-04 5.000000e-01 0.000000e+00 1.154719e+02 4.189475e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.027800e+06 4.367465e-04 5.000000e-01 0.000000e+00 1.159218e+02 4.391754e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.056350e+06 4.958249e-04 5.000000e-01 0.000000e+00 1.140651e+02 1.132861e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.084900e+06 5.727309e-04 5.000000e-01 0.000000e+00 1.120144e+02 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.113450e+06 5.984852e-04 5.000000e-01 0.000000e+00 1.080349e+02 7.213572e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.142000e+06 6.276795e-04 5.000000e-01 0.000000e+00 1.084907e+02 1.301565e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.170550e+06 6.132615e-04 5.000000e-01 0.000000e+00 1.067114e+02 1.695509e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.199100e+06 5.479171e-04 5.000000e-01 0.000000e+00 1.049824e+02 3.079789e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.227650e+06 4.596517e-04 5.000000e-01 0.000000e+00 1.009258e+02 1.148121e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.256200e+06 4.635173e-04 5.000000e-01 0.000000e+00 1.013853e+02 9.826507e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.284750e+06 4.255762e-04 5.000000e-01 0.000000e+00 9.968170e+01 1.158732e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.313300e+06 4.071939e-04 5.000000e-01 0.000000e+00 9.738458e+01 2.007634e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.341850e+06 3.998483e-04 5.000000e-01 0.000000e+00 9.594707e+01 1.571142e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.370400e+06 3.941878e-04 5.000000e-01 0.000000e+00 9.474175e+01 1.449578e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.398950e+06 3.992454e-04 5.000000e-01 0.000000e+00 9.298857e+01 1.147319e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.427500e+06 4.375564e-04 5.000000e-01 0.000000e+00 9.016104e+01 6.366918e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.456050e+06 4.323976e-04 5.000000e-01 0.000000e+00 8.959000e+01 6.116955e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.484600e+06 4.326148e-04 5.000000e-01 0.000000e+00 8.748786e+01 2.241848e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.513150e+06 4.394144e-04 5.000000e-01 0.000000e+00 8.424067e+01 2.452586e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.541700e+06 4.233426e-04 5.000000e-01 0.000000e+00 7.564110e+01 4.919281e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.570250e+06 3.900382e-04 5.000000e-01 0.000000e+00 7.434013e+01 7.337263e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.598800e+06 3.670117e-04 5.000000e-01 0.000000e+00 7.299828e+01 1.063129e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.627350e+06 3.517637e-04 5.000000e-01 0.000000e+00 7.161096e+01 1.347910e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.655900e+06 3.556851e-04 5.000000e-01 0.000000e+00 7.035508e+01 1.466725e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.684450e+06 3.745551e-04 5.000000e-01 0.000000e+00 6.898270e+01 1.307085e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.713000e+06 4.119811e-04 5.000000e-01 0.000000e+00 6.762137e+01 8.946412e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.741550e+06 4.614716e-04 5.000000e-01 0.000000e+00 6.624960e+01 6.583995e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.770100e+06 5.570771e-04 5.000000e-01 0.000000e+00 6.531208e+01 2.650190e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.798650e+06 6.007297e-04 5.000000e-01 0.000000e+00 6.421609e+01 5.932627e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.827200e+06 6.326304e-04 5.000000e-01 0.000000e+00 6.291830e+01 4.423262e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.855750e+06 6.457563e-04 5.000000e-01 0.000000e+00 6.170267e+01 1.773306e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.884300e+06 6.125570e-04 5.000000e-01 0.000000e+00 6.047019e+01 3.565653e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.912850e+06 5.513858e-04 5.000000e-01 0.000000e+00 5.927047e+01 7.691221e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.941400e+06 5.183082e-04 5.000000e-01 0.000000e+00 5.804984e+01 1.477445e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.969950e+06 5.133721e-04 5.000000e-01 0.000000e+00 5.685619e+01 2.041087e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 1.998500e+06 5.481296e-04 5.000000e-01 0.000000e+00 5.595186e+01 2.376329e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.027050e+06 5.792853e-04 5.000000e-01 0.000000e+00 5.496441e+01 1.847310e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.055600e+06 6.349771e-04 5.000000e-01 0.000000e+00 5.382243e+01 1.393212e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.084150e+06 7.316221e-04 5.000000e-01 0.000000e+00 5.273088e+01 6.457855e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.112700e+06 8.480055e-04 5.000000e-01 0.000000e+00 5.161442e+01 1.100985e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.141250e+06 9.774914e-04 5.000000e-01 0.000000e+00 5.052045e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.169800e+06 1.060610e-03 5.000000e-01 0.000000e+00 4.926079e+01 8.946930e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.198350e+06 1.016471e-03 5.000000e-01 0.000000e+00 4.807402e+01 8.298284e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.226900e+06 8.746659e-04 5.000000e-01 0.000000e+00 4.735885e+01 4.050442e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.255450e+06 7.822444e-04 5.000000e-01 0.000000e+00 4.641569e+01 1.005803e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.284000e+06 6.944889e-04 5.000000e-01 0.000000e+00 4.537305e+01 1.612997e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.312550e+06 6.328339e-04 5.000000e-01 0.000000e+00 4.437731e+01 1.978611e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.341100e+06 6.030197e-04 5.000000e-01 0.000000e+00 4.344287e+01 2.432860e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.369650e+06 6.102778e-04 5.000000e-01 0.000000e+00 4.249957e+01 2.257231e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.398200e+06 6.393764e-04 5.000000e-01 0.000000e+00 4.146628e+01 1.484471e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.426750e+06 7.130824e-04 5.000000e-01 0.000000e+00 4.047953e+01 5.908306e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.455300e+06 8.234903e-04 5.000000e-01 0.000000e+00 3.953862e+01 6.589412e-07 -1.000000e+00 -1.000000e+00 1.000000e+22
 5.632497e+12 2.483850e+06 1.054246e-03 5.000000e-01 0.000000e+00 3.926663e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.512400e+06 1.032618e-03 5.000000e-01 0.000000e+00 3.815811e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.540950e+06 1.023100e-03 5.000000e-01 0.000000e+00 3.724872e+01 2.197559e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.569500e+06 9.693314e-04 5.000000e-01 0.000000e+00 3.633305e+01 1.379029e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.598050e+06 9.413359e-04 5.000000e-01 0.000000e+00 3.538326e+01 6.197270e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.626600e+06 8.676780e-04 5.000000e-01 0.000000e+00 3.460461e+01 8.532277e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.655150e+06 7.881048e-04 5.000000e-01 0.000000e+00 3.378657e+01 1.478432e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.683700e+06 6.800364e-04 5.000000e-01 0.000000e+00 3.285148e+01 1.789126e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.712250e+06 5.652161e-04 5.000000e-01 0.000000e+00 3.260658e+01 2.403297e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.740800e+06 5.122212e-04 5.000000e-01 0.000000e+00 3.149024e+01 1.567468e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.769350e+06 4.177018e-04 5.000000e-01 0.000000e+00 3.070152e+01 1.477675e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.797900e+06 2.619021e-04 5.000000e-01 0.000000e+00 3.008072e+01 1.203530e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
-5.632497e+12 2.826450e+06 9.121441e-05 5.000000e-01 0.000000e+00 2.916253e+01 4.725847e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.512400e+06 1.032619e-03 5.000000e-01 0.000000e+00 3.815811e+01 3.155695e-09 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.540950e+06 1.023100e-03 5.000000e-01 0.000000e+00 3.724872e+01 2.197508e-06 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.569500e+06 9.693315e-04 5.000000e-01 0.000000e+00 3.633305e+01 1.379021e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.598050e+06 9.413359e-04 5.000000e-01 0.000000e+00 3.538326e+01 6.197220e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.626600e+06 8.676780e-04 5.000000e-01 0.000000e+00 3.460461e+01 8.532179e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.655150e+06 7.881048e-04 5.000000e-01 0.000000e+00 3.378657e+01 1.478419e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.683700e+06 6.800363e-04 5.000000e-01 0.000000e+00 3.285148e+01 1.789109e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.712250e+06 5.652162e-04 5.000000e-01 0.000000e+00 3.260658e+01 2.403281e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.740800e+06 5.122211e-04 5.000000e-01 0.000000e+00 3.149024e+01 1.567454e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.769350e+06 4.177017e-04 5.000000e-01 0.000000e+00 3.070152e+01 1.477662e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.797900e+06 2.619021e-04 5.000000e-01 0.000000e+00 3.008072e+01 1.203521e-04 -1.000000e+00 -1.000000e+00 1.000000e+22
+5.632497e+12 2.826450e+06 9.121439e-05 5.000000e-01 0.000000e+00 2.916253e+01 4.725808e-05 -1.000000e+00 -1.000000e+00 1.000000e+22
 

Modified: branches/active_compositions/tests/passive_comp/screen-output
===================================================================
--- branches/active_compositions/tests/passive_comp/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/passive_comp/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -44,7 +44,7 @@
    Solving temperature system... 11 iterations.
    Solving composition system 1... 12 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 0 iterations.
+   Solving Stokes system... 3 iterations.
 
    Postprocessing:
      Writing graphical output:           output-passive_comp/solution-00002
@@ -56,21 +56,21 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |      56.1s |            |
+| Total wallclock time elapsed since start    |      38.4s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         3 |      6.78s |        12% |
-| Assemble composition system     |         3 |      17.2s |        31% |
-| Assemble temperature system     |         3 |      15.5s |        28% |
-| Build Stokes preconditioner     |         3 |      4.26s |       7.6% |
-| Build composition preconditioner|         3 |    0.0475s |     0.085% |
-| Build temperature preconditioner|         3 |    0.0421s |     0.075% |
-| Solve Stokes system             |         3 |     0.534s |      0.95% |
-| Solve composition system        |         3 |    0.0606s |      0.11% |
-| Solve temperature system        |         3 |    0.0553s |     0.099% |
-| Initialization                  |         2 |     0.211s |      0.38% |
-| Postprocessing                  |         3 |      8.93s |        16% |
-| Setup dof systems               |         1 |       1.2s |       2.1% |
+| Assemble Stokes system          |         3 |      2.66s |       6.9% |
+| Assemble composition system     |         3 |      6.15s |        16% |
+| Assemble temperature system     |         3 |      6.92s |        18% |
+| Build Stokes preconditioner     |         3 |      1.96s |       5.1% |
+| Build composition preconditioner|         3 |    0.0809s |      0.21% |
+| Build temperature preconditioner|         3 |    0.0592s |      0.15% |
+| Solve Stokes system             |         3 |     0.778s |         2% |
+| Solve composition system        |         3 |    0.0752s |       0.2% |
+| Solve temperature system        |         3 |     0.101s |      0.26% |
+| Initialization                  |         2 |     0.465s |       1.2% |
+| Postprocessing                  |         3 |      14.6s |        38% |
+| Setup dof systems               |         1 |      2.67s |       6.9% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/passive_comp/statistics
===================================================================
--- branches/active_compositions/tests/passive_comp/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/passive_comp/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -17,6 +17,6 @@
 # 17: Average nondimensional temperature (K)
 # 18: Outward heat flux through boundary with indicator 0 (W)
 # 19: Outward heat flux through boundary with indicator 1 (W)
-0 0.0000e+00 768 7392 3264 3264  0  0 41 2.8162e+12 output-passive_comp/solution-00000 5.11003696e-08 6.29356646e-08 0.00000000e+00 0.00000000e+00 2.22507386e-308 -nan 0.00000000e+00 0.00000000e+00 
-1 2.8162e+12 768 7392 3264 3264 17 18  0 2.8162e+12 output-passive_comp/solution-00001 5.11003696e-08 6.29356646e-08 0.00000000e+00 4.30823144e-04  2.00252733e-03  inf 2.73895325e-01 8.41540971e-01 
-2 5.6325e+12 768 7392 3264 3264 11 12  0 2.8162e+12 output-passive_comp/solution-00002 5.11003696e-08 6.29356646e-08 0.00000000e+00 8.46516329e-04  3.17634906e-03  inf 5.82945229e-01 1.87274109e+00 
+0 0.0000e+00 768 7392 3264 3264  0  0 41 2.8162e+12 output-passive_comp/solution-00000 5.11003699e-08 6.29356648e-08 0.00000000e+00 0.00000000e+00 2.22507386e-308 nan 0.00000000e+00 0.00000000e+00 
+1 2.8162e+12 768 7392 3264 3264 17 18  0 2.8162e+12 output-passive_comp/solution-00001 5.11003699e-08 6.29356648e-08 0.00000000e+00 4.30823100e-04  2.00252996e-03 inf 2.73895241e-01 8.41541216e-01 
+2 5.6325e+12 768 7392 3264 3264 11 12  3 2.8162e+12 output-passive_comp/solution-00002 5.11003699e-08 6.29356648e-08 0.00000000e+00 8.46516240e-04  3.17635254e-03 inf 5.82945093e-01 1.87274139e+00 

Modified: branches/active_compositions/tests/sol_cx_2/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_2/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -12,17 +12,18 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.416s |            |
+| Total wallclock time elapsed since start    |      1.46s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0329s |       7.9% |
-| Assemble temperature system     |         1 |      0.14s |        34% |
-| Build Stokes preconditioner     |         1 |    0.0343s |       8.3% |
-| Build temperature preconditioner|         1 |   0.00128s |      0.31% |
-| Solve Stokes system             |         1 |    0.0149s |       3.6% |
-| Solve temperature system        |         1 |  0.000839s |       0.2% |
-| Postprocessing                  |         1 |    0.0514s |        12% |
-| Setup dof systems               |         1 |    0.0429s |        10% |
+| Assemble Stokes system          |         1 |     0.222s |        15% |
+| Assemble temperature system     |         1 |     0.564s |        39% |
+| Build Stokes preconditioner     |         1 |     0.171s |        12% |
+| Build temperature preconditioner|         1 |   0.00121s |     0.083% |
+| Solve Stokes system             |         1 |     0.039s |       2.7% |
+| Solve temperature system        |         1 |   0.00112s |     0.077% |
+| Initialization                  |         2 |    0.0968s |       6.6% |
+| Postprocessing                  |         1 |     0.139s |       9.6% |
+| Setup dof systems               |         1 |     0.132s |       9.1% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_2/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_2/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 16 187 81 0 28 3.4287e+01 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 16 187 81 0 0 28 3.4287e+01 

Modified: branches/active_compositions/tests/sol_cx_2_conservative/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_2_conservative/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2_conservative/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -12,18 +12,18 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.281s |            |
+| Total wallclock time elapsed since start    |     0.847s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0175s |       6.2% |
-| Assemble temperature system     |         1 |    0.0784s |        28% |
-| Build Stokes preconditioner     |         1 |    0.0202s |       7.2% |
-| Build temperature preconditioner|         1 |  0.000783s |      0.28% |
-| Solve Stokes system             |         1 |    0.0171s |       6.1% |
-| Solve temperature system        |         1 |  0.000526s |      0.19% |
-| Initialization                  |         2 |     0.053s |        19% |
-| Postprocessing                  |         1 |    0.0286s |        10% |
-| Setup dof systems               |         1 |    0.0323s |        12% |
+| Assemble Stokes system          |         1 |     0.101s |        12% |
+| Assemble temperature system     |         1 |     0.328s |        39% |
+| Build Stokes preconditioner     |         1 |     0.125s |        15% |
+| Build temperature preconditioner|         1 |   0.00124s |      0.15% |
+| Solve Stokes system             |         1 |    0.0317s |       3.7% |
+| Solve temperature system        |         1 |    0.0011s |      0.13% |
+| Initialization                  |         2 |    0.0405s |       4.8% |
+| Postprocessing                  |         1 |    0.0708s |       8.4% |
+| Setup dof systems               |         1 |    0.0677s |         8% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_2_conservative/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_2_conservative/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2_conservative/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (years)
-0 0.0000e+00 16 210 81 0 33 1.1317e-06 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (years)
+0 0.0000e+00 16 210 81 0 0 33 1.1317e-06 

Modified: branches/active_compositions/tests/sol_cx_2_normalized_pressure/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_2_normalized_pressure/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2_normalized_pressure/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -12,18 +12,18 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.247s |            |
+| Total wallclock time elapsed since start    |      1.52s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0181s |       7.4% |
-| Assemble temperature system     |         1 |    0.0769s |        31% |
-| Build Stokes preconditioner     |         1 |    0.0202s |       8.2% |
-| Build temperature preconditioner|         1 |  0.000798s |      0.32% |
-| Solve Stokes system             |         1 |    0.0132s |       5.4% |
-| Solve temperature system        |         1 |  0.000544s |      0.22% |
-| Initialization                  |         2 |    0.0267s |        11% |
-| Postprocessing                  |         1 |    0.0291s |        12% |
-| Setup dof systems               |         1 |    0.0338s |        14% |
+| Assemble Stokes system          |         1 |    0.0922s |       6.1% |
+| Assemble temperature system     |         1 |     0.501s |        33% |
+| Build Stokes preconditioner     |         1 |      0.21s |        14% |
+| Build temperature preconditioner|         1 |   0.00173s |      0.11% |
+| Solve Stokes system             |         1 |    0.0929s |       6.1% |
+| Solve temperature system        |         1 |   0.00126s |     0.083% |
+| Initialization                  |         2 |    0.0841s |       5.5% |
+| Postprocessing                  |         1 |     0.264s |        17% |
+| Setup dof systems               |         1 |     0.218s |        14% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_2_normalized_pressure/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_2_normalized_pressure/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2_normalized_pressure/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 16 187 81 0 28 3.4287e+01 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 16 187 81 0 0 28 3.4287e+01 

Modified: branches/active_compositions/tests/sol_cx_2_q3/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_2_q3/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2_q3/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -12,17 +12,18 @@
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.623s |            |
+| Total wallclock time elapsed since start    |      2.56s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0855s |        14% |
-| Assemble temperature system     |         1 |     0.203s |        33% |
-| Build Stokes preconditioner     |         1 |    0.0776s |        12% |
-| Build temperature preconditioner|         1 |   0.00141s |      0.23% |
-| Solve Stokes system             |         1 |    0.0327s |       5.2% |
-| Solve temperature system        |         1 |  0.000997s |      0.16% |
-| Postprocessing                  |         1 |    0.0727s |        12% |
-| Setup dof systems               |         1 |     0.062s |        10% |
+| Assemble Stokes system          |         1 |     0.521s |        20% |
+| Assemble temperature system     |         1 |     0.844s |        33% |
+| Build Stokes preconditioner     |         1 |     0.195s |       7.6% |
+| Build temperature preconditioner|         1 |   0.00124s |     0.048% |
+| Solve Stokes system             |         1 |    0.0544s |       2.1% |
+| Solve temperature system        |         1 |   0.00139s |     0.054% |
+| Initialization                  |         2 |     0.105s |       4.1% |
+| Postprocessing                  |         1 |     0.171s |       6.7% |
+| Setup dof systems               |         1 |     0.458s |        18% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_2_q3/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_2_q3/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_2_q3/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 16 419 81 0 34 3.5414e+01 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 16 419 81 0 0 34 3.5414e+01 

Modified: branches/active_compositions/tests/sol_cx_4/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_4/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 30+3 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 1.125997e-06, 1.101883e-01, 1.670009e-06, 1.106214e-01
+     Errors u_L1, p_L1, u_L2, p_L2: 1.125997e-06, 1.101883e-01, 1.670008e-06, 1.106214e-01
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.317s |            |
+| Total wallclock time elapsed since start    |      4.24s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0155s |       4.9% |
-| Assemble temperature system     |         1 |    0.0317s |        10% |
-| Build Stokes preconditioner     |         1 |    0.0245s |       7.7% |
-| Build temperature preconditioner|         1 |   0.00525s |       1.7% |
-| Solve Stokes system             |         1 |    0.0672s |        21% |
-| Solve temperature system        |         1 |  0.000776s |      0.24% |
-| Initialization                  |         2 |    0.0243s |       7.7% |
-| Postprocessing                  |         1 |    0.0981s |        31% |
-| Setup dof systems               |         1 |     0.034s |        11% |
+| Assemble Stokes system          |         1 |     0.386s |       9.1% |
+| Assemble temperature system     |         1 |      1.22s |        29% |
+| Build Stokes preconditioner     |         1 |     0.258s |       6.1% |
+| Build temperature preconditioner|         1 |   0.00535s |      0.13% |
+| Solve Stokes system             |         1 |     0.103s |       2.4% |
+| Solve temperature system        |         1 |   0.00515s |      0.12% |
+| Initialization                  |         2 |     0.234s |       5.5% |
+| Postprocessing                  |         1 |     0.524s |        12% |
+| Setup dof systems               |         1 |      1.15s |        27% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_4/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_4/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 256 2467 1089 0 33 8.8081e+00 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 256 2467 1089 0 0 33 8.8081e+00 

Modified: branches/active_compositions/tests/sol_cx_4_conservative/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_4_conservative/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_conservative/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 30+4 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 1.120286e-06, 1.097680e-01, 1.662153e-06, 1.097686e-01
+     Errors u_L1, p_L1, u_L2, p_L2: 1.120286e-06, 1.097680e-01, 1.662152e-06, 1.097686e-01
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.342s |            |
+| Total wallclock time elapsed since start    |      5.06s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0133s |       3.9% |
-| Assemble temperature system     |         1 |    0.0347s |        10% |
-| Build Stokes preconditioner     |         1 |    0.0271s |       7.9% |
-| Build temperature preconditioner|         1 |   0.00527s |       1.5% |
-| Solve Stokes system             |         1 |    0.0758s |        22% |
-| Solve temperature system        |         1 |  0.000727s |      0.21% |
-| Initialization                  |         2 |    0.0345s |        10% |
-| Postprocessing                  |         1 |    0.0983s |        29% |
-| Setup dof systems               |         1 |    0.0332s |       9.7% |
+| Assemble Stokes system          |         1 |     0.388s |       7.7% |
+| Assemble temperature system     |         1 |      1.45s |        29% |
+| Build Stokes preconditioner     |         1 |     0.403s |         8% |
+| Build temperature preconditioner|         1 |   0.00531s |       0.1% |
+| Solve Stokes system             |         1 |     0.164s |       3.2% |
+| Solve temperature system        |         1 |    0.0256s |      0.51% |
+| Initialization                  |         2 |     0.937s |        19% |
+| Postprocessing                  |         1 |     0.859s |        17% |
+| Setup dof systems               |         1 |     0.424s |       8.4% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_4_conservative/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_4_conservative/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_conservative/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (years)
-0 0.0000e+00 256 2946 1089 0 34 2.7917e-07 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (years)
+0 0.0000e+00 256 2946 1089 0 0 34 2.7917e-07 

Modified: branches/active_compositions/tests/sol_cx_4_normalized_pressure/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_4_normalized_pressure/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_normalized_pressure/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 30+3 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 1.125997e-06, 2.994143e-03, 1.670009e-06, 9.778441e-03
+     Errors u_L1, p_L1, u_L2, p_L2: 1.125997e-06, 2.994144e-03, 1.670008e-06, 9.778441e-03
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.321s |            |
+| Total wallclock time elapsed since start    |      4.05s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0157s |       4.9% |
-| Assemble temperature system     |         1 |    0.0325s |        10% |
-| Build Stokes preconditioner     |         1 |     0.025s |       7.8% |
-| Build temperature preconditioner|         1 |   0.00527s |       1.6% |
-| Solve Stokes system             |         1 |    0.0679s |        21% |
-| Solve temperature system        |         1 |   0.00075s |      0.23% |
-| Initialization                  |         2 |    0.0254s |       7.9% |
-| Postprocessing                  |         1 |    0.0987s |        31% |
-| Setup dof systems               |         1 |    0.0341s |        11% |
+| Assemble Stokes system          |         1 |      0.39s |       9.6% |
+| Assemble temperature system     |         1 |      1.17s |        29% |
+| Build Stokes preconditioner     |         1 |     0.295s |       7.3% |
+| Build temperature preconditioner|         1 |   0.00545s |      0.13% |
+| Solve Stokes system             |         1 |     0.109s |       2.7% |
+| Solve temperature system        |         1 |    0.0252s |      0.62% |
+| Initialization                  |         2 |     0.221s |       5.5% |
+| Postprocessing                  |         1 |     0.541s |        13% |
+| Setup dof systems               |         1 |     0.977s |        24% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_4_normalized_pressure/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_4_normalized_pressure/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_normalized_pressure/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 256 2467 1089 0 33 8.8081e+00 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 256 2467 1089 0 0 33 8.8081e+00 

Modified: branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 19 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 1.132645e-06, 2.994063e-03, 1.685575e-06, 9.778949e-03
+     Errors u_L1, p_L1, u_L2, p_L2: 1.133264e-06, 2.994067e-03, 1.688315e-06, 9.778955e-03
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.278s |            |
+| Total wallclock time elapsed since start    |      4.45s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0171s |       6.1% |
-| Assemble temperature system     |         1 |    0.0317s |        11% |
-| Build Stokes preconditioner     |         1 |    0.0247s |       8.9% |
-| Build temperature preconditioner|         1 |   0.00531s |       1.9% |
-| Solve Stokes system             |         1 |    0.0242s |       8.7% |
-| Solve temperature system        |         1 |  0.000726s |      0.26% |
-| Initialization                  |         2 |    0.0254s |       9.1% |
-| Postprocessing                  |         1 |    0.0992s |        36% |
-| Setup dof systems               |         1 |    0.0338s |        12% |
+| Assemble Stokes system          |         1 |     0.521s |        12% |
+| Assemble temperature system     |         1 |      1.11s |        25% |
+| Build Stokes preconditioner     |         1 |     0.393s |       8.8% |
+| Build temperature preconditioner|         1 |    0.0054s |      0.12% |
+| Solve Stokes system             |         1 |     0.111s |       2.5% |
+| Solve temperature system        |         1 |    0.0251s |      0.56% |
+| Initialization                  |         2 |     0.108s |       2.4% |
+| Postprocessing                  |         1 |      1.28s |        29% |
+| Setup dof systems               |         1 |     0.574s |        13% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_normalized_pressure_large_static_pressure/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 256 2467 1089 0 19 8.8074e+00 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 256 2467 1089 0 0 19 8.8073e+00 

Modified: branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/screen-output
===================================================================
--- branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 14 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 1.729973e-06, 3.087877e-03, 2.357639e-06, 9.798674e-03
+     Errors u_L1, p_L1, u_L2, p_L2: 1.782744e-06, 3.088647e-03, 2.429580e-06, 9.798174e-03
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.273s |            |
+| Total wallclock time elapsed since start    |      4.53s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0187s |       6.9% |
-| Assemble temperature system     |         1 |    0.0319s |        12% |
-| Build Stokes preconditioner     |         1 |     0.025s |       9.2% |
-| Build temperature preconditioner|         1 |   0.00531s |       1.9% |
-| Solve Stokes system             |         1 |    0.0182s |       6.7% |
-| Solve temperature system        |         1 |  0.000738s |      0.27% |
-| Initialization                  |         2 |    0.0256s |       9.4% |
-| Postprocessing                  |         1 |    0.0979s |        36% |
-| Setup dof systems               |         1 |    0.0338s |        12% |
+| Assemble Stokes system          |         1 |     0.353s |       7.8% |
+| Assemble temperature system     |         1 |       1.1s |        24% |
+| Build Stokes preconditioner     |         1 |     0.257s |       5.7% |
+| Build temperature preconditioner|         1 |   0.00563s |      0.12% |
+| Solve Stokes system             |         1 |    0.0391s |      0.86% |
+| Solve temperature system        |         1 |   0.00528s |      0.12% |
+| Initialization                  |         2 |     0.143s |       3.2% |
+| Postprocessing                  |         1 |     0.783s |        17% |
+| Setup dof systems               |         1 |      1.41s |        31% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/statistics
===================================================================
--- branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_cx_4_normalized_pressure_low_solver_tolerance/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 256 2467 1089 0 14 8.8189e+00 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 256 2467 1089 0 0 14 8.8186e+00 

Modified: branches/active_compositions/tests/sol_kz_2/screen-output
===================================================================
--- branches/active_compositions/tests/sol_kz_2/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_2/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 30+2 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 5.054534e-06, 1.492377e-02, 7.343796e-06, 1.993999e-02
+     Errors u_L1, p_L1, u_L2, p_L2: 5.054531e-06, 1.492378e-02, 7.343795e-06, 1.994003e-02
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.105s |            |
+| Total wallclock time elapsed since start    |      1.67s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |   0.00657s |       6.2% |
-| Assemble temperature system     |         1 |    0.0232s |        22% |
-| Build Stokes preconditioner     |         1 |    0.0104s |       9.9% |
-| Build temperature preconditioner|         1 |   0.00117s |       1.1% |
-| Solve Stokes system             |         1 |    0.0107s |        10% |
-| Solve temperature system        |         1 |  0.000454s |      0.43% |
-| Initialization                  |         2 |    0.0231s |        22% |
-| Postprocessing                  |         1 |   0.00788s |       7.5% |
-| Setup dof systems               |         1 |   0.00961s |       9.1% |
+| Assemble Stokes system          |         1 |     0.177s |        11% |
+| Assemble temperature system     |         1 |     0.605s |        36% |
+| Build Stokes preconditioner     |         1 |      0.12s |       7.2% |
+| Build temperature preconditioner|         1 |   0.00124s |     0.074% |
+| Solve Stokes system             |         1 |    0.0294s |       1.8% |
+| Solve temperature system        |         1 |   0.00113s |     0.067% |
+| Initialization                  |         2 |      0.14s |       8.4% |
+| Postprocessing                  |         1 |     0.216s |        13% |
+| Setup dof systems               |         1 |     0.236s |        14% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_kz_2/statistics
===================================================================
--- branches/active_compositions/tests/sol_kz_2/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_2/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 16 187 81 0 32 1.0995e+03 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 16 187 81 0 0 32 1.0995e+03 

Modified: branches/active_compositions/tests/sol_kz_2_conservative/screen-output
===================================================================
--- branches/active_compositions/tests/sol_kz_2_conservative/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_2_conservative/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 30+2 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 5.054534e-06, 1.492377e-02, 7.343796e-06, 1.993999e-02
+     Errors u_L1, p_L1, u_L2, p_L2: 5.054531e-06, 1.492378e-02, 7.343795e-06, 1.994003e-02
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.102s |            |
+| Total wallclock time elapsed since start    |      1.43s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |   0.00656s |       6.4% |
-| Assemble temperature system     |         1 |    0.0219s |        21% |
-| Build Stokes preconditioner     |         1 |    0.0105s |        10% |
-| Build temperature preconditioner|         1 |   0.00116s |       1.1% |
-| Solve Stokes system             |         1 |    0.0108s |        11% |
-| Solve temperature system        |         1 |  0.000454s |      0.44% |
-| Initialization                  |         2 |    0.0225s |        22% |
-| Postprocessing                  |         1 |   0.00775s |       7.6% |
-| Setup dof systems               |         1 |   0.00891s |       8.7% |
+| Assemble Stokes system          |         1 |     0.169s |        12% |
+| Assemble temperature system     |         1 |     0.549s |        38% |
+| Build Stokes preconditioner     |         1 |      0.14s |       9.8% |
+| Build temperature preconditioner|         1 |   0.00122s |     0.085% |
+| Solve Stokes system             |         1 |    0.0693s |       4.8% |
+| Solve temperature system        |         1 |   0.00112s |     0.078% |
+| Initialization                  |         2 |     0.077s |       5.4% |
+| Postprocessing                  |         1 |     0.137s |       9.6% |
+| Setup dof systems               |         1 |      0.16s |        11% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_kz_2_conservative/statistics
===================================================================
--- branches/active_compositions/tests/sol_kz_2_conservative/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_2_conservative/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (years)
-0 0.0000e+00 16 187 81 0 32 3.4841e-05 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (years)
+0 0.0000e+00 16 187 81 0 0 32 3.4841e-05 

Modified: branches/active_compositions/tests/sol_kz_2_q3/screen-output
===================================================================
--- branches/active_compositions/tests/sol_kz_2_q3/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_2_q3/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -7,23 +7,23 @@
    Solving Stokes system... 30+9 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 7.274377e-07, 2.219141e-03, 1.423559e-06, 3.234685e-03
+     Errors u_L1, p_L1, u_L2, p_L2: 7.274379e-07, 2.219137e-03, 1.423558e-06, 3.234684e-03
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.144s |            |
+| Total wallclock time elapsed since start    |      2.96s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |   0.00951s |       6.6% |
-| Assemble temperature system     |         1 |    0.0283s |        20% |
-| Build Stokes preconditioner     |         1 |    0.0165s |        12% |
-| Build temperature preconditioner|         1 |   0.00124s |      0.86% |
-| Solve Stokes system             |         1 |    0.0272s |        19% |
-| Solve temperature system        |         1 |  0.000499s |      0.35% |
-| Initialization                  |         2 |    0.0236s |        16% |
-| Postprocessing                  |         1 |    0.0117s |       8.1% |
-| Setup dof systems               |         1 |    0.0122s |       8.5% |
+| Assemble Stokes system          |         1 |     0.568s |        19% |
+| Assemble temperature system     |         1 |      1.23s |        42% |
+| Build Stokes preconditioner     |         1 |     0.351s |        12% |
+| Build temperature preconditioner|         1 |   0.00127s |     0.043% |
+| Solve Stokes system             |         1 |    0.0872s |         3% |
+| Solve temperature system        |         1 |   0.00136s |     0.046% |
+| Initialization                  |         2 |     0.105s |       3.5% |
+| Postprocessing                  |         1 |    0.0933s |       3.2% |
+| Setup dof systems               |         1 |      0.35s |        12% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_kz_2_q3/statistics
===================================================================
--- branches/active_compositions/tests/sol_kz_2_q3/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_2_q3/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 16 419 81 0 39 9.7871e+02 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 16 419 81 0 0 39 9.7871e+02 

Modified: branches/active_compositions/tests/sol_kz_4/screen-output
===================================================================
--- branches/active_compositions/tests/sol_kz_4/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_4/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -4,26 +4,26 @@
 *** Timestep 0:  t=0 seconds
    Solving temperature system... 0 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+8 iterations.
+   Solving Stokes system... 30+7 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 9.024063e-08, 6.588197e-04, 2.330068e-07, 1.068891e-03
+     Errors u_L1, p_L1, u_L2, p_L2: 9.024083e-08, 6.588221e-04, 2.330059e-07, 1.068891e-03
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.334s |            |
+| Total wallclock time elapsed since start    |      3.54s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0137s |       4.1% |
-| Assemble temperature system     |         1 |    0.0336s |        10% |
-| Build Stokes preconditioner     |         1 |      0.03s |         9% |
-| Build temperature preconditioner|         1 |   0.00528s |       1.6% |
-| Solve Stokes system             |         1 |    0.0883s |        26% |
-| Solve temperature system        |         1 |  0.000745s |      0.22% |
-| Initialization                  |         2 |     0.025s |       7.5% |
-| Postprocessing                  |         1 |    0.0865s |        26% |
-| Setup dof systems               |         1 |    0.0343s |        10% |
+| Assemble Stokes system          |         1 |     0.353s |        10% |
+| Assemble temperature system     |         1 |      1.15s |        33% |
+| Build Stokes preconditioner     |         1 |     0.304s |       8.6% |
+| Build temperature preconditioner|         1 |   0.00536s |      0.15% |
+| Solve Stokes system             |         1 |     0.119s |       3.4% |
+| Solve temperature system        |         1 |   0.00508s |      0.14% |
+| Initialization                  |         2 |    0.0698s |         2% |
+| Postprocessing                  |         1 |     0.378s |        11% |
+| Setup dof systems               |         1 |     0.746s |        21% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_kz_4/statistics
===================================================================
--- branches/active_compositions/tests/sol_kz_4/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_4/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (seconds)
-0 0.0000e+00 256 2467 1089 0 37 2.8480e+02 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (seconds)
+0 0.0000e+00 256 2467 1089 0 0 37 2.8480e+02 

Modified: branches/active_compositions/tests/sol_kz_4_conservative/screen-output
===================================================================
--- branches/active_compositions/tests/sol_kz_4_conservative/screen-output	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_4_conservative/screen-output	2012-10-18 20:18:18 UTC (rev 1286)
@@ -4,26 +4,26 @@
 *** Timestep 0:  t=0 years
    Solving temperature system... 0 iterations.
    Rebuilding Stokes preconditioner...
-   Solving Stokes system... 30+8 iterations.
+   Solving Stokes system... 30+7 iterations.
 
    Postprocessing:
-     Errors u_L1, p_L1, u_L2, p_L2: 9.024063e-08, 6.588197e-04, 2.330068e-07, 1.068891e-03
+     Errors u_L1, p_L1, u_L2, p_L2: 9.024083e-08, 6.588221e-04, 2.330059e-07, 1.068891e-03
 
 
 
 +---------------------------------------------+------------+------------+
-| Total wallclock time elapsed since start    |     0.334s |            |
+| Total wallclock time elapsed since start    |      3.59s |            |
 |                                             |            |            |
 | Section                         | no. calls |  wall time | % of total |
 +---------------------------------+-----------+------------+------------+
-| Assemble Stokes system          |         1 |    0.0197s |       5.9% |
-| Assemble temperature system     |         1 |     0.032s |       9.6% |
-| Build Stokes preconditioner     |         1 |    0.0248s |       7.4% |
-| Build temperature preconditioner|         1 |   0.00524s |       1.6% |
-| Solve Stokes system             |         1 |    0.0882s |        26% |
-| Solve temperature system        |         1 |  0.000775s |      0.23% |
-| Initialization                  |         2 |    0.0249s |       7.5% |
-| Postprocessing                  |         1 |    0.0889s |        27% |
-| Setup dof systems               |         1 |    0.0341s |        10% |
+| Assemble Stokes system          |         1 |     0.456s |        13% |
+| Assemble temperature system     |         1 |     0.747s |        21% |
+| Build Stokes preconditioner     |         1 |     0.292s |       8.1% |
+| Build temperature preconditioner|         1 |   0.00536s |      0.15% |
+| Solve Stokes system             |         1 |     0.119s |       3.3% |
+| Solve temperature system        |         1 |   0.00509s |      0.14% |
+| Initialization                  |         2 |      0.15s |       4.2% |
+| Postprocessing                  |         1 |     0.541s |        15% |
+| Setup dof systems               |         1 |     0.944s |        26% |
 +---------------------------------+-----------+------------+------------+
 

Modified: branches/active_compositions/tests/sol_kz_4_conservative/statistics
===================================================================
--- branches/active_compositions/tests/sol_kz_4_conservative/statistics	2012-10-18 19:58:14 UTC (rev 1285)
+++ branches/active_compositions/tests/sol_kz_4_conservative/statistics	2012-10-18 20:18:18 UTC (rev 1286)
@@ -3,7 +3,8 @@
 # 3: Number of mesh cells
 # 4: Number of Stokes degrees of freedom
 # 5: Number of temperature degrees of freedom
-# 6: Iterations for temperature solver
-# 7: Iterations for Stokes solver
-# 8: Time step size (years)
-0 0.0000e+00 256 2467 1089 0 37 9.0249e-06 
+# 6: Number of composition degrees of freedom
+# 7: Iterations for temperature solver
+# 8: Iterations for Stokes solver
+# 9: Time step size (years)
+0 0.0000e+00 256 2467 1089 0 0 37 9.0249e-06 



More information about the CIG-COMMITS mailing list