Skip to content

Commit 39db45b

Browse files
Strengthen core formation evidence in lecture 4 notes and slides
The magma ocean paragraph now makes the argument in plain terms for second-year students: while the mantle is liquid, iron sinks and a core forms in weeks; once the mantle is solid, the iron is trapped, which is why chondritic asteroids never formed cores. The partitioning figure now shows Ni and Co only, with the required partition-coefficient band at the correct level (D of about 26 and 24 from core-mantle mass balance) and the 40-60 GPa window of Siebert et al. (2013) and Fischer et al. (2015), who place single-stage equilibration at 54 +/- 5 GPa. A new script regenerates the figure, and a second new script draws a two-panel schematic of Hf-W chronometry whose curves follow the two-stage model of the worked example. Both figures have matching slide frames. Oxygen fugacity is now defined qualitatively, with the iron-wuestite buffer as the reference scale, for readers who have not met geochemical redox notation. The quoted Hf-W ages for Earth now follow Nimmo and Kleine (2015) and Kleine and Walker (2017): the two-stage age of about 30 Myr is a strict lower limit, and core formation probably finished within about 100 Myr. This replaces the earlier 30-60 Myr window, which matched neither source. The Mars hemispheric dichotomy passage now includes the MOLA topography map, and the slides get a button macro that links a frame to the animated version of its figure.
1 parent b155535 commit 39db45b

13 files changed

Lines changed: 334 additions & 21 deletions

book/04_differentiation_magnetospheres/differentiation_magnetospheres.md

Lines changed: 30 additions & 10 deletions
Large diffs are not rendered by default.
Binary file not shown.
Binary file not shown.
Binary file not shown.

