[cig-commits] [commit] master: Merge branch 'master' into direct_solver (4821d88)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Mon May 19 20:13:19 PDT 2014


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

On branch  : master
Link       : https://github.com/geodynamics/aspect/compare/76d4275352ef2cae5de9a073acd1c03a92c2670c...4f3d06fd1f3754419813db37ec9ef7f0f6f3cb15

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

commit 4821d884c7d5c550cbce29c731272bf43c7e72f4
Merge: 04800d6 7525ffc
Author: Timo Heister <timo.heister at gmail.com>
Date:   Mon May 12 16:08:36 2014 -0400

    Merge branch 'master' into direct_solver
    
    Conflicts:
    	source/simulator/initial_conditions.cc
    	source/simulator/introspection.cc



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

4821d884c7d5c550cbce29c731272bf43c7e72f4
 .gitignore                                         |  6 ++++
 .../inclusion/adaptive.prm                         | 19 ++++++++++--
 .../inclusion.prm => benchmark/inclusion/base.prm  |  2 +-
 benchmark/inclusion/notes.txt                      |  2 ++
 benchmark/inclusion/run.sh                         | 20 +++++++++++++
 {tangurnis => benchmark/tangurnis}/Makefile        |  4 +--
 {tangurnis => benchmark/tangurnis}/ba/tan.prm      |  0
 {tangurnis => benchmark/tangurnis}/matlab.m        |  0
 benchmark/tangurnis/notes.txt                      |  1 +
 {tangurnis => benchmark/tangurnis}/tala/tan.prm    |  0
 {tangurnis => benchmark/tangurnis}/tala_c/tan.prm  |  0
 include/aspect/introspection.h                     | 25 ++++++++++++++++
 include/aspect/simulator.h                         |  9 +++++-
 source/mesh_refinement/density.cc                  |  4 +--
 source/mesh_refinement/nonadiabatic_temperature.cc |  4 +--
 source/mesh_refinement/thermal_energy_density.cc   |  4 +--
 source/mesh_refinement/velocity.cc                 |  2 +-
 source/mesh_refinement/viscosity.cc                |  4 +--
 source/postprocess/composition_statistics.cc       | 10 +++----
 source/postprocess/duretz_et_al.cc                 |  2 +-
 source/postprocess/heat_flux_statistics.cc         |  6 +---
 source/postprocess/table_heat_flux_statistics.cc   |  6 +---
 source/postprocess/table_velocity_statistics.cc    |  2 +-
 source/postprocess/tan_gurnis.cc                   |  2 +-
 source/postprocess/temperature_statistics.cc       |  6 +---
 source/postprocess/velocity_statistics.cc          |  2 +-
 source/simulator/assembly.cc                       | 12 ++------
 source/simulator/core.cc                           |  2 ++
 source/simulator/helper_functions.cc               | 20 ++++++++++---
 source/simulator/initial_conditions.cc             | 15 ++++++----
 source/simulator/introspection.cc                  | 35 ++++++++++++++++++++++
 source/termination_criteria/steady_rms_velocity.cc |  2 +-
 32 files changed, 168 insertions(+), 60 deletions(-)

diff --cc include/aspect/simulator.h
index 322fc64,1b03f72..0957d69
--- a/include/aspect/simulator.h
+++ b/include/aspect/simulator.h
@@@ -400,16 -398,17 +400,23 @@@ namespace aspec
          is_temperature () const;
  
          /**
 +         * Look up the component index for this temperature or compositional field
 +         * i. See Introspection::component_indices for more information.
 +         */
 +        unsigned int component_index(const Introspection<dim> &introspection) const;
 +
 +        /**
           * Look up the block index for this temperature or compositional field
-          * i. See Introspection::block_indices for more information.
+          * See Introspection::block_indices for more information.
           */
          unsigned int block_index(const Introspection<dim> &introspection) const;
