fwl-aragog 0.2.8a4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aragog/__init__.py +111 -0
- aragog/cfg/__init__.py +0 -0
- aragog/cfg/abe_liquid.cfg +133 -0
- aragog/cfg/abe_mixed.cfg +133 -0
- aragog/cfg/abe_mixed_init.cfg +130 -0
- aragog/cfg/abe_mixed_lookup.cfg +134 -0
- aragog/cfg/abe_solid.cfg +133 -0
- aragog/cli.py +36 -0
- aragog/core.py +297 -0
- aragog/data.py +159 -0
- aragog/interfaces.py +155 -0
- aragog/mesh.py +803 -0
- aragog/output.py +535 -0
- aragog/parser.py +509 -0
- aragog/phase.py +786 -0
- aragog/solver.py +662 -0
- aragog/utilities.py +117 -0
- data/README.md +9 -0
- data/test/density_2d_lookup.dat +9 -0
- data/test/eos_test.dat +99 -0
- data/test/liquidus_1d_lookup.dat +3 -0
- data/test/solidus_1d_lookup.dat +3 -0
- docs/Makefile +20 -0
- docs/about.rst +19 -0
- docs/bibliography.rst +16 -0
- docs/conf.py +92 -0
- docs/index.rst +35 -0
- docs/installation.rst +66 -0
- docs/make.bat +35 -0
- docs/notes/main.tex +437 -0
- docs/notes/refs.bib +87 -0
- docs/output.rst +2 -0
- docs/publications.rst +10 -0
- docs/refs.bib +136 -0
- docs/source/aragog.rst +77 -0
- docs/source/modules.rst +7 -0
- docs/troubleshooting.rst +4 -0
- docs/tutorial.rst +20 -0
- fwl_aragog-0.2.8a4.dist-info/METADATA +98 -0
- fwl_aragog-0.2.8a4.dist-info/RECORD +54 -0
- fwl_aragog-0.2.8a4.dist-info/WHEEL +4 -0
- fwl_aragog-0.2.8a4.dist-info/entry_points.txt +2 -0
- fwl_aragog-0.2.8a4.dist-info/licenses/LICENSE +674 -0
- scripts/convert_datatables.py +541 -0
- tests/__init__.py +0 -0
- tests/conftest.py +57 -0
- tests/reference/__init__.py +0 -0
- tests/reference/abe_liquid_no_heating.dat +100 -0
- tests/reference/abe_mixed.dat +50 -0
- tests/reference/abe_mixed_init.dat +49 -0
- tests/reference/abe_solid_no_heating.dat +100 -0
- tests/reference/abe_solid_with_heating.dat +100 -0
- tests/test_abe.py +140 -0
- tests/test_phase.py +196 -0
aragog/__init__.py
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright 2024 Dan J. Bower
|
|
3
|
+
#
|
|
4
|
+
# This file is part of Aragog.
|
|
5
|
+
#
|
|
6
|
+
# Aragog is free software: you can redistribute it and/or modify it under the terms of the GNU
|
|
7
|
+
# General Public License as published by the Free Software Foundation, either version 3 of the
|
|
8
|
+
# License, or (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# Aragog is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
|
11
|
+
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
12
|
+
# General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License along with Aragog. If not,
|
|
15
|
+
# see <https://www.gnu.org/licenses/>.
|
|
16
|
+
#
|
|
17
|
+
"""Package level variables and initialises the package logger"""
|
|
18
|
+
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
__version__: str = "0.2.8-alpha"
|
|
22
|
+
|
|
23
|
+
import importlib.resources
|
|
24
|
+
import logging
|
|
25
|
+
import os
|
|
26
|
+
from importlib.abc import Traversable
|
|
27
|
+
|
|
28
|
+
CFG_DATA: Traversable = importlib.resources.files(f"{__package__}.cfg")
|
|
29
|
+
|
|
30
|
+
# Creates the package logger.
|
|
31
|
+
# https://docs.python.org/3/howto/logging.html#library-config
|
|
32
|
+
logger: logging.Logger = logging.getLogger(__name__)
|
|
33
|
+
logger.addHandler(logging.NullHandler())
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def complex_formatter() -> logging.Formatter:
|
|
37
|
+
"""Complex formatter for logging
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
Formatter for logging
|
|
41
|
+
"""
|
|
42
|
+
fmt: str = "[%(asctime)s - %(name)-30s - %(lineno)03d - %(levelname)-9s - %(funcName)s()]"
|
|
43
|
+
fmt += " - %(message)s"
|
|
44
|
+
datefmt: str = "%Y-%m-%d %H:%M:%S"
|
|
45
|
+
formatter: logging.Formatter = logging.Formatter(fmt, datefmt=datefmt)
|
|
46
|
+
|
|
47
|
+
return formatter
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def simple_formatter() -> logging.Formatter:
|
|
51
|
+
"""Simple formatter for logging
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Formatter for logging
|
|
55
|
+
"""
|
|
56
|
+
fmt: str = "[%(asctime)s - %(name)-30s - %(levelname)-9s] - %(message)s"
|
|
57
|
+
datefmt: str = "%H:%M:%S"
|
|
58
|
+
formatter: logging.Formatter = logging.Formatter(fmt, datefmt=datefmt)
|
|
59
|
+
|
|
60
|
+
return formatter
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def debug_logger() -> logging.Logger:
|
|
64
|
+
"""Sets up debug logging to the console.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
A logger
|
|
68
|
+
"""
|
|
69
|
+
package_logger: logging.Logger = logging.getLogger(__name__)
|
|
70
|
+
package_logger.setLevel(logging.DEBUG)
|
|
71
|
+
logger.handlers = []
|
|
72
|
+
console_handler: logging.Handler = logging.StreamHandler()
|
|
73
|
+
console_formatter: logging.Formatter = simple_formatter()
|
|
74
|
+
console_handler.setFormatter(console_formatter)
|
|
75
|
+
logger.addHandler(console_handler)
|
|
76
|
+
|
|
77
|
+
return package_logger
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def aragog_file_logger(
|
|
81
|
+
console_level=logging.INFO, file_level=logging.DEBUG, log_dir=os.getcwd()
|
|
82
|
+
) -> logging.Logger:
|
|
83
|
+
"""Sets up console logging and file logging according to arguments.
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
A logger
|
|
87
|
+
"""
|
|
88
|
+
# Console logger
|
|
89
|
+
package_logger: logging.Logger = logging.getLogger(__name__)
|
|
90
|
+
package_logger.setLevel(file_level)
|
|
91
|
+
package_logger.handlers = []
|
|
92
|
+
console_handler: logging.Handler = logging.StreamHandler()
|
|
93
|
+
console_formatter: logging.Formatter = simple_formatter()
|
|
94
|
+
console_handler.setFormatter(console_formatter)
|
|
95
|
+
console_handler.setLevel(console_level)
|
|
96
|
+
logger.addHandler(console_handler)
|
|
97
|
+
# File logger
|
|
98
|
+
log_file = os.path.join(log_dir, f"{__package__}.log")
|
|
99
|
+
file_handler: logging.Handler = logging.FileHandler(log_file)
|
|
100
|
+
file_formatter: logging.Formatter = complex_formatter()
|
|
101
|
+
file_handler.setFormatter(file_formatter)
|
|
102
|
+
file_handler.setLevel(logging.DEBUG)
|
|
103
|
+
package_logger.addHandler(file_handler)
|
|
104
|
+
|
|
105
|
+
return package_logger
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# Expose public API so pylint: disable = C0413
|
|
109
|
+
from aragog.data import DownloadLookupTableData
|
|
110
|
+
from aragog.output import Output
|
|
111
|
+
from aragog.solver import Solver
|
aragog/cfg/__init__.py
ADDED
|
File without changes
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# All units are SI unless otherwise specified.
|
|
2
|
+
|
|
3
|
+
[scalings]
|
|
4
|
+
# Scalings for the numerical solution with SI units
|
|
5
|
+
radius = 6371000
|
|
6
|
+
temperature = 4000
|
|
7
|
+
density = 4000
|
|
8
|
+
# 1/10 year in seconds
|
|
9
|
+
time = 3155760
|
|
10
|
+
|
|
11
|
+
[solver]
|
|
12
|
+
# start and end time in years
|
|
13
|
+
start_time = 0
|
|
14
|
+
end_time = 1000
|
|
15
|
+
atol = 1e-9
|
|
16
|
+
rtol = 1e-9
|
|
17
|
+
tsurf_poststep_change = 30
|
|
18
|
+
event_triggering = False
|
|
19
|
+
|
|
20
|
+
[boundary_conditions]
|
|
21
|
+
outer_boundary_condition = 1
|
|
22
|
+
outer_boundary_value = 1500
|
|
23
|
+
inner_boundary_condition = 2
|
|
24
|
+
inner_boundary_value = 0
|
|
25
|
+
emissivity = 1
|
|
26
|
+
equilibrium_temperature = 273
|
|
27
|
+
core_heat_capacity = 880
|
|
28
|
+
|
|
29
|
+
[mesh]
|
|
30
|
+
outer_radius = 6371000
|
|
31
|
+
#inner_radius = 3504050
|
|
32
|
+
inner_radius = 5371000
|
|
33
|
+
number_of_nodes = 100
|
|
34
|
+
mixing_length_profile = constant
|
|
35
|
+
core_density = 10738.332568062382
|
|
36
|
+
# static pressure profile derived from Adams-Williamson equation of state
|
|
37
|
+
# surface density
|
|
38
|
+
surface_density = 4090
|
|
39
|
+
gravitational_acceleration = 9.81
|
|
40
|
+
# https://d-nb.info/1241183945/34
|
|
41
|
+
adiabatic_bulk_modulus = 260E9
|
|
42
|
+
|
|
43
|
+
[energy]
|
|
44
|
+
conduction = True
|
|
45
|
+
convection = True
|
|
46
|
+
gravitational_separation = False
|
|
47
|
+
mixing = False
|
|
48
|
+
radionuclides = False
|
|
49
|
+
dilatation = False
|
|
50
|
+
tidal = False
|
|
51
|
+
|
|
52
|
+
[initial_condition]
|
|
53
|
+
surface_temperature = 3600
|
|
54
|
+
basal_temperature = 4000
|
|
55
|
+
|
|
56
|
+
[phase_liquid]
|
|
57
|
+
density = 4000
|
|
58
|
+
viscosity = 1E2
|
|
59
|
+
heat_capacity = 1000
|
|
60
|
+
melt_fraction = 1
|
|
61
|
+
thermal_conductivity = 4
|
|
62
|
+
thermal_expansivity = 1.0E-5
|
|
63
|
+
|
|
64
|
+
[phase_solid]
|
|
65
|
+
density = 4200
|
|
66
|
+
viscosity = 1E21
|
|
67
|
+
heat_capacity = 1000
|
|
68
|
+
melt_fraction = 0
|
|
69
|
+
thermal_conductivity = 4
|
|
70
|
+
thermal_expansivity = 1.0E-5
|
|
71
|
+
|
|
72
|
+
[phase_mixed]
|
|
73
|
+
# J/kg/K
|
|
74
|
+
latent_heat_of_fusion = 4e6
|
|
75
|
+
rheological_transition_melt_fraction = 0.4
|
|
76
|
+
rheological_transition_width = 0.15
|
|
77
|
+
solidus = data/test/solidus_1d_lookup.dat
|
|
78
|
+
liquidus = data/test/liquidus_1d_lookup.dat
|
|
79
|
+
phase = liquid
|
|
80
|
+
phase_transition_width = 0.01
|
|
81
|
+
grain_size = 1.0E-3
|
|
82
|
+
|
|
83
|
+
[radionuclide_K40]
|
|
84
|
+
name = K40
|
|
85
|
+
# years
|
|
86
|
+
t0_years = 4.55E9
|
|
87
|
+
# (40K/K) Ruedas (2017)
|
|
88
|
+
abundance = 1.1668E-4
|
|
89
|
+
# K concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
90
|
+
concentration = 310
|
|
91
|
+
# W/kg (Ruedas, 2017)
|
|
92
|
+
heat_production = 2.8761E-5
|
|
93
|
+
# years (Ruedas, 2017)
|
|
94
|
+
half_life_years = 1248E6
|
|
95
|
+
|
|
96
|
+
[radionuclide_Th232]
|
|
97
|
+
name = Th232
|
|
98
|
+
# years
|
|
99
|
+
t0_years = 4.55E9
|
|
100
|
+
# (232Th/Th) Ruedas (2017)
|
|
101
|
+
abundance = 1.0
|
|
102
|
+
# Th concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
103
|
+
concentration = 0.124
|
|
104
|
+
# W/kg (Ruedas, 2017)
|
|
105
|
+
heat_production = 2.6368E-5
|
|
106
|
+
# years (Ruedas, 2017)
|
|
107
|
+
half_life_years = 14000E6
|
|
108
|
+
|
|
109
|
+
[radionuclide_U235]
|
|
110
|
+
name = U235
|
|
111
|
+
# years
|
|
112
|
+
t0_years = 4.55E9
|
|
113
|
+
# (235U/U) Ruedas (2017)
|
|
114
|
+
abundance = 0.0072045
|
|
115
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
116
|
+
concentration = 0.031
|
|
117
|
+
# W/kg (Ruedas, 2017)
|
|
118
|
+
heat_production = 5.68402E-4
|
|
119
|
+
# years (Ruedas, 2017)
|
|
120
|
+
half_life_years = 704E6
|
|
121
|
+
|
|
122
|
+
[radionuclide_U238]
|
|
123
|
+
name = U238
|
|
124
|
+
# years
|
|
125
|
+
t0_years = 4.55E9
|
|
126
|
+
# (238U/U) Ruedas (2017)
|
|
127
|
+
abundance = 0.9927955
|
|
128
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
129
|
+
concentration = 0.031
|
|
130
|
+
# W/kg (Ruedas, 2017)
|
|
131
|
+
heat_production = 9.4946E-5
|
|
132
|
+
# years (Ruedas, 2017)
|
|
133
|
+
half_life_years = 4468E6
|
aragog/cfg/abe_mixed.cfg
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# All units are SI unless otherwise specified.
|
|
2
|
+
|
|
3
|
+
[scalings]
|
|
4
|
+
# Scalings for the numerical solution with SI units
|
|
5
|
+
radius = 6371000
|
|
6
|
+
temperature = 4000
|
|
7
|
+
density = 4000
|
|
8
|
+
# 1/10 year in seconds
|
|
9
|
+
time = 3155760
|
|
10
|
+
|
|
11
|
+
[solver]
|
|
12
|
+
# start and end time in years
|
|
13
|
+
start_time = 0
|
|
14
|
+
end_time = 200
|
|
15
|
+
atol = 1e-6
|
|
16
|
+
rtol = 1e-6
|
|
17
|
+
tsurf_poststep_change = 30
|
|
18
|
+
event_triggering = False
|
|
19
|
+
|
|
20
|
+
[boundary_conditions]
|
|
21
|
+
outer_boundary_condition = 1
|
|
22
|
+
outer_boundary_value = 1500
|
|
23
|
+
inner_boundary_condition = 2
|
|
24
|
+
inner_boundary_value = 0
|
|
25
|
+
emissivity = 1
|
|
26
|
+
equilibrium_temperature = 273
|
|
27
|
+
core_heat_capacity = 880
|
|
28
|
+
|
|
29
|
+
[mesh]
|
|
30
|
+
outer_radius = 6371000
|
|
31
|
+
#inner_radius = 3504050
|
|
32
|
+
inner_radius = 5371000
|
|
33
|
+
number_of_nodes = 50
|
|
34
|
+
mixing_length_profile = constant
|
|
35
|
+
core_density = 10738.332568062382
|
|
36
|
+
# static pressure profile derived from Adams-Williamson equation of state
|
|
37
|
+
# surface density
|
|
38
|
+
surface_density = 4090
|
|
39
|
+
gravitational_acceleration = 9.81
|
|
40
|
+
# https://d-nb.info/1241183945/34
|
|
41
|
+
adiabatic_bulk_modulus = 260E9
|
|
42
|
+
|
|
43
|
+
[energy]
|
|
44
|
+
conduction = True
|
|
45
|
+
convection = True
|
|
46
|
+
gravitational_separation = True
|
|
47
|
+
mixing = True
|
|
48
|
+
radionuclides = False
|
|
49
|
+
dilatation = False
|
|
50
|
+
tidal = False
|
|
51
|
+
|
|
52
|
+
[initial_condition]
|
|
53
|
+
surface_temperature = 3600
|
|
54
|
+
basal_temperature = 4000
|
|
55
|
+
|
|
56
|
+
[phase_liquid]
|
|
57
|
+
density = 4000
|
|
58
|
+
viscosity = 1E2
|
|
59
|
+
heat_capacity = 1000
|
|
60
|
+
melt_fraction = 1
|
|
61
|
+
thermal_conductivity = 4
|
|
62
|
+
thermal_expansivity = 1.0E-5
|
|
63
|
+
|
|
64
|
+
[phase_solid]
|
|
65
|
+
density = 4200
|
|
66
|
+
viscosity = 1E21
|
|
67
|
+
heat_capacity = 1000
|
|
68
|
+
melt_fraction = 0
|
|
69
|
+
thermal_conductivity = 4
|
|
70
|
+
thermal_expansivity = 1.0E-5
|
|
71
|
+
|
|
72
|
+
[phase_mixed]
|
|
73
|
+
# J/kg/K
|
|
74
|
+
latent_heat_of_fusion = 4e6
|
|
75
|
+
rheological_transition_melt_fraction = 0.4
|
|
76
|
+
rheological_transition_width = 0.15
|
|
77
|
+
solidus = data/test/solidus_1d_lookup.dat
|
|
78
|
+
liquidus = data/test/liquidus_1d_lookup.dat
|
|
79
|
+
phase = mixed
|
|
80
|
+
phase_transition_width = 0.1
|
|
81
|
+
grain_size = 1.0E-3
|
|
82
|
+
|
|
83
|
+
[radionuclide_K40]
|
|
84
|
+
name = K40
|
|
85
|
+
# years
|
|
86
|
+
t0_years = 4.55E9
|
|
87
|
+
# (40K/K) Ruedas (2017)
|
|
88
|
+
abundance = 1.1668E-4
|
|
89
|
+
# K concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
90
|
+
concentration = 310
|
|
91
|
+
# W/kg (Ruedas, 2017)
|
|
92
|
+
heat_production = 2.8761E-5
|
|
93
|
+
# years (Ruedas, 2017)
|
|
94
|
+
half_life_years = 1248E6
|
|
95
|
+
|
|
96
|
+
[radionuclide_Th232]
|
|
97
|
+
name = Th232
|
|
98
|
+
# years
|
|
99
|
+
t0_years = 4.55E9
|
|
100
|
+
# (232Th/Th) Ruedas (2017)
|
|
101
|
+
abundance = 1.0
|
|
102
|
+
# Th concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
103
|
+
concentration = 0.124
|
|
104
|
+
# W/kg (Ruedas, 2017)
|
|
105
|
+
heat_production = 2.6368E-5
|
|
106
|
+
# years (Ruedas, 2017)
|
|
107
|
+
half_life_years = 14000E6
|
|
108
|
+
|
|
109
|
+
[radionuclide_U235]
|
|
110
|
+
name = U235
|
|
111
|
+
# years
|
|
112
|
+
t0_years = 4.55E9
|
|
113
|
+
# (235U/U) Ruedas (2017)
|
|
114
|
+
abundance = 0.0072045
|
|
115
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
116
|
+
concentration = 0.031
|
|
117
|
+
# W/kg (Ruedas, 2017)
|
|
118
|
+
heat_production = 5.68402E-4
|
|
119
|
+
# years (Ruedas, 2017)
|
|
120
|
+
half_life_years = 704E6
|
|
121
|
+
|
|
122
|
+
[radionuclide_U238]
|
|
123
|
+
name = U238
|
|
124
|
+
# years
|
|
125
|
+
t0_years = 4.55E9
|
|
126
|
+
# (238U/U) Ruedas (2017)
|
|
127
|
+
abundance = 0.9927955
|
|
128
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
129
|
+
concentration = 0.031
|
|
130
|
+
# W/kg (Ruedas, 2017)
|
|
131
|
+
heat_production = 9.4946E-5
|
|
132
|
+
# years (Ruedas, 2017)
|
|
133
|
+
half_life_years = 4468E6
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# All units are SI unless otherwise specified.
|
|
2
|
+
|
|
3
|
+
[scalings]
|
|
4
|
+
# Scalings for the numerical solution with SI units
|
|
5
|
+
radius = 6371000
|
|
6
|
+
temperature = 4000
|
|
7
|
+
density = 4000
|
|
8
|
+
# 1/10 year in seconds
|
|
9
|
+
time = 3155760
|
|
10
|
+
|
|
11
|
+
[solver]
|
|
12
|
+
# start and end time in years
|
|
13
|
+
start_time = 0
|
|
14
|
+
end_time = 200
|
|
15
|
+
atol = 1e-6
|
|
16
|
+
rtol = 1e-6
|
|
17
|
+
tsurf_poststep_change = 30
|
|
18
|
+
event_triggering = False
|
|
19
|
+
|
|
20
|
+
[boundary_conditions]
|
|
21
|
+
outer_boundary_condition = 1
|
|
22
|
+
outer_boundary_value = 1500
|
|
23
|
+
inner_boundary_condition = 2
|
|
24
|
+
inner_boundary_value = 0
|
|
25
|
+
emissivity = 1
|
|
26
|
+
equilibrium_temperature = 273
|
|
27
|
+
core_heat_capacity = 880
|
|
28
|
+
|
|
29
|
+
[mesh]
|
|
30
|
+
outer_radius = 6371000
|
|
31
|
+
#inner_radius = 3504050
|
|
32
|
+
inner_radius = 5371000
|
|
33
|
+
number_of_nodes = 50
|
|
34
|
+
mixing_length_profile = constant
|
|
35
|
+
# user-defined EOS
|
|
36
|
+
core_density = 10738.332568062382
|
|
37
|
+
eos_method = 2
|
|
38
|
+
eos_file = data/test/eos_test.dat
|
|
39
|
+
|
|
40
|
+
[energy]
|
|
41
|
+
conduction = True
|
|
42
|
+
convection = True
|
|
43
|
+
gravitational_separation = False
|
|
44
|
+
mixing = False
|
|
45
|
+
radionuclides = False
|
|
46
|
+
dilatation = False
|
|
47
|
+
tidal = False
|
|
48
|
+
|
|
49
|
+
[initial_condition]
|
|
50
|
+
initial_condition = 3
|
|
51
|
+
surface_temperature = 2800
|
|
52
|
+
|
|
53
|
+
[phase_liquid]
|
|
54
|
+
density = 4000
|
|
55
|
+
viscosity = 1E2
|
|
56
|
+
heat_capacity = 1000
|
|
57
|
+
melt_fraction = 1
|
|
58
|
+
thermal_conductivity = 4
|
|
59
|
+
thermal_expansivity = 1.0E-5
|
|
60
|
+
|
|
61
|
+
[phase_solid]
|
|
62
|
+
density = 4200
|
|
63
|
+
viscosity = 1E21
|
|
64
|
+
heat_capacity = 1000
|
|
65
|
+
melt_fraction = 0
|
|
66
|
+
thermal_conductivity = 4
|
|
67
|
+
thermal_expansivity = 1.0E-5
|
|
68
|
+
|
|
69
|
+
[phase_mixed]
|
|
70
|
+
# J/kg/K
|
|
71
|
+
latent_heat_of_fusion = 4e6
|
|
72
|
+
rheological_transition_melt_fraction = 0.4
|
|
73
|
+
rheological_transition_width = 0.15
|
|
74
|
+
solidus = data/test/solidus_1d_lookup.dat
|
|
75
|
+
liquidus = data/test/liquidus_1d_lookup.dat
|
|
76
|
+
phase = mixed
|
|
77
|
+
phase_transition_width = 0.1
|
|
78
|
+
grain_size = 1.0E-3
|
|
79
|
+
|
|
80
|
+
[radionuclide_K40]
|
|
81
|
+
name = K40
|
|
82
|
+
# years
|
|
83
|
+
t0_years = 4.55E9
|
|
84
|
+
# (40K/K) Ruedas (2017)
|
|
85
|
+
abundance = 1.1668E-4
|
|
86
|
+
# K concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
87
|
+
concentration = 310
|
|
88
|
+
# W/kg (Ruedas, 2017)
|
|
89
|
+
heat_production = 2.8761E-5
|
|
90
|
+
# years (Ruedas, 2017)
|
|
91
|
+
half_life_years = 1248E6
|
|
92
|
+
|
|
93
|
+
[radionuclide_Th232]
|
|
94
|
+
name = Th232
|
|
95
|
+
# years
|
|
96
|
+
t0_years = 4.55E9
|
|
97
|
+
# (232Th/Th) Ruedas (2017)
|
|
98
|
+
abundance = 1.0
|
|
99
|
+
# Th concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
100
|
+
concentration = 0.124
|
|
101
|
+
# W/kg (Ruedas, 2017)
|
|
102
|
+
heat_production = 2.6368E-5
|
|
103
|
+
# years (Ruedas, 2017)
|
|
104
|
+
half_life_years = 14000E6
|
|
105
|
+
|
|
106
|
+
[radionuclide_U235]
|
|
107
|
+
name = U235
|
|
108
|
+
# years
|
|
109
|
+
t0_years = 4.55E9
|
|
110
|
+
# (235U/U) Ruedas (2017)
|
|
111
|
+
abundance = 0.0072045
|
|
112
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
113
|
+
concentration = 0.031
|
|
114
|
+
# W/kg (Ruedas, 2017)
|
|
115
|
+
heat_production = 5.68402E-4
|
|
116
|
+
# years (Ruedas, 2017)
|
|
117
|
+
half_life_years = 704E6
|
|
118
|
+
|
|
119
|
+
[radionuclide_U238]
|
|
120
|
+
name = U238
|
|
121
|
+
# years
|
|
122
|
+
t0_years = 4.55E9
|
|
123
|
+
# (238U/U) Ruedas (2017)
|
|
124
|
+
abundance = 0.9927955
|
|
125
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
126
|
+
concentration = 0.031
|
|
127
|
+
# W/kg (Ruedas, 2017)
|
|
128
|
+
heat_production = 9.4946E-5
|
|
129
|
+
# years (Ruedas, 2017)
|
|
130
|
+
half_life_years = 4468E6
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# All units are SI unless otherwise specified.
|
|
2
|
+
|
|
3
|
+
[scalings]
|
|
4
|
+
# Scalings for the numerical solution with SI units
|
|
5
|
+
radius = 6371000
|
|
6
|
+
temperature = 4000
|
|
7
|
+
density = 4000
|
|
8
|
+
# 1/10 year in seconds
|
|
9
|
+
time = 3155760
|
|
10
|
+
|
|
11
|
+
[solver]
|
|
12
|
+
# start and end time in years
|
|
13
|
+
start_time = 0
|
|
14
|
+
end_time = 1000
|
|
15
|
+
atol = 1e-9
|
|
16
|
+
rtol = 1e-9
|
|
17
|
+
tsurf_poststep_change = 30
|
|
18
|
+
event_triggering = False
|
|
19
|
+
|
|
20
|
+
[boundary_conditions]
|
|
21
|
+
outer_boundary_condition = 1
|
|
22
|
+
outer_boundary_value = 1500
|
|
23
|
+
inner_boundary_condition = 2
|
|
24
|
+
inner_boundary_value = 0
|
|
25
|
+
emissivity = 1
|
|
26
|
+
equilibrium_temperature = 273
|
|
27
|
+
core_heat_capacity = 880
|
|
28
|
+
|
|
29
|
+
[mesh]
|
|
30
|
+
outer_radius = 6371000
|
|
31
|
+
#inner_radius = 3504050
|
|
32
|
+
inner_radius = 5371000
|
|
33
|
+
number_of_nodes = 100
|
|
34
|
+
mixing_length_profile = constant
|
|
35
|
+
core_density = 10738.332568062382
|
|
36
|
+
# static pressure profile derived from Adams-Williamson equation of state
|
|
37
|
+
# surface density
|
|
38
|
+
surface_density = 4090
|
|
39
|
+
gravitational_acceleration = 9.81
|
|
40
|
+
# https://d-nb.info/1241183945/34
|
|
41
|
+
adiabatic_bulk_modulus = 260E9
|
|
42
|
+
|
|
43
|
+
[energy]
|
|
44
|
+
conduction = True
|
|
45
|
+
convection = True
|
|
46
|
+
gravitational_separation = False
|
|
47
|
+
mixing = False
|
|
48
|
+
radionuclides = True
|
|
49
|
+
dilatation = False
|
|
50
|
+
tidal = False
|
|
51
|
+
|
|
52
|
+
[initial_condition]
|
|
53
|
+
surface_temperature = 3600
|
|
54
|
+
basal_temperature = 4000
|
|
55
|
+
|
|
56
|
+
[phase_liquid]
|
|
57
|
+
density = data/test/density_2d_lookup.dat
|
|
58
|
+
viscosity = 1E2
|
|
59
|
+
heat_capacity = 1000
|
|
60
|
+
melt_fraction = 1
|
|
61
|
+
thermal_conductivity = 4
|
|
62
|
+
thermal_expansivity = 1.0E-5
|
|
63
|
+
|
|
64
|
+
[phase_solid]
|
|
65
|
+
density = 4200
|
|
66
|
+
# data/test/density_solid.dat
|
|
67
|
+
viscosity = 1E21
|
|
68
|
+
heat_capacity = 1000
|
|
69
|
+
melt_fraction = 0
|
|
70
|
+
thermal_conductivity = 4
|
|
71
|
+
thermal_expansivity = 1.0E-5
|
|
72
|
+
|
|
73
|
+
[phase_mixed]
|
|
74
|
+
# J/kg/K
|
|
75
|
+
latent_heat_of_fusion = 4e6
|
|
76
|
+
rheological_transition_melt_fraction = 0.4
|
|
77
|
+
rheological_transition_width = 0.15
|
|
78
|
+
solidus = data/test/solidus_1d_lookup.dat
|
|
79
|
+
liquidus = data/test/liquidus_1d_lookup.dat
|
|
80
|
+
phase = mixed
|
|
81
|
+
phase_transition_width = 0.1
|
|
82
|
+
grain_size = 1.0E-3
|
|
83
|
+
|
|
84
|
+
[radionuclide_K40]
|
|
85
|
+
name = K40
|
|
86
|
+
# years
|
|
87
|
+
t0_years = 4.55E9
|
|
88
|
+
# (40K/K) Ruedas (2017)
|
|
89
|
+
abundance = 1.1668E-4
|
|
90
|
+
# K concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
91
|
+
concentration = 310
|
|
92
|
+
# W/kg (Ruedas, 2017)
|
|
93
|
+
heat_production = 2.8761E-5
|
|
94
|
+
# years (Ruedas, 2017)
|
|
95
|
+
half_life_years = 1248E6
|
|
96
|
+
|
|
97
|
+
[radionuclide_Th232]
|
|
98
|
+
name = Th232
|
|
99
|
+
# years
|
|
100
|
+
t0_years = 4.55E9
|
|
101
|
+
# (232Th/Th) Ruedas (2017)
|
|
102
|
+
abundance = 1.0
|
|
103
|
+
# Th concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
104
|
+
concentration = 0.124
|
|
105
|
+
# W/kg (Ruedas, 2017)
|
|
106
|
+
heat_production = 2.6368E-5
|
|
107
|
+
# years (Ruedas, 2017)
|
|
108
|
+
half_life_years = 14000E6
|
|
109
|
+
|
|
110
|
+
[radionuclide_U235]
|
|
111
|
+
name = U235
|
|
112
|
+
# years
|
|
113
|
+
t0_years = 4.55E9
|
|
114
|
+
# (235U/U) Ruedas (2017)
|
|
115
|
+
abundance = 0.0072045
|
|
116
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
117
|
+
concentration = 0.031
|
|
118
|
+
# W/kg (Ruedas, 2017)
|
|
119
|
+
heat_production = 5.68402E-4
|
|
120
|
+
# years (Ruedas, 2017)
|
|
121
|
+
half_life_years = 704E6
|
|
122
|
+
|
|
123
|
+
[radionuclide_U238]
|
|
124
|
+
name = U238
|
|
125
|
+
# years
|
|
126
|
+
t0_years = 4.55E9
|
|
127
|
+
# (238U/U) Ruedas (2017)
|
|
128
|
+
abundance = 0.9927955
|
|
129
|
+
# U concentration in ppm (Turcotte & Schubert, 2014, p. 170)
|
|
130
|
+
concentration = 0.031
|
|
131
|
+
# W/kg (Ruedas, 2017)
|
|
132
|
+
heat_production = 9.4946E-5
|
|
133
|
+
# years (Ruedas, 2017)
|
|
134
|
+
half_life_years = 4468E6
|