#!/usr/bin/env python3 """ HPC-031: Periodic Table Void Resonance — Element-by-Element Analysis ====================================================================== Date: 2026-03-28 Pre-registered predictions in: HPC-031_test_description.txt Maps every 3D metallic element to its Wigner-Seitz void geometry, predicts properties from void resonance character, compares to measured data. Finds anomalies. Sources for measured data: - Crystal structures: CRC Handbook, Pearson's Crystal Data - Resistivity: CRC Handbook of Chemistry and Physics - Hardness (Vickers): Ashby material property charts, CRC - Cohesive energy: Kittel, Introduction to Solid State Physics - Ductility: Callister, Materials Science and Engineering - Thermal expansion: CRC Handbook - c/a ratios: CRC Handbook, Pearson's Protocol: Predictions computed from geometry FIRST, then compared to data. """ import json import math from pathlib import Path from collections import defaultdict RESULTS_DIR = Path(__file__).parent / "results_hpc031" RESULTS_DIR.mkdir(exist_ok=True) # ============================================================================== # ELEMENT PROPERTY DATABASE — Published reference values # Sources: CRC Handbook 97th ed, Kittel 8th ed, Ashby Charts, Callister 10th ed # ============================================================================== # Format: symbol: {struct, a(Å), c/a, resistivity(μΩ·cm), hardness_HV(MPa), # cohesive_energy(eV/atom), ductile(bool), thermal_expansion(1e-6/K), # group, period, notes} ELEMENTS = { # ============ BCC METALS ============ "Li": {"struct": "BCC", "a": 3.510, "rho": 9.47, "HV": 50, "E_coh": 1.63, "ductile": True, "alpha": 46.0, "group": 1, "period": 2}, "Na": {"struct": "BCC", "a": 4.225, "rho": 4.77, "HV": 7, "E_coh": 1.11, "ductile": True, "alpha": 71.0, "group": 1, "period": 3}, "K": {"struct": "BCC", "a": 5.225, "rho": 7.20, "HV": 4, "E_coh": 0.93, "ductile": True, "alpha": 83.0, "group": 1, "period": 4}, "V": {"struct": "BCC", "a": 3.024, "rho": 19.7, "HV": 628, "E_coh": 5.31, "ductile": True, "alpha": 8.4, "group": 5, "period": 4}, "Cr": {"struct": "BCC", "a": 2.884, "rho": 12.7, "HV": 1060, "E_coh": 4.10, "ductile": False, "alpha": 4.9, "group": 6, "period": 4, "notes": "brittle at RT"}, "Fe": {"struct": "BCC", "a": 2.866, "rho": 9.71, "HV": 608, "E_coh": 4.28, "ductile": True, "alpha": 11.8, "group": 8, "period": 4}, "Rb": {"struct": "BCC", "a": 5.585, "rho": 12.8, "HV": 3, "E_coh": 0.85, "ductile": True, "alpha": 90.0, "group": 1, "period": 5}, "Nb": {"struct": "BCC", "a": 3.301, "rho": 15.2, "HV": 1320, "E_coh": 7.57, "ductile": True, "alpha": 7.3, "group": 5, "period": 5}, "Mo": {"struct": "BCC", "a": 3.147, "rho": 5.34, "HV": 1530, "E_coh": 6.82, "ductile": True, "alpha": 4.8, "group": 6, "period": 5}, "Cs": {"struct": "BCC", "a": 6.045, "rho": 20.0, "HV": 2, "E_coh": 0.80, "ductile": True, "alpha": 97.0, "group": 1, "period": 6}, "Ba": {"struct": "BCC", "a": 5.020, "rho": 34.0, "HV": 60, "E_coh": 1.90, "ductile": True, "alpha": 20.6, "group": 2, "period": 6}, "Ta": {"struct": "BCC", "a": 3.303, "rho": 13.1, "HV": 873, "E_coh": 8.10, "ductile": True, "alpha": 6.3, "group": 5, "period": 6}, "W": {"struct": "BCC", "a": 3.165, "rho": 5.28, "HV": 3430, "E_coh": 8.90, "ductile": True, "alpha": 4.5, "group": 6, "period": 6}, "Eu": {"struct": "BCC", "a": 4.581, "rho": 90.0, "HV": 167, "E_coh": 1.86, "ductile": True, "alpha": 35.0, "group": None, "period": 6, "notes": "lanthanide"}, "Mn": {"struct": "BCC", "a": 8.912, "rho": 144.0, "HV": 196, "E_coh": 2.92, "ductile": False, "alpha": 21.7, "group": 7, "period": 4, "notes": "complex cubic, approximated BCC"}, # ============ FCC METALS ============ "Al": {"struct": "FCC", "a": 4.050, "rho": 2.65, "HV": 167, "E_coh": 3.39, "ductile": True, "alpha": 23.1, "group": 13, "period": 3}, "Ca": {"struct": "FCC", "a": 5.588, "rho": 3.36, "HV": 170, "E_coh": 1.84, "ductile": True, "alpha": 22.3, "group": 2, "period": 4}, "Ni": {"struct": "FCC", "a": 3.524, "rho": 6.93, "HV": 638, "E_coh": 4.44, "ductile": True, "alpha": 13.4, "group": 10, "period": 4}, "Cu": {"struct": "FCC", "a": 3.615, "rho": 1.67, "HV": 369, "E_coh": 3.49, "ductile": True, "alpha": 16.5, "group": 11, "period": 4}, "Sr": {"struct": "FCC", "a": 6.084, "rho": 13.2, "HV": 70, "E_coh": 1.72, "ductile": True, "alpha": 22.5, "group": 2, "period": 5}, "Rh": {"struct": "FCC", "a": 3.803, "rho": 4.33, "HV": 1246, "E_coh": 5.75, "ductile": True, "alpha": 8.2, "group": 9, "period": 5}, "Pd": {"struct": "FCC", "a": 3.890, "rho": 10.5, "HV": 461, "E_coh": 3.89, "ductile": True, "alpha": 11.8, "group": 10, "period": 5}, "Ag": {"struct": "FCC", "a": 4.086, "rho": 1.587, "HV": 251, "E_coh": 2.95, "ductile": True, "alpha": 18.9, "group": 11, "period": 5}, "Ir": {"struct": "FCC", "a": 3.839, "rho": 4.70, "HV": 1760, "E_coh": 6.94, "ductile": True, "alpha": 6.4, "group": 9, "period": 6}, "Pt": {"struct": "FCC", "a": 3.923, "rho": 10.5, "HV": 549, "E_coh": 5.84, "ductile": True, "alpha": 8.8, "group": 10, "period": 6}, "Au": {"struct": "FCC", "a": 4.078, "rho": 2.21, "HV": 216, "E_coh": 3.81, "ductile": True, "alpha": 14.2, "group": 11, "period": 6}, "Pb": {"struct": "FCC", "a": 4.950, "rho": 20.6, "HV": 38, "E_coh": 2.03, "ductile": True, "alpha": 28.9, "group": 14, "period": 6}, "Th": {"struct": "FCC", "a": 5.084, "rho": 14.7, "HV": 350, "E_coh": 6.20, "ductile": True, "alpha": 11.0, "group": None, "period": 7, "notes": "actinide"}, "Yb": {"struct": "FCC", "a": 5.485, "rho": 28.0, "HV": 206, "E_coh": 1.60, "ductile": True, "alpha": 26.3, "group": None, "period": 6, "notes": "lanthanide"}, "Ce": {"struct": "FCC", "a": 5.160, "rho": 74.0, "HV": 270, "E_coh": 4.32, "ductile": True, "alpha": 6.3, "group": None, "period": 6, "notes": "lanthanide, gamma-Ce"}, # ============ HCP METALS ============ "Be": {"struct": "HCP", "a": 2.286, "c_a": 1.568, "rho": 3.56, "HV": 1670, "E_coh": 3.32, "ductile": False, "alpha": 11.3, "group": 2, "period": 2}, "Mg": {"struct": "HCP", "a": 3.209, "c_a": 1.624, "rho": 4.39, "HV": 260, "E_coh": 1.51, "ductile": True, "alpha": 24.8, "group": 2, "period": 3}, "Sc": {"struct": "HCP", "a": 3.309, "c_a": 1.594, "rho": 56.2, "HV": 736, "E_coh": 3.90, "ductile": True, "alpha": 10.2, "group": 3, "period": 4}, "Ti": {"struct": "HCP", "a": 2.951, "c_a": 1.587, "rho": 39.0, "HV": 970, "E_coh": 4.85, "ductile": True, "alpha": 8.6, "group": 4, "period": 4}, "Co": {"struct": "HCP", "a": 2.507, "c_a": 1.623, "rho": 5.60, "HV": 1043, "E_coh": 4.39, "ductile": True, "alpha": 13.0, "group": 9, "period": 4}, "Zn": {"struct": "HCP", "a": 2.665, "c_a": 1.856, "rho": 5.92, "HV": 412, "E_coh": 1.35, "ductile": True, "alpha": 30.2, "group": 12, "period": 4}, "Y": {"struct": "HCP", "a": 3.648, "c_a": 1.571, "rho": 57.0, "HV": 589, "E_coh": 4.37, "ductile": True, "alpha": 10.6, "group": 3, "period": 5}, "Zr": {"struct": "HCP", "a": 3.232, "c_a": 1.593, "rho": 42.1, "HV": 903, "E_coh": 6.25, "ductile": True, "alpha": 5.7, "group": 4, "period": 5}, "Tc": {"struct": "HCP", "a": 2.735, "c_a": 1.604, "rho": 22.6, "HV": 1550, "E_coh": 6.85, "ductile": True, "alpha": 7.1, "group": 7, "period": 5}, "Ru": {"struct": "HCP", "a": 2.706, "c_a": 1.582, "rho": 7.10, "HV": 2160, "E_coh": 6.74, "ductile": True, "alpha": 6.4, "group": 8, "period": 5}, "Cd": {"struct": "HCP", "a": 2.979, "c_a": 1.886, "rho": 7.27, "HV": 203, "E_coh": 1.16, "ductile": True, "alpha": 30.8, "group": 12, "period": 5}, "Hf": {"struct": "HCP", "a": 3.195, "c_a": 1.582, "rho": 33.1, "HV": 1760, "E_coh": 6.44, "ductile": True, "alpha": 5.9, "group": 4, "period": 6}, "Re": {"struct": "HCP", "a": 2.761, "c_a": 1.615, "rho": 17.2, "HV": 2450, "E_coh": 8.03, "ductile": True, "alpha": 6.2, "group": 7, "period": 6}, "Os": {"struct": "HCP", "a": 2.734, "c_a": 1.580, "rho": 8.12, "HV": 3920, "E_coh": 8.17, "ductile": True, "alpha": 5.1, "group": 8, "period": 6}, "Tl": {"struct": "HCP", "a": 3.456, "c_a": 1.599, "rho": 15.0, "HV": 26, "E_coh": 1.88, "ductile": True, "alpha": 29.9, "group": 13, "period": 6}, "La": {"struct": "HCP", "a": 3.750, "c_a": 1.619, "rho": 61.5, "HV": 363, "E_coh": 4.47, "ductile": True, "alpha": 12.1, "group": None, "period": 6, "notes": "lanthanide"}, "Gd": {"struct": "HCP", "a": 3.634, "c_a": 1.590, "rho": 131.0, "HV": 570, "E_coh": 4.14, "ductile": True, "alpha": 9.4, "group": None, "period": 6, "notes": "lanthanide"}, "Tb": {"struct": "HCP", "a": 3.601, "c_a": 1.581, "rho": 115.0, "HV": 863, "E_coh": 4.05, "ductile": True, "alpha": 10.3, "group": None, "period": 6, "notes": "lanthanide"}, "Dy": {"struct": "HCP", "a": 3.593, "c_a": 1.574, "rho": 92.6, "HV": 540, "E_coh": 3.04, "ductile": True, "alpha": 9.9, "group": None, "period": 6, "notes": "lanthanide"}, "Ho": {"struct": "HCP", "a": 3.578, "c_a": 1.570, "rho": 81.4, "HV": 481, "E_coh": 3.14, "ductile": True, "alpha": 11.2, "group": None, "period": 6, "notes": "lanthanide"}, "Er": {"struct": "HCP", "a": 3.559, "c_a": 1.570, "rho": 86.0, "HV": 589, "E_coh": 3.29, "ductile": True, "alpha": 12.2, "group": None, "period": 6, "notes": "lanthanide"}, "Tm": {"struct": "HCP", "a": 3.538, "c_a": 1.570, "rho": 67.6, "HV": 520, "E_coh": 2.42, "ductile": True, "alpha": 13.3, "group": None, "period": 6, "notes": "lanthanide"}, "Lu": {"struct": "HCP", "a": 3.504, "c_a": 1.585, "rho": 58.2, "HV": 1160, "E_coh": 4.43, "ductile": True, "alpha": 9.9, "group": None, "period": 6, "notes": "lanthanide"}, # ============ DIAMOND STRUCTURE ============ "C": {"struct": "Diamond", "a": 3.567, "rho": 1e10, "HV": 98000, "E_coh": 7.37, "ductile": False, "alpha": 1.0, "group": 14, "period": 2}, "Si": {"struct": "Diamond", "a": 5.431, "rho": 1e5, "HV": 11500, "E_coh": 4.63, "ductile": False, "alpha": 2.6, "group": 14, "period": 3}, "Ge": {"struct": "Diamond", "a": 5.658, "rho": 5e4, "HV": 8000, "E_coh": 3.85, "ductile": False, "alpha": 5.8, "group": 14, "period": 4}, # ============ A7 / RHOMBOHEDRAL ============ "As": {"struct": "A7", "a": 3.760, "rho": 26.0, "HV": 1500, "E_coh": 2.96, "ductile": False, "alpha": 15.5, "group": 15, "period": 4}, "Sb": {"struct": "A7", "a": 4.307, "rho": 39.0, "HV": 294, "E_coh": 2.75, "ductile": False, "alpha": 11.0, "group": 15, "period": 5}, "Bi": {"struct": "A7", "a": 4.746, "rho": 107.0, "HV": 94, "E_coh": 2.18, "ductile": False, "alpha": 13.4, "group": 15, "period": 6}, } # ============================================================================== # VOID RESONANCE PREDICTIONS — from HPC-030 data (pre-registered) # ============================================================================== VOID_PREDICTIONS = { "BCC": { "ws_cell": "truncated octahedron", "deficit": "30° uniform at all 24 vertices", "uniformity": 0.393, "differentiation": 16.2, "predicted_rho": "MODERATE", # P-BCC-1 "predicted_freq": "BROADBAND", # P-BCC-2 "predicted_HV": "HIGH", # P-BCC-3 "predicted_E_coh": "HIGH", # P-BCC-4 "predicted_alpha": "LOW", # P-BCC-5 }, "FCC": { "ws_cell": "rhombic dodecahedron", "deficit": "148.4° (3-valent) / -77.9° (4-valent)", "uniformity": 0.252, "differentiation": 67.1, "three_four_ratio": 6.7, "predicted_rho": "LOW", # P-FCC-1 "predicted_freq": "SHARP", # P-FCC-2 "predicted_HV": "LOW", # P-FCC-3 "predicted_E_coh": "LOW", # P-FCC-4 "predicted_alpha": "HIGH", # P-FCC-5 }, "HCP": { "ws_cell": "trapezo-rhombic dodecahedron", "deficit": "varies by direction (anisotropic)", "uniformity": 0.312, "differentiation": 40.1, "anisotropy": 16.6, "predicted_rho": "HIGHEST", # P-HCP-1 "predicted_ca_corr": True, # P-HCP-2: properties correlate with c/a }, "Diamond": { "ws_cell": "tetrahedral void network", "deficit": "180° at tetrahedral vertices", "predicted_rho": "INSULATING", # P-DIA-1/2/3 "predicted_HV": "HIGHEST", # P-DIA-4 }, "A7": { "ws_cell": "layered rhombohedral", "predicted_rho": "SEMIMETALLIC", # P-A7-1 "predicted_anisotropy": True, # P-A7-2 }, } IDEAL_CA = math.sqrt(8.0 / 3.0) # 1.6330 # ============================================================================== # ANALYSIS # ============================================================================== def classify_property(values, low_thresh, high_thresh): """Classify a property value as LOW/MODERATE/HIGH.""" if values <= low_thresh: return "LOW" elif values >= high_thresh: return "HIGH" return "MODERATE" def analyze_archetype(arch_name, elements_in_arch): """Analyze one archetype's elements against void predictions.""" pred = VOID_PREDICTIONS[arch_name] results = [] rho_vals = [e["rho"] for e in elements_in_arch if e.get("rho") and e["rho"] < 1e6] hv_vals = [e["HV"] for e in elements_in_arch if e.get("HV")] ecoh_vals = [e["E_coh"] for e in elements_in_arch if e.get("E_coh")] alpha_vals = [e["alpha"] for e in elements_in_arch if e.get("alpha")] ductile_vals = [e["ductile"] for e in elements_in_arch if "ductile" in e] import numpy as np stats = { "rho_mean": np.mean(rho_vals) if rho_vals else None, "rho_median": np.median(rho_vals) if rho_vals else None, "HV_mean": np.mean(hv_vals) if hv_vals else None, "E_coh_mean": np.mean(ecoh_vals) if ecoh_vals else None, "alpha_mean": np.mean(alpha_vals) if alpha_vals else None, "ductile_pct": sum(ductile_vals) / len(ductile_vals) * 100 if ductile_vals else None, "count": len(elements_in_arch), } return stats def check_hcp_ca_correlation(hcp_elements): """Check if |c/a - ideal| correlates with property anisotropy indicators.""" import numpy as np ca_devs = [] rho_vals = [] alpha_vals = [] hv_vals = [] ecoh_vals = [] symbols = [] for sym, e in hcp_elements.items(): if "c_a" in e and e["c_a"]: dev = abs(e["c_a"] - IDEAL_CA) ca_devs.append(dev) rho_vals.append(e.get("rho", 0)) alpha_vals.append(e.get("alpha", 0)) hv_vals.append(e.get("HV", 0)) ecoh_vals.append(e.get("E_coh", 0)) symbols.append(sym) if len(ca_devs) < 3: return None ca_devs = np.array(ca_devs) results = {} for name, vals in [("rho", rho_vals), ("alpha", alpha_vals), ("HV", hv_vals), ("E_coh", ecoh_vals)]: vals = np.array(vals) if np.std(vals) > 0 and np.std(ca_devs) > 0: corr = np.corrcoef(ca_devs, vals)[0, 1] results[f"c/a_vs_{name}_correlation"] = round(corr, 3) return results, list(zip(symbols, ca_devs, alpha_vals, rho_vals)) def main(): import numpy as np print("=" * 70) print("HPC-031: PERIODIC TABLE VOID RESONANCE — ELEMENT-BY-ELEMENT") print("=" * 70) print(f"Elements in database: {len(ELEMENTS)}") print(f"Pre-registered predictions from HPC-031_test_description.txt") print(f"Void resonance data from HPC-030 (EM FDTD, Maxwell's equations)") print() # Group by archetype archetypes = defaultdict(dict) for sym, e in ELEMENTS.items(): archetypes[e["struct"]][sym] = e print(f"Elements by archetype:") for arch, elems in sorted(archetypes.items(), key=lambda x: -len(x[1])): print(f" {arch}: {len(elems)} — {', '.join(sorted(elems.keys()))}") # ================================================================== # ARCHETYPE-LEVEL ANALYSIS # ================================================================== print(f"\n{'='*70}") print("ARCHETYPE AVERAGES vs VOID RESONANCE PREDICTIONS") print(f"{'='*70}") all_metal_rho = [e["rho"] for e in ELEMENTS.values() if e.get("rho") and e["rho"] < 1e6] overall_rho_median = np.median(all_metal_rho) if all_metal_rho else 20 all_metal_hv = [e["HV"] for e in ELEMENTS.values() if e.get("HV") and e["rho"] < 1e6 if e.get("rho")] overall_hv_median = np.median(all_metal_hv) if all_metal_hv else 500 all_metal_ecoh = [e["E_coh"] for e in ELEMENTS.values() if e.get("E_coh") and e.get("rho") and e["rho"] < 1e6] overall_ecoh_median = np.median(all_metal_ecoh) if all_metal_ecoh else 3.5 all_metal_alpha = [e["alpha"] for e in ELEMENTS.values() if e.get("alpha") and e.get("rho") and e["rho"] < 1e6] overall_alpha_median = np.median(all_metal_alpha) if all_metal_alpha else 11 for arch in ["BCC", "FCC", "HCP", "Diamond", "A7"]: if arch not in archetypes: continue elems = archetypes[arch] stats = analyze_archetype(arch, list(elems.values())) pred = VOID_PREDICTIONS.get(arch, {}) print(f"\n {arch} ({stats['count']} elements)") print(f" {'─'*60}") if stats["rho_mean"]: measured_rho = "LOW" if stats["rho_median"] < overall_rho_median * 0.7 else \ "HIGH" if stats["rho_median"] > overall_rho_median * 1.5 else "MODERATE" predicted_rho = pred.get("predicted_rho", "?") match = "✓" if measured_rho == predicted_rho else "✗ ANOMALY" print(f" Resistivity: mean={stats['rho_mean']:.1f} μΩ·cm, median={stats['rho_median']:.1f}") print(f" Predicted: {predicted_rho}, Measured: {measured_rho} {match}") if stats["HV_mean"]: measured_hv = "LOW" if stats["HV_mean"] < overall_hv_median * 0.6 else \ "HIGH" if stats["HV_mean"] > overall_hv_median * 1.5 else "MODERATE" predicted_hv = pred.get("predicted_HV", "?") match = "✓" if measured_hv == predicted_hv else "✗ ANOMALY" print(f" Hardness: mean={stats['HV_mean']:.0f} MPa") print(f" Predicted: {predicted_hv}, Measured: {measured_hv} {match}") if stats["E_coh_mean"]: measured_ecoh = "LOW" if stats["E_coh_mean"] < overall_ecoh_median * 0.8 else \ "HIGH" if stats["E_coh_mean"] > overall_ecoh_median * 1.3 else "MODERATE" predicted_ecoh = pred.get("predicted_E_coh", "?") match = "✓" if measured_ecoh == predicted_ecoh else "✗ ANOMALY" print(f" Cohesive energy: mean={stats['E_coh_mean']:.2f} eV") print(f" Predicted: {predicted_ecoh}, Measured: {measured_ecoh} {match}") if stats["alpha_mean"]: measured_alpha = "LOW" if stats["alpha_mean"] < overall_alpha_median * 0.8 else \ "HIGH" if stats["alpha_mean"] > overall_alpha_median * 1.3 else "MODERATE" predicted_alpha = pred.get("predicted_alpha", "?") match = "✓" if measured_alpha == predicted_alpha else "✗ ANOMALY" print(f" Thermal expansion: mean={stats['alpha_mean']:.1f} ×10⁻⁶/K") print(f" Predicted: {predicted_alpha}, Measured: {measured_alpha} {match}") if stats["ductile_pct"] is not None: print(f" Ductility: {stats['ductile_pct']:.0f}%") # ================================================================== # HCP c/a CORRELATION ANALYSIS # ================================================================== print(f"\n{'='*70}") print("HCP c/a RATIO CORRELATION ANALYSIS") print(f"{'='*70}") print(f" Ideal c/a = {IDEAL_CA:.4f}") hcp_elems = archetypes.get("HCP", {}) ca_result = check_hcp_ca_correlation(hcp_elems) if ca_result: correlations, element_data = ca_result print(f"\n Correlations with |c/a - ideal|:") for k, v in correlations.items(): strength = "STRONG" if abs(v) > 0.5 else "MODERATE" if abs(v) > 0.3 else "WEAK" print(f" {k}: r = {v:+.3f} ({strength})") print(f"\n Element detail (sorted by |c/a - ideal|):") print(f" {'Sym':>4} {'c/a':>6} {'|Δ|':>6} {'α(×10⁻⁶)':>9} {'ρ(μΩ·cm)':>10}") print(f" {'─'*40}") for sym, dev, alpha, rho in sorted(element_data, key=lambda x: x[1]): e = hcp_elems[sym] marker = " ← near ideal" if dev < 0.02 else " ← EXTREME" if dev > 0.15 else "" print(f" {sym:>4} {e['c_a']:>6.3f} {dev:>6.3f} {alpha:>9.1f} {rho:>10.1f}{marker}") # ================================================================== # ELEMENT-BY-ELEMENT ANOMALY DETECTION # ================================================================== print(f"\n{'='*70}") print("ELEMENT-BY-ELEMENT ANOMALY SCAN") print(f"{'='*70}") anomalies = [] for sym, e in ELEMENTS.items(): arch = e["struct"] pred = VOID_PREDICTIONS.get(arch, {}) element_anomalies = [] # Check each element against its archetype's expected behavior if arch == "FCC" and e.get("ductile") == False: element_anomalies.append(f"FCC but NOT ductile (prediction: all FCC ductile)") if arch == "BCC" and e.get("rho") and e["rho"] > 100: element_anomalies.append(f"BCC but very high resistivity ({e['rho']} μΩ·cm)") if arch == "FCC" and e.get("rho") and e["rho"] > 50: element_anomalies.append(f"FCC but high resistivity ({e['rho']} μΩ·cm)") if arch == "BCC" and e.get("HV") and e["HV"] < 50: element_anomalies.append(f"BCC but very soft (HV={e['HV']} MPa)") if arch == "FCC" and e.get("HV") and e["HV"] > 1500: element_anomalies.append(f"FCC but very hard (HV={e['HV']} MPa)") if arch == "FCC" and e.get("E_coh") and e["E_coh"] > 6.0: element_anomalies.append(f"FCC but high cohesive energy ({e['E_coh']} eV)") if arch == "BCC" and e.get("E_coh") and e["E_coh"] < 1.5: element_anomalies.append(f"BCC but low cohesive energy ({e['E_coh']} eV)") if arch == "HCP" and e.get("c_a"): dev = abs(e["c_a"] - IDEAL_CA) if dev > 0.15 and e.get("ductile"): element_anomalies.append(f"HCP with extreme c/a deviation ({e['c_a']:.3f}) but ductile") if dev < 0.02 and not e.get("ductile"): element_anomalies.append(f"HCP near ideal c/a ({e['c_a']:.3f}) but brittle") if element_anomalies: anomalies.append((sym, e["struct"], element_anomalies)) if anomalies: print(f"\n Found {len(anomalies)} elements with anomalies:\n") for sym, arch, anoms in anomalies: print(f" {sym} ({arch}):") for a in anoms: print(f" → {a}") else: print(f"\n No anomalies found (this would be suspicious)") # ================================================================== # SAVE RESULTS # ================================================================== from datetime import datetime, timezone timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") save_data = { "metadata": { "test": "HPC-031", "date": datetime.now(timezone.utc).isoformat(), "element_count": len(ELEMENTS), "predictions_source": "HPC-030 (EM FDTD, pre-registered)", "property_sources": "CRC Handbook, Kittel, Ashby, Callister", }, "archetype_stats": {}, "hcp_ca_correlations": ca_result[0] if ca_result else None, "anomalies": [(s, a, an) for s, a, an in anomalies], "elements": ELEMENTS, } for arch in ["BCC", "FCC", "HCP", "Diamond", "A7"]: if arch in archetypes: save_data["archetype_stats"][arch] = analyze_archetype( arch, list(archetypes[arch].values())) out_path = RESULTS_DIR / f"hpc031_void_resonance_{timestamp}.json" with open(out_path, "w") as f: json.dump(save_data, f, indent=2, default=float) print(f"\nResults: {out_path}") if __name__ == "__main__": main()