Integrate frozen negative density over polynomial root intervals

This commit is contained in:
2026-09-19 10:06:10 -04:00
parent 9c22934d52
commit d1a594808f
4 changed files with 517 additions and 2 deletions

View File

@@ -40,6 +40,16 @@ def close(left, right, label, rtol=2e-10, atol=1e-15):
f"{label}: {left} != {right}")
def require_complete_hashes(record):
required = {'metadata.txt', 'density_summary.csv', 'density_elements.csv', 'density_radial_bins.csv',
'density_physical.csv', 'negative_density_samples.csv', 'negative_density_projection_elements.csv',
'production_closure_rules.csv', 'production_closure_residual_full.txt',
'projection_production_closure_residual_full.txt', 'observed_density_coefficients.txt',
'density_invariants.csv', 'density_element_topology.csv', 'density_surface_traces.csv'}
required.update(f'negative_density_projection_{control}_coefficients.txt' for control in ('production', 'q18', 'q26'))
require(required <= record['output_hashes'].keys(), 'Run record omits a consumed artifact hash.')
def clean(value):
if isinstance(value, dict):
return {str(k): clean(v) for k, v in value.items()}
@@ -121,6 +131,8 @@ def audit_case(folder):
matching = [r for r in projection_rows if r['control'] == control]
maximum = float(np.max(np.abs(delta)))
close(maximum, max(float(r['coefficient_maximum_difference']) for r in matching), 'coefficient error summary')
close(float(np.linalg.norm(delta)), math.sqrt(math.fsum(float(r['coefficient_difference_norm']) ** 2 for r in matching)),
'coefficient difference norm assembled from disjoint elements')
for row in matching:
require(float(row['constant_coefficient_error_maximum']) < 1e-10 and
float(row['constant_sample_error_maximum']) < 1e-10,
@@ -212,6 +224,7 @@ def main():
name = case['id']
run = json.loads((campaign / (name + '_run.json')).read_text())
require(run['exit_code'] == 0 and run['inputs_unchanged'], f'Incomplete frozen diagnostic: {name}')
require_complete_hashes(run)
for relative, value in run['output_hashes'].items():
require(digest(campaign / name / relative) == value, f'Changed output: {name}/{relative}')
for path, value in run['input_state_hashes'].items():