[cig-commits] r1313 - in trunk/aspect: include/aspect/material_model source/material_model
gassmoeller at dealii.org
gassmoeller at dealii.org
Tue Oct 23 04:47:02 PDT 2012
Author: gassmoeller
Date: 2012-10-23 05:47:02 -0600 (Tue, 23 Oct 2012)
New Revision: 1313
Modified:
trunk/aspect/include/aspect/material_model/simple.h
trunk/aspect/source/material_model/simple.cc
Log:
Added a compositional dependency of viscosity in simple material model. Switched off by default.
Modified: trunk/aspect/include/aspect/material_model/simple.h
===================================================================
--- trunk/aspect/include/aspect/material_model/simple.h 2012-10-23 03:41:51 UTC (rev 1312)
+++ trunk/aspect/include/aspect/material_model/simple.h 2012-10-23 11:47:02 UTC (rev 1313)
@@ -181,6 +181,7 @@
double reference_rho;
double reference_T;
double eta;
+ double composition_viscosity_prefactor;
double thermal_viscosity_exponent;
double thermal_alpha;
double reference_specific_heat;
Modified: trunk/aspect/source/material_model/simple.cc
===================================================================
--- trunk/aspect/source/material_model/simple.cc 2012-10-23 03:41:51 UTC (rev 1312)
+++ trunk/aspect/source/material_model/simple.cc 2012-10-23 11:47:02 UTC (rev 1313)
@@ -42,12 +42,16 @@
const double delta_temp = temperature-reference_T;
const double temperature_dependence = std::max(std::min(std::exp(-thermal_viscosity_exponent*delta_temp/reference_T),1e2),1e-2);
- return temperature_dependence * eta;
- /* return (this->n_compositional_fields()>0
- ?
- (6.5*composition[0]+1) * eta
- :
- eta);*/
+ double composition_dependence = 1.0;
+ if ((composition_viscosity_prefactor != 1.0) && (composition.size() > 0))
+ {
+ // TODO: Currently using an arithmetic interpolation. Usually a geometric interpolation
+ // is assumed more realistic for viscosity
+ composition_dependence *= (1-composition[0]);
+ composition_dependence += composition_viscosity_prefactor * composition[0];
+ }
+
+ return composition_dependence * temperature_dependence * eta;
}
@@ -223,6 +227,9 @@
prm.declare_entry ("Viscosity", "5e24",
Patterns::Double (0),
"The value of the constant viscosity. Units: $kg/m/s$.");
+ prm.declare_entry ("Composition viscosity prefactor", "1.0",
+ Patterns::Double (0),
+ "A linear dependency of viscosity on composition. Dimensionless prefactor.");
prm.declare_entry ("Thermal viscosity exponent", "0.0",
Patterns::Double (0),
"The temperature dependence of viscosity. Dimensionless exponent.");
@@ -268,6 +275,7 @@
reference_rho = prm.get_double ("Reference density");
reference_T = prm.get_double ("Reference temperature");
eta = prm.get_double ("Viscosity");
+ composition_viscosity_prefactor = prm.get_double ("Composition viscosity prefactor");
thermal_viscosity_exponent = prm.get_double ("Thermal viscosity exponent");
k_value = prm.get_double ("Thermal conductivity");
reference_specific_heat = prm.get_double ("Reference specific heat");
More information about the CIG-COMMITS
mailing list