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 27 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
13002 12 0.8333 188 49.358028485219 4.3284434047e-02
13003 12 0.8333 189 49.663691685494 8.6443005111e-02
13004 12 0.8333 190 49.780545330065 9.9050427918e-01
13005 12 0.8333 191 50.115587951882 4.3365739944e-02
13006 12 0.8333 192 50.383696408747 4.2249733558e-02
13007 12 0.8333 193 50.648340798377 4.2068382156e-02
13008 12 0.8333 194 50.911753910423 4.1820191733e-02
13009 12 0.8333 195 51.174940116109 4.1918597993e-02
13010 12 0.8333 196 51.437126263912 4.1787249051e-02
13011 12 0.8333 197 51.699910182091 4.1832664334e-02
13012 12 0.8333 198 51.962597358589 4.1842443094e-02
13013 12 0.8333 199 52.225519135373 4.1828894991e-02
13014 12 0.8333 200 52.488545840385 4.2061046509e-02
13015 12 0.8333 201 52.755243707005 4.3519719385e-02
13016 12 0.8333 202 52.972022702347 1.0382890605e+00
13017 12 0.8333 203 53.267440187157 4.2269142477e-02
13018 12 0.8333 204 53.531538685487 4.1958599900e-02
13019 12 0.8333 205 53.794352360617 4.1844759766e-02
13020 12 0.8333 206 54.056926975216 4.1662649928e-02
13021 12 0.8333 207 54.318877339892 4.1870083312e-02
13022 12 0.8333 208 54.581532593141 4.1746458065e-02
13023 12 0.8333 209 54.843390507517 4.1776411073e-02
13024 12 0.8333 210 55.105664940817 4.1719201008e-02
13025 12 0.8333 211 55.367738253612 4.1770058841e-02
13026 12 0.8333 212 55.630504393517 4.1854372271e-02
13027 12 0.8333 213 55.892934118183 4.1866053216e-02
13028 12 0.8333 214 56.156201387333 4.2162354354e-02
13029 12 0.8333 215 56.444970155716 1.0396764674e+00
13030 12 0.8333 216 56.673414311891 4.2726834616e-02
13031 12 0.8333 217 56.937641201088 4.1854172583e-02
13032 12 0.8333 218 57.200825885916 4.1801236007e-02
13033 12 0.8333 219 57.463190916943 4.1845949409e-02
13034 12 0.8333 220 57.725514655018 4.1688005961e-02
13035 12 0.8333 221 57.987731664492 4.1790651410e-02
13036 12 0.8333 222 58.250230318445 4.2042619569e-02
13037 12 0.8333 223 58.513286809839 4.1679109996e-02
13038 12 0.8333 224 58.775958282359 4.2061884050e-02
13039 12 0.8333 225 59.040912787951 4.2458329790e-02
13040 12 0.8333 226 59.344786422444 1.0357673013e+00
13041 12 0.8333 227 59.545866384223 4.5294667675e-02
13042 12 0.8333 228 59.816269367558 4.2313046291e-02
13043 12 0.8333 229 60.080682404934 4.1994614833e-02
13044 12 0.8333 230 60.344644488261 4.2013558545e-02
13045 12 0.8333 231 60.609951017924 4.3158671243e-02
13046 12 0.8333 232 60.833257878227 1.0391306799e+00
13047 12 0.8333 233 61.125459881781 4.2252855238e-02
13048 12 0.8333 234 61.389191182882 4.1915546742e-02
13049 12 0.8333 235 61.651851400282 4.1846060428e-02
13050 12 0.8333 236 61.914419679926 4.1841418621e-02
13051 12 0.8333 237 62.176625674055 4.1845170970e-02
13052 12 0.8333 238 62.439257421463 4.1648264141e-02
13053 12 0.8333 239 62.700990489181 4.1842150127e-02
13054 12 0.8333 240 62.963377103740 4.1709347705e-02
13055 12 0.8333 241 63.226138270695 4.1810797359e-02
13056 12 0.8333 242 63.488012619495 4.1783656862e-02
13057 12 0.8333 243 63.751033341030 4.1927339173e-02
13058 12 0.8333 244 64.013326126827 4.1869260307e-02
13059 12 0.8333 245 64.275385767420 4.2058625569e-02
13060 12 0.8333 246 64.539458230766 4.2010915573e-02
13061 12 0.8333 247 64.804330887613 4.2561827687e-02
13062 12 0.8333 248 65.110094812700 1.0347741789e+00
13063 12 0.8333 249 65.306959603825 4.5949391228e-02
13064 12 0.8333 250 65.578814020453 4.2407815788e-02
13065 12 0.8333 251 65.843261055592 4.2285828269e-02
13066 12 0.8333 252 66.107462208984 4.1880059793e-02
13067 12 0.8333 253 66.371657693980 4.2356508535e-02
13068 12 0.8333 254 66.637499581808 4.2696168776e-02
13069 12 0.8333 255 66.922089668024 5.5012233153e-02
13070 12 0.8333 256 67.083736768893 1.0240422034e+00
13071 12 0.8333 257 67.404254255520 4.2797210253e-02
13072 12 0.8333 258 67.670881629724 4.2392366040e-02
13073 12 0.8333 259 67.935350982956 4.2010607121e-02
13074 12 0.8333 260 68.197998387459 4.1929110443e-02
13075 12 0.8333 261 68.460769958907 4.1979680468e-02
13076 12 0.8333 262 68.723920269774 4.1879988050e-02
13077 12 0.8333 263 68.987073487839 4.2082187035e-02
13078 12 0.8333 264 69.251057700297 4.2371383403e-02
13079 12 0.8333 265 69.544834163446 1.0387467681e+00
13080 12 0.8333 266 69.765260404920 4.3225687211e-02
13081 12 0.8333 267 70.031541465259 4.2062277199e-02
13082 12 0.8333 268 70.295005168813 4.1951713513e-02
13083 12 0.8333 269 70.558215484562 4.1727916550e-02
13084 12 0.8333 270 70.819775547477 4.2261347978e-02
13085 12 0.8333 271 71.083749044710 4.1943715822e-02
13086 12 0.8333 272 71.347468668839 4.2178057906e-02
13087 12 0.8333 273 71.611539615520 4.2597184217e-02
13088 12 0.8333 274 71.888971779102 4.9135299913e-02
13089 12 0.8333 275 72.070197620406 1.0309322389e+00
13090 12 0.8333 276 72.383342321479 4.2768589645e-02
13091 12 0.8333 277 72.647956928863 4.2373661818e-02
13092 12 0.8333 278 72.912834588856 4.1950256265e-02
13093 12 0.8333 279 73.175087665583 4.1915168378e-02
13094 12 0.8333 280 73.438179841274 4.1809727596e-02
13095 12 0.8333 281 73.700727148252 4.1847973162e-02
13096 12 0.8333 282 73.963820106466 4.2078765201e-02
13097 12 0.8333 283 74.226511354157 4.1779607372e-02
13098 12 0.8333 284 74.490079863416 4.2206453308e-02
13099 12 0.8333 285 74.752778038486 4.2088562954e-02
13100 12 0.8333 286 75.017423138724 4.2174045640e-02
13101 12 0.8333 287 75.285633693169 4.3498592672e-02
13102 12 0.8333 288 75.588776001319 8.0615051308e-02
13103 12 0.8333 289 75.711012418359 9.9667965500e-01
13104 12 0.8333 290 76.044747165868 4.3404974776e-02
13105 12 0.8333 291 76.313141798768 4.2850249879e-02
13106 12 0.8333 292 76.579226581605 4.2099712531e-02
13107 12 0.8333 293 76.843936222466 4.2655790785e-02
13108 12 0.8333 294 77.142984704941 1.0379668776e+00
13109 12 0.8333 295 77.357544889353 4.4358971811e-02
13110 12 0.8333 296 77.624873062551 4.2283900828e-02
13111 12 0.8333 297 77.889988172665 4.2089859179e-02
13112 12 0.8333 298 78.153278699870 4.2083216561e-02
13113 12 0.8333 299 78.417506525197 4.2117287021e-02
13114 12 0.8333 300 78.683746366480 4.2741050793e-02
13115 12 0.8333 301 78.952314812194 4.3874468807e-02
13116 12 0.8333 302 79.292748158026 3.2642139028e-01
13117 12 0.8333 303 79.355929710403 7.4924371878e-01
13118 12 0.8333 304 79.704431463565 4.3629722437e-02
13119 12 0.8333 305 79.973889521775 4.2813960244e-02
13120 12 0.8333 306 80.239170036426 4.1950210058e-02
13121 12 0.8333 307 80.502046124885 4.2550790512e-02
13122 12 0.8333 308 80.766325578220 4.1823041832e-02
13123 12 0.8333 309 81.028602815622 4.1921444270e-02
13124 12 0.8333 310 81.291665209211 4.2476806060e-02
13125 12 0.8333 311 81.554323765127 4.1772480618e-02
13126 12 0.8333 312 81.817449395932 4.1948769260e-02
13127 12 0.8333 313 82.080357170786 4.1912087001e-02
13128 12 0.8333 314 82.342933605600 4.1805202270e-02
13129 12 0.8333 315 82.608885623327 4.3244851905e-02
13130 12 0.8333 316 82.908357687720 1.0369531877e+00
13131 12 0.8333 317 83.116730440789 4.4526509906e-02
13132 12 0.8333 318 83.385609221247 4.2265338847e-02
13133 12 0.8333 319 83.649386015963 4.2159547810e-02
13134 12 0.8333 320 83.912866439793 4.2100237558e-02
13135 12 0.8333 321 84.174900905807 4.2320846902e-02
13136 12 0.8333 322 84.439658714464 4.2422306415e-02
13137 12 0.8333 323 84.733932697215 1.0389902021e+00
13138 12 0.8333 324 84.953846645690 4.3143984040e-02
13139 12 0.8333 325 85.221224943430 4.2189347853e-02
13140 12 0.8333 326 85.484198766631 4.1931312961e-02
13141 12 0.8333 327 85.748274775552 4.2167821407e-02
13142 12 0.8333 328 86.010979938476 4.1964190666e-02
13143 12 0.8333 329 86.274402242662 4.2001470850e-02
13144 12 0.8333 330 86.537840197329 4.2849776275e-02
13145 12 0.8333 331 86.803381070783 4.2231508950e-02
13146 12 0.8333 332 87.072260185573 4.3770387118e-02
13147 12 0.8333 333 87.415593663884 9.4179014589e-01
13148 12 0.8333 334 87.507569945227 1.3490837903e-01
13149 12 0.8333 335 87.827668838661 4.4343189982e-02
13150 12 0.8333 336 88.098749531526 4.3340072333e-02
13151 12 0.8333 337 88.367320828751 4.3311453057e-02
13152 12 0.8333 338 88.655138730554 5.6758355191e-02
13153 12 0.8333 339 88.813218418904 1.0222243844e+00
13154 12 0.8333 340 89.136417383582 4.3551445994e-02
13155 12 0.8333 341 89.403672293281 4.2100442429e-02
13156 12 0.8333 342 89.667278487532 4.2107556132e-02
13157 12 0.8333 343 89.930425665759 4.2758700150e-02
13158 12 0.8333 344 90.194520434761 4.1830207395e-02
13159 12 0.8333 345 90.456442689406 4.2211030542e-02
13160 12 0.8333 346 90.720436111455 4.1841135230e-02
13161 12 0.8333 347 90.982200370133 4.1814154627e-02
13162 12 0.8333 348 91.245682868828 4.3030666516e-02
13163 12 0.8333 349 91.508643309844 4.2013332095e-02
13164 12 0.8333 350 91.772086510202 4.2230082144e-02
13165 12 0.8333 351 92.037733723076 4.2432230917e-02
13166 12 0.8333 352 92.314519908706 4.9880968830e-02
13167 12 0.8333 353 92.495067023821 1.0304640437e+00
13168 12 0.8333 354 92.806002863122 4.3296658790e-02
13169 12 0.8333 355 93.072812245806 4.2313550352e-02
13170 12 0.8333 356 93.337003092467 4.2183473095e-02
13171 12 0.8333 357 93.600019977607 4.1779115871e-02
13172 12 0.8333 358 93.864453961143 4.2320004395e-02
13173 12 0.8333 359 94.125410715141 4.1850661256e-02
13174 12 0.8333 360 94.391123763190 4.2470590706e-02
13175 12 0.8333 361 94.651307231221 1.0422839705e+00
13176 12 0.8333 362 94.915195682193 4.2120303252e-02
13177 12 0.8333 363 95.179635217355 4.2387883480e-02
13178 12 0.8333 364 95.448582789726 4.3828073410e-02
13179 12 0.8333 365 95.743759855192 7.2630857522e-02
13180 12 0.8333 366 95.876298499090 1.0057196097e+00
13181 12 0.8333 367 96.206958058958 4.3536814045e-02
13182 12 0.8333 368 96.474984664043 4.2221221477e-02
13183 12 0.8333 369 96.739022889758 4.2293872533e-02
13184 12 0.8333 370 97.002720356008 4.1812028284e-02
13185 12 0.8333 371 97.265981208944 4.2088335566e-02
13186 12 0.8333 372 97.526464390919 4.3014388041e-02
13187 12 0.8333 373 97.791393289098 4.1730544295e-02
13188 12 0.8333 374 98.053933427299 4.1995327013e-02
13189 12 0.8333 375 98.316568200331 4.2074454489e-02
13190 12 0.8333 376 98.578325726852 4.2858548985e-02
13191 12 0.8333 377 98.831562664138 1.0419529991e+00
13192 12 0.8333 378 99.101358247368 4.1870571723e-02
13193 12 0.8333 379 99.366451305009 4.2118611376e-02
13194 12 0.8333 380 99.628287915370 4.1909483765e-02
13195 12 0.8333 381 99.892340565114 4.3189426441e-02
13196 12 0.8333 382 100.153691804603 4.2234598589e-02
13197 12 0.8333 383 100.417462625901 4.3921850645e-02
13198 12 0.8333 384 100.683474316544 4.2629940571e-02
13199 12 0.8333 385 100.953994815207 4.3772368237e-02
13200 12 0.8333 386 101.301406381082 7.9796504867e-01
13201 12 0.8333 387 101.368192334910 2.7780307708e-01
13202 12 0.8333 388 101.706102181404 4.3843431210e-02
13203 12 0.8333 389 101.975701366127 4.2987204482e-02
13204 12 0.8333 390 102.241023350774 4.2046204542e-02
13205 12 0.8333 391 102.505032798791 4.2479195246e-02
13206 12 0.8333 392 102.770125704932 4.2105709786e-02
13207 12 0.8333 393 103.035470188492 4.2890468234e-02
13208 12 0.8333 394 103.300967748667 4.4666926029e-02
13209 12 0.8333 395 103.602774760894 7.5207947897e-02
13210 12 0.8333 396 103.731403616344 1.0025588010e+00
13211 12 0.8333 397 104.064741118827 4.3898860251e-02
13212 12 0.8333 398 104.334024058836 4.3693875632e-02
13213 12 0.8333 399 104.596850266159 4.2609261958e-02
13214 12 0.8333 400 104.862612425817 4.2558968340e-02
13215 12 0.8333 401 105.129584399366 4.2847588854e-02
13216 12 0.8333 402 105.443544490168 1.0311632843e+00
13217 12 0.8333 403 105.625171172238 4.9266194171e-02
13218 12 0.8333 404 105.901031578530 4.4096348265e-02
13219 12 0.8333 405 106.167157877002 4.2524031225e-02
13220 12 0.8333 406 106.433331456008 4.2489529153e-02
13221 12 0.8333 407 106.698735839324 4.3764992754e-02
13222 12 0.8333 408 106.965421899388 4.5409171896e-02
13223 12 0.8333 409 107.170811676344 1.0364973782e+00
13224 12 0.8333 410 107.473127168063 4.2845059644e-02
13225 12 0.8333 411 107.739076211129 4.2534786211e-02
13226 12 0.8333 412 108.003262551045 4.1941920543e-02
13227 12 0.8333 413 108.263812060277 4.3783029940e-02
13228 12 0.8333 414 108.527528044399 4.1895145926e-02
13229 12 0.8333 415 108.790936872465 4.2302649519e-02
13230 12 0.8333 416 109.052660306077 4.2304833715e-02
13231 12 0.8333 417 109.318151008957 4.1938732922e-02
13232 12 0.8333 418 109.580428966889 4.2079949292e-02
13233 12 0.8333 419 109.844104733115 4.2180109021e-02
13234 12 0.8333 420 110.106891111780 4.4045348916e-02
13235 12 0.8333 421 110.371771138496 4.3394224693e-02
13236 12 0.8333 422 110.644969972598 4.5178016329e-02
13237 12 0.8333 423 110.979686630310 2.8610232990e-01
13238 12 0.8333 424 111.046459082115 7.9063656342e-01
13239 12 0.8333 425 111.398075285943 4.4501935822e-02
13240 12 0.8333 426 111.675674122823 4.6890180966e-02
13241 12 0.8333 427 111.877082659369 1.0356579581e+00
13242 12 0.8333 428 112.183560229422 4.3071695797e-02
13243 12 0.8333 429 112.450433000678 4.2593106655e-02
13244 12 0.8333 430 112.715493673094 4.2773075897e-02
13245 12 0.8333 431 112.973110543172 4.2785168450e-02
13246 12 0.8333 432 113.238468534128 4.2925101273e-02
13247 12 0.8333 433 113.501607926061 4.2192291744e-02
13248 12 0.8333 434 113.766992556017 4.2521432674e-02
13249 12 0.8333 435 114.030813979326 4.2191235444e-02
13250 12 0.8333 436 114.318959785192 1.0401631209e+00
13251 12 0.8333 437 114.552152898403 4.4323716344e-02
13252 12 0.8333 438 114.811368159963 4.2925471189e-02
13253 12 0.8333 439 115.076533733918 4.2203113601e-02
13254 12 0.8333 440 115.343358251578 4.2714455408e-02
13255 12 0.8333 441 115.609123188604 4.4762800592e-02
13256 12 0.8333 442 115.874597795101 4.4395709379e-02
13257 12 0.8333 443 116.217555306809 9.5238925342e-01
13258 12 0.8333 444 116.313479001899 1.2456370696e-01
13259 12 0.8333 445 116.634669481998 4.4960973694e-02
13260 12 0.8333 446 116.897653914914 4.3657013406e-02
13261 12 0.8333 447 117.162292087309 4.2744636927e-02
13262 12 0.8333 448 117.427228572215 4.1718012536e-02
13263 12 0.8333 449 117.690751981362 4.2813482959e-02
13264 12 0.8333 450 117.957716577048 4.3912482596e-02
13265 12 0.8333 451 118.216762898940 4.3431674933e-02
13266 12 0.8333 452 118.482160445050 4.3152298983e-02
13267 12 0.8333 453 118.788458038497 1.0352925754e+00
13268 12 0.8333 454 118.988353763038 4.6040533711e-02
13269 12 0.8333 455 119.259578609443 4.2518859919e-02
13270 12 0.8333 456 119.521411389046 4.5517956605e-02
13271 12 0.8333 457 119.786422179000 4.2442906476e-02
13272 12 0.8333 458 120.047436803243 4.2195365726e-02
13273 12 0.8333 459 120.309855300649 4.1879335710e-02
13274 12 0.8333 460 120.572845281952 4.2339370238e-02
13275 12 0.8333 461 120.836475622359 4.1663457326e-02
13276 12 0.8333 462 121.097101906500 4.2436680191e-02
13277 12 0.8333 463 121.369774472682 1.0415164197e+00
13278 12 0.8333 464 121.622790746970 4.2478320720e-02
13279 12 0.8333 465 121.882428088012 4.4951650202e-02
13280 12 0.8333 466 122.148818158248 4.2350523865e-02
13281 12 0.8333 467 122.409361432171 4.2693836920e-02
13282 12 0.8333 468 122.672987331050 4.2427396957e-02
13283 12 0.8333 469 122.946164054099 1.0453133089e+00
13284 12 0.8333 470 123.196738689349 4.2511474103e-02
13285 12 0.8333 471 123.459189014862 4.1469536196e-02
13286 12 0.8333 472 123.724305169679 4.4719097258e-02
13287 12 0.8333 473 123.979799347712 4.2768876848e-02
13288 12 0.8333 474 124.256231741360 1.0413235609e+00
13289 12 0.8333 475 124.505851739204 4.3372485305e-02
13290 12 0.8333 476 124.767104484080 4.1888091385e-02
13291 12 0.8333 477 125.030846976389 4.1843315276e-02
13292 12 0.8333 478 125.292448269902 4.2720393278e-02
13293 12 0.8333 479 125.556624336864 4.1646896963e-02
13294 12 0.8333 480 125.819857680560 4.2524186912e-02
13295 12 0.8333 481 126.078169701562 4.6817888122e-02
13296 12 0.8333 482 126.345380238082 4.1897178081e-02
13297 12 0.8333 483 126.614132886727 4.5552373131e-02
13298 12 0.8333 484 126.870837685803 4.3483255262e-02
13299 12 0.8333 485 127.142702813808 4.4230107969e-02
13300 12 0.8333 486 127.491789241292 6.1702464175e-01
13301 12 0.8333 487 127.550599963340 4.6007455240e-01
13302 12 0.8333 488 127.900539339437 4.6349253557e-02
13303 12 0.8333 489 128.160125440920 4.4193859921e-02
13304 12 0.8333 490 128.429832118022 4.3594022464e-02
13305 12 0.8333 491 128.695836778853 4.2512071659e-02
13306 12 0.8333 492 128.961980706187 4.3010589637e-02
13307 12 0.8333 493 129.230947747239 4.3778005037e-02
13308 12 0.8333 494 129.570945455478 9.7715808370e-01
13309 12 0.8333 495 129.681603726861 1.0513361640e-01
13310 12 0.8333 496 129.988051796757 4.4253874761e-02
13311 12 0.8333 497 130.258660495525 4.2549363275e-02
13312 12 0.8333 498 130.524462808381 4.3473130531e-02
13313 12 0.8333 499 130.789548984215 4.2820695266e-02
13314 12 0.8333 500 131.085973207817 1.0387934797e+00
13315 12 0.8333 501 131.303385962884 4.4224821170e-02
13316 12 0.8333 502 131.572796177644 4.2705520795e-02
13317 12 0.8333 503 131.841393438291 4.7012847663e-02
13318 12 0.8333 504 132.096276909991 4.2767402344e-02
13319 12 0.8333 505 132.361525444234 4.2362213136e-02
13320 12 0.8333 506 132.627010149260 4.3022285550e-02
13321 12 0.8333 507 132.897703175226 4.6516321003e-02
13322 12 0.8333 508 133.158637791136 4.4684347322e-02
13323 12 0.8333 509 133.491628465981 9.9934999061e-01
13324 12 0.8333 510 133.617828496598 7.8597500206e-02
13325 12 0.8333 511 133.920470447254 4.3850824774e-02
13326 12 0.8333 512 134.191056479441 4.4135110508e-02
13327 12 0.8333 513 134.447315180392 4.7445226504e-02
13328 12 0.8333 514 134.754373189841 1.0376854194e+00
13329 12 0.8333 515 134.968451914518 4.9895897956e-02
13330 12 0.8333 516 135.232476114859 4.4206338855e-02
13331 12 0.8333 517 135.497156332535 4.2223256401e-02
13332 12 0.8333 518 135.760733210164 4.2402071072e-02
13333 12 0.8333 519 136.023157562824 4.3312829910e-02
13334 12 0.8333 520 136.288031605875 4.2302168782e-02
13335 12 0.8333 521 136.551187419841 4.2353683577e-02
13336 12 0.8333 522 136.819528054059 4.5551753944e-02
13337 12 0.8333 523 137.067804670865 4.3784542569e-02
13338 12 0.8333 524 137.332984548193 4.2469621389e-02
13339 12 0.8333 525 137.599066410135 4.2764827742e-02
13340 12 0.8333 526 137.859521721766 4.2743003458e-02
13341 12 0.8333 527 138.116286500385 1.0423392078e+00
13342 12 0.8333 528 138.386895566038 4.2527177332e-02
13343 12 0.8333 529 138.649806587485 4.8438383450e-02
13344 12 0.8333 530 138.909571348572 4.3352431870e-02
13345 12 0.8333 531 139.174130209114 4.1978181730e-02
13346 12 0.8333 532 139.435307255276 4.3037093583e-02
13347 12 0.8333 533 139.734638483983 1.0394870322e+00
13348 12 0.8333 534 139.951981778178 5.1810080583e-02
13349 12 0.8333 535 140.222933580438 4.2869665791e-02
13350 12 0.8333 536 140.490179491172 4.2863273589e-02
13351 12 0.8333 537 140.758218386578 4.3866654083e-02
13352 12 0.8333 538 141.106505647057 7.8141335837e-01
13353 12 0.8333 539 141.172104613366 2.9547803433e-01
13354 12 0.8333 540 141.510300679739 4.4964063783e-02
13355 12 0.8333 541 141.779969000499 5.0320439315e-02
13356 12 0.8333 542 142.047817101217 4.2477485012e-02
13357 12 0.8333 543 142.309124964488 4.2332520341e-02
13358 12 0.8333 544 142.574795870927 4.3596318346e-02
13359 12 0.8333 545 142.828680971915 4.8928988508e-02
13360 12 0.8333 546 143.111151630509 1.0428807394e+00
13361 12 0.8333 547 143.357480677543 4.1772268471e-02
13362 12 0.8333 548 143.621556302350 4.3017039368e-02
13363 12 0.8333 549 143.884688964295 4.2094465561e-02
13364 12 0.8333 550 144.147602885980 4.2711807488e-02
13365 12 0.8333 551 144.417627771403 4.9059619748e-02
13366 12 0.8333 552 144.669019565994 4.4246063649e-02
13367 12 0.8333 553 144.930720212771 4.1592811714e-02
13368 12 0.8333 554 145.198256362290 4.3525117778e-02
13369 12 0.8333 555 145.463076535486 5.0345375885e-02
13370 12 0.8333 556 145.724235365559 4.2769671474e-02
13371 12 0.8333 557 146.000291593564 1.0427688754e+00
13372 12 0.8333 558 146.243933874264 4.2678512731e-02
13373 12 0.8333 559 146.508671133143 5.1109726032e-02
13374 12 0.8333 560 146.775284207059 4.4789419216e-02
13375 12 0.8333 561 147.046656571854 4.3687722188e-02
13376 12 0.8333 562 147.395944829422 5.8274940660e-01
13377 12 0.8333 563 147.454787674586 4.9547127015e-01
13378 12 0.8333 564 147.799821965494 4.4277423678e-02
13379 12 0.8333 565 148.069531375658 4.3100298856e-02
13380 12 0.8333 566 148.334353184540 4.3052325203e-02
13381 12 0.8333 567 148.601272336871 4.2025754846e-02
13382 12 0.8333 568 148.864171016569 4.3878468578e-02
13383 12 0.8333 569 149.125407940507 4.3188605644e-02
13384 12 0.8333 570 149.391806405332 5.2844108773e-02
13385 12 0.8333 571 149.665532199686 4.4585057150e-02
13386 12 0.8333 572 150.009608987057 3.5921396106e-01
13387 12 0.8333 573 150.075284561614 7.2354280989e-01
13388 12 0.8333 574 150.407082656857 4.7236399822e-02
13389 12 0.8333 575 150.685359645629 4.4192773288e-02
13390 12 0.8333 576 150.926227923919 1.0428293929e+00
13391 12 0.8333 577 151.212017591711 4.3461031151e-02
13392 12 0.8333 578 151.486370931120 5.0222539522e-02
13393 12 0.8333 579 151.732828539155 4.3943264720e-02
13394 12 0.8333 580 151.998423603032 4.3739168303e-02
13395 12 0.8333 581 152.265061534443 4.3229472768e-02
13396 12 0.8333 582 152.530914611473 4.3740150176e-02
13397 12 0.8333 583 152.779501016570 5.1429274749e-02
13398 12 0.8333 584 153.025632116813 1.0416061820e+00
13399 12 0.8333 585 153.311054577697 4.3464460312e-02
13400 12 0.8333 586 153.575702065097 4.2115996675e-02
13401 12 0.8333 587 153.838143893968 4.3982733360e-02
13402 12 0.8333 588 154.102787777552 4.4461187750e-02
13403 12 0.8333 589 154.377128258561 4.8540185808e-02
13404 12 0.8333 590 154.614892175914 4.7067048062e-02
13405 12 0.8333 591 154.883999716147 4.3011900734e-02
13406 12 0.8333 592 155.154517132481 4.3522610909e-02
13407 12 0.8333 593 155.428308907223 5.0435169167e-02
13408 12 0.8333 594 155.672386682203 4.6112631418e-02
13409 12 0.8333 595 155.971811966130 6.6078729787e-02
13410 12 0.8333 596 156.117743840856 1.0164221339e+00
13411 12 0.8333 597 156.448510018721 4.3815764336e-02
13412 12 0.8333 598 156.715587222111 4.3412103385e-02
13413 12 0.8333 599 156.983952166284 4.3519749007e-02
13414 12 0.8333 600 157.258063092994 4.5554071569e-02
13415 12 0.8333 601 157.589076539793 9.8917745671e-01
13416 12 0.8333 602 157.700875113927 1.0265035408e-01
13417 12 0.8333 603 158.014471426572 4.5053022147e-02
13418 12 0.8333 604 158.281026253560 4.3675208816e-02
13419 12 0.8333 605 158.550111610658 4.4519073477e-02
13420 12 0.8333 606 158.847146567140 1.0477520345e+00
13421 12 0.8333 607 159.057506084414 4.8585625543e-02
13422 12 0.8333 608 159.324417348076 4.3231454346e-02
13423 12 0.8333 609 159.591595510530 4.2652158532e-02
13424 12 0.8333 610 159.855314796634 4.3206808593e-02
13425 12 0.8333 611 160.118876188062 4.2173682125e-02
13426 12 0.8333 612 160.383251597709 4.4101102193e-02
13427 12 0.8333 613 160.647031116213 4.1843838919e-02
13428 12 0.8333 614 160.900277973949 5.6343226628e-02
13429 12 0.8333 615 161.188065903317 1.0425277290e+00
13430 12 0.8333 616 161.431499943807 4.3180925557e-02
13431 12 0.8333 617 161.706733759385 5.7809778351e-02
13432 12 0.8333 618 161.955665704730 4.3376712647e-02
13433 12 0.8333 619 162.221134673312 4.3737305721e-02
13434 12 0.8333 620 162.492324836990 4.7778822809e-02
13435 12 0.8333 621 162.728985680842 5.3197454655e-02
13436 12 0.8333 622 163.029412082979 1.0406524854e+00
13437 12 0.8333 623 163.261534311339 4.4542899426e-02
13438 12 0.8333 624 163.524893271879 4.2375153072e-02
13439 12 0.8333 625 163.791472681434 4.3343535948e-02
13440 12 0.8333 626 164.057576620751 4.5242663754e-02
13441 12 0.8333 627 164.301848977170 5.6621915927e-02
13442 12 0.8333 628 164.578771871523 4.5682249485e-02
13443 12 0.8333 629 164.845348055495 4.3578381415e-02
13444 12 0.8333 630 165.112478992717 4.3871930071e-02
13445 12 0.8333 631 165.412674754112 7.5925220673e-02
13446 12 0.8333 632 165.542930373897 1.0039660690e+00
13447 12 0.8333 633 165.877630382069 4.5470264532e-02
13448 12 0.8333 634 166.158115379509 5.4407505873e-02
13449 12 0.8333 635 166.390599316422 4.8118977935e-02
13450 12 0.8333 636 166.664634980743 4.3431518839e-02
13451 12 0.8333 637 166.929599922173 4.3790165959e-02
13452 12 0.8333 638 167.185009916394 1.0442849265e+00
13453 12 0.8333 639 167.454674005906 4.2447272928e-02
13454 12 0.8333 640 167.720332068275 4.3715827324e-02
13455 12 0.8333 641 167.981106466783 4.3126769186e-02
13456 12 0.8333 642 168.242399897582 6.0778988051e-02
13457 12 0.8333 643 168.512708884540 4.3671396973e-02
13458 12 0.8333 644 168.786208227169 6.1948618645e-02
13459 12 0.8333 645 169.091227584657 1.0330841004e+00
13460 12 0.8333 646 169.275488717311 5.1759366809e-02
13461 12 0.8333 647 169.562441231938 4.5802899546e-02
13462 12 0.8333 648 169.904159640495 9.7804069003e-01
13463 12 0.8333 649 170.014972081625 1.0233576587e-01
13464 12 0.8333 650 170.342961932604 5.9701441935e-02
13465 12 0.8333 651 170.580454418728 4.6914813873e-02
13466 12 0.8333 652 170.849052907085 4.4301480160e-02
13467 12 0.8333 653 171.118731972535 4.3543961628e-02
13468 12 0.8333 654 171.381866960994 4.5121512123e-02
13469 12 0.8333 655 171.646789527629 4.3513584412e-02
13470 12 0.8333 656 171.928844026982 5.9079193132e-02
13471 12 0.8333 657 172.164290212309 4.6008056323e-02
13472 12 0.8333 658 172.431514299568 4.3375318987e-02
13473 12 0.8333 659 172.696722325172 4.3738671115e-02
13474 12 0.8333 660 172.966254236474 4.4194937362e-02
13475 12 0.8333 661 173.254816387366 6.5114921111e-02
13476 12 0.8333 662 173.414652016656 1.0394253814e+00
13477 12 0.8333 663 173.733664740530 4.5585165318e-02
13478 12 0.8333 664 173.999969793263 4.3974205152e-02
13479 12 0.8333 665 174.285967284350 6.4426826983e-02
13480 12 0.8333 666 174.527440713232 4.6949181597e-02
13481 12 0.8333 667 174.755798377345 1.0400201057e+00
13482 12 0.8333 668 175.046411680424 4.5467654400e-02
13483 12 0.8333 669 175.310957585770 4.3183190737e-02
13484 12 0.8333 670 175.577888906249 4.4316253813e-02
13485 12 0.8333 671 175.844862867191 4.3887298675e-02
13486 12 0.8333 672 176.113301629927 4.4100015594e-02
13487 12 0.8333 673 176.437124052669 1.0247449664e+00
13488 12 0.8333 674 176.595169052724 5.9308647504e-02
13489 12 0.8333 675 176.890327033455 6.6697629534e-02
13490 12 0.8333 676 177.145740540791 4.5120223621e-02
13491 12 0.8333 677 177.411910533375 4.3852715719e-02
13492 12 0.8333 678 177.675801578564 4.5535117349e-02
13493 12 0.8333 679 177.948671588373 4.6029744083e-02
13494 12 0.8333 680 178.225779093602 8.8484349208e-02
13495 12 0.8333 681 178.382523354018 1.0161061506e+00
13496 12 0.8333 682 178.715276197545 4.6001814204e-02
13497 12 0.8333 683 178.992276107281 4.5922669775e-02
13498 12 0.8333 684 179.225544787360 6.5603761683e-02
13499 12 0.8333 685 179.516173922455 4.5241195011e-02
13500 12 0.8333 686 179.845265479920 1.8088335506e-01
13501 12 0.8333 687 179.928772931115 9.0200199989e-01

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())