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.
Files changed (54) hide show
  1. aragog/__init__.py +111 -0
  2. aragog/cfg/__init__.py +0 -0
  3. aragog/cfg/abe_liquid.cfg +133 -0
  4. aragog/cfg/abe_mixed.cfg +133 -0
  5. aragog/cfg/abe_mixed_init.cfg +130 -0
  6. aragog/cfg/abe_mixed_lookup.cfg +134 -0
  7. aragog/cfg/abe_solid.cfg +133 -0
  8. aragog/cli.py +36 -0
  9. aragog/core.py +297 -0
  10. aragog/data.py +159 -0
  11. aragog/interfaces.py +155 -0
  12. aragog/mesh.py +803 -0
  13. aragog/output.py +535 -0
  14. aragog/parser.py +509 -0
  15. aragog/phase.py +786 -0
  16. aragog/solver.py +662 -0
  17. aragog/utilities.py +117 -0
  18. data/README.md +9 -0
  19. data/test/density_2d_lookup.dat +9 -0
  20. data/test/eos_test.dat +99 -0
  21. data/test/liquidus_1d_lookup.dat +3 -0
  22. data/test/solidus_1d_lookup.dat +3 -0
  23. docs/Makefile +20 -0
  24. docs/about.rst +19 -0
  25. docs/bibliography.rst +16 -0
  26. docs/conf.py +92 -0
  27. docs/index.rst +35 -0
  28. docs/installation.rst +66 -0
  29. docs/make.bat +35 -0
  30. docs/notes/main.tex +437 -0
  31. docs/notes/refs.bib +87 -0
  32. docs/output.rst +2 -0
  33. docs/publications.rst +10 -0
  34. docs/refs.bib +136 -0
  35. docs/source/aragog.rst +77 -0
  36. docs/source/modules.rst +7 -0
  37. docs/troubleshooting.rst +4 -0
  38. docs/tutorial.rst +20 -0
  39. fwl_aragog-0.2.8a4.dist-info/METADATA +98 -0
  40. fwl_aragog-0.2.8a4.dist-info/RECORD +54 -0
  41. fwl_aragog-0.2.8a4.dist-info/WHEEL +4 -0
  42. fwl_aragog-0.2.8a4.dist-info/entry_points.txt +2 -0
  43. fwl_aragog-0.2.8a4.dist-info/licenses/LICENSE +674 -0
  44. scripts/convert_datatables.py +541 -0
  45. tests/__init__.py +0 -0
  46. tests/conftest.py +57 -0
  47. tests/reference/__init__.py +0 -0
  48. tests/reference/abe_liquid_no_heating.dat +100 -0
  49. tests/reference/abe_mixed.dat +50 -0
  50. tests/reference/abe_mixed_init.dat +49 -0
  51. tests/reference/abe_solid_no_heating.dat +100 -0
  52. tests/reference/abe_solid_with_heating.dat +100 -0
  53. tests/test_abe.py +140 -0
  54. 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
@@ -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