Current task: —

E-024-theta-sweep.py

Experiments: E-024 · script updated 08-19-2026

E-024-theta-sweep.csv — 700.6 KB, updated 08-19-2026

← prev page 29 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
14002 12 1.0000 120 31.554880202003 4.1925672268e-02
14003 12 1.0000 121 31.818294723665 4.1920155233e-02
14004 12 1.0000 122 32.081636588309 4.1940789108e-02
14005 12 1.0000 123 32.345710277037 4.2152347540e-02
14006 12 1.0000 124 32.612295966452 4.2964414552e-02
14007 12 1.0000 125 32.931328235494 1.0253111457e+00
14008 12 1.0000 126 33.096724252044 5.3667860672e-02
14009 12 1.0000 127 33.378998240218 4.2666862323e-02
14010 12 1.0000 128 33.644829895329 4.2076913059e-02
14011 12 1.0000 129 33.908444297297 4.1883295082e-02
14012 12 1.0000 130 34.171260365918 4.1818653911e-02
14013 12 1.0000 131 34.433971631349 4.1772138051e-02
14014 12 1.0000 132 34.696300057501 4.1800420301e-02
14015 12 1.0000 133 34.958706293152 4.1690470322e-02
14016 12 1.0000 134 35.220912284504 4.1764712687e-02
14017 12 1.0000 135 35.482925219131 4.1696793068e-02
14018 12 1.0000 136 35.745155999410 4.1729771466e-02
14019 12 1.0000 137 36.007257545989 4.1747364735e-02
14020 12 1.0000 138 36.269211789287 4.1683124900e-02
14021 12 1.0000 139 36.531516870725 4.1739930194e-02
14022 12 1.0000 140 36.793471609041 4.1751475281e-02
14023 12 1.0000 141 37.055638671387 4.1651761547e-02
14024 12 1.0000 142 37.317655978625 4.1805169111e-02
14025 12 1.0000 143 37.585920300675 1.0416116366e+00
14026 12 1.0000 144 37.841616884955 4.1744172124e-02
14027 12 1.0000 145 38.103561750901 4.1709717150e-02
14028 12 1.0000 146 38.365997171373 4.1781707746e-02
14029 12 1.0000 147 38.628175994808 4.1718892045e-02
14030 12 1.0000 148 38.890286600933 4.1710231362e-02
14031 12 1.0000 149 39.152461142482 4.1769520876e-02
14032 12 1.0000 150 39.414831666346 4.1749999226e-02
14033 12 1.0000 151 39.677303554067 4.1788387053e-02
14034 12 1.0000 152 39.940000981750 4.1864172571e-02
14035 12 1.0000 153 40.203418329849 4.2031006360e-02
14036 12 1.0000 154 40.468641513867 4.2529446887e-02
14037 12 1.0000 155 40.746992549534 5.0651395639e-02
14038 12 1.0000 156 40.922021400810 1.0287690608e+00
14039 12 1.0000 157 41.236951385404 4.2836236714e-02
14040 12 1.0000 158 41.503015745468 4.2043215275e-02
14041 12 1.0000 159 41.766433706512 4.1921948181e-02
14042 12 1.0000 160 42.029408177762 4.1777468516e-02
14043 12 1.0000 161 42.291874590825 4.1826320236e-02
14044 12 1.0000 162 42.554187014961 4.1741933649e-02
14045 12 1.0000 163 42.816851787302 4.1805976151e-02
14046 12 1.0000 164 43.079269865539 4.1836276630e-02
14047 12 1.0000 165 43.327617939906 1.0413239096e+00
14048 12 1.0000 166 43.602203752804 4.1895789938e-02
14049 12 1.0000 167 43.864642288410 4.1720471584e-02
14050 12 1.0000 168 44.126930727303 4.1785575442e-02
14051 12 1.0000 169 44.388898963754 4.1653986392e-02
14052 12 1.0000 170 44.651086167867 4.1793907404e-02
14053 12 1.0000 171 44.913158337908 4.1715701602e-02
14054 12 1.0000 172 45.175495001847 4.1759160092e-02
14055 12 1.0000 173 45.437362477099 4.1738800928e-02
14056 12 1.0000 174 45.699909212188 4.1730275602e-02
14057 12 1.0000 175 45.961991494152 4.1776718319e-02
14058 12 1.0000 176 46.224210265088 4.1701278507e-02
14059 12 1.0000 177 46.486354354784 4.1868825800e-02
14060 12 1.0000 178 46.749352579772 4.1769645411e-02
14061 12 1.0000 179 47.011720712154 4.1867097472e-02
14062 12 1.0000 180 47.274961283391 4.1889775914e-02
14063 12 1.0000 181 47.539439569698 4.2366927297e-02
14064 12 1.0000 182 47.811153061519 4.6143449653e-02
14065 12 1.0000 183 48.007628702365 1.0345847078e+00
14066 12 1.0000 184 48.314425302385 4.2764265017e-02
14067 12 1.0000 185 48.580178827982 4.2025498253e-02
14068 12 1.0000 186 48.844947597536 4.2275289409e-02
14069 12 1.0000 187 49.110521590043 4.2425953035e-02
14070 12 1.0000 188 49.379609927796 4.3637862047e-02
14071 12 1.0000 189 49.709867056189 1.9535319072e-01
14072 12 1.0000 190 49.786493919539 8.8050162646e-01
14073 12 1.0000 191 50.132655358709 4.3625780173e-02
14074 12 1.0000 192 50.401773433004 4.2350103345e-02
14075 12 1.0000 193 50.666868747870 4.2132576779e-02
14076 12 1.0000 194 50.930684121631 4.1865830075e-02
14077 12 1.0000 195 51.194139601824 4.1987346805e-02
14078 12 1.0000 196 51.456670517681 4.1810738346e-02
14079 12 1.0000 197 51.719665337178 4.1883683362e-02
14080 12 1.0000 198 51.982744520375 4.1919352193e-02
14081 12 1.0000 199 52.246398005900 4.1991651711e-02
14082 12 1.0000 200 52.510878178031 4.2430945296e-02
14083 12 1.0000 201 52.785249527020 4.7652605018e-02
14084 12 1.0000 202 52.973105631713 1.0325605160e+00
14085 12 1.0000 203 53.282714582725 4.2668756758e-02
14086 12 1.0000 204 53.548260545931 4.2098839374e-02
14087 12 1.0000 205 53.811701922306 4.1912614292e-02
14088 12 1.0000 206 54.074709593228 4.1719864305e-02
14089 12 1.0000 207 54.336754378689 4.1870429788e-02
14090 12 1.0000 208 54.599563733885 4.1782777280e-02
14091 12 1.0000 209 54.861504040157 4.1770670645e-02
14092 12 1.0000 210 55.123782251504 4.1717670028e-02
14093 12 1.0000 211 55.385733276956 4.1733890822e-02
14094 12 1.0000 212 55.648299020281 4.1834821157e-02
14095 12 1.0000 213 55.910455897613 4.1785990912e-02
14096 12 1.0000 214 56.172734612233 4.1872740293e-02
14097 12 1.0000 215 56.445777811123 1.0413787314e+00
14098 12 1.0000 216 56.696004263944 4.1921780363e-02
14099 12 1.0000 217 56.958116373796 4.1684580001e-02
14100 12 1.0000 218 57.220661753840 4.1755760384e-02
14101 12 1.0000 219 57.482750859563 4.1811279297e-02
14102 12 1.0000 220 57.744967175305 4.1665163850e-02
14103 12 1.0000 221 58.006952603022 4.1751630891e-02
14104 12 1.0000 222 58.269067883137 4.1986598890e-02
14105 12 1.0000 223 58.532034488557 4.1649933019e-02
14106 12 1.0000 224 58.794076694647 4.1913716265e-02
14107 12 1.0000 225 59.057593097964 4.2052955373e-02
14108 12 1.0000 226 59.345823242896 1.0401316467e+00
14109 12 1.0000 227 59.575723331416 4.2549163304e-02
14110 12 1.0000 228 59.840423221897 4.2043813564e-02
14111 12 1.0000 229 60.104191967469 4.2006191956e-02
14112 12 1.0000 230 60.369106954428 4.2360000970e-02
14113 12 1.0000 231 60.641269055549 4.6749464663e-02
14114 12 1.0000 232 60.834361784995 1.0337885159e+00
14115 12 1.0000 233 61.141844691037 4.2664224201e-02
14116 12 1.0000 234 61.407048126679 4.2047645308e-02
14117 12 1.0000 235 61.670251018883 4.1898717472e-02
14118 12 1.0000 236 61.933074106523 4.1877892555e-02
14119 12 1.0000 237 62.195402414738 4.1848385943e-02
14120 12 1.0000 238 62.458237896682 4.1688869164e-02
14121 12 1.0000 239 62.719951504803 4.1821453591e-02
14122 12 1.0000 240 62.982301908866 4.1693608768e-02
14123 12 1.0000 241 63.245023576147 4.1833655276e-02
14124 12 1.0000 242 63.506883279247 4.1746134943e-02
14125 12 1.0000 243 63.769762080383 4.1940627391e-02
14126 12 1.0000 244 64.032087146302 4.1859989661e-02
14127 12 1.0000 245 64.293759169385 4.1949890218e-02
14128 12 1.0000 246 64.557288571074 4.1909497822e-02
14129 12 1.0000 247 64.820802615835 4.2155652243e-02
14130 12 1.0000 248 65.111161977390 1.0396114771e+00
14131 12 1.0000 249 65.337396344794 4.2750482560e-02
14132 12 1.0000 250 65.602741208121 4.2095676694e-02
14133 12 1.0000 251 65.865944207016 4.2171892681e-02
14134 12 1.0000 252 66.130096745408 4.1908504403e-02
14135 12 1.0000 253 66.394546176958 4.2482912051e-02
14136 12 1.0000 254 66.662046653645 4.3132044938e-02
14137 12 1.0000 255 66.966487705684 8.2865336378e-02
14138 12 1.0000 256 67.086281904859 9.9440190867e-01
14139 12 1.0000 257 67.420746759172 4.3168865356e-02
14140 12 1.0000 258 67.688514398493 4.2498298230e-02
14141 12 1.0000 259 67.953618007626 4.2100588846e-02
14142 12 1.0000 260 68.216575301971 4.1940546557e-02
14143 12 1.0000 261 68.479288281872 4.1954959858e-02
14144 12 1.0000 262 68.742331904163 4.1853061782e-02
14145 12 1.0000 263 69.005099599018 4.1997287229e-02
14146 12 1.0000 264 69.268011382310 4.2040531137e-02
14147 12 1.0000 265 69.545724069099 1.0411628422e+00
14148 12 1.0000 266 69.790611011428 4.1962703939e-02
14149 12 1.0000 267 70.053778482866 4.1881480017e-02
14150 12 1.0000 268 70.316587734587 4.1900123324e-02
14151 12 1.0000 269 70.579892766833 4.1788995872e-02
14152 12 1.0000 270 70.841211690470 4.2192476919e-02
14153 12 1.0000 271 71.105424389437 4.2030505630e-02
14154 12 1.0000 272 71.369912576061 4.2384816864e-02
14155 12 1.0000 273 71.635737973317 4.3016551217e-02
14156 12 1.0000 274 71.928739950203 6.3905848393e-02
14157 12 1.0000 275 72.072019043543 1.0143294482e+00
14158 12 1.0000 276 72.399428674980 4.3227198676e-02
14159 12 1.0000 277 72.665425985507 4.2447847564e-02
14160 12 1.0000 278 72.930988971286 4.2079066321e-02
14161 12 1.0000 279 73.193686184779 4.1933683470e-02
14162 12 1.0000 280 73.456998172959 4.1850629182e-02
14163 12 1.0000 281 73.719687950883 4.1856980263e-02
14164 12 1.0000 282 73.982808238178 4.2112290596e-02
14165 12 1.0000 283 74.245810365327 4.1796604186e-02
14166 12 1.0000 284 74.509466436944 4.2282937745e-02
14167 12 1.0000 285 74.772576397595 4.2110165035e-02
14168 12 1.0000 286 75.037622667893 4.2257402436e-02
14169 12 1.0000 287 75.306770903626 4.3833962509e-02
14170 12 1.0000 288 75.633261024810 1.6536537016e-01
14171 12 1.0000 289 75.715945690084 9.1073928192e-01
14172 12 1.0000 290 76.060706413697 4.3628259548e-02
14173 12 1.0000 291 76.329540341303 4.2860284934e-02
14174 12 1.0000 292 76.595802943679 4.2079670756e-02
14175 12 1.0000 293 76.859418063555 4.2290577146e-02
14176 12 1.0000 294 77.143855377501 1.0408561587e+00
14177 12 1.0000 295 77.382371444417 4.2757144463e-02
14178 12 1.0000 296 77.646040352991 4.2007040088e-02
14179 12 1.0000 297 77.910258356404 4.2048353916e-02
14180 12 1.0000 298 78.173240810904 4.2018640506e-02
14181 12 1.0000 299 78.437165453883 4.2064406213e-02
14182 12 1.0000 300 78.703191089694 4.2781375846e-02
14183 12 1.0000 301 78.971842773449 4.3838568015e-02
14184 12 1.0000 302 79.320256962558 7.8116293361e-01
14185 12 1.0000 303 79.385544166531 2.9452219132e-01
14186 12 1.0000 304 79.723979008461 4.3599073277e-02
14187 12 1.0000 305 79.993086899726 4.2796437250e-02
14188 12 1.0000 306 80.258619710967 4.1979960870e-02
14189 12 1.0000 307 80.521018935142 4.2461807927e-02
14190 12 1.0000 308 80.785417441175 4.1859496123e-02
14191 12 1.0000 309 81.047621637860 4.1881005206e-02
14192 12 1.0000 310 81.310224018488 4.2448096821e-02
14193 12 1.0000 311 81.572992686526 4.1734126282e-02
14194 12 1.0000 312 81.835839252496 4.1922324940e-02
14195 12 1.0000 313 82.098553041249 4.1869664490e-02
14196 12 1.0000 314 82.360591921071 4.1627658592e-02
14197 12 1.0000 315 82.624756139284 4.2905584226e-02
14198 12 1.0000 316 82.909303504481 1.0403969907e+00
14199 12 1.0000 317 83.143614775630 4.2409971427e-02
14200 12 1.0000 318 83.407673237860 4.1985884393e-02
14201 12 1.0000 319 83.670211628343 4.2019277871e-02
14202 12 1.0000 320 83.933080618283 4.2042082997e-02
14203 12 1.0000 321 84.194243427047 4.2102658755e-02
14204 12 1.0000 322 84.457447677794 4.2033961965e-02
14205 12 1.0000 323 84.734853447875 1.0414512603e+00
14206 12 1.0000 324 84.979790650468 4.1756337996e-02
14207 12 1.0000 325 85.243574614541 4.2013970704e-02
14208 12 1.0000 326 85.505731786499 4.1790766630e-02
14209 12 1.0000 327 85.769197350903 4.2155107535e-02
14210 12 1.0000 328 86.031828659600 4.1917643400e-02
14211 12 1.0000 329 86.295032335203 4.1977855647e-02
14212 12 1.0000 330 86.557752199231 4.2742936879e-02
14213 12 1.0000 331 86.823139299568 4.2140675104e-02
14214 12 1.0000 332 87.090701585546 4.3429888731e-02
14215 12 1.0000 333 87.420081740543 1.0109573697e+00
14216 12 1.0000 334 87.559501372310 6.7517496083e-02
14217 12 1.0000 335 87.853741124171 4.3855379319e-02
14218 12 1.0000 336 88.123635160426 4.3363751454e-02
14219 12 1.0000 337 88.393541478326 4.3715277445e-02
14220 12 1.0000 338 88.703759392075 9.2506600461e-02
14221 12 1.0000 339 88.816242582357 9.8459902791e-01
14222 12 1.0000 340 89.153954940160 4.3951104436e-02
14223 12 1.0000 341 89.423031484350 4.2280805155e-02
14224 12 1.0000 342 89.687237422757 4.2164144497e-02
14225 12 1.0000 343 89.950173950117 4.2733173490e-02
14226 12 1.0000 344 90.214880226947 4.1930898594e-02
14227 12 1.0000 345 90.476831966616 4.2171758838e-02
14228 12 1.0000 346 90.741191099704 4.1953297904e-02
14229 12 1.0000 347 91.003346838168 4.1818964969e-02
14230 12 1.0000 348 91.266439065908 4.3089047476e-02
14231 12 1.0000 349 91.530423235523 4.2120443808e-02
14232 12 1.0000 350 91.794630845186 4.2391429559e-02
14233 12 1.0000 351 92.062426979810 4.3012125933e-02
14234 12 1.0000 352 92.355626037395 6.5940882159e-02
14235 12 1.0000 353 92.497014127160 1.0125805510e+00
14236 12 1.0000 354 92.822581894913 4.3641814598e-02
14237 12 1.0000 355 93.090817353011 4.2457048101e-02
14238 12 1.0000 356 93.355680101012 4.2276687247e-02
14239 12 1.0000 357 93.619249213204 4.1807323149e-02
14240 12 1.0000 358 93.883985448209 4.2497336054e-02
14241 12 1.0000 359 94.145719848625 4.1834926878e-02
14242 12 1.0000 360 94.412471561173 4.3060097926e-02
14243 12 1.0000 361 94.652150195305 1.0414109332e+00
14244 12 1.0000 362 94.934500593571 4.2362520619e-02
14245 12 1.0000 363 95.200022395022 4.2536374296e-02
14246 12 1.0000 364 95.470650125224 4.4426230831e-02
14247 12 1.0000 365 95.789525322895 1.3824931231e-01
14248 12 1.0000 366 95.880534596935 9.3864176339e-01
14249 12 1.0000 367 96.223516584175 4.3836005038e-02
14250 12 1.0000 368 96.492866940371 4.2362980502e-02
14251 12 1.0000 369 96.757326878538 4.2337252214e-02
14252 12 1.0000 370 97.021507436049 4.1871622423e-02
14253 12 1.0000 371 97.285104176025 4.2206802901e-02
14254 12 1.0000 372 97.545171575926 4.2867827713e-02
14255 12 1.0000 373 97.810527566672 4.1832779387e-02
14256 12 1.0000 374 98.073491739068 4.2082702625e-02
14257 12 1.0000 375 98.336877720916 4.2268430131e-02
14258 12 1.0000 376 98.600231303961 4.3516024527e-02
14259 12 1.0000 377 98.832372197080 1.0404851387e+00
14260 12 1.0000 378 99.118178026203 4.2029271983e-02
14261 12 1.0000 379 99.383944916250 4.2278869738e-02
14262 12 1.0000 380 99.646380904092 4.1917254194e-02
14263 12 1.0000 381 99.910189075734 4.3290004904e-02
14264 12 1.0000 382 100.172140318594 4.2185814488e-02
14265 12 1.0000 383 100.434860336703 4.3818876143e-02
14266 12 1.0000 384 100.701052122939 4.2563549387e-02
14267 12 1.0000 385 100.971134676867 4.3658034735e-02
14268 12 1.0000 386 101.309772398322 9.7009786224e-01
14269 12 1.0000 387 101.413648639176 1.0658891535e-01
14270 12 1.0000 388 101.727576185757 4.3620026552e-02
14271 12 1.0000 389 101.996280975846 4.2939773590e-02
14272 12 1.0000 390 102.261796735669 4.2053060475e-02
14273 12 1.0000 391 102.525497919533 4.2442186715e-02
14274 12 1.0000 392 102.790908888062 4.2184532915e-02
14275 12 1.0000 393 103.056754199018 4.3104050329e-02
14276 12 1.0000 394 103.322898261323 4.4835546805e-02
14277 12 1.0000 395 103.647936870918 1.4697043052e-01
14278 12 1.0000 396 103.735850464417 9.2946576423e-01
14279 12 1.0000 397 104.080725076004 4.4177967081e-02
14280 12 1.0000 398 104.350873282885 4.3866811060e-02
14281 12 1.0000 399 104.614287655375 4.2505334921e-02
14282 12 1.0000 400 104.879480956550 4.2445472511e-02
14283 12 1.0000 401 105.145231976626 4.2455850149e-02
14284 12 1.0000 402 105.444746028658 1.0381882371e+00
14285 12 1.0000 403 105.658415794233 4.4181469543e-02
14286 12 1.0000 404 105.924642913748 4.3609391317e-02
14287 12 1.0000 405 106.189758204359 4.2394081471e-02
14288 12 1.0000 406 106.456025631231 4.2668605984e-02
14289 12 1.0000 407 106.722953207662 4.4405234838e-02
14290 12 1.0000 408 107.001463331815 5.2485210143e-02
14291 12 1.0000 409 107.172182388812 1.0273542570e+00
14292 12 1.0000 410 107.489081376548 4.3224216815e-02
14293 12 1.0000 411 107.756376623518 4.2686333820e-02
14294 12 1.0000 412 108.021712508839 4.2138150338e-02
14295 12 1.0000 413 108.281808066565 4.3684508227e-02
14296 12 1.0000 414 108.546104695668 4.1910894825e-02
14297 12 1.0000 415 108.809501750446 4.2355520830e-02
14298 12 1.0000 416 109.071129744767 4.2197690514e-02
14299 12 1.0000 417 109.336812228265 4.2066793566e-02
14300 12 1.0000 418 109.599506123898 4.2106818841e-02
14301 12 1.0000 419 109.863512452589 4.2277460825e-02
14302 12 1.0000 420 110.125750979452 4.4013923665e-02
14303 12 1.0000 421 110.390808198797 4.3307130271e-02
14304 12 1.0000 422 110.664356426974 4.5492248808e-02
14305 12 1.0000 423 111.010967988464 7.5478493216e-01
14306 12 1.0000 424 111.075289884194 3.2195600423e-01
14307 12 1.0000 425 111.420300113984 4.5007298090e-02
14308 12 1.0000 426 111.708797446884 5.4343320140e-02
14309 12 1.0000 427 111.878405950429 1.0264751525e+00
14310 12 1.0000 428 112.198321341904 4.3445675952e-02
14311 12 1.0000 429 112.466608908016 4.2757515825e-02
14312 12 1.0000 430 112.732711866276 4.3055133364e-02
14313 12 1.0000 431 112.990522538314 4.2543164302e-02
14314 12 1.0000 432 113.255041873463 4.2891702605e-02
14315 12 1.0000 433 113.518070770035 4.2087642432e-02
14316 12 1.0000 434 113.782967708936 4.2504489741e-02
14317 12 1.0000 435 114.046347360442 4.1953465437e-02
14318 12 1.0000 436 114.319714215613 1.0416513617e+00
14319 12 1.0000 437 114.572979678826 4.3900987308e-02
14320 12 1.0000 438 114.830798549463 4.2513887051e-02
14321 12 1.0000 439 115.094614301704 4.2015394560e-02
14322 12 1.0000 440 115.360684737231 4.2721780854e-02
14323 12 1.0000 441 115.625744566681 4.4772482896e-02
14324 12 1.0000 442 115.890702080969 4.3958727727e-02
14325 12 1.0000 443 116.221290044452 1.0087010960e+00
14326 12 1.0000 444 116.357222720003 6.9579915819e-02
14327 12 1.0000 445 116.656559598283 4.4921863329e-02
14328 12 1.0000 446 116.918788372330 4.3335308104e-02
14329 12 1.0000 447 117.182254886283 4.2533885044e-02
14330 12 1.0000 448 117.446763344024 4.1648847299e-02
14331 12 1.0000 449 117.709127950803 4.2652728842e-02
14332 12 1.0000 450 117.975570658713 4.4098653772e-02
14333 12 1.0000 451 118.234599646673 4.3141476241e-02
14334 12 1.0000 452 118.498214362909 4.2657625303e-02
14335 12 1.0000 453 118.789472265912 1.0397198046e+00
14336 12 1.0000 454 119.017055506327 4.3178969423e-02
14337 12 1.0000 455 119.282787308213 4.2332021850e-02
14338 12 1.0000 456 119.541637919718 4.5174317775e-02
14339 12 1.0000 457 119.807168616737 4.2494368014e-02
14340 12 1.0000 458 120.068135965219 4.2095358513e-02
14341 12 1.0000 459 120.330169191173 4.1795724114e-02
14342 12 1.0000 460 120.592506331058 4.2274840137e-02
14343 12 1.0000 461 120.856471227148 4.1758851234e-02
14344 12 1.0000 462 121.116718053275 4.2322100608e-02
14345 12 1.0000 463 121.370560596385 1.0415355367e+00
14346 12 1.0000 464 121.642314276775 4.2560126629e-02
14347 12 1.0000 465 121.900393610070 4.4658527556e-02
14348 12 1.0000 466 122.167418260972 4.2506785482e-02
14349 12 1.0000 467 122.428023316252 4.2604286564e-02
14350 12 1.0000 468 122.691520214850 4.2420726339e-02
14351 12 1.0000 469 122.946934347194 1.0455003292e+00
14352 12 1.0000 470 123.216103505339 4.2457027350e-02
14353 12 1.0000 471 123.478871597234 4.1449463532e-02
14354 12 1.0000 472 123.743217441767 4.5037541287e-02
14355 12 1.0000 473 123.999642396326 4.2407420674e-02
14356 12 1.0000 474 124.257029724921 1.0415667120e+00
14357 12 1.0000 475 124.525487522856 4.3299281834e-02
14358 12 1.0000 476 124.786923138784 4.1767712784e-02
14359 12 1.0000 477 125.050386794542 4.1874904578e-02
14360 12 1.0000 478 125.311385440334 4.2606935451e-02
14361 12 1.0000 479 125.575859899888 4.1701205930e-02
14362 12 1.0000 480 125.839246759542 4.2700303196e-02
14363 12 1.0000 481 126.095318037630 4.6413119097e-02
14364 12 1.0000 482 126.363402092937 4.1885420301e-02
14365 12 1.0000 483 126.631653046967 4.5981685358e-02
14366 12 1.0000 484 126.889659779539 4.3118844846e-02
14367 12 1.0000 485 127.160350927459 4.4075754065e-02
14368 12 1.0000 486 127.505648254499 9.1703511518e-01
14369 12 1.0000 487 127.590145517126 1.6052602075e-01
14370 12 1.0000 488 127.920226921638 4.6706813816e-02
14371 12 1.0000 489 128.179845394763 4.3630144223e-02
14372 12 1.0000 490 128.447835975986 4.3489636304e-02
14373 12 1.0000 491 128.713692497093 4.2431687688e-02
14374 12 1.0000 492 128.979064916492 4.2875117354e-02
14375 12 1.0000 493 129.246718228197 4.3389653277e-02
14376 12 1.0000 494 129.573890267366 1.0157839106e+00
14377 12 1.0000 495 129.721399874317 6.8203315308e-02
14378 12 1.0000 496 130.010242126677 4.3581165804e-02
14379 12 1.0000 497 130.278867238550 4.2383013259e-02
14380 12 1.0000 498 130.543142307456 4.3297215254e-02
14381 12 1.0000 499 130.806984266074 4.2393950380e-02
14382 12 1.0000 500 131.086897443860 1.0414481131e+00
14383 12 1.0000 501 131.328624629474 4.2560475928e-02
14384 12 1.0000 502 131.593884903692 4.2440942679e-02
14385 12 1.0000 503 131.860500556436 4.7366459258e-02
14386 12 1.0000 504 132.117214983634 4.2347759828e-02
14387 12 1.0000 505 132.380968769721 4.2179837126e-02
14388 12 1.0000 506 132.645153990947 4.2835768999e-02
14389 12 1.0000 507 132.914632658494 4.6790523999e-02
14390 12 1.0000 508 133.175941998080 4.4091884224e-02
14391 12 1.0000 509 133.494046576908 1.0254156803e+00
14392 12 1.0000 510 133.661213680695 5.4208811970e-02
14393 12 1.0000 511 133.944508225829 4.3313077860e-02
14394 12 1.0000 512 134.213376469926 4.4333974164e-02
14395 12 1.0000 513 134.465732848866 4.6222375360e-02
14396 12 1.0000 514 134.755405414802 1.0411631722e+00
14397 12 1.0000 515 134.994909375054 4.8090799406e-02
14398 12 1.0000 516 135.256563592173 4.3703026507e-02
14399 12 1.0000 517 135.520372384796 4.2068439886e-02
14400 12 1.0000 518 135.783099878098 4.2329860140e-02
14401 12 1.0000 519 136.044329936328 4.3124048050e-02
14402 12 1.0000 520 136.309197951228 4.2329233216e-02
14403 12 1.0000 521 136.572358056631 4.2317057934e-02
14404 12 1.0000 522 136.841013250474 4.6438624505e-02
14405 12 1.0000 523 137.091135579635 4.3109865880e-02
14406 12 1.0000 524 137.354728041378 4.2293645025e-02
14407 12 1.0000 525 137.620734214348 4.3027530722e-02
14408 12 1.0000 526 137.882925519249 4.3223945860e-02
14409 12 1.0000 527 138.117134382447 1.0408845496e+00
14410 12 1.0000 528 138.404842901264 4.2871083932e-02
14411 12 1.0000 529 138.666562752156 4.8538144165e-02
14412 12 1.0000 530 138.928221446001 4.3203183757e-02
14413 12 1.0000 531 139.192953645986 4.1986613443e-02
14414 12 1.0000 532 139.452327017577 4.2452226248e-02
14415 12 1.0000 533 139.735543403859 1.0422732562e+00
14416 12 1.0000 534 139.973060937045 4.9971900951e-02
14417 12 1.0000 535 140.243389515123 4.2728478999e-02
14418 12 1.0000 536 140.510267606561 4.2868168520e-02
14419 12 1.0000 537 140.777729841631 4.3600923417e-02
14420 12 1.0000 538 141.115880165399 9.7433131357e-01
14421 12 1.0000 539 141.221836808908 1.0354376551e-01
14422 12 1.0000 540 141.533212598578 4.4655987081e-02
14423 12 1.0000 541 141.798479975295 5.0017584047e-02
14424 12 1.0000 542 142.069227990350 4.2696365640e-02
14425 12 1.0000 543 142.331009515607 4.2254609365e-02
14426 12 1.0000 544 142.596762686326 4.4036348029e-02
14427 12 1.0000 545 142.847538898858 4.8095031777e-02
14428 12 1.0000 546 143.111992669558 1.0433876169e+00
14429 12 1.0000 547 143.379341057097 4.1558210675e-02
14430 12 1.0000 548 143.642017730637 4.2955173082e-02
14431 12 1.0000 549 143.905337893415 4.2073297440e-02
14432 12 1.0000 550 144.167590199129 4.2574185527e-02
14433 12 1.0000 551 144.436103590782 4.9754753921e-02
14434 12 1.0000 552 144.690645901842 4.3895433458e-02
14435 12 1.0000 553 144.951949046361 4.1279130381e-02
14436 12 1.0000 554 145.217801836844 4.3597016372e-02
14437 12 1.0000 555 145.480308238236 5.0425878555e-02
14438 12 1.0000 556 145.744869353558 4.2783082785e-02
14439 12 1.0000 557 146.001195895144 1.0433111547e+00
14440 12 1.0000 558 146.266776016572 4.2347938758e-02
14441 12 1.0000 559 146.526265557414 5.0772998490e-02
14442 12 1.0000 560 146.794196215397 4.4647432169e-02
14443 12 1.0000 561 147.065912040503 4.3585026007e-02
14444 12 1.0000 562 147.411733476676 9.1856139434e-01
14445 12 1.0000 563 147.497430446166 1.6037852493e-01
14446 12 1.0000 564 147.822235727592 4.4136755704e-02
14447 12 1.0000 565 148.091487442600 4.3088034831e-02
14448 12 1.0000 566 148.355851600051 4.2926016960e-02
14449 12 1.0000 567 148.623398852185 4.2232632801e-02
14450 12 1.0000 568 148.886206137292 4.3987212527e-02
14451 12 1.0000 569 149.147814412728 4.3045286691e-02
14452 12 1.0000 570 149.409200331695 5.2501990450e-02
14453 12 1.0000 571 149.686202268174 4.4733902780e-02
14454 12 1.0000 572 150.037011295907 8.1469442059e-01
14455 12 1.0000 573 150.110527733663 2.6947889432e-01
14456 12 1.0000 574 150.432757629176 4.6465568791e-02
14457 12 1.0000 575 150.713924850876 4.6318351756e-02
14458 12 1.0000 576 150.927262209652 1.0392621603e+00
14459 12 1.0000 577 151.229306058172 4.3753433246e-02
14460 12 1.0000 578 151.504316518380 5.1435330673e-02
14461 12 1.0000 579 151.755635658984 4.3406820887e-02
14462 12 1.0000 580 152.019677497349 4.3619460552e-02
14463 12 1.0000 581 152.286917657086 4.3488482414e-02
14464 12 1.0000 582 152.556186595329 4.5063505366e-02
14465 12 1.0000 583 152.804675084211 5.1775582453e-02
14466 12 1.0000 584 153.026558088956 1.0386125672e+00
14467 12 1.0000 585 153.327142810344 4.3867054440e-02
14468 12 1.0000 586 153.593898326452 4.2336789404e-02
14469 12 1.0000 587 153.856213854492 4.3978109181e-02
14470 12 1.0000 588 154.120654617969 4.4405622194e-02
14471 12 1.0000 589 154.396650762868 5.0205120661e-02
14472 12 1.0000 590 154.636727925728 4.5785592217e-02
14473 12 1.0000 591 154.903844951245 4.2736411806e-02
14474 12 1.0000 592 155.173781962288 4.3668872122e-02
14475 12 1.0000 593 155.448520362082 5.2056399297e-02
14476 12 1.0000 594 155.697753878196 4.5295009260e-02
14477 12 1.0000 595 156.014731528088 1.0764716691e-01
14478 12 1.0000 596 156.120897140379 9.7310770565e-01
14479 12 1.0000 597 156.464029335222 4.4212521832e-02
14480 12 1.0000 598 156.731947346799 4.3378934089e-02
14481 12 1.0000 599 156.999948240122 4.3416758221e-02
14482 12 1.0000 600 157.273492903656 4.5575940882e-02
14483 12 1.0000 601 157.592048008507 1.0271308706e+00
14484 12 1.0000 602 157.741259448593 6.5911110531e-02
14485 12 1.0000 603 158.036226893978 4.4807267152e-02
14486 12 1.0000 604 158.301485435661 4.3334952639e-02
14487 12 1.0000 605 158.568586446863 4.4230137068e-02
14488 12 1.0000 606 158.848233962302 1.0513649512e+00
14489 12 1.0000 607 159.085276068788 4.6255488301e-02
14490 12 1.0000 608 159.348104079540 4.2650361306e-02
14491 12 1.0000 609 159.613515164015 4.2560999937e-02
14492 12 1.0000 610 159.876345861561 4.3110989426e-02
14493 12 1.0000 611 160.139977414470 4.2125837562e-02
14494 12 1.0000 612 160.403352319579 4.4130100465e-02
14495 12 1.0000 613 160.669313834312 4.2304324124e-02
14496 12 1.0000 614 160.915687480713 5.5240651329e-02
14497 12 1.0000 615 161.188861327350 1.0433529514e+00
14498 12 1.0000 616 161.451876277485 4.2711613129e-02
14499 12 1.0000 617 161.722489630210 5.8652471914e-02
14500 12 1.0000 618 161.978183079752 4.2972794061e-02
14501 12 1.0000 619 162.242326823552 4.3666057941e-02

