[cig-commits] commit 2461 by heister to /var/svn/dealii/aspect

dealii.demon at gmail.com dealii.demon at gmail.com
Thu Apr 10 05:30:51 PDT 2014


Revision 2461

merge from mainline

_U  branches/freesurface/
A   branches/freesurface/cookbooks/future/sphere.prm
U   branches/freesurface/doc/astyle.rc
U   branches/freesurface/doc/modules/changes.h
U   branches/freesurface/doc/modules/todo.h
A   branches/freesurface/include/aspect/geometry_model/sphere.h
U   branches/freesurface/include/aspect/gravity_model/radial.h
U   branches/freesurface/include/aspect/simulator.h
A   branches/freesurface/source/geometry_model/sphere.cc
U   branches/freesurface/source/gravity_model/radial.cc
U   branches/freesurface/source/simulator/nullspace.cc
U   branches/freesurface/source/simulator/parameters.cc


http://www.dealii.org/websvn/revision.php?repname=Aspect+Repository&path=%2F&rev=2461&peg=2461

Diff:
Index: branches/freesurface
===================================================================
--- branches/freesurface	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface	2014-04-10 12:30:50 UTC (rev 2461)

Property changes on: branches/freesurface
___________________________________________________________________
Modified: svn:mergeinfo
## -2,4 +2,4 ##
 /branches/compositional:1141-1251
 /branches/fully-nonlinear:542-728
 /branches/j-dannberg:1679,1875-1882
-/trunk/aspect:2386-2445
+/trunk/aspect:2386-2460
\ No newline at end of property
Copied: branches/freesurface/cookbooks/future/sphere.prm (from rev 2460, trunk/aspect/cookbooks/future/sphere.prm)
===================================================================
--- branches/freesurface/cookbooks/future/sphere.prm	                        (rev 0)
+++ branches/freesurface/cookbooks/future/sphere.prm	2014-04-10 12:30:50 UTC (rev 2461)
@@ -0,0 +1,75 @@
+# A simple setup for convection in a sphere
+# manual for more information.
+set Dimension                              = 2
+set Use years in output instead of seconds = true
+set End time                               = 5.0e8
+set Output directory                       = output
+
+
+subsection Material model
+  set Model name = simple
+  subsection Simple model
+    set Thermal expansion coefficient = 4e-5
+    set Viscosity                     = 1e20
+  end
+end
+
+
+subsection Geometry model
+  set Model name = sphere
+  subsection Sphere
+    set Radius  = 1250000
+  end
+end
+
+
+subsection Model settings
+  set Zero velocity boundary indicators       = 
+  set Tangential velocity boundary indicators = 0
+  set Prescribed velocity boundary indicators =
+  set Fixed temperature boundary indicators   = 0
+  set Include shear heating                   = false 
+  set Remove nullspace = net rotation
+end
+
+
+subsection Boundary temperature model
+  set Model name = constant
+  subsection Constant
+    set Boundary indicator to temperature mappings = 0 : 0.0 
+  end
+end
+
+
+subsection Initial conditions
+  set Model name = function
+  subsection Function
+    set Function expression = if( sqrt( (x-5.e5)^2 + (y-5.e5)^2) < 1.e5, 0, 100)
+  end
+end
+
+
+subsection Gravity model
+  set Model name = radial linear
+  subsection Radial linear
+    set Magnitude at surface = 4.5
+  end
+end
+
+
+subsection Mesh refinement
+  set Initial global refinement          = 5
+  set Initial adaptive refinement        = 2
+  set Strategy                           = temperature
+  set Time steps between mesh refinement = 15
+end
+
+
+subsection Postprocess
+  set List of postprocessors = visualization, velocity statistics, temperature statistics, heat flux statistics
+  subsection Visualization
+    set Output format                 = vtu
+    set Time between graphical output = 1e6
+    set Number of grouped files       = 0
+  end
+end

