V0.19 Scope - Stable Advection-Diffusion Strong Path#
Status: COMPLETE
v0.19 is a narrow PDE-expansion release for one stable scalar 1D periodic constant-coefficient advection-diffusion path.
Stable path:
canonical scalar 1D periodic FieldBatch
-> spectral_fd derivatives
-> advection-diffusion residual
-> translation fit/verification
-> vertical-slice summary/example
Summary#
v0.19 adds a deterministic synthetic advection-diffusion generator, a strong-form residual evaluator, and a compact JSON-only vertical-slice example.
Chosen equation:
u_t + c*u_x = nu*u_xx
residual = u_t + c*u_x - nu*u_xx
This release stays inside the existing safe numerical regime:
scalar 1D uniform periodic fields
synthetic data only
default order-2
spectral_fdderivativespolynomial translation generator fitting
finite uniform translation verification
no root export expansion
Public APIs#
Submodule-only APIs added:
pdelie.data.generate_advection_diffusion_1d_field_batch(...)pdelie.residuals.AdvectionDiffusionResidualEvaluatorpdelie.examples.run_advection_diffusion_vertical_slice_example(...)
Command example:
python -m pdelie.examples.advection_diffusion_vertical_slice
No root pdelie exports were added.
Frozen Semantics#
Generated fields are canonical FieldBatch objects with:
dims
("batch", "time", "x", "var")scalar variable name
uendpoint-excluded uniform periodic
xuniformly increasing
timefinite unmasked values
field.metadata["parameter_tags"]["equation"] == "advection_diffusion_constant_coefficient"field.metadata["parameter_tags"]["c"]field.metadata["parameter_tags"]["nu"]
Frozen defaults:
batch_size = 5num_times = 65num_points = 64max_time = 0.4advection_speed = 0.75diffusivity = 0.05num_modes = 6amplitude = 0.2domain_length = 2*piseed = 0
Generator rollout is exact periodic Fourier evolution with multiplier:
exp((-nu*k**2 - 1j*c*k) * t)
The residual evaluator:
evaluates
u_t + c*u_x - nu*u_xxcomputes
compute_spectral_fd_derivatives(field)when derivatives are omittedrequires supplied derivatives to include
u_t,u_x, andu_xxaccepts finite signed
crequires finite positive
nuvalidates scalar 1D periodic finite unmasked fields and the frozen equation tag
Mean drift is diagnostic-only. Periodic constant-coefficient advection-diffusion preserves the mean analytically, while numerical summaries use it only as a smoke diagnostic.
Promotion Evidence#
Frozen vertical-slice configuration:
generator seed:
19018train/heldout split:
split_batch_train_heldout(field, train_size=2, seed=19019)fit epsilon:
1e-4
Observed evidence:
residual max: approximately
5.51e-5residual RMS: approximately
8.44e-6fit mode:
svdevidence label:
direct_svd_in_tolerancereference fallback:
falseselected/SVD span distance: approximately
7.87e-4verification classification:
exactfirst held-out verification error: approximately
7.87e-8
This satisfies the promotion gate. No fallback-backed advection-diffusion claim landed.
Non-goals#
v0.19 explicitly does not add:
variable-coefficient advection-diffusion
reaction-advection-diffusion
weak advection-diffusion
custom advection-diffusion initial-condition APIs
multidimensional or nonuniform-grid ingestion
broad PDEBench / The Well adapters
time-translation APIs or
axis="time"supportstable KS data generator, residual evaluator, vertical-slice example, imported parity, weak KS API, or root KS export
neural or callable generator APIs
operator-facing symmetry APIs
train/test split management, heldout-leakage detection, or downstream augmentation policy
transformed
FieldBatchcollections from reporting helpersroot export expansion
Milestone Status#
Milestone 0: COMPLETE
Milestone 1: COMPLETE
Milestone 2: COMPLETE
Milestone 3: COMPLETE
Milestone 4: COMPLETE
Milestone 5: COMPLETE
Milestone 6: COMPLETE
Release Gate Expectations#
The current explicit CI release gate is v0_19-release-gate.
Required checks before tagging:
v0_19-release-gateeditable-testspackage-smoke
Local validation should include:
python -m pytestpython -m build --sdist --wheelclean wheel smoke from
dist/pdelie-0.19.0-py3-none-any.whlpackaged examples, including
python -m pdelie.examples.advection_diffusion_vertical_slicegit diff --check