E-024-theta-sweep.json — 10.3 KB, updated 08-19-2026

JSON sidecar (click to expand)
{
  "experiment": "E-024",
  "task": "2.12: theta-flow numerics (theta-independence test)",
  "script": "research/numerics/scripts/E-024-theta-sweep.py",
  "parameters": {
    "a_list": [
      4.0,
      8.0,
      12.0
    ],
    "thetas_over_pi": [
      0.0,
      0.1667,
      0.3333,
      0.5,
      0.6667,
      0.8333,
      1.0
    ],
    "z_max": 300.0,
    "z_metric": 280.0
  },
  "checks": {
    "V1_lattice_all_theta": true,
    "V2_theta_pi_matches_E022": true,
    "V3_weights_positive": true
  },
  "key_values": {
    "a4_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 381,
      "z1_times_a": 3.1471258584711514,
      "mass_total": 184.1835959613851,
      "mass_pm0.1": 119.4128093530634,
      "mass_pm0.05": 91.94966918355006,
      "residual": 48.76433809073876,
      "valley_mass_mean": 1.0747560148463995,
      "plateau_weight_mean": 0.21201886126408157,
      "Delta_eff": 1.6231737129268227
    },
    "a4_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 381,
      "z1_times_a": 3.4619359298190293,
      "mass_total": 184.18630284387328,
      "mass_pm0.1": 118.29623992508816,
      "mass_pm0.05": 86.87180322997308,
      "residual": 48.931287590873524,
      "valley_mass_mean": 1.0734525020079346,
      "plateau_weight_mean": 0.2127447286559719,
      "Delta_eff": 1.6185423804514978
    },
    "a4_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 381,
      "z1_times_a": 3.7176915045337466,
      "mass_total": 183.9726782811009,
      "mass_pm0.1": 113.57262540386267,
      "mass_pm0.05": 85.73049725879235,
      "residual": 50.41888852750091,
      "valley_mass_mean": 1.0599507123301588,
      "plateau_weight_mean": 0.22016981889738385,
      "Delta_eff": 1.5715785355566734
    },
    "a4_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 381,
      "z1_times_a": 3.934163190177167,
      "mass_total": 183.98559583483848,
      "mass_pm0.1": 113.33711825061624,
      "mass_pm0.05": 89.82793793217617,
      "residual": 50.618934373720066,
      "valley_mass_mean": 1.0584655671517333,
      "plateau_weight_mean": 0.22104338154462916,
      "Delta_eff": 1.566216581357752
    },
    "a4_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 381,
      "z1_times_a": 4.128324562896003,
      "mass_total": 183.9983973653932,
      "mass_pm0.1": 119.75726561744686,
      "mass_pm0.05": 95.81754097212591,
      "residual": 48.13040632212352,
      "valley_mass_mean": 1.078317389232299,
      "plateau_weight_mean": 0.21017644682150013,
      "Delta_eff": 1.6352097313960756
    },
    "a4_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 381,
      "z1_times_a": 4.314182529701571,
      "mass_total": 184.01134904950752,
      "mass_pm0.1": 120.40026511109403,
      "mass_pm0.05": 90.96419878254113,
      "residual": 47.43102136203055,
      "valley_mass_mean": 1.0839708546625155,
      "plateau_weight_mean": 0.20712236402633416,
      "Delta_eff": 1.6550765456169134
    },
    "a4_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 381,
      "z1_times_a": 4.504293602793437,
      "mass_total": 184.02432245308052,
      "mass_pm0.1": 116.64777135239572,
      "mass_pm0.05": 93.33647263205195,
      "residual": 48.30754760742576,
      "valley_mass_mean": 1.0771172606797996,
      "plateau_weight_mean": 0.2109499895520775,
      "Delta_eff": 1.6304224593273315
    },
    "a8_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 763,
      "z1_times_a": 3.1437903681267265,
      "mass_total": 184.1082994928043,
      "mass_pm0.1": 134.20929653000076,
      "mass_pm0.05": 123.1835197830814,
      "residual": 57.73718018875971,
      "valley_mass_mean": 1.002945391301941,
      "plateau_weight_mean": 0.09852761124361722,
      "Delta_eff": 2.320359515027157
    },
    "a8_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 763,
      "z1_times_a": 3.418119179475546,
      "mass_total": 184.11283914170593,
      "mass_pm0.1": 131.8317519020843,
      "mass_pm0.05": 126.78097971430489,
      "residual": 56.7356526846647,
      "valley_mass_mean": 1.010930051246359,
      "plateau_weight_mean": 0.09681851993970085,
      "Delta_eff": 2.3457877312638367
    },
    "a8_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 763,
      "z1_times_a": 3.654042277120252,
      "mass_total": 184.11760264338506,
      "mass_pm0.1": 132.1490251381983,
      "mass_pm0.05": 124.0292094105938,
      "residual": 58.16107071439245,
      "valley_mass_mean": 0.9996550153094651,
      "plateau_weight_mean": 0.09925097391534557,
      "Delta_eff": 2.3097585025024654
    },
    "a8_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 763,
      "z1_times_a": 3.867441949623103,
      "mass_total": 184.12212186389277,
      "mass_pm0.1": 133.24139728241443,
      "mass_pm0.05": 121.15410070178395,
      "residual": 59.85047462666191,
      "valley_mass_mean": 0.9862829145811973,
      "plateau_weight_mean": 0.10213391574515683,
      "Delta_eff": 2.26765839342186
    },
    "a8_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 763,
      "z1_times_a": 4.071478758632688,
      "mass_total": 184.1262503654809,
      "mass_pm0.1": 132.29513175105507,
      "mass_pm0.05": 122.51608044758039,
      "residual": 57.48114969555114,
      "valley_mass_mean": 1.0051198465867441,
      "plateau_weight_mean": 0.09809069913916582,
      "Delta_eff": 2.3269695116402334
    },
    "a8_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 763,
      "z1_times_a": 4.27766402464752,
      "mass_total": 184.12992169567084,
      "mass_pm0.1": 131.99007596810569,
      "mass_pm0.05": 124.30470833176733,
      "residual": 57.28031602287514,
      "valley_mass_mean": 1.0067429021650454,
      "plateau_weight_mean": 0.09774797956122035,
      "Delta_eff": 2.332083020259487
    },
    "a8_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 763,
      "z1_times_a": 4.4968101024775144,
      "mass_total": 184.13312237431055,
      "mass_pm0.1": 133.51693635274228,
      "mass_pm0.05": 124.28962039506533,
      "residual": 58.6511497935264,
      "valley_mass_mean": 0.9958886712760646,
      "plateau_weight_mean": 0.10008728633707581,
      "Delta_eff": 2.297592806874823
    },
    "a12_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 1145,
      "z1_times_a": 3.1428501414881977,
      "mass_total": 184.16007157245687,
      "mass_pm0.1": 133.61538092090012,
      "mass_pm0.05": 128.10759866335772,
      "residual": 60.30642315719122,
      "valley_mass_mean": 0.9829654636132195,
      "plateau_weight_mean": 0.06395166824728656,
      "Delta_eff": 2.732446371442262
    },
    "a12_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 1145,
      "z1_times_a": 3.405992501692748,
      "mass_total": 184.1639822094043,
      "mass_pm0.1": 133.36866840406773,
      "mass_pm0.05": 129.35521418242917,
      "residual": 60.3669918644722,
      "valley_mass_mean": 0.9825157963883501,
      "plateau_weight_mean": 0.06401589805352302,
      "Delta_eff": 2.73098496176509
    },
    "a12_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 1145,
      "z1_times_a": 3.635830555925344,
      "mass_total": 184.09580595481827,
      "mass_pm0.1": 133.41942035595872,
      "mass_pm0.05": 129.05415843419973,
      "residual": 58.57426551897014,
      "valley_mass_mean": 0.9962027018718106,
      "plateau_weight_mean": 0.06218074895856703,
      "Delta_eff": 2.7739053032480143
    },
    "a12_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 1145,
      "z1_times_a": 3.8476946281889486,
      "mass_total": 184.09881987373944,
      "mass_pm0.1": 132.95788338488353,
      "mass_pm0.05": 129.3505890774291,
      "residual": 58.94147251618104,
      "valley_mass_mean": 0.9933122806155429,
      "plateau_weight_mean": 0.06257056530380153,
      "Delta_eff": 2.764750131884173
    },
    "a12_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 1145,
      "z1_times_a": 4.05423555082551,
      "mass_total": 184.10127816912785,
      "mass_pm0.1": 133.37160860447023,
      "mass_pm0.05": 129.68837121321633,
      "residual": 58.35802636312266,
      "valley_mass_mean": 0.9979623159206761,
      "plateau_weight_mean": 0.06195119571456758,
      "Delta_eff": 2.7793686068267633
    },
    "a12_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 1145,
      "z1_times_a": 4.2666373857585445,
      "mass_total": 184.1032513640804,
      "mass_pm0.1": 133.09565694496038,
      "mass_pm0.05": 129.3399679137547,
      "residual": 58.63289108937627,
      "valley_mass_mean": 0.9957965101166993,
      "plateau_weight_mean": 0.062242984171312424,
      "Delta_eff": 2.7724971046813764
    },
    "a12_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 1145,
      "z1_times_a": 4.495304974166889,
      "mass_total": 184.10483484645468,
      "mass_pm0.1": 133.31147006007708,
      "mass_pm0.05": 129.13788187469896,
      "residual": 57.594257954705384,
      "valley_mass_mean": 1.004052197553566,
      "plateau_weight_mean": 0.06114040122580191,
      "Delta_eff": 2.7986264096434
    },
    "V4_theta_spread": {
      "a4": {
        "residual_minmax": [
          47.43102136203055,
          50.618934373720066
        ],
        "residual_spread_pct": 2.234095821084676,
        "mass_pm01_spread_pct": 2.302784187513983,
        "z1_times_a_range": [
          3.1471258584711514,
          4.504293602793437
        ]
      },
      "a8": {
        "residual_minmax": [
          56.7356526846647,
          59.85047462666191
        ],
        "residual_spread_pct": 1.6396401999266315,
        "mass_pm01_spread_pct": 0.6333372523281642,
        "z1_times_a_range": [
          3.1437903681267265,
          4.4968101024775144
        ]
      },
      "a12": {
        "residual_minmax": [
          57.594257954705384,
          60.3669918644722
        ],
        "residual_spread_pct": 1.6057262581418954,
        "mass_pm01_spread_pct": 0.15063835179687926,
        "z1_times_a_range": [
          3.1428501414881977,
          4.495304974166889
        ]
      }
    }
  },
  "elapsed_seconds": 212.6,
  "timestamp_utc": "2026-08-19T18:19:09.910473+00:00"
}

