Skip to content

Use the PALEOS P-S tables under the dummy structure for a PALEOS mantle - #938

Merged
timlichtenberg merged 7 commits into
mainfrom
tl/dummy-struct-follows-mantle-eos
Oct 1, 2026
Merged

timlichtenberg merged 7 commits into
mainfrom
tl/dummy-struct-follows-mantle-eos

Conversation

@timlichtenberg

Copy link
Copy Markdown
Member

Description

Since #919, a run with the dummy structure and SPIDER or Aragog energetics placed the FWL_DATA Wolf and Bower P-S set and the melting_dir curves, also when the mantle EOS was PALEOS. With the same initial-condition settings such a run then started from a different state: on a dummy-structure Aragog case the first interior call starts fully molten at 3360 K instead of 1718 K with Phi 0.018, and takes 461 CVODE steps instead of 7.

The dummy structure now follows mantle_eos. With a PALEOS mantle EOS (a PALEOS mixture follows its MgSiO3 component), it builds and uses the PALEOS P-S tables and their solidus and liquidus through generate_spider_tables, as the Zalmoxis structure does, and fetches the PALEOS tables it needs. With a non-PALEOS mantle EOS it keeps the Wolf and Bower set and the melting_dir curves.

  • Aragog still requires melting_dir with the dummy structure; PROTEUS passes those P-T files, and the entropy solver integrates on the PALEOS P-S set. A run where melting_dir is set but not used for the solve logs a warning.
  • The rejection of two MgSiO3 sources in one mantle under the dummy structure applies only to SPIDER and Aragog energetics.
  • The Zalmoxis structure is unchanged.
  • A run started on main between Fetch reference data through fwl-io and require the tables each run reads #919 and this change and resumed after it builds the PALEOS tables on resume.

Validation of changes

  • On the dummy-structure Aragog case, the first interior call matches the state before Fetch reference data through fwl-io and require the tables each run reads #919: T_magma 1717.682 K and Phi 0.018, against 3359.530 K and Phi 1.000 on main; the first 1-yr call takes 7 CVODE steps again.
  • Two different melting_dir sets give bit for bit the same solve through the first call under dummy + PALEOS + Aragog.
  • A coupled run with the Zalmoxis structure gives the same helpfile as main bit for bit, apart from the runtime column.
  • Unit tests: 4498 passed. New tests cover the route for single and mixed PALEOS and non-PALEOS mantles, the PALEOS fetch, the missing-file error, the warning, and the validator; patch coverage 100 % (34 of 34 lines). The integration tests that run Aragog with the dummy or Zalmoxis structure pass.

Tested on macOS 26 with Python 3.12.

Checklist

  • I have followed the contributing guidelines
  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • My changes generate no new warnings or errors
  • I have checked that the tests still pass on my computer
  • I have updated the docs, as appropriate
  • I have added tests for these changes, as appropriate
  • I have checked that all dependencies have been updated, as required

With a PALEOS mantle_eos (a mixture follows its MgSiO3 component) the dummy structure builds the PALEOS P-S entropy tables through generate_spider_tables again, as the Zalmoxis structure does; without one it keeps the FWL_DATA or SPIDER set and melting_dir. Aragog's P-T lookup and melting curves are unchanged, so a dummy PALEOS run reproduces the first call of the run before the reference-data change exactly.
The P-S EOS directory and both melting curves come from the generated set, and the FWL_DATA or SPIDER set is not provided.
Under the dummy structure, SPIDER and Aragog with a PALEOS mantle EOS build their P-S set from the PALEOS mantle tables, so download_zalmoxis_eos_for_config fetches those tables (and nothing else) for that case, and the config rejects a mantle with two MgSiO3 sources at load, as it does under Zalmoxis. The dummy-structure explanation and the melting_dir, generates_paleos_tables and _provide_spider_eos_tables docstrings state which tables and curves each mantle EOS reads. Tests pin the generate_spider_tables arguments and the energetics key it uses, the missing-table error on the dummy route, the fetch for dummy configs and the load check.
download_zalmoxis_eos takes with_core; False skips the Seager 2007 iron core default and fallback while a Seager component is still fetched. The dummy route passes it, so a dummy run with a PALEOS mantle fetches every mantle component and the 2-phase pair, which the table check requires, and nothing else.
The fetch test mocks the dataset fetchers and asserts the files fetched in both temperature modes. needs_spider_ps_tables keeps the Wolf and Bower set for the dummy structure, since Aragog reads its P-T property tables from it, and the dummy docs name that source.
The Wolf and Bower lookup set is in P-S format, so the dummy docs and the needs_spider_ps_tables docstring call it Aragog's phase-property lookup tables. The Seager comment in download_zalmoxis_eos names the with_core condition. The dummy fetch test runs one temperature mode, since the dummy route fetches the same files in every mode.
…r does there

Under the dummy structure with a PALEOS mantle EOS, SPIDER and Aragog solve on the PALEOS P-S set and its curves: a run with melting_dir Monteux-600 and one with Wolf_Bower+2018 give bitwise equal solves through the first call. The docs and docstrings say so; Aragog still requires melting_dir and its files there.
The two-MgSiO3-source rejection under the dummy structure moves from Struct to the Config validator dummy_struct_mantle_eos, so it applies only with SPIDER or Aragog, which also warns when a set melting_dir does not change the solve. The melting_dir messages state the dummy case.
Tests cover the validator, the melting_dir requirement under the dummy structure, and that other energetics build or provide no P-S tables.
@timlichtenberg
timlichtenberg requested a review from a team as a code owner October 1, 2026 16:35
@codecov

codecov Bot commented Oct 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.51%. Comparing base (e95ebc1) to head (7ddcd53).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #938      +/-   ##
==========================================
+ Coverage   95.50%   95.51%   +0.01%     
==========================================
  Files         127      127              
  Lines       20808    20833      +25     
  Branches     3522     3528       +6     
==========================================
+ Hits        19872    19898      +26     
+ Misses        912      911       -1     
  Partials       24       24              
Flag Coverage Δ
unit-tests 91.92% <100.00%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timlichtenberg
timlichtenberg merged commit 4b1e493 into main Oct 1, 2026
15 checks passed
@timlichtenberg
timlichtenberg deleted the tl/dummy-struct-follows-mantle-eos branch October 1, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant