[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