Source code

Python script (click to expand)
"""E-024 — task 2.12: theta-flow numerics (D-041 §5/§8, D-038 §5).

Theory (de Branges/Clark): the model space's kernel K_a(z,z) is
theta-INDEPENDENT; the extension choice theta only phase-shifts the
atom lattice z_k(theta). PREDICTION (to be tested): consolidation
statistics (valley-captured mass, residual) are theta-independent —
if confirmed, no theta(a) flow can fix consolidation and the
obstruction is entirely the K-saturation (D-040 F6); if refuted,
the theta-flow channel is alive.

For theta in {0, pi/6, pi/3, pi/2, 2pi/3, 5pi/6, pi} and a in {4,8,12}:
  - zeros of W(a,theta;z) on (0, Z_MAX] via the real gauge
        g_theta(z) = Re[ e^{-i theta/2} (z - i) V_+(z) ]
    (e^{-i theta/2} W = 2 Re[e^{-i theta/2}(z-i)V_+] on the real line,
    using Vm = conj(Vp); reduces to z ImV - ReV at theta=pi);
  - Clark weights w_k = 1/K_a(z_k,z_k) (E-022 Schur-Toeplitz route);
  - metrics: n_zeros, z1*a, mass within +/-0.1 and +/-0.05 of true
    gammas, residual R(a,theta) = total - captured, mean valley mass,
    effective depth Delta_eff = log(mean valley weight / mean plateau
    weight).

Checks:
  V1. all zeros real & count = maximal lattice a*Z_MAX/pi +/- 2,
      every theta (self-adjointness).
  V2. theta=pi reproduces E-022: |z1*a - 4.4953| < 0.05 at a=12 and
      mass(+/-0.1) within 1% of E-022 value.
  V3. weights positive, all theta.
  V4. headline: theta-spread of residual R and mass(+/-0.1) reported
      per a (small spread = theta-independence confirmed).

Outputs: research/numerics/data/E-024-theta-sweep.csv (+ .json)
"""
import importlib.util
import json
import sys
import time
from datetime import datetime, timezone
from pathlib import Path

import mpmath as mp
import numpy as np
import scipy.linalg
import scipy.optimize

REPO = Path(__file__).resolve().parents[3]
DATA = REPO / "research" / "numerics" / "data"
CSV = DATA / "E-024-theta-sweep.csv"
JSON = DATA / "E-024-theta-sweep.json"

_spec = importlib.util.spec_from_file_location(
    "E16", Path(__file__).with_name("E-016-herglotz-fine-structure.py"))
E16 = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(E16)                     # runs the e^20 sieve
sys.path.insert(0, str(Path(__file__).parent))
from prime_backend_v2 import PrimeBackendV2       # noqa: E402

H = E16.H_MAIN
LAM = E16.LAM_SHIFT
A_LIST = [4.0, 8.0, 12.0]
THETAS = [0.0, np.pi / 6, np.pi / 3, np.pi / 2, 2 * np.pi / 3,
          5 * np.pi / 6, np.pi]
Z_MAX = 300.0
Z_METRIC = 280.0
N_GRID = 40000
XN = E16.XN
mp.mp.dps = 40


def collect_t_points(a, h):
    n_elem = int(round(2 * a / h))
    pts = []

    def add_quad(lo, hi, peak):
        n_lo = int(np.ceil(np.exp(lo)))
        n_hi = int(np.floor(np.exp(hi)))
        if n_hi - n_lo > 64:
            for aa, bb in ((lo, peak), (peak, hi)):
                if bb - aa > 0:
                    mid, half = 0.5 * (aa + bb), 0.5 * (bb - aa)
                    pts.extend(mid + half * XN)
            return
        segs = sorted({lo, peak, hi} |
                      {float(np.log(n))
                       for n in range(max(n_lo, 2), n_hi + 1)
                       if lo < np.log(n) < hi})
        for p0, p1 in zip(segs, segs[1:]):
            if p1 - p0 > 0:
                mid, half = 0.5 * (p0 + p1), 0.5 * (p1 - p0)
                pts.extend(mid + half * XN)

    for k in range(n_elem):
        if k == 0:
            add_quad(0.0, h, 0.0)
        else:
            add_quad((k - 1) * h, (k + 1) * h, k * h)
    return np.array(pts)


