ASPECT
include
aspect
material_model
rheology
compositional_viscosity_prefactors.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2024 by the authors of the ASPECT code.
3
4
This file is part of ASPECT.
5
6
ASPECT is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
11
ASPECT is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with ASPECT; see the file LICENSE. If not see
18
<http://www.gnu.org/licenses/>.
19
*/
20
21
#ifndef _aspect_material_model_rheology_compositional_viscosity_prefactors_h
22
#define _aspect_material_model_rheology_compositional_viscosity_prefactors_h
23
24
#include <
aspect/global.h
>
25
#include <
aspect/material_model/interface.h
>
26
#include <
aspect/simulator_access.h
>
27
28
namespace
aspect
29
{
30
namespace
MaterialModel
31
{
32
namespace
Rheology
33
{
39
template
<
int
dim>
40
class
CompositionalViscosityPrefactors
:
public
::aspect::SimulatorAccess
<dim>
41
{
42
public
:
46
CompositionalViscosityPrefactors
();
47
51
static
52
void
53
declare_parameters
(
ParameterHandler
&prm);
54
58
void
59
parse_parameters
(
ParameterHandler
&prm);
60
61
// The flow laws that can be
62
// currently modified.
63
enum
ModifiedFlowLaws
64
{
65
diffusion
,
66
dislocation
67
}
modified_flow_laws
;
68
72
double
73
compute_viscosity
(
const
MaterialModel::MaterialModelInputs<dim>
&in,
74
const
double
base_viscosity,
75
const
unsigned
int
composition_index,
76
const
unsigned
int
q,
77
const
ModifiedFlowLaws
&
modified_flow_laws
)
const
;
78
79
private
:
95
enum
ViscosityPrefactorScheme
96
{
97
none
,
98
hk04_olivine_hydration
,
99
};
103
ViscosityPrefactorScheme
viscosity_prefactor_scheme
;
104
105
// Initialize variables for the water fugacity calculation, from HK04
109
std::vector<double>
diffusion_water_fugacity_exponents
;
113
std::vector<double>
dislocation_water_fugacity_exponents
;
117
std::vector<double>
minimum_mass_fraction_water_for_dry_creep
;
118
119
// From Hirth & Kohlstedt 2004, equation 6
120
const
double
A_H2O
= 2.6e-5;
// 1/Pa
121
const
double
activation_energy_H2O
= 40e3;
// J/mol/K
122
const
double
activation_volume_H2O
= 10
e
-6;
// m^3/mol
123
124
// We calculate the molar mass of olivine using the molar mass of fayalite (0.20379 kg/mol)
125
// and the molar mass of forsterite (0.140693 kg/mol), and a mole fraction of 90% forsterite
126
// in olivine.
127
const
double
molar_mass_olivine
= 0.1470027;
// kg/mol
128
const
double
molar_mass_H2O
= 0.01801528;
// kg/mol
129
};
130
}
131
}
132
}
133
#endif
ParameterHandler
aspect::MaterialModel::MaterialModelInputs
Definition:
interface.h:244
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors
Definition:
compositional_viscosity_prefactors.h:41
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::modified_flow_laws
enum aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::ModifiedFlowLaws modified_flow_laws
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::dislocation_water_fugacity_exponents
std::vector< double > dislocation_water_fugacity_exponents
Definition:
compositional_viscosity_prefactors.h:113
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::molar_mass_H2O
const double molar_mass_H2O
Definition:
compositional_viscosity_prefactors.h:128
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::molar_mass_olivine
const double molar_mass_olivine
Definition:
compositional_viscosity_prefactors.h:127
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::compute_viscosity
double compute_viscosity(const MaterialModel::MaterialModelInputs< dim > &in, const double base_viscosity, const unsigned int composition_index, const unsigned int q, const ModifiedFlowLaws &modified_flow_laws) const
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::declare_parameters
static void declare_parameters(ParameterHandler &prm)
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::A_H2O
const double A_H2O
Definition:
compositional_viscosity_prefactors.h:120
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::diffusion_water_fugacity_exponents
std::vector< double > diffusion_water_fugacity_exponents
Definition:
compositional_viscosity_prefactors.h:109
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::ModifiedFlowLaws
ModifiedFlowLaws
Definition:
compositional_viscosity_prefactors.h:64
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::dislocation
@ dislocation
Definition:
compositional_viscosity_prefactors.h:66
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::diffusion
@ diffusion
Definition:
compositional_viscosity_prefactors.h:65
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::activation_volume_H2O
const double activation_volume_H2O
Definition:
compositional_viscosity_prefactors.h:122
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::parse_parameters
void parse_parameters(ParameterHandler &prm)
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::activation_energy_H2O
const double activation_energy_H2O
Definition:
compositional_viscosity_prefactors.h:121
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::ViscosityPrefactorScheme
ViscosityPrefactorScheme
Definition:
compositional_viscosity_prefactors.h:96
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::none
@ none
Definition:
compositional_viscosity_prefactors.h:97
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::hk04_olivine_hydration
@ hk04_olivine_hydration
Definition:
compositional_viscosity_prefactors.h:98
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::viscosity_prefactor_scheme
ViscosityPrefactorScheme viscosity_prefactor_scheme
Definition:
compositional_viscosity_prefactors.h:103
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::minimum_mass_fraction_water_for_dry_creep
std::vector< double > minimum_mass_fraction_water_for_dry_creep
Definition:
compositional_viscosity_prefactors.h:117
aspect::MaterialModel::Rheology::CompositionalViscosityPrefactors::CompositionalViscosityPrefactors
CompositionalViscosityPrefactors()
aspect::SimulatorAccess
Definition:
simulator_access.h:211
global.h
interface.h
e
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
aspect
Definition:
advection_field.h:31
simulator_access.h
ASPECT manual
| Generated by
1.9.1