+ 
+         /**
+          * Look up the base element within the larger composite finite element we used
+          * for everything, for this temperature or compositional field
+          * See Introspection::base_elements for more information.
+          */
+         unsigned int base_element(const Introspection<dim> &introspection) const;
        };
  
        /**
diff --cc source/simulator/helper_functions.cc
index 8c01f69,5007d2f..51abcc0
--- a/source/simulator/helper_functions.cc
+++ b/source/simulator/helper_functions.cc
@@@ -107,17 -108,19 +108,28 @@@ namespace aspec
        return introspection.block_indices.compositional_fields[compositional_variable];
    }
  
 +  template <int dim>
 +  unsigned int
 +  Simulator<dim>::TemperatureOrComposition::component_index(const Introspection<dim> &introspection) const
 +  {
 +    if (this->is_temperature())
 +      return introspection.component_indices.temperature;
 +    else
 +      return introspection.component_indices.compositional_fields[compositional_variable];
 +  }
  
    template <int dim>
+   unsigned int
+   Simulator<dim>::TemperatureOrComposition::base_element(const Introspection<dim> &introspection) const
+   {
+     if (this->is_temperature())
+       return introspection.base_elements.temperature;
+     else
+       return introspection.base_elements.compositional_fields;
+   }
+ 
+ 
+   template <int dim>
    void Simulator<dim>::output_program_stats()
    {
      if (!aspect::output_parallel_statistics)
diff --cc source/simulator/initial_conditions.cc
index 1b88c6a,857bda4..a66cc30
--- a/source/simulator/initial_conditions.cc
+++ b/source/simulator/initial_conditions.cc
@@@ -67,16 -67,18 +67,18 @@@ namespace aspec
      // we need to track whether we need to normalize the totality of fields
      bool normalize_composition = false;
  
+ //TODO: The code here is confusing. We should be using something
+ // like the TemperatureOrComposition class instead of just a single
+ // integer 'n'
      for (unsigned int n=0; n<1+parameters.n_compositional_fields; ++n)
        {
 +        TemperatureOrComposition torc = (n==0) ? TemperatureOrComposition::temperature()
 +        : TemperatureOrComposition::composition(n-1);
          initial_solution.reinit(system_rhs, false);
  
-         // base element in the finite element is 2 for temperature and 3 for
-         // compositional fields
- //TODO: can we use introspection here, instead of the hard coded numbers?
-         const unsigned int base_element = torc.is_temperature() ? 2 : 3;
 -        // base element in the finite element is 2 for temperature (n=0) and 3 for
 -        // compositional fields (n>0)
 -        const unsigned int base_element = (n==0 ?
++        const unsigned int base_element = (torc.is_temperature() ?
+                                            introspection.base_elements.temperature :
+                                            introspection.base_elements.compositional_fields);
  
          // get the temperature/composition support points
          const std::vector<Point<dim> > support_points
@@@ -102,8 -104,9 +104,9 @@@
                cell->get_dof_indices (local_dof_indices);
                for (unsigned int i=0; i<finite_element.base_element(base_element).dofs_per_cell; ++i)
                  {
+ //TODO: Use introspection here
                    const unsigned int system_local_dof
 -                    = finite_element.component_to_system_index(/*temperature/composition component=*/dim+1+n,
 +                    = finite_element.component_to_system_index(torc.component_index(introspection),
                          /*dof index within component=*/i);
  
                    const double value =
diff --cc source/simulator/introspection.cc
index fc5724b,d918f78..cf1d1bf
--- a/source/simulator/introspection.cc
+++ b/source/simulator/introspection.cc
@@@ -69,7 -94,8 +95,8 @@@ namespace aspec
      n_blocks (3+n_compositional_fields),
      extractors (n_compositional_fields),
      component_indices (n_compositional_fields),
 -    block_indices (n_compositional_fields),
 +    block_indices (n_compositional_fields, split_vel_pressure),
+     base_elements (n_compositional_fields),
      components_to_blocks (component_to_block_mapping<dim>(n_components)),
      system_dofs_per_block (n_blocks)
    {}



More information about the CIG-COMMITS mailing list