Modified: branches/freesurface/doc/astyle.rc
===================================================================
--- branches/freesurface/doc/astyle.rc	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/doc/astyle.rc	2014-04-10 12:30:50 UTC (rev 2461)
@@ -1,6 +1,6 @@
 # astyle 2.02 indentation style for the Aspect program
 # Run astyle in a command like
-#    astyle --options=doc/astyle.rc source/*cc source/*/*cc include/aspect/*h
+#    astyle --options=doc/astyle.rc `find include source | egrep '\.(h|cc)$'`
 
 --style=gnu
 

Modified: branches/freesurface/doc/modules/changes.h
===================================================================
--- branches/freesurface/doc/modules/changes.h	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/doc/modules/changes.h	2014-04-10 12:30:50 UTC (rev 2461)
@@ -8,8 +8,8 @@
 </p>
 
 <ol>
-  <li>Fixed: the simple material model now ignores negative
-  compositional values that can occur from numerical undershoots
+  <li>Fixed: The simple material model now ignores negative
+  compositional values that can occur from numerical undershots
   and even interpolation onto the FE space. This makes the
   cookbook/composition-active.prm work again.
   <br>
@@ -20,6 +20,12 @@
   <br>
   (Ian Rose, Timo Heister, 2014/04/07)
 
+  <li>New: A geometry model implementing a full sphere. There is also
+  a corresponding gravity model where gravity increases linearly as you
+  move outward.
+  <br>
+  (Ian Rose, 2014/04/07)
+
   <li>New: The box geometry allows you to specify a repetition
   argument in each coordinate direction.
   <br>
@@ -47,6 +53,12 @@
   <br>
   (Wolfgang Bangerth, 2014/03/31)
 
+  <li>New: The manual now contains a cookbook section that discussed a
+  model running in a 3d spherical shell. Movies for this model can
+  be found at https://www.youtube.com/channel/UCDTTQ068ablZ8k9J31wNk_Q .
+  <br>
+  (Wolfgang Bangerth 2014/03/30)
+
   <li>Changed: The 'radial constant' gravity model had a default of
   $30 m/s^2$ for the magnitude of the gravity. This value makes no
   sense. It has therefore been changed to the value we have at
@@ -279,7 +291,7 @@
   <br>
   (Timo Heister 2013/10/28)
 
-  <li>Fixed: moved particle generation to a class, changed particle
+  <li>Fixed: Moved particle generation to a class, changed particle
   integration and generation to be factory patterned classes. There
   should be no effect on the user but this will allow for easier
   extension of particle functionality in the future.
@@ -345,7 +357,7 @@
   <br>
   (Ted Studley, 2013/06/20)
 
-  <li>Removed: the parameter "Nonlinear iteration" was
+  <li>Removed: The parameter "Nonlinear iteration" was
   not used anywhere so it got removed. You might need
   to delete this line from your prm files.
   <br>

