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 19 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
9002 12 0.1667 461 120.759986572491 4.2179014632e-02
9003 12 0.1667 462 121.029091538942 4.4378549251e-02
9004 12 0.1667 463 121.364004169253 9.9903742776e-01
9005 12 0.1667 464 121.489738596794 7.8825766858e-02
9006 12 0.1667 465 121.794768289409 4.6582631175e-02
9007 12 0.1667 466 122.060773531489 4.2818933704e-02
9008 12 0.1667 467 122.327699228717 4.3882647547e-02
9009 12 0.1667 468 122.598431462336 4.4226728257e-02
9010 12 0.1667 469 122.938635713414 9.7590671959e-01
9011 12 0.1667 470 123.044450259900 1.0539539704e-01
9012 12 0.1667 471 123.358035991050 4.3956260750e-02
9013 12 0.1667 472 123.633460897937 4.4172624945e-02
9014 12 0.1667 473 123.897842013504 4.6688440221e-02
9015 12 0.1667 474 124.246824098022 9.3893482980e-01
9016 12 0.1667 475 124.338745866808 1.3821519292e-01
9017 12 0.1667 476 124.658314535763 4.4654443922e-02
9018 12 0.1667 477 124.929810262315 4.2404866688e-02
9019 12 0.1667 478 125.196466227353 4.3051702897e-02
9020 12 0.1667 479 125.459569720608 4.1877076076e-02
9021 12 0.1667 480 125.724791430022 4.2397953592e-02
9022 12 0.1667 481 125.991701787885 4.6623425973e-02
9023 12 0.1667 482 126.248613339744 4.2258262588e-02
9024 12 0.1667 483 126.515765726376 4.2777827713e-02
9025 12 0.1667 484 126.770984214720 4.5590477898e-02
9026 12 0.1667 485 127.039888788779 4.2636682945e-02
9027 12 0.1667 486 127.309582357874 4.4960309220e-02
9028 12 0.1667 487 127.518735492879 1.0381134927e+00
9029 12 0.1667 488 127.821613587662 4.3293916724e-02
9030 12 0.1667 489 128.080121959021 4.6019633146e-02
9031 12 0.1667 490 128.349986460499 4.3014835619e-02
9032 12 0.1667 491 128.612747549357 4.2496154147e-02
9033 12 0.1667 492 128.878739471806 4.2827883608e-02
9034 12 0.1667 493 129.146611220262 4.3685062191e-02
9035 12 0.1667 494 129.445638208477 6.9938637815e-02
9036 12 0.1667 495 129.584421585087 1.0116938876e+00
9037 12 0.1667 496 129.905567155519 4.5579351332e-02
9038 12 0.1667 497 130.178155576940 4.2789974940e-02
9039 12 0.1667 498 130.447404281117 4.3713231094e-02
9040 12 0.1667 499 130.716635154759 4.4543940641e-02
9041 12 0.1667 500 131.067745728472 7.2480068624e-01
9042 12 0.1667 501 131.130504530868 3.5221087329e-01
9043 12 0.1667 502 131.474162915295 4.4200752941e-02
9044 12 0.1667 503 131.747356136917 4.4611562003e-02
9045 12 0.1667 504 132.001660335502 4.5981287937e-02
9046 12 0.1667 505 132.272855705196 4.2772523645e-02
9047 12 0.1667 506 132.540119723429 4.2950192975e-02
9048 12 0.1667 507 132.807746604958 4.3870118059e-02
9049 12 0.1667 508 133.065691625257 4.6641704556e-02
9050 12 0.1667 509 133.367779192576 7.2245452802e-02
9051 12 0.1667 510 133.503444224435 1.0067746749e+00
9052 12 0.1667 511 133.836297461189 4.4174189926e-02
9053 12 0.1667 512 134.108415337606 4.3805993357e-02
9054 12 0.1667 513 134.379322131242 5.0482739382e-02
9055 12 0.1667 514 134.732304040717 6.4413341229e-01
9056 12 0.1667 515 134.793337125348 4.3433937534e-01
9057 12 0.1667 516 135.129197029818 4.7889690227e-02
9058 12 0.1667 517 135.401175943070 4.3421645522e-02
9059 12 0.1667 518 135.669527478316 4.2797637033e-02
9060 12 0.1667 519 135.935629268341 4.3467049393e-02
9061 12 0.1667 520 136.198455527812 4.2259274145e-02
9062 12 0.1667 521 136.462076428882 4.2468946170e-02
9063 12 0.1667 522 136.727398248484 4.2830398308e-02
9064 12 0.1667 523 136.981610069355 4.7463550663e-02
9065 12 0.1667 524 137.252202497702 4.3045889043e-02
9066 12 0.1667 525 137.519322885526 4.2587912014e-02
9067 12 0.1667 526 137.785363987079 4.4599939978e-02
9068 12 0.1667 527 138.111533538982 1.0199210372e+00
9069 12 0.1667 528 138.265404517426 5.9928837155e-02
9070 12 0.1667 529 138.559758925335 4.7606417066e-02
9071 12 0.1667 530 138.816531303599 4.5693125975e-02
9072 12 0.1667 531 139.085940695118 4.3019420256e-02
9073 12 0.1667 532 139.358960861722 4.5479238403e-02
9074 12 0.1667 533 139.714061512294 6.8456572895e-01
9075 12 0.1667 534 139.777267742943 3.9676562709e-01
9076 12 0.1667 535 140.106208730984 4.6164355012e-02
9077 12 0.1667 536 140.380403962080 4.3028684302e-02
9078 12 0.1667 537 140.648495682999 4.3402345355e-02
9079 12 0.1667 538 140.923509072121 4.6384182450e-02
9080 12 0.1667 539 141.126108085446 1.0365571975e+00
9081 12 0.1667 540 141.433682552069 4.4173167889e-02
9082 12 0.1667 541 141.706182683762 4.8300947482e-02
9083 12 0.1667 542 141.957804550655 4.2985994455e-02
9084 12 0.1667 543 142.223720449824 4.3310757400e-02
9085 12 0.1667 544 142.492754069193 4.3396905015e-02
9086 12 0.1667 545 142.763063681649 5.1591940456e-02
9087 12 0.1667 546 143.102603584806 9.5330016827e-01
9088 12 0.1667 547 143.198511035238 1.2503952977e-01
9089 12 0.1667 548 143.520640348138 4.4212272980e-02
9090 12 0.1667 549 143.788040861906 4.2981733374e-02
9091 12 0.1667 550 144.055831274083 4.3159501151e-02
9092 12 0.1667 551 144.325074405640 4.4824762312e-02
9093 12 0.1667 552 144.573175771680 4.7941949897e-02
9094 12 0.1667 553 144.841613514548 4.3402588863e-02
9095 12 0.1667 554 145.114002231723 4.2931387991e-02
9096 12 0.1667 555 145.383155616268 4.8240493433e-02
9097 12 0.1667 556 145.637065420961 4.6287393689e-02
9098 12 0.1667 557 145.988144220310 8.8708798563e-01
9099 12 0.1667 558 146.067911490903 1.9258694115e-01
9100 12 0.1667 559 146.408503434607 4.9480554551e-02
9101 12 0.1667 560 146.662863974146 4.6110661023e-02
9102 12 0.1667 561 146.928922156084 4.2965281345e-02
9103 12 0.1667 562 147.199465165377 4.3562733676e-02
9104 12 0.1667 563 147.424290145675 1.0408791539e+00
9105 12 0.1667 564 147.714057182538 4.3157487455e-02
9106 12 0.1667 565 147.979875253389 4.2702637697e-02
9107 12 0.1667 566 148.244180578236 4.3002239847e-02
9108 12 0.1667 567 148.507155660820 4.1668677557e-02
9109 12 0.1667 568 148.772265859391 4.3501599950e-02
9110 12 0.1667 569 149.034981497003 4.4259094169e-02
9111 12 0.1667 570 149.309890876546 4.9462428277e-02
9112 12 0.1667 571 149.556553784433 4.4010503193e-02
9113 12 0.1667 572 149.828071745700 4.5009415680e-02
9114 12 0.1667 573 150.055241608998 1.0414289490e+00
9115 12 0.1667 574 150.331577712803 4.9750441704e-02
9116 12 0.1667 575 150.609086502018 4.3877643066e-02
9117 12 0.1667 576 150.922185768072 1.0334255317e+00
9118 12 0.1667 577 151.108461284548 5.0075768993e-02
9119 12 0.1667 578 151.389407139293 4.5065992000e-02
9120 12 0.1667 579 151.636317220323 4.9742021196e-02
9121 12 0.1667 580 151.911280236554 4.4041723203e-02
9122 12 0.1667 581 152.176090957945 4.2849512400e-02
9123 12 0.1667 582 152.439615638265 4.3076521996e-02
9124 12 0.1667 583 152.708911523784 5.3976205428e-02
9125 12 0.1667 584 153.021361938641 1.0304633196e+00
9126 12 0.1667 585 153.200814853350 5.1097873833e-02
9127 12 0.1667 586 153.477224236912 4.3051998649e-02
9128 12 0.1667 587 153.746025053632 4.3967461883e-02
9129 12 0.1667 588 154.009867932469 4.4020140797e-02
9130 12 0.1667 589 154.272238649707 4.3062592277e-02
9131 12 0.1667 590 154.523564043452 5.3638198466e-02
9132 12 0.1667 591 154.794879540999 4.3471775858e-02
9133 12 0.1667 592 155.061576122929 4.2070373311e-02
9134 12 0.1667 593 155.324927512181 4.4021546322e-02
9135 12 0.1667 594 155.572185949017 5.2269619673e-02
9136 12 0.1667 595 155.847955392792 4.3220661618e-02
9137 12 0.1667 596 156.112621487226 1.0442968179e+00
9138 12 0.1667 597 156.373206995605 4.1975661115e-02
9139 12 0.1667 598 156.636598342160 4.3302096177e-02
9140 12 0.1667 599 156.903103884703 4.3149156770e-02
9141 12 0.1667 600 157.172011804964 4.3820995037e-02
9142 12 0.1667 601 157.467873574016 7.8093747088e-02
9143 12 0.1667 602 157.602959964497 1.0155579659e+00
9144 12 0.1667 603 157.933046153077 4.4728905586e-02
9145 12 0.1667 604 158.202244554138 4.4789496094e-02
9146 12 0.1667 605 158.476951649947 4.5472042696e-02
9147 12 0.1667 606 158.825744549680 6.7081288092e-01
9148 12 0.1667 607 158.887873465420 4.1924952772e-01
9149 12 0.1667 608 159.228500714534 4.6447787637e-02
9150 12 0.1667 609 159.502761664336 4.3044733802e-02
9151 12 0.1667 610 159.769930429610 4.3435324621e-02
9152 12 0.1667 611 160.034240817347 4.2782526169e-02
9153 12 0.1667 612 160.302484964589 4.3779146790e-02
9154 12 0.1667 613 160.564648794027 4.2863728970e-02
9155 12 0.1667 614 160.844885834743 5.8130452289e-02
9156 12 0.1667 615 161.179346628420 9.5058242888e-01
9157 12 0.1667 616 161.276023005735 1.2897861531e-01
9158 12 0.1667 617 161.606956344823 4.9839249307e-02
9159 12 0.1667 618 161.844102366893 5.2044760142e-02
9160 12 0.1667 619 162.124876368817 4.4387189241e-02
9161 12 0.1667 620 162.394772113008 4.4724893067e-02
9162 12 0.1667 621 162.658584985047 6.0219403358e-02
9163 12 0.1667 622 163.012292633892 7.6282847048e-01
9164 12 0.1667 623 163.077763238978 3.1468324203e-01
9165 12 0.1667 624 163.416811306002 4.5415038229e-02
9166 12 0.1667 625 163.691157110916 4.3195027064e-02
9167 12 0.1667 626 163.957291094713 4.4120565924e-02
9168 12 0.1667 627 164.227569733213 5.8575033598e-02
9169 12 0.1667 628 164.483829339832 4.4461194246e-02
9170 12 0.1667 629 164.742647072827 4.3370895745e-02
9171 12 0.1667 630 165.006349598330 4.3118756150e-02
9172 12 0.1667 631 165.272243019208 4.3011602983e-02
9173 12 0.1667 632 165.536926668005 1.0431269928e+00
9174 12 0.1667 633 165.800636682960 4.3444320926e-02
9175 12 0.1667 634 166.067949597113 4.5980325010e-02
9176 12 0.1667 635 166.307242397395 5.7271678861e-02
9177 12 0.1667 636 166.586147716732 4.3604067779e-02
9178 12 0.1667 637 166.855788332175 4.4957050728e-02
9179 12 0.1667 638 167.180146074039 1.0216459851e+00
9180 12 0.1667 639 167.333960441123 6.0845565973e-02
9181 12 0.1667 640 167.626959631612 4.4244065414e-02
9182 12 0.1667 641 167.894303005344 4.4869924608e-02
9183 12 0.1667 642 168.177485121770 5.8106912127e-02
9184 12 0.1667 643 168.422297564576 4.5828081059e-02
9185 12 0.1667 644 168.710468362861 5.6330265791e-02
9186 12 0.1667 645 168.996650045535 1.2449320133e-01
9187 12 0.1667 646 169.103795962217 9.6187495577e-01
9188 12 0.1667 647 169.452395919817 4.5559222942e-02
9189 12 0.1667 648 169.740146774312 5.4624824394e-02
9190 12 0.1667 649 169.915782763550 1.0289757168e+00
9191 12 0.1667 650 170.241175858463 4.7663021283e-02
9192 12 0.1667 651 170.477997333983 5.8592300185e-02
9193 12 0.1667 652 170.760048355324 4.5299571856e-02
9194 12 0.1667 653 171.028232839419 4.2969070495e-02
9195 12 0.1667 654 171.293531519956 4.4978143348e-02
9196 12 0.1667 655 171.556389873310 4.4088087993e-02
9197 12 0.1667 656 171.829680969129 4.6358626540e-02
9198 12 0.1667 657 172.058827246907 5.7322700169e-02
9199 12 0.1667 658 172.336944967281 4.4175738459e-02
9200 12 0.1667 659 172.604822205513 4.3793429515e-02
9201 12 0.1667 660 172.870616687795 4.3158443996e-02
9202 12 0.1667 661 173.140055915587 4.6204101628e-02
9203 12 0.1667 662 173.409343571996 1.0601603118e+00
9204 12 0.1667 663 173.649600698223 4.5839933459e-02
9205 12 0.1667 664 173.918367188677 4.5171274108e-02
9206 12 0.1667 665 174.200792287350 5.0637564948e-02
9207 12 0.1667 666 174.423266670767 5.7774243227e-02
9208 12 0.1667 667 174.751208911667 1.0331914112e+00
9209 12 0.1667 668 174.942069372395 5.1970877882e-02
9210 12 0.1667 669 175.217893659451 4.4788608446e-02
9211 12 0.1667 670 175.489191718107 4.4002931535e-02
9212 12 0.1667 671 175.753997556154 4.3791869561e-02
9213 12 0.1667 672 176.022286236353 4.4536732109e-02
9214 12 0.1667 673 176.332061220572 9.1854815950e-02
9215 12 0.1667 674 176.448674544047 9.9078288402e-01
9216 12 0.1667 675 176.801474778071 5.5987823083e-02
9217 12 0.1667 676 177.029031273482 5.3994634814e-02
9218 12 0.1667 677 177.307903053208 4.4842308421e-02
9219 12 0.1667 678 177.578366399897 4.5701004391e-02
9220 12 0.1667 679 177.844652685917 4.4368396149e-02
9221 12 0.1667 680 178.125771120932 6.2003063381e-02
9222 12 0.1667 681 178.376265066778 1.0462548856e+00
9223 12 0.1667 682 178.622049959801 4.4311842403e-02
9224 12 0.1667 683 178.885252827133 4.2897592122e-02
9225 12 0.1667 684 179.158988032526 6.9340429865e-02
9226 12 0.1667 685 179.414021737647 4.3104754804e-02
9227 12 0.1667 686 179.683339946676 4.5457574566e-02
9228 12 0.1667 687 179.917563009866 1.0440155445e+00
9229 12 0.1667 688 180.202849360575 4.2781431549e-02
9230 12 0.1667 689 180.467892424644 4.5262262234e-02
9231 12 0.1667 690 180.748981992276 5.2971505606e-02
9232 12 0.1667 691 180.962478229132 5.9580885663e-02
9233 12 0.1667 692 181.250652315347 4.6599434735e-02
9234 12 0.1667 693 181.495180390589 6.8323493980e-02
9235 12 0.1667 694 181.780847667209 4.8532336549e-02
9236 12 0.1667 695 182.082016007060 7.6307251705e-02
9237 12 0.1667 696 182.213067566115 1.0046590140e+00
9238 12 0.1667 697 182.546317761816 4.5044928028e-02
9239 12 0.1667 698 182.818970687053 4.6783256612e-02
9240 12 0.1667 699 183.081515112632 4.3804714620e-02
9241 12 0.1667 700 183.344323914310 4.4823428323e-02
9242 12 0.1667 701 183.614962793075 4.3587939027e-02
9243 12 0.1667 702 183.896402251566 5.7519828304e-02
9244 12 0.1667 703 184.106851811896 5.6723959762e-02
9245 12 0.1667 704 184.398856506283 4.7840139927e-02
9246 12 0.1667 705 184.669173235911 4.8142985259e-02
9247 12 0.1667 706 184.877037928343 1.0381129703e+00
9248 12 0.1667 707 185.190233139410 4.7874734822e-02
9249 12 0.1667 708 185.474994735273 1.2423284161e-01
9250 12 0.1667 709 185.606912929137 9.8672210543e-01
9251 12 0.1667 710 185.946589779371 4.6020963370e-02
9252 12 0.1667 711 186.218398374611 4.6169961217e-02
9253 12 0.1667 712 186.502262434357 5.4082088381e-02
9254 12 0.1667 713 186.715293015650 6.5402021581e-02
9255 12 0.1667 714 187.003252597525 4.4606952815e-02
9256 12 0.1667 715 187.230697176522 1.0420770782e+00
9257 12 0.1667 716 187.525108016315 4.3977702836e-02
9258 12 0.1667 717 187.795080278891 4.4249357831e-02
9259 12 0.1667 718 188.060627423317 4.4482055775e-02
9260 12 0.1667 719 188.347942281100 7.2336844360e-02
9261 12 0.1667 720 188.567124076997 4.9634293808e-02
9262 12 0.1667 721 188.838798721602 4.4778136038e-02
9263 12 0.1667 722 189.111961653154 4.5554382238e-02
9264 12 0.1667 723 189.413824609652 1.0397789512e+00
9265 12 0.1667 724 189.647243377500 7.5298994279e-02
9266 12 0.1667 725 189.878491996806 4.9446925294e-02
9267 12 0.1667 726 190.143761877347 4.5397651023e-02
9268 12 0.1667 727 190.412845276633 4.5572761973e-02
9269 12 0.1667 728 190.697481649524 7.6641633671e-02
9270 12 0.1667 729 190.930342868307 4.7826376096e-02
9271 12 0.1667 730 191.195637032963 4.5160307047e-02
9272 12 0.1667 731 191.463293465561 4.4073330158e-02
9273 12 0.1667 732 191.732273445013 4.6121322056e-02
9274 12 0.1667 733 192.025653802227 1.0492692507e+00
9275 12 0.1667 734 192.216370030394 7.2203889239e-02
9276 12 0.1667 735 192.504520559681 4.8899160705e-02
9277 12 0.1667 736 192.775874230510 4.5066739901e-02
9278 12 0.1667 737 193.077678442704 1.0388922893e+00
9279 12 0.1667 738 193.292552829879 4.8764013899e-02
9280 12 0.1667 739 193.555316152808 4.5532444154e-02
9281 12 0.1667 740 193.822469067375 4.7318672342e-02
9282 12 0.1667 741 194.092628710408 4.6805311891e-02
9283 12 0.1667 742 194.378848597949 7.5752592649e-02
9284 12 0.1667 743 194.601815265070 5.0048425697e-02
9285 12 0.1667 744 194.881288309538 4.6894665584e-02
9286 12 0.1667 745 195.226408503843 4.1154652384e-01
9287 12 0.1667 746 195.288684650862 6.6930398778e-01
9288 12 0.1667 747 195.639177178835 4.6911430089e-02
9289 12 0.1667 748 195.916133265737 4.4903864463e-02
9290 12 0.1667 749 196.180909120061 9.0272719949e-02
9291 12 0.1667 750 196.457021347755 4.8208954350e-02
9292 12 0.1667 751 196.783264634475 1.4296672202e-01
9293 12 0.1667 752 196.890397491050 9.6853090372e-01
9294 12 0.1667 753 197.181847540711 5.6122465816e-02
9295 12 0.1667 754 197.472315954565 4.5907370549e-02
9296 12 0.1667 755 197.735199155276 4.8884447752e-02
9297 12 0.1667 756 198.013761051870 1.0871868479e+00
9298 12 0.1667 757 198.263741933862 4.5962284246e-02
9299 12 0.1667 758 198.532718418343 4.5922867060e-02
9300 12 0.1667 759 198.794693492420 4.6904699391e-02
9301 12 0.1667 760 199.056070225361 4.2411111332e-02
9302 12 0.1667 761 199.322589638243 4.5077830631e-02
9303 12 0.1667 762 199.586311711610 4.6651102289e-02
9304 12 0.1667 763 199.855416033052 4.6189158163e-02
9305 12 0.1667 764 200.143989690639 8.6693401007e-02
9306 12 0.1667 765 200.358457754883 5.1415601342e-02
9307 12 0.1667 766 200.645432322255 4.6052593922e-02
9308 12 0.1667 767 200.928851542343 5.4291659565e-02
9309 12 0.1667 768 201.220935768530 5.2122849504e-01
9310 12 0.1667 769 201.294853686391 6.0015480632e-01
9311 12 0.1667 770 201.655794254027 4.9809987983e-02
9312 12 0.1667 771 201.927975143916 4.7173816711e-02
9313 12 0.1667 772 202.196509476275 4.3358560118e-02
9314 12 0.1667 773 202.492009090301 1.0451943976e+00
9315 12 0.1667 774 202.711689932820 4.6774566760e-02
9316 12 0.1667 775 202.983808904087 4.4581617779e-02
9317 12 0.1667 776 203.250604679909 9.9319144072e-02
9318 12 0.1667 777 203.510389474248 4.7845739705e-02
9319 12 0.1667 778 203.790272189004 4.8015368091e-02
9320 12 0.1667 779 204.116732667839 1.7584331434e-01
9321 12 0.1667 780 204.202078959720 9.0625919764e-01
9322 12 0.1667 781 204.575081008421 9.8183554180e-02
9323 12 0.1667 782 204.801289143962 5.0128672015e-02
9324 12 0.1667 783 205.078535190117 4.7161112746e-02
9325 12 0.1667 784 205.391825152890 1.0372218708e+00
9326 12 0.1667 785 205.588955738481 5.0386584143e-02
9327 12 0.1667 786 205.866849929916 4.6868480926e-02
9328 12 0.1667 787 206.162727614589 7.5221256901e-02
9329 12 0.1667 788 206.349908014132 7.1017581174e-02
9330 12 0.1667 789 206.639069478490 4.6505165347e-02
9331 12 0.1667 790 206.911662902867 4.6466262887e-02
9332 12 0.1667 791 207.174033008293 4.4504376942e-02
9333 12 0.1667 792 207.443765791955 4.6395376782e-02
9334 12 0.1667 793 207.692664116233 1.0939404109e-01
9335 12 0.1667 794 207.909025004938 1.0372997334e+00
9336 12 0.1667 795 208.220690284786 4.7272699183e-02
9337 12 0.1667 796 208.466838114896 1.0811277919e-01
9338 12 0.1667 797 208.743911152909 4.5961970521e-02
9339 12 0.1667 798 209.009169991397 4.9488789608e-02
9340 12 0.1667 799 209.280490802572 4.6870427422e-02
9341 12 0.1667 800 209.574937608806 1.0443713119e+00
9342 12 0.1667 801 209.830901518604 7.4043693163e-02
9343 12 0.1667 802 210.012442489370 8.0277683337e-02
9344 12 0.1667 803 210.310514633148 4.5948068150e-02
9345 12 0.1667 804 210.574701154223 4.5916290243e-02
9346 12 0.1667 805 210.844852743920 4.5464402043e-02
9347 12 0.1667 806 211.115279686477 5.0322232534e-02
9348 12 0.1667 807 211.375835930388 4.6169880282e-02
9349 12 0.1667 808 211.687704924802 1.0361028405e+00
9350 12 0.1667 809 211.879273315360 5.2993482866e-02
9351 12 0.1667 810 212.154817059111 4.7192693964e-02
9352 12 0.1667 811 212.421434921287 4.5485609034e-02
9353 12 0.1667 812 212.708895071036 6.2876743163e-02
9354 12 0.1667 813 212.910611835469 1.0185384162e-01
9355 12 0.1667 814 213.274384558142 2.1467543417e-01
9356 12 0.1667 815 213.358900803876 9.3983625711e-01
9357 12 0.1667 816 213.705230478287 5.1106281989e-02
9358 12 0.1667 817 213.983535938074 4.7145664593e-02
9359 12 0.1667 818 214.243827470722 4.6397809726e-02
9360 12 0.1667 819 214.545365611382 1.0424633895e+00
9361 12 0.1667 820 214.768221791660 4.7388619365e-02
9362 12 0.1667 821 215.044858301477 1.2053781548e-01
9363 12 0.1667 822 215.301433460449 4.5981152628e-02
9364 12 0.1667 823 215.566166177180 4.7169016635e-02
9365 12 0.1667 824 215.838051407683 5.1172049961e-02
9366 12 0.1667 825 216.164573635126 1.0185631082e+00
9367 12 0.1667 826 216.332072947744 1.4645963635e-01
9368 12 0.1667 827 216.593871701406 4.8110439877e-02
9369 12 0.1667 828 216.866966723138 4.7394613390e-02
9370 12 0.1667 829 217.137237952311 4.7435541614e-02
9371 12 0.1667 830 217.408138080486 4.6953654515e-02
9372 12 0.1667 831 217.695982880859 7.3827986291e-02
9373 12 0.1667 832 217.872740554848 9.8017878952e-02
9374 12 0.1667 833 218.176760819106 4.7992492729e-02
9375 12 0.1667 834 218.452029501571 4.7380253137e-02
9376 12 0.1667 835 218.715899076200 4.9172467395e-02
9377 12 0.1667 836 219.060816511489 1.0059672924e+00
9378 12 0.1667 837 219.214956203807 1.0029064782e-01
9379 12 0.1667 838 219.430138609781 1.0654018387e-01
9380 12 0.1667 839 219.726206217418 5.3240814304e-02
9381 12 0.1667 840 220.012800774188 4.8756164449e-02
9382 12 0.1667 841 220.274550170500 5.1822493113e-02
9383 12 0.1667 842 220.577293727937 7.6106790279e-02
9384 12 0.1667 843 220.722177513361 1.0983097465e+00
9385 12 0.1667 844 221.053907816764 5.0147281733e-02
9386 12 0.1667 845 221.413523910427 8.0679042841e-01
9387 12 0.1667 846 221.485008560298 2.8214795823e-01
9388 12 0.1667 847 221.823133274793 4.9452338455e-02
9389 12 0.1667 848 222.091930163626 4.7793790549e-02
9390 12 0.1667 849 222.354032457097 5.2356186877e-02
9391 12 0.1667 850 222.627798341864 4.5576716528e-02
9392 12 0.1667 851 222.884924906322 4.7589913904e-02
9393 12 0.1667 852 223.174982335451 1.3881079565e-01
9394 12 0.1667 853 223.418901293369 4.6604379061e-02
9395 12 0.1667 854 223.688670876461 4.9281982782e-02
9396 12 0.1667 855 224.005073459917 1.0770366536e+00
9397 12 0.1667 856 224.146395394528 1.0565064860e-01
9398 12 0.1667 857 224.451952957888 4.7780298681e-02
9399 12 0.1667 858 224.729020513788 5.1519555531e-02
9400 12 0.1667 859 224.983301892129 1.0499844910e+00
9401 12 0.1667 860 225.257783242107 4.9658732068e-02
9402 12 0.1667 861 225.476921150532 1.3994367656e-01
9403 12 0.1667 862 225.771928030335 5.4972459778e-02
9404 12 0.1667 863 226.039705705433 4.6678914128e-02
9405 12 0.1667 864 226.323931859865 5.9325148631e-02
9406 12 0.1667 865 226.512339300640 1.3218013756e-01
9407 12 0.1667 866 226.826251963053 5.1010978507e-02
9408 12 0.1667 867 227.084930606940 5.0409802572e-02
9409 12 0.1667 868 227.416587595405 1.0265534018e+00
9410 12 0.1667 869 227.572946654604 6.5712570637e-02
9411 12 0.1667 870 227.866481700829 4.9087615611e-02
9412 12 0.1667 871 228.143883476019 5.7876176141e-02
9413 12 0.1667 872 228.356964258980 1.4729416803e-01
9414 12 0.1667 873 228.655389256762 5.0315150566e-02
9415 12 0.1667 874 228.934248715933 5.2651322525e-02
9416 12 0.1667 875 229.240697432388 1.2620098356e-01
9417 12 0.1667 876 229.346830025883 9.6415700644e-01
9418 12 0.1667 877 229.693923631782 5.0049546068e-02
9419 12 0.1667 878 229.961654461522 4.8274716797e-02
9420 12 0.1667 879 230.256310482101 6.3762033051e-02
9421 12 0.1667 880 230.438223303912 1.4297824578e-01
9422 12 0.1667 881 230.738493939588 5.0245045632e-02
9423 12 0.1667 882 231.010534370316 5.2218666432e-02
9424 12 0.1667 883 231.251526064076 1.0471983118e+00
9425 12 0.1667 884 231.544389840116 5.1608883064e-02
9426 12 0.1667 885 231.858595942336 1.0560066991e-01
9427 12 0.1667 886 231.990102852319 1.1052020967e+00
9428 12 0.1667 887 232.320946044699 5.1122635453e-02
9429 12 0.1667 888 232.621568173946 8.0486782934e-02
9430 12 0.1667 889 232.788119736373 1.3450155323e-01
9431 12 0.1667 890 233.095091237187 5.0600961342e-02
9432 12 0.1667 891 233.368790141046 5.0148666706e-02
9433 12 0.1667 892 233.689378440683 1.0328041340e+00
9434 12 0.1667 893 233.865481510387 6.2057724540e-02
9435 12 0.1667 894 234.144301861237 4.7512338615e-02
9436 12 0.1667 895 234.409797859838 4.8613809256e-02
9437 12 0.1667 896 234.684078208853 5.2909926801e-02
9438 12 0.1667 897 234.905229308541 1.7474680843e-01
9439 12 0.1667 898 235.194608022004 5.1148186468e-02
9440 12 0.1667 899 235.465500576347 4.8410719087e-02
9441 12 0.1667 900 235.732268890624 5.3863339174e-02
9442 12 0.1667 901 236.044671802329 1.6804727008e-01
9443 12 0.1667 902 236.230425388311 6.0958214242e-02
9444 12 0.1667 903 236.523698513462 1.0494988222e+00
9445 12 0.1667 904 236.824888852057 1.6084529251e-01
9446 12 0.1667 905 236.996506488762 6.8411458010e-02
9447 12 0.1667 906 237.287024933787 5.5225820668e-02
9448 12 0.1667 907 237.565423800602 5.3574349368e-02
9449 12 0.1667 908 237.772174340894 1.0417227417e+00
9450 12 0.1667 909 238.077784872762 5.8247089296e-02
9451 12 0.1667 910 238.345507004370 4.9336265539e-02
9452 12 0.1667 911 238.607793059186 4.9026002564e-02
9453 12 0.1667 912 238.882078964386 4.9747928086e-02
9454 12 0.1667 913 239.151171763941 5.1899037331e-02
9455 12 0.1667 914 239.463374144832 2.7045976759e-01
9456 12 0.1667 915 239.564981851549 9.7040498490e-01
9457 12 0.1667 916 239.905449362308 5.0085154587e-02
9458 12 0.1667 917 240.181391811884 5.2564336689e-02
9459 12 0.1667 918 240.441155588640 5.4610576659e-02
9460 12 0.1667 919 240.711410866708 5.3215422129e-02
9461 12 0.1667 920 241.045213238644 1.1009847642e+00
9462 12 0.1667 921 241.158615029483 1.3939144929e-01
9463 12 0.1667 922 241.473566904011 5.2304732744e-02
9464 12 0.1667 923 241.748972747572 4.9444719989e-02
9465 12 0.1667 924 242.014651777410 5.4044223804e-02
9466 12 0.1667 925 242.299220149444 6.0503296527e-02
9467 12 0.1667 926 242.483079298461 1.9529412658e-01
9468 12 0.1667 927 242.821600229795 1.0477505561e+00
9469 12 0.1667 928 243.054967319561 5.4448107940e-02
9470 12 0.1667 929 243.352324490826 2.0341165981e-01
9471 12 0.1667 930 243.578597395535 5.7117567413e-02
9472 12 0.1667 931 243.851914213741 5.7430453541e-02
9473 12 0.1667 932 244.073136719064 1.0475387560e+00
9474 12 0.1667 933 244.363204615527 5.1813617397e-02
9475 12 0.1667 934 244.637642771840 5.2389541672e-02
9476 12 0.1667 935 244.877806763500 2.1880041752e-01
9477 12 0.1667 936 245.160045068408 5.1067625596e-02
9478 12 0.1667 937 245.428471093977 5.1788599863e-02
9479 12 0.1667 938 245.676469913793 5.2498827280e-02
9480 12 0.1667 939 245.953931320077 5.5280036145e-02
9481 12 0.1667 940 246.213453279641 5.0159580959e-02
9482 12 0.1667 941 246.487418615856 5.4043995679e-02
9483 12 0.1667 942 246.809419797405 2.1390773281e-01
9484 12 0.1667 943 247.050013388254 1.9043348043e-01
9485 12 0.1667 944 247.150796146800 9.1412437103e-01
9486 12 0.1667 945 247.503719871694 5.5088045037e-02
9487 12 0.1667 946 247.775639356325 6.0401581077e-02
9488 12 0.1667 947 248.098154433989 1.0403679431e+00
9489 12 0.1667 948 248.318122310451 1.0012092716e-01
9490 12 0.1667 949 248.484317463072 1.9465776751e-01
9491 12 0.1667 950 248.797552802854 5.3099151741e-02
9492 12 0.1667 951 249.072946047083 5.3791351287e-02
9493 12 0.1667 952 249.342170008572 5.6861914171e-02
9494 12 0.1667 953 249.575155777672 1.0506033473e+00
9495 12 0.1667 954 249.878836672261 2.4140155128e-01
9496 12 0.1667 955 250.135897885092 5.0584787394e-02
9497 12 0.1667 956 250.399971106256 5.2966695120e-02
9498 12 0.1667 957 250.671037936801 5.1588736324e-02
9499 12 0.1667 958 251.005555402035 9.7990517086e-01
9500 12 0.1667 959 251.116019578976 1.2476758373e-01
9501 12 0.1667 960 251.431207043186 5.4669797372e-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())