ASPECT
include
aspect
material_model
reaction_model
katz2003_mantle_melting.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_reaction_model_katz2003_mantle_melting_h
22
#define _aspect_material_model_reaction_model_katz2003_mantle_melting_h
23
24
#include <
aspect/material_model/interface.h
>
25
#include <
aspect/simulator_access.h
>
26
#include <
aspect/postprocess/melt_statistics.h
>
27
#include <
aspect/melt.h
>
28
29
namespace
aspect
30
{
31
namespace
MaterialModel
32
{
33
using namespace
dealii
;
34
35
namespace
ReactionModel
36
{
37
49
template
<
int
dim>
50
class
Katz2003MantleMelting
:
public
::aspect::SimulatorAccess
<dim>
51
{
52
public
:
53
// constructor
54
Katz2003MantleMelting
();
55
59
static
60
void
61
declare_parameters
(ParameterHandler &prm);
62
66
void
67
parse_parameters (ParameterHandler &prm);
68
69
75
double
76
melt_fraction (
const
double
temperature
,
77
const
double
pressure
)
const
;
78
87
double
88
entropy_change (
const
double
temperature,
89
const
double
pressure,
90
const
double
maximum_melt_fraction,
91
const
NonlinearDependence::Dependence
dependence)
const
;
92
93
100
void
calculate_reaction_rate_outputs(
const
typename
Interface<dim>::MaterialModelInputs
&in,
101
typename
Interface<dim>::MaterialModelOutputs
&out)
const
;
102
111
void
calculate_fluid_outputs(
const
typename
Interface<dim>::MaterialModelInputs
&in,
112
typename
Interface<dim>::MaterialModelOutputs
&out,
113
const
double
reference_T)
const
;
114
115
116
double
reference_darcy_coefficient ()
const
;
117
118
private
:
123
double
reference_rho_fluid
;
124
double
xi_0
;
125
double
viscosity_fluid
;
126
double
thermal_bulk_viscosity_exponent
;
127
double
alpha_phi
;
128
double
extraction_depth
;
129
double
melt_compressibility
;
130
double
melt_bulk_modulus_derivative
;
131
double
depletion_solidus_change
;
132
bool
fractional_melting
;
133
double
freezing_rate
;
134
double
melting_time_scale
;
135
double
reference_permeability
;
136
137
// for the solidus temperature
138
double
A1
;
// °C
139
double
A2
;
// °C/Pa
140
double
A3
;
// °C/(Pa^2)
141
142
// for the lherzolite liquidus temperature
143
double
B1
;
// °C
144
double
B2
;
// °C/Pa
145
double
B3
;
// °C/(Pa^2)
146
147
// for the liquidus temperature
148
double
C1
;
// °C
149
double
C2
;
// °C/Pa
150
double
C3
;
// °C/(Pa^2)
151
152
// for the reaction coefficient of pyroxene
153
double
r1
;
// cpx/melt
154
double
r2
;
// cpx/melt/GPa
155
double
M_cpx
;
// mass fraction of pyroxene
156
157
// melt fraction exponent
158
double
beta
;
159
160
// entropy change upon melting
161
double
peridotite_melting_entropy_change
;
162
};
163
}
164
165
}
166
}
167
168
#endif
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::thermal_bulk_viscosity_exponent
double thermal_bulk_viscosity_exponent
Definition:
katz2003_mantle_melting.h:126
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::fractional_melting
bool fractional_melting
Definition:
katz2003_mantle_melting.h:132
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting
Definition:
katz2003_mantle_melting.h:50
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::viscosity_fluid
double viscosity_fluid
Definition:
katz2003_mantle_melting.h:125
interface.h
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::melting_time_scale
double melting_time_scale
Definition:
katz2003_mantle_melting.h:134
aspect::MaterialModel::NonlinearDependence::pressure
Definition:
interface.h:90
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::A3
double A3
Definition:
katz2003_mantle_melting.h:140
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::B3
double B3
Definition:
katz2003_mantle_melting.h:145
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::reference_permeability
double reference_permeability
Definition:
katz2003_mantle_melting.h:135
aspect::MaterialModel::NonlinearDependence::temperature
Definition:
interface.h:89
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::r1
double r1
Definition:
katz2003_mantle_melting.h:153
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::depletion_solidus_change
double depletion_solidus_change
Definition:
katz2003_mantle_melting.h:131
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::peridotite_melting_entropy_change
double peridotite_melting_entropy_change
Definition:
katz2003_mantle_melting.h:161
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::C1
double C1
Definition:
katz2003_mantle_melting.h:148
aspect::MaterialModel::declare_parameters
void declare_parameters(ParameterHandler &prm)
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::A1
double A1
Definition:
katz2003_mantle_melting.h:138
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::C3
double C3
Definition:
katz2003_mantle_melting.h:150
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::melt_compressibility
double melt_compressibility
Definition:
katz2003_mantle_melting.h:129
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::A2
double A2
Definition:
katz2003_mantle_melting.h:139
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::beta
double beta
Definition:
katz2003_mantle_melting.h:158
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::C2
double C2
Definition:
katz2003_mantle_melting.h:149
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::xi_0
double xi_0
Definition:
katz2003_mantle_melting.h:124
aspect::MaterialModel::NonlinearDependence::Dependence
Dependence
Definition:
interface.h:84
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::B2
double B2
Definition:
katz2003_mantle_melting.h:144
melt.h
simulator_access.h
aspect::SimulatorAccess
Definition:
plugins.h:45
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::alpha_phi
double alpha_phi
Definition:
katz2003_mantle_melting.h:127
aspect
Definition:
compat.h:59
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::melt_bulk_modulus_derivative
double melt_bulk_modulus_derivative
Definition:
katz2003_mantle_melting.h:130
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::extraction_depth
double extraction_depth
Definition:
katz2003_mantle_melting.h:128
aspect::MaterialModel::MaterialModelInputs
Definition:
interface.h:245
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::B1
double B1
Definition:
katz2003_mantle_melting.h:143
aspect::MaterialModel::MaterialModelOutputs
Definition:
interface.h:480
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::M_cpx
double M_cpx
Definition:
katz2003_mantle_melting.h:155
melt_statistics.h
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::freezing_rate
double freezing_rate
Definition:
katz2003_mantle_melting.h:133
dealii
Definition:
compat.h:42
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::reference_rho_fluid
double reference_rho_fluid
Definition:
katz2003_mantle_melting.h:123
aspect::MaterialModel::ReactionModel::Katz2003MantleMelting::r2
double r2
Definition:
katz2003_mantle_melting.h:154