def locate_zeros_theta(cp, x, h, theta, z_max=Z_MAX, n_grid=N_GRID):
    zg = np.linspace(1e-3, z_max, n_grid)
    E = np.exp(1j * np.outer(zg, x))
    V = E16.hat_FT(zg, h) * (E @ cp)
    f = np.exp(-0.5j * theta) * (zg - 1j) * V
    g = f.real

    def g_direct(zz):
        V1 = E16.hat_FT(np.array([zz]), h)[0] * complex(
            np.exp(1j * zz * x) @ cp)
        return float(np.real(np.exp(-0.5j * theta) * (zz - 1j) * V1))

    idx = np.flatnonzero(np.sign(g[:-1]) * np.sign(g[1:]) < 0)
    zeros = []
    for i in idx:
        try:
            zeros.append(scipy.optimize.brentq(g_direct, zg[i], zg[i + 1],
                                               xtol=1e-13, rtol=1e-13))
        except ValueError:
            pass
    return np.array(zeros)


def main() -> int:
    if JSON.exists() and "--force" not in sys.argv:
        print(f"cached: {JSON} (use --force to recompute)")
        return 0
    t0 = time.time()

    print("backend: load E-022 cache ...", flush=True)
    tq = np.concatenate([collect_t_points(a, H) for a in A_LIST])
    be = PrimeBackendV2(tq)
    be.load_cache(DATA / "E-022-backend-cache.npz")
    E16._BUILD.clear()
    E16.prime_sum_vec = be.prime_sum

    mp.mp.dps = 30
    gam = np.array([float(mp.zetazero(k).imag) for k in range(1, 201)])
    gam = gam[gam <= Z_METRIC]

    rows = []
    report = {"per_a_theta": {}}
    v1_ok = v3_ok = True
    v2 = {}
    for a in A_LIST:
        ta = time.time()
        x, h, Q, M, b = E16.build(a, H)
        n = len(x)
        cp, _ = E16.solve_v(Q, M, b[+1.0], LAM, n)
        # Toeplitz bordered solver for weights (theta-independent K)
        mc = np.zeros(n)
        mc[0] = 2 * h / 3
        mc[1] = h / 6
        tc = Q[:, 0] - LAM * mc
        u1 = scipy.linalg.solve_toeplitz((tc, tc), np.ones(n))
        s1 = u1.sum()

        def K1(z):
            bz = E16.hat_FT(np.array([z]), h)[0] * np.exp(-1j * z * x)
            u0 = scipy.linalg.solve_toeplitz((tc, tc), bz)
            v = u0 - (u0.sum() / s1) * u1
            return float(np.real(np.conj(bz) @ v))

        for th in THETAS:
            zeros = locate_zeros_theta(cp, x, h, th)
            lat = a * Z_MAX / np.pi
            if abs(len(zeros) - lat) > 2:
                v1_ok = False
            zm = zeros[zeros <= Z_METRIC]
            ws = np.array([1.0 / K1(z) for z in zm])
            if np.any(ws <= 0):
                v3_ok = False
            tot = float(ws.sum())
            idx = np.clip(np.searchsorted(gam, zm), 1, len(gam) - 1)
            d = np.minimum(np.abs(zm - gam[idx - 1]),
                           np.abs(zm - gam[idx]))
            m01 = float(ws[d <= 0.1].sum())
            m005 = float(ws[d <= 0.05].sum())
            # valley atoms = nearest to each gamma; plateau = rest
            near_idx = np.array([np.argmin(np.abs(zm - g)) for g in gam])
            valley_mass = ws[near_idx]
            mask_pl = np.ones(len(zm), bool)
            mask_pl[near_idx] = False
            pl = ws[mask_pl]
            d_eff = float(np.log(valley_mass.mean() / pl.mean()))
            key = f"a{a:g}_th{th / np.pi:.4f}pi"
            report["per_a_theta"][key] = {
                "theta_over_pi": round(th / np.pi, 4),
                "n_zeros": int(len(zeros)),
                "z1_times_a": float(zeros[0] * a),
                "mass_total": tot,
                "mass_pm0.1": m01, "mass_pm0.05": m005,
                "residual": tot - float(valley_mass.sum()),
                "valley_mass_mean": float(valley_mass.mean()),
                "plateau_weight_mean": float(pl.mean()),
                "Delta_eff": d_eff,
            }
            for k, (zz, ww) in enumerate(zip(zm, ws), 1):
                rows.append((a, th / np.pi, k, zz, ww))
        print(f"a={a:g} done ({time.time() - ta:.0f}s)", flush=True)

    # V2: theta=pi cross-check vs E-022
    e022 = report["per_a_theta"]["a12_th1.0000pi"]
    v2 = {"z1_times_a_ok": bool(abs(e022["z1_times_a"] - 4.4953) < 0.05)}
    # V4: theta-spread per a
    v4 = {}
    for a in A_LIST:
        vals = [report["per_a_theta"][f"a{a:g}_th{th / np.pi:.4f}pi"]
                for th in THETAS]
        res = np.array([v["residual"] for v in vals])
        m01 = np.array([v["mass_pm0.1"] for v in vals])
        z1a = np.array([v["z1_times_a"] for v in vals])
        v4[f"a{a:g}"] = {
            "residual_minmax": [float(res.min()), float(res.max())],
            "residual_spread_pct": float(100 * res.std() / res.mean()),
            "mass_pm01_spread_pct": float(100 * m01.std() / m01.mean()),
            "z1_times_a_range": [float(z1a.min()), float(z1a.max())],
        }
        print(f"a={a:g}: residual spread {v4[f'a{a:g}']['residual_spread_pct']:.2f}%, "
              f"mass01 spread {v4[f'a{a:g}']['mass_pm01_spread_pct']:.2f}%, "
              f"z1a in [{z1a.min():.3f},{z1a.max():.3f}]", flush=True)

    checks = {"V1_lattice_all_theta": v1_ok,
              "V2_theta_pi_matches_E022": v2["z1_times_a_ok"],
              "V3_weights_positive": v3_ok}

    import csv as csvmod
    with open(CSV, "w", newline="") as f:
        w = csvmod.writer(f)
        w.writerow(["a", "theta_over_pi", "k", "z_k", "w_k"])
        for a, thp, k, zz, ww in rows:
            w.writerow([f"{a:g}", f"{thp:.4f}", k, f"{zz:.12f}",
                        f"{ww:.10e}"])

    meta = {
        "experiment": "E-024",
        "task": "2.12: theta-flow numerics (theta-independence test)",
        "script": "research/numerics/scripts/E-024-theta-sweep.py",
        "parameters": {"a_list": A_LIST,
                       "thetas_over_pi": [round(t / np.pi, 4)
                                          for t in THETAS],
                       "z_max": Z_MAX, "z_metric": Z_METRIC},
        "checks": checks,
        "key_values": {**report["per_a_theta"], "V4_theta_spread": v4},
        "elapsed_seconds": round(time.time() - t0, 1),
        "timestamp_utc": datetime.now(timezone.utc).isoformat(),
    }
    JSON.write_text(json.dumps(meta, indent=2))
    print(f"wrote {CSV.name}, {JSON.name}; elapsed "
          f"{meta['elapsed_seconds']}s", flush=True)
    return 0 if all(checks.values()) else 1


if __name__ == "__main__":
    sys.exit(main())