book/references.bib

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,38 @@ @article{Rubie2015
514514
url = {https://ui.adsabs.harvard.edu/abs/2015Icar..248...89R/abstract}
515515
}
516516

517+
@article{Hirose2021,
518+
author = {Hirose, Kei and Wood, Bernard and Vo{\v c}adlo, Lidunka},
519+
title = {Light elements in the {Earth's} core},
520+
journal = {Nature Reviews Earth \& Environment},
521+
volume = {2},
522+
number = {9},
523+
pages = {645--658},
524+
year = {2021},
525+
doi = {10.1038/s43017-021-00203-6}
526+
}
527+
528+
@article{Shahar2026,
529+
author = {Shahar, Anat and Young, Edward D. and Hirose, Kei and Yokoo, Shunpei},
530+
title = {The Compositions of Planetary Cores},
531+
journal = {Annual Review of Earth and Planetary Sciences},
532+
volume = {54},
533+
number = {1},
534+
pages = {559--584},
535+
year = {2026},
536+
doi = {10.1146/annurev-earth-040722-094945}
537+
}
538+
539+
@article{Fischer2015,
540+
author = {Fischer, Rebecca A. and Nakajima, Yoichi and Campbell, Andrew J. and Frost, Daniel J. and Harries, Dennis and Langenhorst, Falko and Miyajima, Nobuyoshi and Pollok, Kilian and Rubie, David C.},
541+
title = {High pressure metal--silicate partitioning of {Ni}, {Co}, {V}, {Cr}, {Si}, and {O}},
542+
journal = {Geochimica et Cosmochimica Acta},
543+
volume = {167},
544+
pages = {177--194},
545+
year = {2015},
546+
doi = {10.1016/j.gca.2015.06.026}
547+
}
548+
517549
@article{Siebert2013,
518550
author = {Siebert, Julien and Badro, James and Antonangeli, Daniele and Ryerson, Frederick J.},
519551
title = {Terrestrial Accretion Under Oxidizing Conditions},
@@ -719,6 +751,29 @@ @article{Kleine2009
719751
url = {https://ui.adsabs.harvard.edu/abs/2009GeCoA..73.5150K/abstract}
720752
}
721753

754+
@incollection{NimmoKleine2015,
755+
author = {Nimmo, Francis and Kleine, Thorsten},
756+
title = {Early Differentiation and Core Formation: Processes and Timescales},
757+
booktitle = {The Early Earth: Accretion and Differentiation},
758+
editor = {Badro, James and Walter, Michael},
759+
series = {Geophysical Monograph Series},
760+
volume = {212},
761+
pages = {83--102},
762+
publisher = {American Geophysical Union and John Wiley and Sons},
763+
year = {2015},
764+
doi = {10.1002/9781118860359.ch5}
765+
}
766+
767+
@article{KleineWalker2017,
768+
author = {Kleine, Thorsten and Walker, Richard J.},
769+
title = {Tungsten Isotopes in Planets},
770+
journal = {Annual Review of Earth and Planetary Sciences},
771+
volume = {45},
772+
pages = {389--417},
773+
year = {2017},
774+
doi = {10.1146/annurev-earth-063016-020037}
775+
}
776+
722777
@article{ElkinsTanton2012,
723778
author = {Elkins-Tanton, Linda T.},
724779
title = {Magma Oceans in the Inner Solar System},
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
"""Generate Fig. (`fig:hf-w-schematic`).
2+
3+
Two-panel explanatory schematic of Hf-W chronometry:
4+
5+
(a) Why the system dates core formation: 182Hf is lithophile and stays
6+
in the mantle, W is siderophile and is extracted into the core, so
7+
core formation separates the parent from the daughter reservoir.
8+
(b) Mantle 182W excess vs time for early, Earth-like, and late core
9+
formation. Curves follow the two-stage model of Eq. eq:hfw-age in
10+
the notes: eps(t) = A0 * exp(-lambda t_cf) * (1 - exp(-lambda (t -
11+
t_cf))) with A0 = Q * (f - 1) * (182Hf/180Hf)_0 = 1e4 * 17 *
12+
1.02e-4 = 17.3 for Earth's mantle Hf/W enrichment, so the 28-Myr
13+
case plateaus at the measured mantle value of +2 epsilon units,
14+
reproducing the worked example.
15+
16+
Caption / figure id : `fig:hf-w-schematic`
17+
Markdown source : book/04_differentiation_magnetospheres/differentiation_magnetospheres.md
18+
Citation key : Kleine2009
19+
"""
20+
from __future__ import annotations
21+
22+
from pathlib import Path
23+
24+
import matplotlib.pyplot as plt
25+
import numpy as np
26+
from matplotlib.patches import Circle, FancyArrowPatch
27+
28+
from scripts.figures._shared.style import apply_style, save_figure
29+
30+
31+
REPO_ROOT = Path(__file__).resolve().parents[3]
32+
OUT_AVIF = (REPO_ROOT /
33+
"book/04_differentiation_magnetospheres/figures/hf_w_schematic.avif")
34+
35+
HALF_LIFE = 8.9 # Myr
36+
LAM = np.log(2.0) / HALF_LIFE
37+
AMP0 = 1e4 * 17.0 * 1.02e-4 # Q * (f - 1) * (182Hf/180Hf)_0, Earth Hf/W
38+
EPS_EARTH = 2.0 # measured mantle excess, epsilon units
39+
T_EARTH = 28.0 # two-stage model age from Eq. eq:hfw-age
40+
41+
CASES = [
42+
(10.0, "#d62728", "early (10 Myr)"),
43+
(T_EARTH, "#1f77b4", "Earth-like (28 Myr)"),
44+
(100.0, "#2ca02c", "late (100 Myr)"),
45+
]
46+
47+
48+
def eps_curve(t: np.ndarray, t_cf: float) -> np.ndarray:
49+
"""Mantle 182W excess vs time for core formation at t_cf."""
50+
amp = AMP0 * np.exp(-LAM * t_cf)
51+
out = np.where(t > t_cf, amp * (1.0 - np.exp(-LAM * (t - t_cf))), 0.0)
52+
return out
53+
54+
55+
def draw_cartoon(ax: plt.Axes) -> None:
56+
ax.set_xlim(0, 10)
57+
ax.set_ylim(0, 10)
58+
ax.set_aspect("equal")
59+
ax.axis("off")
60+
61+
ax.add_patch(Circle((5, 5.4), 3.4, facecolor="#f5deb3",
62+
edgecolor="0.4", lw=1.2, zorder=1))
63+
ax.add_patch(Circle((5, 5.4), 1.5, facecolor="0.55",
64+
edgecolor="0.3", lw=1.2, zorder=2))
65+
66+
# W droplets sinking from the mantle into the core
67+
rng_pts = [(3.4, 7.4), (6.7, 7.2), (2.9, 4.6), (7.2, 4.9)]
68+
for (x, y) in rng_pts:
69+
ax.plot(x, y, "o", color="0.25", ms=5, zorder=3)
70+
dx, dy = (5 - x) * 0.35, (5.4 - y) * 0.35
71+
ax.add_patch(FancyArrowPatch((x, y), (x + dx, y + dy),
72+
arrowstyle="-|>", mutation_scale=10,
73+
color="0.25", lw=1.0, zorder=3))
74+
ax.annotate("W (siderophile)\nsinks into the core", xy=(5, 0.6),
75+
fontsize=9.5, ha="center", color="0.2")
76+
77+
ax.annotate("mantle: Hf (lithophile) stays", xy=(5, 9.5), fontsize=9.5,
78+
ha="center", color="#8a6d1a")
79+
ax.annotate("$^{182}\\mathrm{Hf} \\rightarrow\\, ^{182}\\mathrm{W}$\n"
80+
"$t_{1/2} = 8.9$ Myr", xy=(5, 7.6), fontsize=9.5,
81+
ha="center", color="#8a6d1a", zorder=4)
82+
ax.annotate("core", xy=(5, 5.3), fontsize=10, ha="center",
83+
color="white", zorder=4)
84+
ax.set_title("(a) parent and daughter separate", fontsize=11)
85+
86+
87+
def draw_curves(ax: plt.Axes) -> None:
88+
t = np.linspace(0.0, 130.0, 600)
89+
for t_cf, color, label in CASES:
90+
ax.plot(t, eps_curve(t, t_cf), color=color, lw=2.2, label=label)
91+
ax.axvline(t_cf, color=color, lw=0.8, ls=":", alpha=0.6)
92+
93+
ax.axhline(0.0, color="0.4", lw=1.0)
94+
ax.annotate("chondrites (never differentiated)", xy=(64, 0.12),
95+
fontsize=8.5, color="0.35")
96+
ax.axhline(EPS_EARTH, color="0.2", lw=1.0, ls="--")
97+
ax.annotate("Earth's mantle today ($+2\\,\\varepsilon$)",
98+
xy=(64, EPS_EARTH + 0.12), fontsize=8.5, color="0.2")
99+
100+
ax.set_xlim(0, 130)
101+
ax.set_ylim(-0.4, 9)
102+
ax.set_xlabel("Time after CAI condensation (Myr)")
103+
ax.set_ylabel(r"mantle $\varepsilon^{182}\mathrm{W}$ (parts per $10^4$)")
104+
ax.legend(title="core formation", loc="center right", fontsize=9)
105+
ax.set_title("(b) earlier core formation, larger excess", fontsize=11)
106+
107+
108+
def make_plot() -> Path:
109+
apply_style()
110+
fig, (ax_a, ax_b) = plt.subplots(1, 2, figsize=(10.4, 4.6),
111+
gridspec_kw={"width_ratios": [1, 1.35]})
112+
draw_cartoon(ax_a)
113+
draw_curves(ax_b)
114+
fig.tight_layout()
115+
return save_figure(fig, OUT_AVIF, avif_quality=80)
116+
117+
118+
if __name__ == "__main__":
119+
out = make_plot()
120+
print(out)
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
"""Generate Fig. (`fig:partitioning-pressure`).
2+
3+
Schematic pressure dependence of the metal-silicate partition
4+
coefficients of Ni and Co, the two elements that anchor the
5+
deep-magma-ocean equilibration argument:
6+
7+
log10 D = a + b * P (Eq. eq:d-parameterisation at constant T, fO2)
8+
9+
The lines are schematic fits chosen to reproduce the behaviour
10+
established experimentally (Siebert et al. 2013 Science; Fischer et
11+
al. 2015 GCA): D(Ni) and D(Co) decrease with pressure, converge
12+
toward each other, and reach the values required by the bulk silicate
13+
Earth (D_Ni ~ 26, D_Co ~ 24 from core/mantle mass balance with the
14+
McDonough 2003 compositions; Fischer et al. 2015 place single-stage
15+
equilibration at 54 +/- 5 GPa) at pressures near 40-60 GPa.
16+
17+
Caption / figure id : `fig:partitioning-pressure`
18+
Markdown source : book/04_differentiation_magnetospheres/differentiation_magnetospheres.md
19+
Citation keys : Siebert2013, Rubie2015
20+
"""
21+
from __future__ import annotations
22+
23+
from pathlib import Path
24+
25+
import matplotlib.pyplot as plt
26+
import numpy as np
27+
28+
from scripts.figures._shared.style import apply_style, save_figure
29+
30+
31+
REPO_ROOT = Path(__file__).resolve().parents[3]
32+
OUT_AVIF = (REPO_ROOT /
33+
"book/04_differentiation_magnetospheres/figures/"
34+
"siebert2013_partition_coefficients.avif")
35+
36+
# Schematic linear fits in log10 D vs P (constant T ~ 3500 K, fO2 ~ IW-2).
37+
# Anchors: low-pressure D(Ni) ~ 10^4, D(Ni)/D(Co) ~ 5 at low P, and both
38+
# elements reaching their BSE-required values at ~55 GPa.
39+
NI = dict(a=4.0, b=-0.0472, color="#d62728", label="Ni")
40+
CO = dict(a=3.3, b=-0.0380, color="#ff7f0e", label="Co")
41+
42+
# D required by core/mantle mass balance (mantle Ni 1960 ppm, Co 105 ppm,
43+
# McDonough & Sun 1995; core Ni 5.2 wt%, Co 0.25 wt%, McDonough 2003):
44+
# D_Ni ~ 26, D_Co ~ 24. Band spans D = 20-32.
45+
BAND_LO, BAND_HI = np.log10(20.0), np.log10(32.0)
46+
47+
# Equilibration pressure window inferred from the experiments.
48+
P_LO, P_HI = 40.0, 60.0
49+
50+
51+
def make_plot() -> Path:
52+
apply_style()
53+
p = np.linspace(0.0, 75.0, 200)
54+
55+
fig, ax = plt.subplots(figsize=(7.2, 5.0))
56+
57+
ax.axvspan(P_LO, P_HI, color="#1f77b4", alpha=0.10, zorder=0)
58+
ax.axhspan(BAND_LO, BAND_HI, color="0.55", alpha=0.30, zorder=1)
59+
60+
for el, p_lab, dy in ((NI, 22.0, 0.12), (CO, 22.0, -0.30)):
61+
d = el["a"] + el["b"] * p
62+
ax.plot(p, d, color=el["color"], lw=2.2, zorder=3)
63+
ax.annotate(el["label"], xy=(p_lab, el["a"] + el["b"] * p_lab + dy),
64+
color=el["color"], fontsize=11, fontweight="bold",
65+
ha="center", va="center")
66+
67+
ax.annotate("$D$ required to match the\nmantle's Ni and Co content",
68+
xy=(4, (BAND_LO + BAND_HI) / 2), fontsize=9.5,
69+
color="0.25", va="center")
70+
ax.annotate("inferred equilibration\npressure 40–60 GPa",
71+
xy=(50, 3.55), fontsize=9.5, color="#1f77b4",
72+
ha="center", va="top")
73+
74+
ax.set_xlim(0, 79)
75+
ax.set_ylim(0, 4.3)
76+
ax.set_xlabel("Pressure (GPa)")
77+
ax.set_ylabel(r"$\log_{10}\, D^{\mathrm{met/sil}}$")
78+
ax.set_title("Metal–silicate partitioning of Ni and Co vs pressure\n"
79+
r"(schematic, at $T \approx 3500$ K, $f_{\mathrm{O_2}} \approx$ IW$-$2)")
80+
81+
fig.tight_layout()
82+
return save_figure(fig, OUT_AVIF, avif_quality=80)
83+
84+
85+
if __name__ == "__main__":
86+
out = make_plot()
87+
print(out)

slides/common/beamerthemeIPS.sty

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
\definecolor{ipsText}{HTML}{2D3748} % dark gray — body text
1616
\definecolor{ipsLightFill}{HTML}{EDF2F7} % light gray — boxes, highlights
1717
\definecolor{ipsOrange}{HTML}{DD6B20} % orange — alerts, key results
18+
\setbeamercolor{button}{bg=ipsAccent, fg=white}
1819

1920
% ── Apply colors to Beamer elements ────────────────────────
2021
\setbeamercolor{normal text}{fg=ipsText, bg=ipsBackground}

slides/common/macros.tex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,8 @@
2020

2121
% ── Constants ───────────────────────────────────────────────
2222
\newcommand{\kB}{k_{\mathrm{B}}}
23+
24+
% ── Media links ─────────────────────────────────────────────
25+
% Clickable button that opens the animated or video version of a
26+
% figure, e.g. \mediabutton{https://...gif}{Play animation}
27+
\providecommand{\mediabutton}[2]{\href{#1}{\beamergotobutton{#2}}}
58.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)