[cig-commits] [commit] aspect-1.1: initialize() cleanup (67092a9)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Jun 4 12:47:07 PDT 2014


Repository : https://github.com/geodynamics/aspect

On branch  : aspect-1.1
Link       : https://github.com/geodynamics/aspect/compare/dea94ae3fdac1f434e32718c384fe5ce83109802...db7eea299d721e7afa2dc72d8f42352dc88a9e16

>---------------------------------------------------------------

commit 67092a977707b10c4792f8adc71fafdd17d88805
Author: Timo Heister <timo.heister at gmail.com>
Date:   Sun Jun 1 11:43:54 2014 -0400

    initialize() cleanup
    
    Now all plugin interfaces have an initialize() function that will be
    called *after* SimulatorAccess is available.


>---------------------------------------------------------------

67092a977707b10c4792f8adc71fafdd17d88805
 include/aspect/boundary_composition/interface.h        |  5 +++++
 include/aspect/boundary_temperature/interface.h        |  5 +++++
 include/aspect/geometry_model/interface.h              |  5 +++++
 include/aspect/gravity_model/interface.h               |  5 +++++
 include/aspect/material_model/steinberger.h            |  1 +
 include/aspect/mesh_refinement/interface.h             |  5 +++++
 include/aspect/postprocess/interface.h                 |  5 +++++
 include/aspect/termination_criteria/interface.h        |  5 +++++
 include/aspect/velocity_boundary_conditions/gplates.h  |  4 +++-
 .../aspect/velocity_boundary_conditions/interface.h    | 14 +++-----------
 source/boundary_composition/interface.cc               |  5 ++++-
 source/boundary_temperature/interface.cc               |  4 ++++
 source/compositional_initial_conditions/interface.cc   |  1 -
 source/geometry_model/interface.cc                     |  4 ++++
 source/gravity_model/interface.cc                      |  5 +++++
 source/heating_model/interface.cc                      |  1 -
 source/initial_conditions/interface.cc                 |  1 -
 source/material_model/interface.cc                     |  1 -
 source/mesh_refinement/interface.cc                    |  4 ++++
 source/postprocess/interface.cc                        |  4 ++++
 source/simulator/core.cc                               | 18 +++++++++++++++---
 source/termination_criteria/interface.cc               |  4 ++++
 source/velocity_boundary_conditions/gplates.cc         |  5 ++++-
 source/velocity_boundary_conditions/interface.cc       | 13 ++++---------
 24 files changed, 94 insertions(+), 30 deletions(-)

diff --git a/include/aspect/boundary_composition/interface.h b/include/aspect/boundary_composition/interface.h
index 82ce954..73ff4e8 100644
--- a/include/aspect/boundary_composition/interface.h
+++ b/include/aspect/boundary_composition/interface.h
@@ -57,6 +57,11 @@ namespace aspect
         virtual ~Interface();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Return the composition that is to hold at a particular location on
          * the boundary of the domain.
          *
diff --git a/include/aspect/boundary_temperature/interface.h b/include/aspect/boundary_temperature/interface.h
index e69f9ab..2b9af9a 100644
--- a/include/aspect/boundary_temperature/interface.h
+++ b/include/aspect/boundary_temperature/interface.h
@@ -57,6 +57,11 @@ namespace aspect
         virtual ~Interface();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Return the temperature that is to hold at a particular location on
          * the boundary of the domain.
          *
diff --git a/include/aspect/geometry_model/interface.h b/include/aspect/geometry_model/interface.h
index 6ac3707..f72b3d2 100644
--- a/include/aspect/geometry_model/interface.h
+++ b/include/aspect/geometry_model/interface.h
@@ -63,6 +63,11 @@ namespace aspect
         virtual ~Interface();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Generate a coarse mesh for the geometry described by this class.
          */
         virtual
diff --git a/include/aspect/gravity_model/interface.h b/include/aspect/gravity_model/interface.h
index d247c46..fd95455 100644
--- a/include/aspect/gravity_model/interface.h
+++ b/include/aspect/gravity_model/interface.h
@@ -54,6 +54,11 @@ namespace aspect
         virtual ~Interface();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Return the gravity vector as a function of position.
          */
         virtual Tensor<1,dim> gravity_vector (const Point<dim> &position) const = 0;
diff --git a/include/aspect/material_model/steinberger.h b/include/aspect/material_model/steinberger.h
index 7880d1a..39c32f6 100644
--- a/include/aspect/material_model/steinberger.h
+++ b/include/aspect/material_model/steinberger.h
@@ -58,6 +58,7 @@ namespace aspect
          * Initialization function. Loads the material data and sets up
          * pointers.
          */