Modified: branches/freesurface/doc/modules/todo.h
===================================================================
--- branches/freesurface/doc/modules/todo.h	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/doc/modules/todo.h	2014-04-10 12:30:50 UTC (rev 2461)
@@ -1,5 +1,5 @@
 /**
- * @page TODO TODOs -- Things that eventually will need to be addressed
+ * @page TODO TODOs -- things that will eventually need to be addressed
 
 <h3>Extensions we'd like to implement</h3>
  

Copied: branches/freesurface/include/aspect/geometry_model/sphere.h (from rev 2460, trunk/aspect/include/aspect/geometry_model/sphere.h)
===================================================================
--- branches/freesurface/include/aspect/geometry_model/sphere.h	                        (rev 0)
+++ branches/freesurface/include/aspect/geometry_model/sphere.h	2014-04-10 12:30:50 UTC (rev 2461)
@@ -0,0 +1,97 @@
+/*
+  Copyright (C) 2014 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/>.
+*/
+#ifndef __aspect__geometry_model_sphere_h
+#define __aspect__geometry_model_sphere_h
+
+#include <aspect/geometry_model/interface.h>
+
+
+namespace aspect
+{
+  namespace GeometryModel
+  {
+    using namespace dealii;
+
+    template <int dim>
+    class Sphere : public Interface<dim>
+    {
+      public:
+        /**
+         * Generate a coarse mesh for the geometry described by this class.
+         */
+        virtual
+        void create_coarse_mesh (parallel::distributed::Triangulation<dim> &coarse_grid) const;
+
+        /**
+         * Return the typical length scale one would expect of features in this geometry,
+         * assuming realistic parameters.
+         *
+         * As discussed in the step-32 tutorial program, an appropriate length scale for
+         * this geometry is 10km, so we return $10^4$ here.
+         */
+        virtual
+        double length_scale () const;
+
+        virtual
+        double depth(const Point<dim> &position) const;
+
+        virtual
+        Point<dim> representative_point(const double depth) const;
+
+        virtual
+        double maximal_depth() const;
+
+        /**
+               * Return the set of boundary indicators that are used by this model. This
+         * information is used to determine what boundary indicators can be used in
+         * the input file.
+         *
+         * The sphere model only has one boundary, with indicator zero.
+               */
+        virtual
+        std::set<types::boundary_id>
+        get_used_boundary_indicators () const;
+
+        static
+        void
+        declare_parameters (ParameterHandler &prm);
+
+        virtual
+        void
+        parse_parameters (ParameterHandler &prm);
+
+        /**
+         * Return the radius of the sphere.
+         */
+        double
+        radius () const;
+
+      public:
+        /**
+         * Radius of the sphere
+         */
+        double R;
+
+    };
+  }
+}
+
+
+#endif

Modified: branches/freesurface/include/aspect/gravity_model/radial.h
===================================================================
--- branches/freesurface/include/aspect/gravity_model/radial.h	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/include/aspect/gravity_model/radial.h	2014-04-10 12:30:50 UTC (rev 2461)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
+  Copyright (C) 2014 by the authors of the ASPECT code.
 
   This file is part of ASPECT.
 
@@ -23,6 +23,7 @@
 #ifndef __aspect__gravity_model_radial_h
 #define __aspect__gravity_model_radial_h
 
+#include <aspect/simulator.h>
 #include <aspect/gravity_model/interface.h>
 
 namespace aspect
@@ -91,6 +92,44 @@
         virtual Tensor<1,dim> gravity_vector (const Point<dim> &position) const;
     };
 
+    /**
+     * A class that describes gravity as a radial vector of linearly
+     * decreasing magnitude with depth.  Meant for use in the Sphere
+     * geometry model, where you expect that kind of field.
+     *
+     * @ingroup GravityModels
+     */
+    template <int dim>
+    class RadialLinear : public Interface<dim>, public virtual SimulatorAccess<dim>
+    {
+      public:
+        /**
+         * Return the gravity vector as a function of position.
+         */
+        virtual Tensor<1,dim> gravity_vector (const Point<dim> &position) const;
+
+        /**
+         * 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:
+        /**
+         * Magnitude of the gravity vector at the surface, m/s^2
+         */
+        double magnitude_at_surface;
+
+    };
   }
 }
 

Modified: branches/freesurface/include/aspect/simulator.h
===================================================================
--- branches/freesurface/include/aspect/simulator.h	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/include/aspect/simulator.h	2014-04-10 12:30:50 UTC (rev 2461)
@@ -930,13 +930,19 @@
 
 
       /**
-       * interpolates the given function onto the velocity FE space and write it into the given vector.
+       * Interpolate the given function onto the velocity FE space and write it into the given vector.
+       *
+       * This function is implemented in
+       * <code>source/simulator/helper_functions.cc</code>.
        */
       void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
           LinearAlgebra::Vector &vec);
 
       /**
-       * Sets up data structures for null space removal. Called after every mesh refinement.
+       * Set up data structures for null space removal. Called after every mesh refinement.
+       *
+       * This function is implemented in
+       * <code>source/simulator/nullspace.cc</code>.
        */
       void setup_nullspace_removal();
 
@@ -946,6 +952,9 @@
        *
        * @param relevant_dst locally relevant vector for the whole FE, will be filled at the end.
        * @param tmp_distributed_stokes only contains velocity and pressure.
+       *
+       * This function is implemented in
+       * <code>source/simulator/nullspace.cc</code>.
        */
       void remove_nullspace(LinearAlgebra::BlockVector &relevant_dst,
           LinearAlgebra::BlockVector &tmp_distributed_stokes);

Copied: branches/freesurface/source/geometry_model/sphere.cc (from rev 2460, trunk/aspect/source/geometry_model/sphere.cc)
===================================================================
--- branches/freesurface/source/geometry_model/sphere.cc	                        (rev 0)
+++ branches/freesurface/source/geometry_model/sphere.cc	2014-04-10 12:30:50 UTC (rev 2461)
@@ -0,0 +1,150 @@
+/*
+  Copyright (C) 2014 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/>.
+*/
+
+
+#include <aspect/geometry_model/sphere.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+
+
+namespace aspect
+{
+  namespace GeometryModel
+  {
+    template <int dim>
+    void
+    Sphere<dim>::
+    create_coarse_mesh (parallel::distributed::Triangulation<dim> &coarse_grid) const
+    {
+      GridGenerator::hyper_ball (coarse_grid,
+                                  Point<dim>(),
+                                  R);
+      static const HyperBallBoundary<dim> boundary_ball(Point<dim>(), R);
+      coarse_grid.set_boundary (0, boundary_ball);
+    }
+
+
+    template <int dim>
+    std::set<types::boundary_id>
+    Sphere<dim>::
+    get_used_boundary_indicators () const
+    {
+      const types::boundary_id s[] = { 0 };
+      return std::set<types::boundary_id>(&s[0],
+                                          &s[sizeof(s)/sizeof(s[0])]);
+    }
+
+
+    template <int dim>
+    double
+    Sphere<dim>::
+    length_scale () const
+    {
+      // as described in the first ASPECT paper, a length scale of
+      // 10km = 1e4m works well for the pressure scaling for earth
+      // sized spherical shells. use a length scale that
+      // yields this value for the R0,R1 corresponding to earth
+      // but otherwise scales like (R1-R0)
+      return 1e4 * maximal_depth() / (6336000.-3481000.);
+    }
+
+
+
+    template <int dim>
+    double
+    Sphere<dim>::depth(const Point<dim> &position) const
+    {
+      return std::min (std::max (R-position.norm(), 0.), maximal_depth());
+    }
+
+
+
+    template <int dim>
+    Point<dim>
+    Sphere<dim>::representative_point(const double depth) const
+    {
+      Point<dim> p;
+      p(dim-1) = std::min (std::max(R - depth, 0.), maximal_depth());
+      return p;
+    }
+
+
+
+    template <int dim>
+    double
+    Sphere<dim>::maximal_depth() const
+    {
+      return R;
+    }
+
+    template <int dim>
+    double Sphere<dim>::radius () const
+    {
+      return R;
+    }
+
+
+    template <int dim>
+    void
+    Sphere<dim>::declare_parameters (ParameterHandler &prm)
+    {
+      prm.enter_subsection("Geometry model");
+      {
+        prm.enter_subsection("Sphere");
+        {
+          prm.declare_entry ("Radius", "6371000", 
+                             Patterns::Double (0),
+                             "Radius of the sphere. Units: m.");
+        }
+        prm.leave_subsection();
+      }
+      prm.leave_subsection();
+    }
+
+
+
+    template <int dim>
+    void
+    Sphere<dim>::parse_parameters (ParameterHandler &prm)
+    {
+      prm.enter_subsection("Geometry model");
+      {
+        prm.enter_subsection("Sphere");
+        {
+          R            = prm.get_double ("Radius");
+        }
+        prm.leave_subsection();
+      }
+      prm.leave_subsection();
+    }
+  }
+}
+
+// explicit instantiations
+namespace aspect
+{
+  namespace GeometryModel
+  {
+    ASPECT_REGISTER_GEOMETRY_MODEL(Sphere,
+                                   "sphere",
+                                   "Geometry model for sphere with a user specified radius.")
+  }
+}

