---
title: "Fit the response, then expose the shell–solid family"
description: "Download a complete Python experiment with synthetic complex responses, weighted residuals, a conditional thickness profile and an incompatible record."
canonical_url: "https://sandboxphysics.com/stories/ocean-worlds/rerun-a-shell-and-solid-response-fit/"
language: "en"
page_type: "story"
alternate_languages:
  zh-CN: "https://sandboxphysics.com/zh/stories/ocean-worlds/rerun-a-shell-and-solid-response-fit/"
last_modified: "2026-10-28"
---

[Ocean worlds from material memory to tidal heat](https://sandboxphysics.com/stories/ocean-worlds/)

AC12 · Tutorial

# Fit the response, then expose the shell–solid family

Sandbox Physics · 2026-10-28

This experiment fits six noisy synthetic response components and then constructs very different interiors with the same fit. It runs with Python’s standard library in a fresh folder. The inputs, noise model, expected output and failure record are public, so the claim of nonuniqueness can be checked without running the browser Lab.

## Before you begin

The preceding chapter supplies the identifiability argument. Basic Python file handling is enough to run the package; the solver and its assumptions are explained here.

## Download a scientific experiment, not a spacecraft archive

The archive contains an analysis script, two input CSV files, a provenance JSON file and four expected outputs. The main record has probes at one-half, one and two times the synthetic world’s orbital frequency. Each row lists the real and imaginary gravity Love number plus their independent standard deviations. These are authored synthetic data, not Cassini tracking residuals, a Titan Love-number time series or an extracted publisher dataset.

The truth uses a fifty-kilometre equal-density shell, elastic modulus 3.5 gigapascals and viscosity ten to the power 14.5 pascal-seconds. Frozen Gaussian offsets use seed 12095. Standard deviations are 0.002 for the real part and 0.0016 for the imaginary part. The saved numbers are authoritative; rerunning analysis never regenerates noise or silently changes the record.

Use Python 3.11 or newer, with no third-party packages. The archive is a flat distribution with data and expected-output subdirectories. The script imports no site code. SHA-256 input hashes are written into the result; compare those with provenance before interpreting a mismatch. The full paper links supply the physical approximation, while the public package supplies only original teaching materials.

Reading: Beuthe, Tides on Europa: the membrane paradigm, arXiv:1410.4735v1 · Petricca et al., Titan’s strong tidal dissipation precludes a subsurface ocean, Nature 648 (2025)

## Run once and inspect every residual

Download materials.zip and unpack it. Run the command below from the unpacked directory. The script prints its fitted effective stiffness, relaxation time, squared-residual sum and conditional profile summary. The outputs are small text files, suitable for a spreadsheet or another independent script. Keep the input directory separate from your rerun output so the frozen expectation remains intact.

Open fitted\_response.csv. For each row, subtract the prediction from the observation and divide by the listed standard deviation. Square those six standardized residuals and sum them: the expected result is about 4.0040295. The fit uses two effective parameters, leaving four residual degrees of freedom under the stated independent Gaussian model. This count does not validate the structural assumptions.

The fitted product of geometric stiffness and elastic modulus is approximately 825.176 million pascals, and Maxwell time is about 88,602.5 seconds. At the physical orbital frequency and eccentricity 0.005, that fitted response predicts about 100.740 gigawatts. The value differs slightly from the noiseless default because this fit uses a saved noisy record.

```
python3 analyze-response.py --input data --output rerun-output
```

Reading: Beuthe, Tides on Europa: the membrane paradigm, arXiv:1410.4735v1

## Follow the actual minimization

The two fit coordinates are logarithms of dimensionless effective stiffness and Maxwell time. Positive quantities stay positive after exponentiation. The script first searches a fixed coarse grid to choose a starting point. It then evaluates central finite differences of the standardized residuals, solves a two-by-two linear system for the local correction, and reduces the step until the squared-residual sum decreases.

The normal equation follows by linearizing the residual vector around the current parameters, expanding its squared length, and setting derivatives with respect to the correction to zero. This local optimization step uses the derivative of the same physical prediction. A small final residual can still come from several interiors because those interiors map to exactly the same effective coordinates.

Real planetary analyses may have correlated radio data, nuisance parameters and systematic errors. A full covariance matrix then replaces the diagonal weighting used here. This small experiment keeps the noise model deliberately explicit so that a disagreement can be traced to data, sign convention, model or optimization separately.

$$
\boldsymbol r(\boldsymbol p+\Delta\boldsymbol p)\simeq\boldsymbol r+\boldsymbol J\Delta\boldsymbol p,\qquad (\boldsymbol J^{\mathsf T}\boldsymbol J)\Delta\boldsymbol p=-\boldsymbol J^{\mathsf T}\boldsymbol r
$$

Each residual is observed minus predicted, divided by its component standard deviation; the Jacobian differentiates that residual.

Reading: Beuthe, Tides on Europa: the membrane paradigm, arXiv:1410.4735v1

## Construct the alternative interiors

Open shell\_solid\_family.csv. Thicknesses run from ten kilometres to a fully solid five-hundred-kilometre body. For each thickness the script evaluates the published finite-shell geometric factor, divides fitted effective modulus by that factor, and multiplies the result by fitted Maxwell time to obtain viscosity. The external prediction remains unchanged at every frequency.

The noisy-fit solid row has modulus about 0.217 gigapascals and viscosity about 19.24 trillion pascal-seconds. The fifty-kilometre row has modulus about 3.55 gigapascals. All rows have the same squared-residual sum. The ten-kilometre alternative requires about 18.8 gigapascals, outside the interactive controls and not asserted to be plausible ice. This is precisely where independent material information becomes useful.

Next inspect conditional\_thickness\_profile.csv. Holding modulus exactly at 3.5 gigapascals, the script optimizes viscosity at each quarter-kilometre thickness. The best grid point is 50.5 kilometres; the local profile-increase-of-one interval is 49.5 to 51.75 kilometres. Read the conditioning assumption beside that narrow interval. Releasing modulus restores the entire unrestricted family.

Reading: Beuthe, Tides on Europa: the membrane paradigm, arXiv:1410.4735v1 · Petricca et al., Titan’s strong tidal dissipation precludes a subsurface ocean, Nature 648 (2025)

## Use the failure record as a sign and model check

The second input has a positive imaginary response far beyond its stated error under our positive-time-exponential convention. A passive Maxwell body cannot produce it. The passive fit rejects this intentionally incompatible response; summary.json names the positive imaginary component as the reason. It does not clip the response, flip its sign to improve the fit or reinterpret it as a hot interior.

A positive imaginary number in another paper is not automatically nonpassive. Authors may use the opposite exponential or report a positive lag coefficient. Translate the convention before comparison. The 2025 Titan paper reports a positive loss coefficient; the guide explains the conversion. Our failure case is incompatible only after the convention has already been fixed.

For a transfer exercise, double both input error columns and rerun. The unrestricted family remains exactly degenerate, while the conditional profile becomes less restrictive. Then reverse only the imaginary component signs and inspect the resulting incompatibility with passive loss. These changes test what information the errors and phase actually contribute.

Reading: Beuthe, Tides on Europa: the membrane paradigm, arXiv:1410.4735v1 · Petricca et al., Titan’s strong tidal dissipation precludes a subsurface ocean, Nature 648 (2025)

## [Carry the inference back to the scene](https://sandboxphysics.com/labs/tidal-locking/)

1. Export the default shell and rescaled-solid predictions. Check their Love values, then inspect how their visible interior boundaries differ.
2. Compare those noiseless predictions with the fitted-response output. Explain the small power difference using the saved noise and fitted material values.

## Exercises with explanations

1. Why does adding more perfectly measured probe frequencies fail to identify thickness when modulus and viscosity remain free?

   Read the explanation

   All frequencies depend on the same two effective combinations. The scaling transformation preserves those combinations globally. Extra frequencies can test Maxwell frequency dependence, but cannot distinguish interiors related by that exact symmetry.

2. Which outputs distinguish the noisy fitted record from the noiseless Lab default?

   Read the explanation

   The fitted response CSV includes nonzero standardized residuals; the fitted effective modulus, time and power differ from the noiseless values. Their provenance labels are different. The family remains exact within each chosen fitted response.

## Public reproducible materials

- [Download the complete experiment archive](https://sandboxphysics.com/stories/ocean-worlds/materials/materials.zip)
- [Read the flat-folder instructions and scope](https://sandboxphysics.com/stories/ocean-worlds/materials/README.md)
- [Standard-library Python analysis](https://sandboxphysics.com/stories/ocean-worlds/materials/analyze-response.py)
- [Synthetic-record provenance, errors and units](https://sandboxphysics.com/stories/ocean-worlds/materials/provenance.json)
- [Expected fitted response and conditional profile](https://sandboxphysics.com/stories/ocean-worlds/materials/summary.json)

[Previous: What a complex Love number can identify](https://sandboxphysics.com/stories/ocean-worlds/what-a-complex-love-number-can-identify/) [Next: Read Titan’s response, interior inference and a proposed next measurement](https://sandboxphysics.com/stories/ocean-worlds/read-titan-dissipation-and-dragonfly-forecasts/)

## Sources and calculation scope

1. [Beuthe, Tides on Europa: the membrane paradigm, arXiv:1410.4735v1](https://arxiv.org/html/1410.4735v1)

   Fixed 17 October 2014 preprint; Icarus publication DOI 10.1016/j.icarus.2014.10.027. Appendix A equations 105–116 give the finite-thickness homogeneous incompressible shell; Appendix C gives Maxwell correspondence; Appendix E derives work and power; Appendix G fixes the eccentricity/libration tide. Figures 8–9 and 12–13 expose approximation and thermal-model dependence. Full relevant sections and appendices were read. Our uniform-density Maxwell example is much simpler than a real moon.

2. [Petricca et al., Titan’s strong tidal dissipation precludes a subsurface ocean, Nature 648 (2025)](https://www.nature.com/articles/s41586-025-09818-x)

   Version of record, 17 December 2025, DOI 10.1038/s41586-025-09818-x, CC BY 4.0; full publisher-deposited text and Methods, PMC12711566, read. Figure 1 reports gravity-response estimates, Figure 2 compares conditional interior posteriors and Figure 3 is an inferred-interior schematic. Figure 1 error bars are three-sigma; Figure 2 ellipses are one-sigma. Positive reported imaginary response denotes their loss convention; our positive-time-exponential convention uses negative imaginary Love numbers for passive loss.