+        virtual
         void
         initialize ();
 
diff --git a/include/aspect/mesh_refinement/interface.h b/include/aspect/mesh_refinement/interface.h
index bc3c2d4..9a8bdc8 100644
--- a/include/aspect/mesh_refinement/interface.h
+++ b/include/aspect/mesh_refinement/interface.h
@@ -80,6 +80,11 @@ namespace aspect
         ~Interface ();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Execute this mesh refinement criterion. The default implementation
          * sets all the error indicators to zero.
          *
diff --git a/include/aspect/postprocess/interface.h b/include/aspect/postprocess/interface.h
index 44a9c98..cd8ec18 100644
--- a/include/aspect/postprocess/interface.h
+++ b/include/aspect/postprocess/interface.h
@@ -74,6 +74,11 @@ namespace aspect
         ~Interface ();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Execute this postprocessor. Derived classes will implement this
          * function to do whatever they want to do to evaluate the solution at
          * the current time step.
diff --git a/include/aspect/termination_criteria/interface.h b/include/aspect/termination_criteria/interface.h
index 1962260..82fefa9 100644
--- a/include/aspect/termination_criteria/interface.h
+++ b/include/aspect/termination_criteria/interface.h
@@ -73,6 +73,11 @@ namespace aspect
         ~Interface ();
 
         /**
+         * Initialize function.
+         */
+        virtual void initialize ();
+
+        /**
          * Execute evaluation of the termination criterion.
          *
          * @return Whether to terminate the simulation (true) or continue
diff --git a/include/aspect/velocity_boundary_conditions/gplates.h b/include/aspect/velocity_boundary_conditions/gplates.h
index ad67f6f..fec494c 100644
--- a/include/aspect/velocity_boundary_conditions/gplates.h
+++ b/include/aspect/velocity_boundary_conditions/gplates.h
@@ -282,8 +282,9 @@ namespace aspect
          * beginning of the program. Parses the user input and checks for
          * valid geometry model.
          */
+        virtual
         void
-        initialize (const GeometryModel::Interface<dim> &geometry_model);
+        initialize ();
 
         /**
          * A function that is called at the beginning of each time step. For
@@ -291,6 +292,7 @@ namespace aspect
          * necessary and outputs a warning if the end of the set of velocity
          * files is reached.
          */
+        virtual
         void
         update ();
 
diff --git a/include/aspect/velocity_boundary_conditions/interface.h b/include/aspect/velocity_boundary_conditions/interface.h
index e2c9a63..3724bbc 100644
--- a/include/aspect/velocity_boundary_conditions/interface.h
+++ b/include/aspect/velocity_boundary_conditions/interface.h
@@ -56,12 +56,11 @@ namespace aspect
         virtual ~Interface();
 
         /**
-         * Initialization function. Takes a reference to the geometry model so
-         * that derived classes can access them.
+         * Initialization function.
          */
         virtual
         void
-        initialize (const GeometryModel::Interface<dim> &geometry_model);
+        initialize ();
 
         /**
          * A function that is called at the beginning of each time step. The
@@ -104,12 +103,6 @@ namespace aspect
         virtual
         void
         parse_parameters (ParameterHandler &prm);
-
-      protected:
-        /**
-         * Pointer to the geometry object in use.
-         */
-        const GeometryModel::Interface<dim> *geometry_model;
     };
 
 