Modified: branches/freesurface/source/gravity_model/radial.cc
===================================================================
--- branches/freesurface/source/gravity_model/radial.cc	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/source/gravity_model/radial.cc	2014-04-10 12:30:50 UTC (rev 2461)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
+  Copyright (C) 2014 by the authors of the ASPECT code.
 
   This file is part of ASPECT.
 
@@ -17,7 +17,6 @@
   along with ASPECT; see the file doc/COPYING.  If not see
   <http://www.gnu.org/licenses/>.
 */
-/*  $Id$  */
 
 
 #include <aspect/gravity_model/radial.h>
@@ -83,6 +82,54 @@
       return -(1.245e-6 * r + 7.714e13/r/r) * p / r;
     }
 
+
+// ----------------------------- RadialLinear ----------------------
+    template <int dim>
+    Tensor<1,dim>
+    RadialLinear<dim>::gravity_vector (const Point<dim> &p) const
+    {
+      if(p.norm() == 0.0) return Tensor<1,dim>();
+
+      double depth = this->get_geometry_model().depth(p);
+      Tensor<1,dim> grav =  -magnitude_at_surface * p/p.norm() *
+                            (1.0 - depth/this->get_geometry_model().maximal_depth());
+      return grav;
+    }
+
+    template <int dim>
+    void
+    RadialLinear<dim>::declare_parameters (ParameterHandler &prm)
+    {
+      prm.enter_subsection("Gravity model");
+      {
+        prm.enter_subsection("Radial linear");
+        {
+          prm.declare_entry ("Magnitude at surface", "9.8",
+                             Patterns::Double (0),
+                             "Magnitude of the radial gravity vector"
+                             "at the surface of the domain, m/s^2");
+        }
+        prm.leave_subsection ();
+      }
+      prm.leave_subsection ();
+    }
+
+
+    template <int dim>
+    void
+    RadialLinear<dim>::parse_parameters (ParameterHandler &prm)
+    {
+      prm.enter_subsection("Gravity model");
+      {
+        prm.enter_subsection("Radial linear");
+        {
+          magnitude_at_surface = prm.get_double ("Magnitude at surface");
+        }
+        prm.leave_subsection ();
+      }
+      prm.leave_subsection ();
+    }
+
   }
 }
 
@@ -104,5 +151,11 @@
                                   "the core-mantle boundary as well as at the surface and "
                                   "in between is physically correct under the assumption "
                                   "of a constant density.")
+
+    ASPECT_REGISTER_GRAVITY_MODEL(RadialLinear,
+                                  "radial linear",
+                                  "A gravity model which is radially inward, where the magnitude"
+                                  "decreases linearly with depth, as you would get with a constant"
+                                  "density spherical domain.")
   }
 }

Modified: branches/freesurface/source/simulator/nullspace.cc
===================================================================
--- branches/freesurface/source/simulator/nullspace.cc	2014-04-10 12:25:52 UTC (rev 2460)
+++ branches/freesurface/source/simulator/nullspace.cc	2014-04-10 12:30:50 UTC (rev 2461)
@@ -46,24 +46,54 @@
 
 
 
+    /**
+     * A class we use when setting up the data structures for nullspace removal
+     * of the rotations in spherical or annular shells.
+     */
     template<int dim>
     class Rotation : public TensorFunction<1,dim>
-      {
-        private:
-          Tensor<1,dim> axis;
-        public:
-          Rotation(const unsigned int a) : axis(Tensor<1,dim>(Point<dim>::unit_vector(a))) {}
-          virtual Tensor<1,dim> value (const Point<dim> &p) const { Tensor<1,dim> vel; if( dim == 2) cross_product(vel, p); else cross_product(vel, axis, p); return vel;}
-      };
+    {
+    private:
+      Tensor<1,dim> axis;
 
+    public:
+      Rotation(const unsigned int a)
+    :
+      axis(Tensor<1,dim>(Point<dim>::unit_vector(a)))
+    {}
+
+      virtual Tensor<1,dim> value (const Point<dim> &p) const
+                  {
+        Tensor<1,dim> vel;
+        if( dim == 2)
+          cross_product(vel, p);
+        else
+          cross_product(vel, axis, p);
+        return vel;
+                  }
+    };
+
+
+    /**
+     * A class we use when setting up the data structures for nullspace removal
+     * of the translations in box-like geometries.
+     */
     template <int dim>
     class Translation : public TensorFunction<1,dim>
     {
-      private:
-        const unsigned int direction;
-      public:
-        Translation(const unsigned int d) : direction(d) {}
-        virtual Tensor<1,dim> value(const Point<dim> &) const { return Tensor<1,dim>(Point<dim>::unit_vector(direction)); }
+    private:
+      const unsigned int direction;
+
+    public:
+      Translation(const unsigned int d)
+    :
+      direction(d)
+    {}
+
+      virtual Tensor<1,dim> value(const Point<dim> &) const
+                {
+        return Point<dim>::unit_vector(direction);
+                }
     };
 
   }
@@ -95,13 +125,13 @@
       {
         net_rotations_translations.resize(funcs.size());
         for (unsigned int i=0;i<funcs.size();++i)
-          net_rotations_translations[i].reinit(
-              introspection.index_sets.system_partitioning[introspection.block_indices.velocities],
-              mpi_communicator);
-
-        unsigned int idx = 0;
-        for (unsigned int i=0;i<funcs.size();++i)
           {
+            // for each of the null space dimensions, set up
+            // a vector, fill it with an element of the null space,
+            // and normalize it
+            net_rotations_translations[i].reinit(
+                introspection.index_sets.system_partitioning[introspection.block_indices.velocities],
+                mpi_communicator);
             interpolate_onto_velocity_system(*funcs[i],
                 net_rotations_translations[i]);
             net_rotations_translations[i] /= net_rotations_translations[i].l2_norm();
@@ -110,6 +140,8 @@
       }
   }
 
+
+
   template <int dim>
   void Simulator<dim>::remove_nullspace(LinearAlgebra::BlockVector &relevant_dst, LinearAlgebra::BlockVector &tmp_distributed_stokes)
   {
@@ -118,7 +150,9 @@
       {
         for(unsigned int i=0; i<net_rotations_translations.size(); ++i)
         {
-           double power = net_rotations_translations[i]
+            // compute the magnitude of the solution vector in direction
+            // of this null space vector and subtract the corresponding multiple
+           const double power = net_rotations_translations[i]
                           * tmp_distributed_stokes.block(introspection.block_indices.velocities);
            tmp_distributed_stokes.block(introspection.block_indices.velocities).sadd(1.0,
                      -1.0*power,
@@ -132,18 +166,22 @@
       }
   }
 
+
+
   template <>
   void
-  Simulator<3>::remove_net_angular_momentum( LinearAlgebra::BlockVector &relevant_dst, LinearAlgebra::BlockVector &tmp_distributed_stokes )
+  Simulator<3>::remove_net_angular_momentum( LinearAlgebra::BlockVector &relevant_dst,
+                                             LinearAlgebra::BlockVector &tmp_distributed_stokes )
   {
     AssertThrow(false, ExcNotImplemented());
   }
 
+
   template <>
   void
-  Simulator<2>::remove_net_angular_momentum( LinearAlgebra::BlockVector &relevant_dst, LinearAlgebra::BlockVector &tmp_distributed_stokes )
+  Simulator<2>::remove_net_angular_momentum( LinearAlgebra::BlockVector &relevant_dst,
+                                             LinearAlgebra::BlockVector &tmp_distributed_stokes )
   {
-
     // compute and remove angular momentum from velocity field, by computing
     // int rho V 


More information about the CIG-COMMITS mailing list