[cig-commits] [commit] master: Simplify compute_volume_fractions (39d9774)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Mon May 19 15:14:01 PDT 2014
Repository : https://github.com/geodynamics/aspect
On branch : master
Link : https://github.com/geodynamics/aspect/compare/ed4caebc0ab942d8c7bc1a6a3ba70e37f93accde...dbe66e1b6d25d5ff21653c48f14f343e10ae69f4
>---------------------------------------------------------------
commit 39d9774d0e927a21d4dfa4033824a191e1e301b9
Author: ian-r-rose <ian.r.rose at gmail.com>
Date: Mon May 19 16:26:27 2014 -0500
Simplify compute_volume_fractions
>---------------------------------------------------------------
39d9774d0e927a21d4dfa4033824a191e1e301b9
include/aspect/material_model/multicomponent.h | 4 ++--
source/material_model/multicomponent.cc | 32 +++++++++++---------------
2 files changed, 15 insertions(+), 21 deletions(-)
diff --git a/include/aspect/material_model/multicomponent.h b/include/aspect/material_model/multicomponent.h
index 2ba26fe..eca37d9 100644
--- a/include/aspect/material_model/multicomponent.h
+++ b/include/aspect/material_model/multicomponent.h
@@ -170,8 +170,8 @@ namespace aspect
* difference between the sum of the compositional fields and 1.0 is assumed to
* be the amount of background mantle.
*/
- void compute_volume_fractions( const std::vector<double> &compositional_fields,
- std::vector<double> &fractions) const;
+ const std::vector<double> compute_volume_fractions(
+ const std::vector<double> &compositional_fields) const;
/**
* Reference temperature for thermal expansion. All components use the same reference_T.
*/
diff --git a/source/material_model/multicomponent.cc b/source/material_model/multicomponent.cc
index ec261a3..09679a1 100644
--- a/source/material_model/multicomponent.cc
+++ b/source/material_model/multicomponent.cc
@@ -33,13 +33,11 @@ namespace aspect
{
template <int dim>
- void
+ const std::vector<double>
Multicomponent<dim>::
- compute_volume_fractions( const std::vector<double> &compositional_fields,
- std::vector<double> &fractions) const
+ compute_volume_fractions( const std::vector<double> &compositional_fields) const
{
- Assert( compositional_fields.size()+1 == fractions.size(),
- ExcMessage("Size mismatch") );
+ std::vector<double> volume_fractions( compositional_fields.size()+1);
//clip the compositional fields so they are between zero and one
std::vector<double> x_comp = compositional_fields;
@@ -53,16 +51,17 @@ namespace aspect
if(sum_composition >= 1.0)
{
- fractions[0] = 0.0; //background mantle
+ volume_fractions[0] = 0.0; //background mantle
for ( unsigned int i=1; i <= x_comp.size(); ++i)
- fractions[i] = x_comp[i-1]/sum_composition;
+ volume_fractions[i] = x_comp[i-1]/sum_composition;
}
else
{
- fractions[0] = 1.0 - sum_composition; //background mantle
+ volume_fractions[0] = 1.0 - sum_composition; //background mantle
for ( unsigned int i=1; i <= x_comp.size(); ++i)
- fractions[i] = x_comp[i-1];
+ volume_fractions[i] = x_comp[i-1];
}
+ return volume_fractions;
}
@@ -77,8 +76,7 @@ namespace aspect
const Point<dim> &p) const
{
double visc = 0.0;
- std::vector<double> volume_fractions(this->n_compositional_fields() + 1);
- compute_volume_fractions( composition, volume_fractions);
+ std::vector<double> volume_fractions = compute_volume_fractions(composition);
switch (viscosity_averaging)
{
@@ -156,8 +154,7 @@ namespace aspect
double cp = 0.0;
//Arithmetic averaging of specific heats
- std::vector<double> volume_fractions(this->n_compositional_fields() + 1);
- compute_volume_fractions( composition, volume_fractions);
+ std::vector<double> volume_fractions = compute_volume_fractions(composition);
for(unsigned int i=0; i< volume_fractions.size(); ++i)
cp += volume_fractions[i]*specific_heats[i];
@@ -186,8 +183,7 @@ namespace aspect
//This may not be strictly the most reasonable thing,
//but for most Earth materials we hope that they do
//not vary so much that it is a big problem.
- std::vector<double> volume_fractions(this->n_compositional_fields() + 1);
- compute_volume_fractions( composition, volume_fractions);
+ std::vector<double> volume_fractions = compute_volume_fractions(composition);
for(unsigned int i=0; i< volume_fractions.size(); ++i)
k += volume_fractions[i]*thermal_conductivities[i];
@@ -213,8 +209,7 @@ namespace aspect
double rho = 0.0;
//Arithmetic averaging of densities
- std::vector<double> volume_fractions(this->n_compositional_fields() + 1);
- compute_volume_fractions( composition, volume_fractions);
+ std::vector<double> volume_fractions = compute_volume_fractions(composition);
for(unsigned int i=0; i< volume_fractions.size(); ++i)
{
//not strictly correct if thermal expansivities are different, since we are interpreting
@@ -238,8 +233,7 @@ namespace aspect
double alpha = 0.0;
//Arithmetic averaging of thermal expansivities
- std::vector<double> volume_fractions(this->n_compositional_fields() + 1);
- compute_volume_fractions( composition, volume_fractions);
+ std::vector<double> volume_fractions = compute_volume_fractions(composition);
for(unsigned int i=0; i< volume_fractions.size(); ++i)
alpha += volume_fractions[i]*thermal_expansivities[i];
More information about the CIG-COMMITS
mailing list