@@ -152,8 +145,7 @@ namespace aspect
     template <int dim>
     Interface<dim> *
     create_velocity_boundary_conditions (const std::string &name,
-                                         ParameterHandler &prm,
-                                         const GeometryModel::Interface<dim> &geometry_model);
+                                         ParameterHandler &prm);
 
     /**
      * Return a list of names of all implemented boundary velocity models,
diff --git a/source/boundary_composition/interface.cc b/source/boundary_composition/interface.cc
index 1eb174e..5b8c24c 100644
--- a/source/boundary_composition/interface.cc
+++ b/source/boundary_composition/interface.cc
@@ -36,9 +36,12 @@ namespace aspect
     Interface<dim>::~Interface ()
     {}
 
-
     template <int dim>
+    void
+    Interface<dim>::initialize ()
+    {}
 
+    template <int dim>
     void
     Interface<dim>::
     declare_parameters (dealii::ParameterHandler &prm)
diff --git a/source/boundary_temperature/interface.cc b/source/boundary_temperature/interface.cc
index 1292160..983a607 100644
--- a/source/boundary_temperature/interface.cc
+++ b/source/boundary_temperature/interface.cc
@@ -42,6 +42,10 @@ namespace aspect
     Interface<dim>::update ()
     {}
 
+    template <int dim>
+    void
+    Interface<dim>::initialize ()
+    {}
 
 
     template <int dim>
diff --git a/source/compositional_initial_conditions/interface.cc b/source/compositional_initial_conditions/interface.cc
index 5cb01cc..5ad676a 100644
--- a/source/compositional_initial_conditions/interface.cc
+++ b/source/compositional_initial_conditions/interface.cc
@@ -108,7 +108,6 @@ namespace aspect
           Interface<dim> *plugin = std_cxx1x::get<dim>(registered_plugins).create_plugin (model_name,
                                                                                           "Compositional initial conditions::Model name",
                                                                                           prm);
-          plugin->initialize ();
           return plugin;
         }
     }
diff --git a/source/geometry_model/interface.cc b/source/geometry_model/interface.cc
index 41cb8b2..c245d0b 100644
--- a/source/geometry_model/interface.cc
+++ b/source/geometry_model/interface.cc
@@ -32,6 +32,10 @@ namespace aspect
     Interface<dim>::~Interface ()
     {}
 
+    template <int dim>
+    void
+    Interface<dim>::initialize ()
+    {}
 
     template<int dim>
     std::set< std::pair< std::pair<types::boundary_id, types::boundary_id>, unsigned int > >
diff --git a/source/gravity_model/interface.cc b/source/gravity_model/interface.cc
index b2c08d7..49b6a00 100644
--- a/source/gravity_model/interface.cc
+++ b/source/gravity_model/interface.cc
@@ -38,6 +38,11 @@ namespace aspect
 
     template <int dim>
     void
+    Interface<dim>::initialize ()
+    {}
+
+    template <int dim>
+    void
     Interface<dim>::update ()
     {}
 
diff --git a/source/heating_model/interface.cc b/source/heating_model/interface.cc
index ec6783a..0704734 100644
--- a/source/heating_model/interface.cc
+++ b/source/heating_model/interface.cc
@@ -106,7 +106,6 @@ namespace aspect
       Interface<dim> *plugin = std_cxx1x::get<dim>(registered_plugins).create_plugin (model_name,
                                                                                       "Heating model::Model name",
                                                                                       prm);
-      plugin->initialize();
       return plugin;
     }
 
diff --git a/source/initial_conditions/interface.cc b/source/initial_conditions/interface.cc
index 29e8f0b..230d06a 100644
--- a/source/initial_conditions/interface.cc
+++ b/source/initial_conditions/interface.cc
@@ -98,7 +98,6 @@ namespace aspect
       Interface<dim> *plugin = std_cxx1x::get<dim>(registered_plugins).create_plugin (model_name,
                                                                                       "Initial conditions::Model name",
                                                                                       prm);
-      plugin->initialize ();
       return plugin;
     }
 
diff --git a/source/material_model/interface.cc b/source/material_model/interface.cc
index 0b8e14f..ff75459 100644
--- a/source/material_model/interface.cc
+++ b/source/material_model/interface.cc
@@ -210,7 +210,6 @@ namespace aspect
       Interface<dim> *plugin = std_cxx1x::get<dim>(registered_plugins).create_plugin (model_name,
                                                                                       "Material model::Model name",
                                                                                       prm);
-      plugin->initialize();
       return plugin;
     }
 
diff --git a/source/mesh_refinement/interface.cc b/source/mesh_refinement/interface.cc
index 1b1f3ae..ceec9af 100644
--- a/source/mesh_refinement/interface.cc
+++ b/source/mesh_refinement/interface.cc
@@ -35,6 +35,10 @@ namespace aspect
     Interface<dim>::~Interface ()
     {}
 
+    template <int dim>
+    void
+    Interface<dim>::initialize ()
+    {}
 
     template <int dim>
     void
diff --git a/source/postprocess/interface.cc b/source/postprocess/interface.cc
index c7a82cd..01a7580 100644
--- a/source/postprocess/interface.cc
+++ b/source/postprocess/interface.cc
@@ -35,6 +35,10 @@ namespace aspect
     Interface<dim>::~Interface ()
     {}
 
+    template <int dim>
+    void
+    Interface<dim>::initialize ()
+    {}
 
     template <int dim>
     void
diff --git a/source/simulator/core.cc b/source/simulator/core.cc
index daef753..365c854 100644
--- a/source/simulator/core.cc
+++ b/source/simulator/core.cc
@@ -233,22 +233,34 @@ namespace aspect
     // if any plugin wants access to the Simulator by deriving from SimulatorAccess, initialize it:
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(geometry_model.get()))
       sim->initialize (*this);
+    geometry_model->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(material_model.get()))
       sim->initialize (*this);
+    material_model->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(heating_model.get()))
       sim->initialize (*this);
+    heating_model->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(gravity_model.get()))
       sim->initialize (*this);
+    gravity_model->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(boundary_temperature.get()))
       sim->initialize (*this);
+    boundary_temperature->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(boundary_composition.get()))
       sim->initialize (*this);
+    if (boundary_composition.get())
+      boundary_composition->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(initial_conditions.get()))
       sim->initialize (*this);
+    initial_conditions->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(compositional_initial_conditions.get()))
       sim->initialize (*this);
+    if (compositional_initial_conditions.get())
+      compositional_initial_conditions->initialize ();
     if (SimulatorAccess<dim> *sim = dynamic_cast<SimulatorAccess<dim>*>(adiabatic_conditions.get()))
       sim->initialize (*this);
+    adiabatic_conditions->initialize ();
+
 
     //Initialize the free surface handler
     if (parameters.free_surface_enabled)
@@ -284,12 +296,12 @@ namespace aspect
          ++p)
       {
         VelocityBoundaryConditions::Interface<dim> *bv
-          = VelocityBoundaryConditions::create_velocity_boundary_conditions
+          = VelocityBoundaryConditions::create_velocity_boundary_conditions<dim>
             (p->second.second,
-             prm,
-             *geometry_model);
+             prm);
         if (dynamic_cast<SimulatorAccess<dim>*>(bv) != 0)
           dynamic_cast<SimulatorAccess<dim>*>(bv)->initialize(*this);
+        bv->initialize ();
         velocity_boundary_conditions[p->first].reset (bv);
       }
 
diff --git a/source/termination_criteria/interface.cc b/source/termination_criteria/interface.cc
index d9b0bb9..6d67c26 100644
--- a/source/termination_criteria/interface.cc
+++ b/source/termination_criteria/interface.cc
@@ -34,6 +34,10 @@ namespace aspect
     Interface<dim>::~Interface ()
     {}
 
+    template <int dim>
+    void
+    Interface<dim>::initialize ()
+    {}
 
     template <int dim>
     void
diff --git a/source/velocity_boundary_conditions/gplates.cc b/source/velocity_boundary_conditions/gplates.cc
index cb7c7c3..ea57f2c 100644
--- a/source/velocity_boundary_conditions/gplates.cc
+++ b/source/velocity_boundary_conditions/gplates.cc
@@ -547,7 +547,7 @@ namespace aspect
 
     template <int dim>
     void
-    GPlates<dim>::initialize (const GeometryModel::Interface<dim> &geometry_model)
+    GPlates<dim>::initialize ()
     {
       char sep;
 
@@ -564,6 +564,9 @@ namespace aspect
 
       lookup.reset(new internal::GPlatesLookup(pointone,pointtwo,interpolation_width));
 
+      const GeometryModel::Interface<dim> &geometry_model =
+          this->get_geometry_model();
+
       Assert (dynamic_cast<const GeometryModel::SphericalShell<dim>*> (&geometry_model) != 0,
               ExcMessage ("This boundary condition can only be used if the geometry "
                           "is a spherical shell."));
diff --git a/source/velocity_boundary_conditions/interface.cc b/source/velocity_boundary_conditions/interface.cc
index fc2c08d..f72cfd3 100644
--- a/source/velocity_boundary_conditions/interface.cc
+++ b/source/velocity_boundary_conditions/interface.cc
@@ -39,10 +39,8 @@ namespace aspect
 
     template <int dim>
     void
-    Interface<dim>::initialize (const GeometryModel::Interface<dim> &geometry_model_)
-    {
-      geometry_model = &geometry_model_;
-    }
+    Interface<dim>::initialize ()
+    {}
 
 
 
@@ -97,13 +95,11 @@ namespace aspect
     template <int dim>
     Interface<dim> *
     create_velocity_boundary_conditions (const std::string &name,
-                                         ParameterHandler &prm,
-                                         const GeometryModel::Interface<dim> &geometry_model)
+                                         ParameterHandler &prm)
     {
       Interface<dim> *plugin = std_cxx1x::get<dim>(registered_plugins).create_plugin (name,
                                                                                       "Velocity boundary conditions",
                                                                                       prm);
-      plugin->initialize (geometry_model);
       return plugin;
     }
 
@@ -165,8 +161,7 @@ namespace aspect
   template \
   Interface<dim> * \
   create_velocity_boundary_conditions<dim> (const std::string &, \
-                                            ParameterHandler &prm, \
-                                            const GeometryModel::Interface<dim> &geometry_model);
+                                            ParameterHandler &prm);
 
     ASPECT_INSTANTIATE(INSTANTIATE)
   }



More information about the CIG-COMMITS mailing list