[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