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 17 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
8002 12 0.0000 530 138.788781920455 4.6663430456e-02
8003 12 0.0000 531 139.059393042170 4.3271743182e-02
8004 12 0.0000 532 139.333587997272 4.5402111045e-02
8005 12 0.0000 533 139.666422115806 1.7946242010e-01
8006 12 0.0000 534 139.748927736650 9.0098157170e-01
8007 12 0.0000 535 140.078894202102 4.7017060218e-02
8008 12 0.0000 536 140.353912160517 4.3022748708e-02
8009 12 0.0000 537 140.621733314993 4.3187147899e-02
8010 12 0.0000 538 140.890461897996 4.3283924316e-02
8011 12 0.0000 539 141.124924422496 1.0413591905e+00
8012 12 0.0000 540 141.414867911850 4.3662111434e-02
8013 12 0.0000 541 141.685225254931 4.7179830329e-02
8014 12 0.0000 542 141.933539911483 4.3700820159e-02
8015 12 0.0000 543 142.201759632683 4.3516430556e-02
8016 12 0.0000 544 142.471103732258 4.3360201030e-02
8017 12 0.0000 545 142.744033752028 5.1506443898e-02
8018 12 0.0000 546 143.087117217358 6.2502830371e-01
8019 12 0.0000 547 143.146357115379 4.5278162233e-01
8020 12 0.0000 548 143.495173567948 4.4215778633e-02
8021 12 0.0000 549 143.763091560977 4.3168677056e-02
8022 12 0.0000 550 144.031256200209 4.3066573370e-02
8023 12 0.0000 551 144.298729427662 4.3889210783e-02
8024 12 0.0000 552 144.549476121345 4.9020885963e-02
8025 12 0.0000 553 144.818581442495 4.3672088908e-02
8026 12 0.0000 554 145.090112562919 4.2529434526e-02
8027 12 0.0000 555 145.358225794893 4.7193473118e-02
8028 12 0.0000 556 145.611361440177 4.7490927188e-02
8029 12 0.0000 557 145.962296188754 4.0840130223e-01
8030 12 0.0000 558 146.023909725420 6.7104578873e-01
8031 12 0.0000 559 146.382011312096 4.8046030694e-02
8032 12 0.0000 560 146.634279723527 4.6966878931e-02
8033 12 0.0000 561 146.900879178649 4.3171841296e-02
8034 12 0.0000 562 147.168923121995 4.2265946688e-02
8035 12 0.0000 563 147.423171937644 1.0432232273e+00
8036 12 0.0000 564 147.692307744247 4.2997027584e-02
8037 12 0.0000 565 147.957477266644 4.2631987209e-02
8038 12 0.0000 566 148.221597103488 4.2931194113e-02
8039 12 0.0000 567 148.483928823433 4.1758130285e-02
8040 12 0.0000 568 148.749851430716 4.3379338474e-02
8041 12 0.0000 569 149.012910299801 4.4391615248e-02
8042 12 0.0000 570 149.286317958838 4.7779528226e-02
8043 12 0.0000 571 149.528781229131 4.5015180283e-02
8044 12 0.0000 572 149.799482311224 4.3702513494e-02
8045 12 0.0000 573 150.054107465237 1.0433195111e+00
8046 12 0.0000 574 150.313900695243 5.0563767744e-02
8047 12 0.0000 575 150.591536489879 4.4140323971e-02
8048 12 0.0000 576 150.920094815252 1.0145625913e+00
8049 12 0.0000 577 151.063371910074 6.6649570619e-02
8050 12 0.0000 578 151.359543761868 4.4669812742e-02
8051 12 0.0000 579 151.613263478338 5.1398198642e-02
8052 12 0.0000 580 151.888799245576 4.3958647000e-02
8053 12 0.0000 581 152.153201592098 4.2932933554e-02
8054 12 0.0000 582 152.418023750661 4.3418226276e-02
8055 12 0.0000 583 152.692489312505 5.4188112170e-02
8056 12 0.0000 584 153.018656461493 1.0033779937e+00
8057 12 0.0000 585 153.148436284488 7.5891648838e-02
8058 12 0.0000 586 153.446934798641 4.3940453026e-02
8059 12 0.0000 587 153.718614416778 4.3899125033e-02
8060 12 0.0000 588 153.982202976176 4.3914140437e-02
8061 12 0.0000 589 154.243374965116 4.2903763853e-02
8062 12 0.0000 590 154.502346761675 5.4546723968e-02
8063 12 0.0000 591 154.770618332337 4.3409421764e-02
8064 12 0.0000 592 155.035548565009 4.1787113211e-02
8065 12 0.0000 593 155.298027070744 4.3505552238e-02
8066 12 0.0000 594 155.551672444058 5.3541988673e-02
8067 12 0.0000 595 155.825658173979 4.3131849948e-02
8068 12 0.0000 596 156.111509029221 1.0425098914e+00
8069 12 0.0000 597 156.342628149148 4.2747458168e-02
8070 12 0.0000 598 156.608772729328 4.3415693514e-02
8071 12 0.0000 599 156.874570540271 4.2912458135e-02
8072 12 0.0000 600 157.140637099003 4.3064384915e-02
8073 12 0.0000 601 157.419155878165 5.5081885938e-02
8074 12 0.0000 602 157.600338105580 1.0409127360e+00
8075 12 0.0000 603 157.911992297420 4.4280395777e-02
8076 12 0.0000 604 158.180459132985 4.4802885688e-02
8077 12 0.0000 605 158.454198564653 4.5206087050e-02
8078 12 0.0000 606 158.786835004118 2.1979768638e-01
8079 12 0.0000 607 158.863415997177 8.7039986898e-01
8080 12 0.0000 608 159.207040666638 4.6679133479e-02
8081 12 0.0000 609 159.480564235895 4.2948636633e-02
8082 12 0.0000 610 159.747594671645 4.3340172559e-02
8083 12 0.0000 611 160.011696320972 4.2903007565e-02
8084 12 0.0000 612 160.280058198639 4.3552377957e-02
8085 12 0.0000 613 160.542409953829 4.3346519955e-02
8086 12 0.0000 614 160.826960147213 5.7272096787e-02
8087 12 0.0000 615 161.160933566488 5.7381443309e-01
8088 12 0.0000 616 161.220748730835 5.0528809620e-01
8089 12 0.0000 617 161.576234354677 4.7693000715e-02
8090 12 0.0000 618 161.818577418545 5.4916950454e-02
8091 12 0.0000 619 162.100781175861 4.4295461366e-02
8092 12 0.0000 620 162.370029082429 4.4479569216e-02
8093 12 0.0000 621 162.639872133424 6.0472224253e-02
8094 12 0.0000 622 162.974973741630 2.4954011270e-01
8095 12 0.0000 623 163.046167167503 8.2815264403e-01
8096 12 0.0000 624 163.394300802955 4.5624126272e-02
8097 12 0.0000 625 163.668248284455 4.3045631862e-02
8098 12 0.0000 626 163.934694255978 4.4155815173e-02
8099 12 0.0000 627 164.208353433316 5.7454249502e-02
8100 12 0.0000 628 164.456666982935 4.4770443890e-02
8101 12 0.0000 629 164.716933857463 4.3862133913e-02
8102 12 0.0000 630 164.982513881741 4.3400392020e-02
8103 12 0.0000 631 165.249558508470 4.3212715043e-02
8104 12 0.0000 632 165.535863398600 1.0416999337e+00
8105 12 0.0000 633 165.772340465778 4.3894699036e-02
8106 12 0.0000 634 166.039457285353 4.4964866476e-02
8107 12 0.0000 635 166.287185454547 5.9275007589e-02
8108 12 0.0000 636 166.564222257991 4.3621483303e-02
8109 12 0.0000 637 166.835209468070 4.5315642215e-02
8110 12 0.0000 638 167.175955295259 9.6472182686e-01
8111 12 0.0000 639 167.277582024890 1.1588129139e-01
8112 12 0.0000 640 167.597215207392 4.4574955798e-02
8113 12 0.0000 641 167.867233905203 4.5282540421e-02
8114 12 0.0000 642 168.150814062602 5.4929702212e-02
8115 12 0.0000 643 168.386250018094 4.7810228708e-02
8116 12 0.0000 644 168.672981376565 5.1528283437e-02
8117 12 0.0000 645 168.926706324613 6.8157599741e-02
8118 12 0.0000 646 169.098885804520 1.0246640209e+00
8119 12 0.0000 647 169.425257641097 4.4459635770e-02
8120 12 0.0000 648 169.699461334260 4.6569335606e-02
8121 12 0.0000 649 169.914114513905 1.0389300660e+00
8122 12 0.0000 650 170.218332685130 4.5637749833e-02
8123 12 0.0000 651 170.460268772075 6.0543851084e-02
8124 12 0.0000 652 170.740650248967 4.5054351343e-02
8125 12 0.0000 653 171.006633892323 4.2750560388e-02
8126 12 0.0000 654 171.271589962191 4.4703721990e-02
8127 12 0.0000 655 171.533131770006 4.4063724832e-02
8128 12 0.0000 656 171.802397789530 4.4332645271e-02
8129 12 0.0000 657 172.038930005753 5.9868605385e-02
8130 12 0.0000 658 172.316579255509 4.4208554060e-02
8131 12 0.0000 659 172.584280304627 4.3718933804e-02
8132 12 0.0000 660 172.849608053827 4.3184917803e-02
8133 12 0.0000 661 173.119511166982 4.5933153319e-02
8134 12 0.0000 662 173.408064869808 1.0564132941e+00
8135 12 0.0000 663 173.618437682874 4.8788896100e-02
8136 12 0.0000 664 173.893312640926 4.5595569472e-02
8137 12 0.0000 665 174.172339834537 4.7555288065e-02
8138 12 0.0000 666 174.402107347950 6.1894308233e-02
8139 12 0.0000 667 174.748884912708 1.0130335808e+00
8140 12 0.0000 668 174.894296913375 6.9597666416e-02
8141 12 0.0000 669 175.187701637913 4.5610164605e-02
8142 12 0.0000 670 175.459950551071 4.3760731092e-02
8143 12 0.0000 671 175.723812521492 4.3716149340e-02
8144 12 0.0000 672 175.990692363736 4.4121185665e-02
8145 12 0.0000 673 176.276172236762 5.5126363438e-02
8146 12 0.0000 674 176.445311181883 1.0298206656e+00
8147 12 0.0000 675 176.778368671458 5.2384799341e-02
8148 12 0.0000 676 177.005796009733 5.7126793781e-02
8149 12 0.0000 677 177.286748349045 4.5000345070e-02
8150 12 0.0000 678 177.557809175174 4.5575960485e-02
8151 12 0.0000 679 177.823637863212 4.4577765436e-02
8152 12 0.0000 680 178.107079507559 6.0002685267e-02
8153 12 0.0000 681 178.374611044948 1.0428216341e+00
8154 12 0.0000 682 178.584127068288 4.7798711447e-02
8155 12 0.0000 683 178.855905527552 4.3918186193e-02
8156 12 0.0000 684 179.139638205404 6.7704840682e-02
8157 12 0.0000 685 179.381615695504 4.4064120374e-02
8158 12 0.0000 686 179.651985789135 4.4519536580e-02
8159 12 0.0000 687 179.916273600954 1.0454002035e+00
8160 12 0.0000 688 180.174108809191 4.2586739613e-02
8161 12 0.0000 689 180.439777433166 4.5127232745e-02
8162 12 0.0000 690 180.713693249488 4.7947405503e-02
8163 12 0.0000 691 180.934905358087 6.5041737743e-02
8164 12 0.0000 692 181.222021708367 4.5409146174e-02
8165 12 0.0000 693 181.476882150547 6.9864982393e-02
8166 12 0.0000 694 181.755088940908 4.7455558822e-02
8167 12 0.0000 695 182.032171003763 5.2241855153e-02
8168 12 0.0000 696 182.210453897034 1.0309166810e+00
8169 12 0.0000 697 182.526582782308 4.4545180074e-02
8170 12 0.0000 698 182.797430684390 4.6132537272e-02
8171 12 0.0000 699 183.056692785488 4.3733596812e-02
8172 12 0.0000 700 183.320115592055 4.4952700582e-02
8173 12 0.0000 701 183.588805876179 4.3165953606e-02
8174 12 0.0000 702 183.864718807374 5.1840457910e-02
8175 12 0.0000 703 184.078500619243 6.2732586521e-02
8176 12 0.0000 704 184.371903207877 4.6553271407e-02
8177 12 0.0000 705 184.632122812433 4.5086122777e-02
8178 12 0.0000 706 184.875594468678 1.0428252852e+00
8179 12 0.0000 707 185.162676945486 4.5752787635e-02
8180 12 0.0000 708 185.441970840088 9.5269550850e-02
8181 12 0.0000 709 185.603983228757 1.0187730645e+00
8182 12 0.0000 710 185.927962306058 4.5475876159e-02
8183 12 0.0000 711 186.197955427162 4.5874745235e-02
8184 12 0.0000 712 186.475410218914 4.9765534577e-02
8185 12 0.0000 713 186.694670212807 6.9714183891e-02
8186 12 0.0000 714 186.978495169633 4.3469119755e-02
8187 12 0.0000 715 187.229800337222 1.0442792715e+00
8188 12 0.0000 716 187.508548044483 4.3774633071e-02
8189 12 0.0000 717 187.777603696400 4.4026474957e-02
8190 12 0.0000 718 188.042793647376 4.4588605585e-02
8191 12 0.0000 719 188.331000913750 6.8126874324e-02
8192 12 0.0000 720 188.542207802644 5.3218495252e-02
8193 12 0.0000 721 188.819624782672 4.5378369755e-02
8194 12 0.0000 722 189.095325633148 4.5904044420e-02
8195 12 0.0000 723 189.412476329283 1.0325772658e+00
8196 12 0.0000 724 189.615805306042 7.4916644489e-02
8197 12 0.0000 725 189.842509026139 5.4382087560e-02
8198 12 0.0000 726 190.117020678971 4.6533746977e-02
8199 12 0.0000 727 190.390114252428 4.6034505906e-02
8200 12 0.0000 728 190.679297208055 7.2872649860e-02
8201 12 0.0000 729 190.900104417021 5.0625933321e-02
8202 12 0.0000 730 191.170891552121 4.5825878971e-02
8203 12 0.0000 731 191.440351410121 4.4333833925e-02
8204 12 0.0000 732 191.711286905780 4.6338218177e-02
8205 12 0.0000 733 192.023718939413 1.0361434187e+00
8206 12 0.0000 734 192.189193302676 8.4746458440e-02
8207 12 0.0000 735 192.483550159461 4.9353970406e-02
8208 12 0.0000 736 192.755781392275 4.5616581585e-02
8209 12 0.0000 737 193.075962543662 1.0281386020e+00
8210 12 0.0000 738 193.249740664139 5.6598028518e-02
8211 12 0.0000 739 193.525084426702 4.6793597611e-02
8212 12 0.0000 740 193.797132205928 4.7672385891e-02
8213 12 0.0000 741 194.067705752755 4.6836137665e-02
8214 12 0.0000 742 194.354775586129 6.9701464896e-02
8215 12 0.0000 743 194.565874286840 5.5240371789e-02
8216 12 0.0000 744 194.851082719026 4.6893279296e-02
8217 12 0.0000 745 195.168483000746 1.1450901364e-01
8218 12 0.0000 746 195.274146208927 9.6776101766e-01
8219 12 0.0000 747 195.616734606778 4.6859852528e-02
8220 12 0.0000 748 195.892131105510 4.4559613725e-02
8221 12 0.0000 749 196.167813357495 8.9728510289e-02
8222 12 0.0000 750 196.428987024214 4.7660625243e-02
8223 12 0.0000 751 196.728247941177 7.3704500896e-02
8224 12 0.0000 752 196.884441762053 1.0357405078e+00
8225 12 0.0000 753 197.157330032596 5.9761343857e-02
8226 12 0.0000 754 197.449840000330 4.5621804355e-02
8227 12 0.0000 755 197.715355443163 4.9515461927e-02
8228 12 0.0000 756 198.012668303713 1.0844225274e+00
8229 12 0.0000 757 198.235299723025 4.7648191228e-02
8230 12 0.0000 758 198.507178826314 4.5795622619e-02
8231 12 0.0000 759 198.769632260529 4.6937381516e-02
8232 12 0.0000 760 199.029759312318 4.2842161254e-02
8233 12 0.0000 761 199.298654960092 4.5020100561e-02
8234 12 0.0000 762 199.563430950043 4.6803535928e-02
8235 12 0.0000 763 199.832324206134 4.6194345408e-02
8236 12 0.0000 764 200.123097890889 7.9560832130e-02
8237 12 0.0000 765 200.324449751906 5.7879998488e-02
8238 12 0.0000 766 200.616102725614 4.5396731264e-02
8239 12 0.0000 767 200.892431577206 5.0112022945e-02
8240 12 0.0000 768 201.181305208904 2.4143394270e-01
8241 12 0.0000 769 201.278741728353 8.8616622401e-01
8242 12 0.0000 770 201.636692461181 4.9501862592e-02
8243 12 0.0000 771 201.907880542154 4.7222979665e-02
8244 12 0.0000 772 202.176166892248 4.3870425918e-02
8245 12 0.0000 773 202.490537116840 1.0373779358e+00
8246 12 0.0000 774 202.675248469774 5.2852782758e-02
8247 12 0.0000 775 202.957163728475 4.5077099821e-02
8248 12 0.0000 776 203.238165703146 9.8380932750e-02
8249 12 0.0000 777 203.485083455800 4.8898268521e-02
8250 12 0.0000 778 203.764573185581 4.7238224861e-02
8251 12 0.0000 779 204.063842828181 8.0470055099e-02
8252 12 0.0000 780 204.196228001774 1.0036904622e+00
8253 12 0.0000 781 204.561230410926 9.3005626289e-02
8254 12 0.0000 782 204.773031878699 5.4172831243e-02
8255 12 0.0000 783 205.057670441711 4.7947298372e-02
8256 12 0.0000 784 205.389534948021 1.0184586172e+00
8257 12 0.0000 785 205.539406196304 6.6535710810e-02
8258 12 0.0000 786 205.835222424465 4.7421646550e-02
8259 12 0.0000 787 206.126245646158 6.2648804159e-02
8260 12 0.0000 788 206.318608033733 8.4021540797e-02
8261 12 0.0000 789 206.612138232319 4.6811773352e-02
8262 12 0.0000 790 206.884347510054 4.5934430067e-02
8263 12 0.0000 791 207.144516854633 4.4581315926e-02
8264 12 0.0000 792 207.412202669102 4.5177118201e-02
8265 12 0.0000 793 207.676494253667 1.0749468160e-01
8266 12 0.0000 794 207.907748803634 1.0423860429e+00
8267 12 0.0000 795 208.200253561368 4.6084702101e-02
8268 12 0.0000 796 208.457772509194 1.0894166345e-01
8269 12 0.0000 797 208.724433609489 4.5943574861e-02
8270 12 0.0000 798 208.991543892374 4.9679447216e-02
8271 12 0.0000 799 209.262538489669 4.7074938414e-02
8272 12 0.0000 800 209.573519867662 1.0376931567e+00
8273 12 0.0000 801 209.785390811889 6.4809836400e-02
8274 12 0.0000 802 209.985518768486 9.5084591622e-02
8275 12 0.0000 803 210.286530372464 4.5932922572e-02
8276 12 0.0000 804 210.552454418471 4.6378501493e-02
8277 12 0.0000 805 210.823616043813 4.5503199642e-02
8278 12 0.0000 806 211.095071950235 4.9867926035e-02
8279 12 0.0000 807 211.354764814841 4.7038894969e-02
8280 12 0.0000 808 211.685304331481 1.0152328628e+00
8281 12 0.0000 809 211.830200967266 7.1109939262e-02
8282 12 0.0000 810 212.123348360870 4.7782423653e-02
8283 12 0.0000 811 212.391322190686 4.5891265381e-02
8284 12 0.0000 812 212.675719666647 5.6110056621e-02
8285 12 0.0000 813 212.893122168859 1.0954404591e-01
8286 12 0.0000 814 213.232249253187 1.0753772693e-01
8287 12 0.0000 815 213.352890171562 1.0479692018e+00
8288 12 0.0000 816 213.688702464279 5.1090980288e-02
8289 12 0.0000 817 213.965134737144 4.6770177149e-02
8290 12 0.0000 818 214.226583312107 4.7267264095e-02
8291 12 0.0000 819 214.544132700724 1.0363043816e+00
8292 12 0.0000 820 214.737368984931 5.1997186061e-02
8293 12 0.0000 821 215.034345223048 1.1902055842e-01
8294 12 0.0000 822 215.273448868015 4.7129287666e-02
8295 12 0.0000 823 215.542775315918 4.7775490253e-02
8296 12 0.0000 824 215.818456523250 5.1646100093e-02
8297 12 0.0000 825 216.160832551932 9.7768417868e-01
8298 12 0.0000 826 216.299266110047 1.7887706146e-01
8299 12 0.0000 827 216.549779593839 5.3893378133e-02
8300 12 0.0000 828 216.834725124195 4.8014596536e-02
8301 12 0.0000 829 217.106370529725 4.7347229577e-02
8302 12 0.0000 830 217.374752185318 4.6336527326e-02
8303 12 0.0000 831 217.653732358077 6.0095543260e-02
8304 12 0.0000 832 217.849049635004 1.1353281505e-01
8305 12 0.0000 833 218.151431149843 4.7860417122e-02
8306 12 0.0000 834 218.424742153571 4.6789398961e-02
8307 12 0.0000 835 218.690014777545 5.0060171805e-02
8308 12 0.0000 836 219.049916674804 8.1489336006e-01
8309 12 0.0000 837 219.127449401587 2.7576420147e-01
8310 12 0.0000 838 219.405110656281 1.2093817311e-01
8311 12 0.0000 839 219.701142494531 5.4233992023e-02
8312 12 0.0000 840 219.984760323852 4.7490869688e-02
8313 12 0.0000 841 220.245593437004 5.1908615834e-02
8314 12 0.0000 842 220.529997662526 5.6079660338e-02
8315 12 0.0000 843 220.719798403650 1.1205169299e+00
8316 12 0.0000 844 221.033889761819 4.9980958541e-02
8317 12 0.0000 845 221.383487604614 3.3049501447e-01
8318 12 0.0000 846 221.450759393928 7.5782772115e-01
8319 12 0.0000 847 221.799543052349 4.9319693604e-02
8320 12 0.0000 848 222.068156421626 4.7865146252e-02
8321 12 0.0000 849 222.333828221633 5.2842458492e-02
8322 12 0.0000 850 222.604796415120 4.5210303915e-02
8323 12 0.0000 851 222.864684334804 4.8581338993e-02
8324 12 0.0000 852 223.166034424671 1.3527107789e-01
8325 12 0.0000 853 223.388357310034 4.8548409502e-02
8326 12 0.0000 854 223.663745932948 4.9729851814e-02
8327 12 0.0000 855 224.000035276433 1.0063379287e+00
8328 12 0.0000 856 224.105680702727 1.7540119180e-01
8329 12 0.0000 857 224.423976754400 4.8378140214e-02
8330 12 0.0000 858 224.702710399023 5.0718864358e-02
8331 12 0.0000 859 224.981773967248 1.0484167842e+00
8332 12 0.0000 860 225.217866605045 4.8120664711e-02
8333 12 0.0000 861 225.465871374753 1.4436224597e-01
8334 12 0.0000 862 225.749862401121 5.4245518622e-02
8335 12 0.0000 863 226.011484244106 4.6491321018e-02
8336 12 0.0000 864 226.287916540953 5.2085044901e-02
8337 12 0.0000 865 226.499777763320 1.4119424886e-01
8338 12 0.0000 866 226.805617823931 4.9851895470e-02
8339 12 0.0000 867 227.064086090866 5.1493161737e-02
8340 12 0.0000 868 227.412089060606 9.6559163949e-01
8341 12 0.0000 869 227.515074421596 1.2413005036e-01
8342 12 0.0000 870 227.834312198035 4.9138356655e-02
8343 12 0.0000 871 228.109347307833 5.4033687790e-02
8344 12 0.0000 872 228.345627118050 1.5270527258e-01
8345 12 0.0000 873 228.630786114952 4.9810579855e-02
8346 12 0.0000 874 228.904955880785 5.0801899752e-02
8347 12 0.0000 875 229.183810657272 6.9864724754e-02
8348 12 0.0000 876 229.342295126715 1.0236044125e+00
8349 12 0.0000 877 229.671564621920 4.9015398659e-02
8350 12 0.0000 878 229.936189729498 4.8224900266e-02
8351 12 0.0000 879 230.220291374901 5.3901319869e-02
8352 12 0.0000 880 230.424692507469 1.5340995966e-01
8353 12 0.0000 881 230.716383291068 5.0099164814e-02
8354 12 0.0000 882 230.987410896681 5.1409495970e-02
8355 12 0.0000 883 231.250450331093 1.0485709086e+00
8356 12 0.0000 884 231.523757312710 5.1088242903e-02
8357 12 0.0000 885 231.822528080071 7.5707373834e-02
8358 12 0.0000 886 231.987320730968 1.1355353123e+00
8359 12 0.0000 887 232.299020684021 5.0463709526e-02
8360 12 0.0000 888 232.588884772419 6.5777364744e-02
8361 12 0.0000 889 232.772490828571 1.5000167805e-01
8362 12 0.0000 890 233.076062611342 5.0694766278e-02
8363 12 0.0000 891 233.350787969631 5.0552048511e-02
8364 12 0.0000 892 233.686500980740 1.0028319162e+00
8365 12 0.0000 893 233.817245308396 8.9017188319e-02
8366 12 0.0000 894 234.113092199615 4.8340627452e-02
8367 12 0.0000 895 234.382334298017 4.8974099013e-02
8368 12 0.0000 896 234.654827782264 5.0682012693e-02
8369 12 0.0000 897 234.897680736589 1.7824488367e-01
8370 12 0.0000 898 235.175651489107 5.1178114166e-02
8371 12 0.0000 899 235.445597094444 4.8374353224e-02
8372 12 0.0000 900 235.715073741765 5.4309492206e-02
8373 12 0.0000 901 236.031301902067 1.5231240834e-01
8374 12 0.0000 902 236.195280780179 7.5548203286e-02
8375 12 0.0000 903 236.522320521399 1.0474141501e+00
8376 12 0.0000 904 236.797224814491 1.2983015398e-01
8377 12 0.0000 905 236.948836838075 9.9972141593e-02
8378 12 0.0000 906 237.259025541943 5.5423513907e-02
8379 12 0.0000 907 237.530550688689 5.0370692090e-02
8380 12 0.0000 908 237.770752362142 1.0471160959e+00
8381 12 0.0000 909 238.059948399785 5.7541729972e-02
8382 12 0.0000 910 238.322476452882 4.9091896346e-02
8383 12 0.0000 911 238.584917111076 4.9379103898e-02
8384 12 0.0000 912 238.858334884047 4.9072092531e-02
8385 12 0.0000 913 239.124806768783 5.1264087131e-02
8386 12 0.0000 914 239.434944479308 1.8183731036e-01
8387 12 0.0000 915 239.559197164507 1.0605258541e+00
8388 12 0.0000 916 239.883700504048 4.9970637095e-02
8389 12 0.0000 917 240.159203812292 5.1829877303e-02
8390 12 0.0000 918 240.419337247405 5.5029321893e-02
8391 12 0.0000 919 240.690261740846 5.3625287673e-02
8392 12 0.0000 920 241.037209481544 9.4192995709e-01
8393 12 0.0000 921 241.116468615450 2.9743868001e-01
8394 12 0.0000 922 241.449341290966 5.2780017449e-02
8395 12 0.0000 923 241.724079198388 4.9116824984e-02
8396 12 0.0000 924 241.990844076376 5.3887489913e-02
8397 12 0.0000 925 242.265473942084 5.3668117511e-02
8398 12 0.0000 926 242.475451133586 2.0458649990e-01
8399 12 0.0000 927 242.820450008195 1.0427146307e+00
8400 12 0.0000 928 243.029109666707 5.7883116707e-02
8401 12 0.0000 929 243.342962838782 1.9540413580e-01
8402 12 0.0000 930 243.541155526600 6.2638032279e-02
8403 12 0.0000 931 243.818664853115 5.5736997696e-02
8404 12 0.0000 932 244.071610537825 1.0512233050e+00
8405 12 0.0000 933 244.340073800360 5.1979266512e-02
8406 12 0.0000 934 244.612636945830 5.1224311701e-02
8407 12 0.0000 935 244.871996684495 2.2007728210e-01
8408 12 0.0000 936 245.136899575888 5.0746731878e-02
8409 12 0.0000 937 245.402796494187 5.0807689491e-02
8410 12 0.0000 938 245.652958455190 5.4027058660e-02
8411 12 0.0000 939 245.932589454861 5.4529200580e-02
8412 12 0.0000 940 246.189972622376 5.0834229908e-02
8413 12 0.0000 941 246.466729643824 5.4235067622e-02
8414 12 0.0000 942 246.793013130645 1.8687462881e-01
8415 12 0.0000 943 246.968046492937 1.1499486081e-01
8416 12 0.0000 944 247.143707723064 1.0165166999e+00
8417 12 0.0000 945 247.482291348399 5.4732922402e-02
8418 12 0.0000 946 247.756983292694 6.1042255549e-02
8419 12 0.0000 947 248.094976997578 1.0118383134e+00
8420 12 0.0000 948 248.249804562135 1.0100927628e-01
8421 12 0.0000 949 248.467888917434 2.2137535778e-01
8422 12 0.0000 950 248.774745014130 5.3548973869e-02
8423 12 0.0000 951 249.051412656485 5.3571302964e-02
8424 12 0.0000 952 249.319806230691 5.5959846616e-02
8425 12 0.0000 953 249.574149569254 1.0530608576e+00
8426 12 0.0000 954 249.874543471914 2.3921420958e-01
8427 12 0.0000 955 250.111563331918 5.1145835216e-02
8428 12 0.0000 956 250.378261232443 5.3272523682e-02
8429 12 0.0000 957 250.649446310733 5.1851200065e-02
8430 12 0.0000 958 250.995264449753 7.8847632269e-01
8431 12 0.0000 959 251.068328280145 3.1541934252e-01
8432 12 0.0000 960 251.408652661147 5.4991238564e-02
8433 12 0.0000 961 251.678458404963 5.2917861287e-02
8434 12 0.0000 962 251.982104031836 2.4963268402e-01
8435 12 0.0000 963 252.195666310977 5.7352817150e-02
8436 12 0.0000 964 252.488446893211 2.6123636715e-01
8437 12 0.0000 965 252.737718527122 5.4624097027e-02
8438 12 0.0000 966 253.064478902608 1.0234365430e+00
8439 12 0.0000 967 253.222464170043 7.5560535031e-02
8440 12 0.0000 968 253.504513033077 5.3157960717e-02
8441 12 0.0000 969 253.778885334645 5.7208502943e-02
8442 12 0.0000 970 254.056333164522 5.8939893144e-02
8443 12 0.0000 971 254.351543157469 1.0705156711e-01
8444 12 0.0000 972 254.493334424000 2.0783122342e-01
8445 12 0.0000 973 254.818292955421 5.4608537858e-02
8446 12 0.0000 974 255.121150222067 8.7535068134e-02
8447 12 0.0000 975 255.301594526196 1.2424966442e+00
8448 12 0.0000 976 255.593796284702 5.1647093437e-02
8449 12 0.0000 977 255.864242659593 6.3712946695e-02
8450 12 0.0000 978 256.131742935065 5.1248200872e-02
8451 12 0.0000 979 256.381383281377 1.0523757311e+00
8452 12 0.0000 980 256.656168445238 5.3368673580e-02
8453 12 0.0000 981 256.923375139298 6.3662366524e-02
8454 12 0.0000 982 257.188053171692 5.4520678246e-02
8455 12 0.0000 983 257.455448855835 5.2025742774e-02
8456 12 0.0000 984 257.719438340421 5.6239317100e-02
8457 12 0.0000 985 257.981741922524 5.3801163091e-02
8458 12 0.0000 986 258.264117154328 2.9169012215e-01
8459 12 0.0000 987 258.594556795989 8.8457883535e-01
8460 12 0.0000 988 258.680373777191 2.2092562297e-01
8461 12 0.0000 989 259.018125273632 6.0525232173e-02
8462 12 0.0000 990 259.331726827380 2.8153759499e-01
8463 12 0.0000 991 259.519110193697 6.8459800423e-02
8464 12 0.0000 992 259.868378112239 1.0258220512e+00
8465 12 0.0000 993 260.029848793715 8.2449082972e-02
8466 12 0.0000 994 260.321889659670 3.0840260783e-01
8467 12 0.0000 995 260.582665852436 5.9363599971e-02
8468 12 0.0000 996 260.806983630318 1.0502657980e+00
8469 12 0.0000 997 261.108339755366 5.4321019626e-02
8470 12 0.0000 998 261.375207516796 6.1997100087e-02
8471 12 0.0000 999 261.637064381843 5.4881090601e-02
8472 12 0.0000 1000 261.917713279048 6.2222934846e-02
8473 12 0.0000 1001 262.118475752117 3.1025219238e-01
8474 12 0.0000 1002 262.426758035006 6.1475905176e-02
8475 12 0.0000 1003 262.683361745805 5.5603800138e-02
8476 12 0.0000 1004 262.951903103323 5.6011387500e-02
8477 12 0.0000 1005 263.223145558211 5.7631457570e-02
8478 12 0.0000 1006 263.564346450750 1.1762977565e+00
8479 12 0.0000 1007 263.653638183080 2.0126161865e-01
8480 12 0.0000 1008 263.981342277054 6.5903512411e-02
8481 12 0.0000 1009 264.243241202808 5.7249376248e-02
8482 12 0.0000 1010 264.512066952094 5.6073735671e-02
8483 12 0.0000 1011 264.788994521545 6.6216172939e-02
8484 12 0.0000 1012 264.997279783053 3.3254493140e-01
8485 12 0.0000 1013 265.296165213469 6.1313217709e-02
8486 12 0.0000 1014 265.558372246470 1.0541762587e+00
8487 12 0.0000 1015 265.825743653316 5.5378842274e-02
8488 12 0.0000 1016 266.093182893650 5.5513394165e-02
8489 12 0.0000 1017 266.371443805165 6.3826216753e-02
8490 12 0.0000 1018 266.615328254953 1.0618797558e+00
8491 12 0.0000 1019 266.941963708318 1.3310830636e-01
8492 12 0.0000 1020 267.064367968777 2.7789347707e-01
8493 12 0.0000 1021 267.394889309242 5.8406909641e-02
8494 12 0.0000 1022 267.661157061744 6.1664588444e-02
8495 12 0.0000 1023 267.922426349266 1.0574609579e+00
8496 12 0.0000 1024 268.208365429144 6.3969314041e-02
8497 12 0.0000 1025 268.525914911787 2.3312054364e-01
8498 12 0.0000 1026 268.638835836422 1.8473512243e-01
8499 12 0.0000 1027 268.964905111129 5.6848255514e-02
8500 12 0.0000 1028 269.233852162703 6.0558439004e-02
8501 12 0.0000 1029 269.509772148858 5.7009180097e-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())