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 20 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
9502 12 0.1667 961 251.698909015306 5.2059004634e-02
9503 12 0.1667 962 251.987721051545 2.5411798917e-01
9504 12 0.1667 963 252.223863609867 5.3905566399e-02
9505 12 0.1667 964 252.493406160609 2.6191004691e-01
9506 12 0.1667 965 252.760805317477 5.3374230998e-02
9507 12 0.1667 966 253.067045431774 1.0425396799e+00
9508 12 0.1667 967 253.271546327860 6.0111201798e-02
9509 12 0.1667 968 253.538935301633 5.1564376908e-02
9510 12 0.1667 969 253.806151572289 5.6692415749e-02
9511 12 0.1667 970 254.084173038304 6.0136396359e-02
9512 12 0.1667 971 254.394908803517 1.7024415789e-01
9513 12 0.1667 972 254.525206812316 1.4318622149e-01
9514 12 0.1667 973 254.845523888989 5.4701643316e-02
9515 12 0.1667 974 255.156131109997 1.1372450961e-01
9516 12 0.1667 975 255.304367726191 1.2160935602e+00
9517 12 0.1667 976 255.621102280832 5.1762105765e-02
9518 12 0.1667 977 255.886065370175 6.3647619493e-02
9519 12 0.1667 978 256.162175069297 5.3357343016e-02
9520 12 0.1667 979 256.382724307881 1.0489830968e+00
9521 12 0.1667 980 256.676573612681 5.3670710521e-02
9522 12 0.1667 981 256.940927198972 6.3667508051e-02
9523 12 0.1667 982 257.208585421433 5.4518610701e-02
9524 12 0.1667 983 257.477754366363 5.2397881374e-02
9525 12 0.1667 984 257.741299040695 5.6413241046e-02
9526 12 0.1667 985 258.004493048347 5.3430613070e-02
9527 12 0.1667 986 258.268248238230 2.9165167591e-01
9528 12 0.1667 987 258.602254866930 1.0079843489e+00
9529 12 0.1667 988 258.732505584115 9.8412455679e-02
9530 12 0.1667 989 259.040731515188 5.9743472376e-02
9531 12 0.1667 990 259.339447998395 2.9219745135e-01
9532 12 0.1667 991 259.556371586621 5.8382327089e-02
9533 12 0.1667 992 259.871515730904 1.0479124069e+00
9534 12 0.1667 993 260.087637438461 6.6309223085e-02
9535 12 0.1667 994 260.330133593933 3.0592178819e-01
9536 12 0.1667 995 260.631559998155 6.8809686253e-02
9537 12 0.1667 996 260.809282651662 1.0365256349e+00
9538 12 0.1667 997 261.132146453549 5.5417916590e-02
9539 12 0.1667 998 261.399057798282 6.2562141949e-02
9540 12 0.1667 999 261.665938061439 5.5011056264e-02
9541 12 0.1667 1000 261.958334727510 7.6031329009e-02
9542 12 0.1667 1001 262.126503439490 2.9440269112e-01
9543 12 0.1667 1002 262.447194070861 6.2940126324e-02
9544 12 0.1667 1003 262.708560894510 5.5294650341e-02
9545 12 0.1667 1004 262.976249522773 5.5938869418e-02
9546 12 0.1667 1005 263.246887367536 5.7418115792e-02
9547 12 0.1667 1006 263.570346001094 1.2925264336e+00
9548 12 0.1667 1007 263.716387678328 8.7600484245e-02
9549 12 0.1667 1008 264.011549400616 6.5972478315e-02
9550 12 0.1667 1009 264.276558270949 5.6653681133e-02
9551 12 0.1667 1010 264.545395472666 5.6392270853e-02
9552 12 0.1667 1011 264.831109352582 7.9109305903e-02
9553 12 0.1667 1012 265.005320966249 3.1713991711e-01
9554 12 0.1667 1013 265.319381397962 6.2724726284e-02
9555 12 0.1667 1014 265.559677476965 1.0524831353e+00
9556 12 0.1667 1015 265.847715794354 5.5640751291e-02
9557 12 0.1667 1016 266.115833691913 5.5545927925e-02
9558 12 0.1667 1017 266.396192386215 6.7261261623e-02
9559 12 0.1667 1018 266.616819404416 1.0579492133e+00
9560 12 0.1667 1019 266.975742059062 2.1443511366e-01
9561 12 0.1667 1020 267.088887304314 1.9678767849e-01
9562 12 0.1667 1021 267.417300379624 5.9197170760e-02
9563 12 0.1667 1022 267.684490590984 6.2288329178e-02
9564 12 0.1667 1023 267.923601203260 1.0552158130e+00
9565 12 0.1667 1024 268.225946557180 6.4912496844e-02
9566 12 0.1667 1025 268.546640796772 3.0862048202e-01
9567 12 0.1667 1026 268.679406189738 1.0986380782e-01
9568 12 0.1667 1027 268.989877692735 5.6946934537e-02
9569 12 0.1667 1028 269.256301516778 6.0101800122e-02
9570 12 0.1667 1029 269.534383655801 5.7838763309e-02
9571 12 0.1667 1030 269.832959210023 9.5377820249e-02
9572 12 0.1667 1031 269.977750218445 1.0205037525e+00
9573 12 0.1667 1032 270.354074470693 3.7036059577e-01
9574 12 0.1667 1033 270.551662871796 7.3349908337e-02
9575 12 0.1667 1034 270.840757402509 6.6167780485e-02
9576 12 0.1667 1035 271.155326119454 3.8093721526e-01
9577 12 0.1667 1036 271.416910897580 2.3550001612e-01
9578 12 0.1667 1037 271.510714642644 8.9293551037e-01
9579 12 0.1667 1038 271.866289847659 6.2359299449e-02
9580 12 0.1667 1039 272.167000312778 9.0453014156e-02
9581 12 0.1667 1040 272.321911729339 3.6326180962e-01
9582 12 0.1667 1041 272.637825238343 6.6156258601e-02
9583 12 0.1667 1042 272.916698523136 6.1227790449e-02
9584 12 0.1667 1043 273.170426517614 5.9674316859e-02
9585 12 0.1667 1044 273.458431758256 1.0593740587e+00
9586 12 0.1667 1045 273.707149948738 5.9520998036e-02
9587 12 0.1667 1046 273.968900605457 6.6311507391e-02
9588 12 0.1667 1047 274.237371820851 6.4168859131e-02
9589 12 0.1667 1048 274.503020161229 6.0778655299e-02
9590 12 0.1667 1049 274.816510478329 4.1527446272e-01
9591 12 0.1667 1050 274.997514054451 7.1275061120e-02
9592 12 0.1667 1051 275.288683312322 6.7790862981e-02
9593 12 0.1667 1052 275.584706099292 1.0536804141e+00
9594 12 0.1667 1053 275.807126139561 6.2545246237e-02
9595 12 0.1667 1054 276.074413248983 7.0949959768e-02
9596 12 0.1667 1055 276.432917031594 1.1523643048e+00
9597 12 0.1667 1056 276.506128730641 3.4459533318e-01
9598 12 0.1667 1057 276.832969404914 5.9717086642e-02
9599 12 0.1667 1058 277.113646444967 6.0962199242e-02
9600 12 0.1667 1059 277.378077933594 6.7393201461e-02
9601 12 0.1667 1060 277.640144260496 6.1968456431e-02
9602 12 0.1667 1061 277.909375588858 4.6518408468e-01
9603 12 0.1667 1062 278.243525915873 1.0213735527e+00
9604 12 0.1667 1063 278.388100425317 9.1155103125e-02
9605 12 0.1667 1064 278.683893465012 6.5459380056e-02
9606 12 0.1667 1065 278.994086439229 4.5863346239e-01
9607 12 0.1667 1066 279.227307163125 1.0665754873e+00
9608 12 0.1667 1067 279.456107874732 6.9488483467e-02
9609 12 0.1667 1068 279.728192219132 6.6388769885e-02
9610 12 0.1667 1069 279.998626331002 7.1704894674e-02
9611 12 0.3333 1 0.302985879660 4.2401964759e-02
9612 12 0.3333 2 0.567418159378 4.1909307841e-02
9613 12 0.3333 3 0.830311454412 4.1793062125e-02
9614 12 0.3333 4 1.092745081833 4.1748028124e-02
9615 12 0.3333 5 1.354979905678 4.1726107388e-02
9616 12 0.3333 6 1.617110082191 4.1713610042e-02
9617 12 0.3333 7 1.879179278902 4.1706016751e-02
9618 12 0.3333 8 2.141208736643 4.1700887184e-02
9619 12 0.3333 9 2.403212297483 4.1697551408e-02
9620 12 0.3333 10 2.665196534705 4.1694698593e-02
9621 12 0.3333 11 2.927167155128 4.1693189346e-02
9622 12 0.3333 12 3.189128814372 4.1691724619e-02
9623 12 0.3333 13 3.451080342016 4.1690205149e-02
9624 12 0.3333 14 3.713027675860 4.1689848223e-02
9625 12 0.3333 15 3.974969163652 4.1689266119e-02
9626 12 0.3333 16 4.236908979246 4.1687951748e-02
9627 12 0.3333 17 4.498840835762 4.1688183746e-02
9628 12 0.3333 18 4.760773346860 4.1687203716e-02
9629 12 0.3333 19 5.022704951105 4.1688144470e-02
9630 12 0.3333 20 5.284632419934 4.1685990363e-02
9631 12 0.3333 21 5.546560848733 4.1688047911e-02
9632 12 0.3333 22 5.808482690503 4.1685298892e-02
9633 12 0.3333 23 6.070414149980 4.1688024459e-02
9634 12 0.3333 24 6.332333104042 4.1685683018e-02
9635 12 0.3333 25 6.594260033460 4.1686558693e-02
9636 12 0.3333 26 6.856185537290 4.1687049582e-02
9637 12 0.3333 27 7.118108537406 4.1686712571e-02
9638 12 0.3333 28 7.380034117676 4.1685481871e-02
9639 12 0.3333 29 7.641962577881 4.1689033733e-02
9640 12 0.3333 30 7.903885977835 4.1685107380e-02
9641 12 0.3333 31 8.165815782449 4.1687812900e-02
9642 12 0.3333 32 8.427746788878 4.1688187568e-02
9643 12 0.3333 33 8.689675296356 4.1687712944e-02
9644 12 0.3333 34 8.951614286801 4.1686231723e-02
9645 12 0.3333 35 9.213538459716 4.1691441437e-02
9646 12 0.3333 36 9.475487906048 4.1686860884e-02
9647 12 0.3333 37 9.737429874646 4.1691952142e-02
9648 12 0.3333 38 9.999374462118 4.1688508808e-02
9649 12 0.3333 39 10.261318991795 4.1691666898e-02
9650 12 0.3333 40 10.523281020262 4.1690986265e-02
9651 12 0.3333 41 10.785239153360 4.1695959804e-02
9652 12 0.3333 42 11.047216968716 4.1693488778e-02
9653 12 0.3333 43 11.309208901712 4.1698024534e-02
9654 12 0.3333 44 11.571199331160 4.1701846826e-02
9655 12 0.3333 45 11.833230095915 4.1700928978e-02
9656 12 0.3333 46 12.095282634575 4.1713514466e-02
9657 12 0.3333 47 12.357369962632 4.1716252939e-02
9658 12 0.3333 48 12.619550552367 4.1734580813e-02
9659 12 0.3333 49 12.881820595129 4.1752736158e-02
9660 12 0.3333 50 13.144284677258 4.1800402616e-02
9661 12 0.3333 51 13.407201221322 4.1900965735e-02
9662 12 0.3333 52 13.671341999955 4.2266615471e-02
9663 12 0.3333 53 13.943461551714 4.6441465789e-02
9664 12 0.3333 54 14.137269311574 1.0339941206e+00
9665 12 0.3333 55 14.444177230202 4.2544452837e-02
9666 12 0.3333 56 14.709138445311 4.1967574875e-02
9667 12 0.3333 57 14.972287574321 4.1810539522e-02
9668 12 0.3333 58 15.234828526663 4.1777531802e-02
9669 12 0.3333 59 15.497188768348 4.1728676445e-02
9670 12 0.3333 60 15.759365928744 4.1730883779e-02
9671 12 0.3333 61 16.021511916162 4.1710933265e-02
9672 12 0.3333 62 16.283568443628 4.1707106039e-02
9673 12 0.3333 63 16.545626163494 4.1708452926e-02
9674 12 0.3333 64 16.807671823136 4.1702044947e-02
9675 12 0.3333 65 17.069659917703 4.1697581225e-02
9676 12 0.3333 66 17.331674741753 4.1697893637e-02
9677 12 0.3333 67 17.593660511161 4.1700683400e-02
9678 12 0.3333 68 17.855649887365 4.1693414302e-02
9679 12 0.3333 69 18.117654856358 4.1702118400e-02
9680 12 0.3333 70 18.379623583120 4.1689052000e-02
9681 12 0.3333 71 18.641589357858 4.1701289096e-02
9682 12 0.3333 72 18.903634020303 4.1699444457e-02
9683 12 0.3333 73 19.165573767108 4.1693214813e-02
9684 12 0.3333 74 19.427615891728 4.1712702425e-02
9685 12 0.3333 75 19.689680764855 4.1699717329e-02
9686 12 0.3333 76 19.951689352025 4.1718129579e-02
9687 12 0.3333 77 20.213860701601 4.1718587214e-02
9688 12 0.3333 78 20.476055284250 4.1762725141e-02
9689 12 0.3333 79 20.738808816473 4.1914616307e-02
9690 12 0.3333 80 21.021101399102 1.0406507696e+00
9691 12 0.3333 81 21.258984428002 4.2152420904e-02
9692 12 0.3333 82 21.522226464718 4.1779579060e-02
9693 12 0.3333 83 21.784561205715 4.1742002122e-02
9694 12 0.3333 84 22.046842115143 4.1740182653e-02
9695 12 0.3333 85 22.308996550114 4.1722858322e-02
9696 12 0.3333 86 22.571178330271 4.1721369410e-02
9697 12 0.3333 87 22.833368075213 4.1750316263e-02
9698 12 0.3333 88 23.095668343758 4.1734888616e-02
9699 12 0.3333 89 23.357990971933 4.1766624407e-02
9700 12 0.3333 90 23.620470246693 4.1795591649e-02
9701 12 0.3333 91 23.883192214008 4.1828120116e-02
9702 12 0.3333 92 24.146290377993 4.1939551911e-02
9703 12 0.3333 93 24.410398383369 4.2175546882e-02
9704 12 0.3333 94 24.677696113644 4.3165499539e-02
9705 12 0.3333 95 25.005731052218 1.0111823435e+00
9706 12 0.3333 96 25.144501371125 6.6532696569e-02
9707 12 0.3333 97 25.438602967582 4.3011195733e-02
9708 12 0.3333 98 25.705444000003 4.2152986154e-02
9709 12 0.3333 99 25.969462138156 4.1928004363e-02
9710 12 0.3333 100 26.232553351811 4.1831883530e-02
9711 12 0.3333 101 26.495250215187 4.1795490928e-02
9712 12 0.3333 102 26.757668889000 4.1745443370e-02
9713 12 0.3333 103 27.020054385732 4.1759851246e-02
9714 12 0.3333 104 27.282174486935 4.1721660249e-02
9715 12 0.3333 105 27.544532225619 4.1736719069e-02
9716 12 0.3333 106 27.806611506307 4.1740809041e-02
9717 12 0.3333 107 28.068861162358 4.1704578018e-02
9718 12 0.3333 108 28.330951873236 4.1724614408e-02
9719 12 0.3333 109 28.593010359853 4.1714820831e-02
9720 12 0.3333 110 28.855103624421 4.1713446679e-02
9721 12 0.3333 111 29.117334027995 4.1745562310e-02
9722 12 0.3333 112 29.379307753542 4.1685600854e-02
9723 12 0.3333 113 29.641544258390 4.1739190734e-02
9724 12 0.3333 114 29.903607407960 4.1737693522e-02
9725 12 0.3333 115 30.165875012475 4.1723081131e-02
9726 12 0.3333 116 30.425000589439 1.0417241872e+00
9727 12 0.3333 117 30.690268266458 4.1761882384e-02
9728 12 0.3333 118 30.952670399574 4.1756454077e-02
9729 12 0.3333 119 31.215018601512 4.1774516103e-02
9730 12 0.3333 120 31.477738124743 4.1852079322e-02
9731 12 0.3333 121 31.740758102471 4.1875224128e-02
9732 12 0.3333 122 32.004164453849 4.2013897531e-02
9733 12 0.3333 123 32.269014915493 4.2333853063e-02
9734 12 0.3333 124 32.537726040051 4.3553190301e-02
9735 12 0.3333 125 32.863574566313 1.6452405092e-01
9736 12 0.3333 126 32.946228007844 9.1135680894e-01
9737 12 0.3333 127 33.290753583028 4.3586183990e-02
9738 12 0.3333 128 33.559697980964 4.2323835692e-02
9739 12 0.3333 129 33.824430676413 4.2019557690e-02
9740 12 0.3333 130 34.088016941565 4.1924591935e-02
9741 12 0.3333 131 34.351103736950 4.1810598166e-02
9742 12 0.3333 132 34.613840012553 4.1849576946e-02
9743 12 0.3333 133 34.876322816905 4.1733180930e-02
9744 12 0.3333 134 35.138903633502 4.1789008312e-02
9745 12 0.3333 135 35.401239327287 4.1796239937e-02
9746 12 0.3333 136 35.663908719217 4.1771019304e-02
9747 12 0.3333 137 35.926418650129 4.1816186187e-02
9748 12 0.3333 138 36.188995984218 4.1840528646e-02
9749 12 0.3333 139 36.452122543600 4.1845412291e-02
9750 12 0.3333 140 36.715337082944 4.2027540443e-02
9751 12 0.3333 141 36.979688898402 4.2184952259e-02
9752 12 0.3333 142 37.247661321305 4.3371167242e-02
9753 12 0.3333 143 37.580142068345 9.9980342841e-01
9754 12 0.3333 144 37.705310132902 7.7368407616e-02
9755 12 0.3333 145 38.006409621890 4.3223704976e-02
9756 12 0.3333 146 38.274076760505 4.2187941385e-02
9757 12 0.3333 147 38.538084410803 4.1949653709e-02
9758 12 0.3333 148 38.801326107381 4.1856387710e-02
9759 12 0.3333 149 39.064251861203 4.1838824938e-02
9760 12 0.3333 150 39.326808531664 4.1769898194e-02
9761 12 0.3333 151 39.589280871532 4.1761517669e-02
9762 12 0.3333 152 39.851691078359 4.1780000185e-02
9763 12 0.3333 153 40.114105664880 4.1770032818e-02
9764 12 0.3333 154 40.376432218205 4.1761271240e-02
9765 12 0.3333 155 40.639153302492 4.1931366674e-02
9766 12 0.3333 156 40.917971249834 1.0410464840e+00
9767 12 0.3333 157 41.161245029225 4.2046898879e-02
9768 12 0.3333 158 41.424253188620 4.1770214115e-02
9769 12 0.3333 159 41.686812836117 4.1846474941e-02
9770 12 0.3333 160 41.949327373318 4.1758352371e-02
9771 12 0.3333 161 42.212067143914 4.1876674347e-02
9772 12 0.3333 162 42.474986447092 4.1927995625e-02
9773 12 0.3333 163 42.738972061084 4.2067821300e-02
9774 12 0.3333 164 43.005011428502 4.2912362621e-02
9775 12 0.3333 165 43.323398742462 1.0258100671e+00
9776 12 0.3333 166 43.490217229491 5.3229967498e-02
9777 12 0.3333 167 43.771744300419 4.2653208965e-02
9778 12 0.3333 168 44.037462866355 4.2057379226e-02
9779 12 0.3333 169 44.300766443603 4.1885013940e-02
9780 12 0.3333 170 44.563993837920 4.1843605053e-02
9781 12 0.3333 171 44.826383046114 4.1801007603e-02
9782 12 0.3333 172 45.088905798466 4.1734407808e-02
9783 12 0.3333 173 45.351044966354 4.1824100496e-02
9784 12 0.3333 174 45.613449322200 4.1661347972e-02
9785 12 0.3333 175 45.875502171478 4.1773715453e-02
9786 12 0.3333 176 46.137594232354 4.1718859468e-02
9787 12 0.3333 177 46.400062481799 4.1855521375e-02
9788 12 0.3333 178 46.662169307265 4.1622384281e-02
9789 12 0.3333 179 46.924235274368 4.1822858688e-02
9790 12 0.3333 180 47.186609371318 4.1727121803e-02
9791 12 0.3333 181 47.449381379797 4.1845274549e-02
9792 12 0.3333 182 47.712624759155 4.2177812504e-02
9793 12 0.3333 183 48.003746377139 1.0393436062e+00
9794 12 0.3333 184 48.228706649179 4.2911556336e-02
9795 12 0.3333 185 48.493449571795 4.1896410437e-02
9796 12 0.3333 186 48.757011856797 4.1883767307e-02
9797 12 0.3333 187 49.019399828425 4.1812209405e-02
9798 12 0.3333 188 49.282273315628 4.1946944074e-02
9799 12 0.3333 189 49.547073426405 4.2710427723e-02
9800 12 0.3333 190 49.775128205215 1.0396886790e+00
9801 12 0.3333 191 50.064019355358 4.2101567404e-02
9802 12 0.3333 192 50.327449025684 4.1815752534e-02
9803 12 0.3333 193 50.590164373805 4.1813219328e-02
9804 12 0.3333 194 50.852265881396 4.1700465002e-02
9805 12 0.3333 195 51.114716447781 4.1743728595e-02
9806 12 0.3333 196 51.376383792430 4.1805815799e-02
9807 12 0.3333 197 51.638949847215 4.1752202680e-02
9808 12 0.3333 198 51.901132424013 4.1755227170e-02
9809 12 0.3333 199 52.163272562671 4.1687910393e-02
9810 12 0.3333 200 52.425462175726 4.1852067991e-02
9811 12 0.3333 201 52.688281087265 4.1915959372e-02
9812 12 0.3333 202 52.969444739084 1.0408344032e+00
9813 12 0.3333 203 53.209063678566 4.2161983702e-02
9814 12 0.3333 204 53.472553369404 4.1864529716e-02
9815 12 0.3333 205 53.734972860312 4.1812412506e-02
9816 12 0.3333 206 53.997211551047 4.1655039904e-02
9817 12 0.3333 207 54.259674761698 4.1928671131e-02
9818 12 0.3333 208 54.522204761172 4.1723586296e-02
9819 12 0.3333 209 54.784442159734 4.1878178124e-02
9820 12 0.3333 210 55.047197285050 4.1813896531e-02
9821 12 0.3333 211 55.310189362403 4.1949867914e-02
9822 12 0.3333 212 55.573977862173 4.2007032017e-02
9823 12 0.3333 213 55.838192641274 4.2313862845e-02
9824 12 0.3333 214 56.106208483018 4.3431020240e-02
9825 12 0.3333 215 56.439936346017 9.9611922945e-01
9826 12 0.3333 216 56.561738488984 8.0987282222e-02
9827 12 0.3333 217 56.864635094598 4.3308141259e-02
9828 12 0.3333 218 57.132874463247 4.2219894584e-02
9829 12 0.3333 219 57.397427073979 4.2101554398e-02
9830 12 0.3333 220 57.660980498862 4.1907336466e-02
9831 12 0.3333 221 57.924640506940 4.1994213785e-02
9832 12 0.3333 222 58.188545890842 4.2196391902e-02
9833 12 0.3333 223 58.452142853737 4.1900025343e-02
9834 12 0.3333 224 58.717361784804 4.2545972115e-02
9835 12 0.3333 225 58.986686913847 4.3632766031e-02
9836 12 0.3333 226 59.333656676054 8.6431301447e-01
9837 12 0.3333 227 59.407618074411 2.1164006297e-01
9838 12 0.3333 228 59.739989579088 4.3709255339e-02
9839 12 0.3333 229 60.009199034701 4.2421548127e-02
9840 12 0.3333 230 60.274618176432 4.2092405104e-02
9841 12 0.3333 231 60.539453936945 4.2477959384e-02
9842 12 0.3333 232 60.830423227529 1.0396922623e+00
9843 12 0.3333 233 61.057867545335 4.2910111417e-02
9844 12 0.3333 234 61.323188922441 4.2028622950e-02
9845 12 0.3333 235 61.586443981808 4.1929596113e-02
9846 12 0.3333 236 61.849358494033 4.1868730911e-02
9847 12 0.3333 237 62.111905560327 4.1907374634e-02
9848 12 0.3333 238 62.374381734470 4.1648092435e-02
9849 12 0.3333 239 62.636851522189 4.1949845398e-02
9850 12 0.3333 240 62.899520823913 4.1782709580e-02
9851 12 0.3333 241 63.162425060488 4.1758757142e-02
9852 12 0.3333 242 63.424666769862 4.1926848007e-02
9853 12 0.3333 243 63.687994161332 4.1872541379e-02
9854 12 0.3333 244 63.950492764685 4.1987102735e-02
9855 12 0.3333 245 64.214100903097 4.2366631126e-02
9856 12 0.3333 246 64.479495205181 4.2299697644e-02
9857 12 0.3333 247 64.748289688195 4.3679466655e-02
9858 12 0.3333 248 65.096270094270 8.0012719329e-01
9859 12 0.3333 249 65.162951604531 2.7555605774e-01
9860 12 0.3333 250 65.500560834955 4.3705393661e-02
9861 12 0.3333 251 65.769778271670 4.2648076080e-02
9862 12 0.3333 252 66.034512055379 4.1945788689e-02
9863 12 0.3333 253 66.298645087993 4.2070479365e-02
9864 12 0.3333 254 66.561292769685 4.1925835832e-02
9865 12 0.3333 255 66.824770677484 4.1739653218e-02
9866 12 0.3333 256 67.080122371584 1.0419829644e+00
9867 12 0.3333 257 67.349594601803 4.1656795448e-02
9868 12 0.3333 258 67.612774235650 4.2030829860e-02
9869 12 0.3333 259 67.875311671256 4.1804466729e-02
9870 12 0.3333 260 68.137649911069 4.1991121799e-02
9871 12 0.3333 261 68.401000553365 4.2088610860e-02
9872 12 0.3333 262 68.664760652563 4.2040758845e-02
9873 12 0.3333 263 68.929664582524 4.2452260028e-02
9874 12 0.3333 264 69.198010943789 4.3619383495e-02
9875 12 0.3333 265 69.537965063425 9.6301706667e-01
9876 12 0.3333 266 69.637918410989 1.1337083154e-01
9877 12 0.3333 267 69.953472884443 4.3446569390e-02
9878 12 0.3333 268 70.221783848709 4.2351283627e-02
9879 12 0.3333 269 70.486175070329 4.1853547129e-02
9880 12 0.3333 270 70.749874925217 4.2480595582e-02
9881 12 0.3333 271 71.013160883280 4.1792711756e-02
9882 12 0.3333 272 71.275719962503 4.1855457576e-02
9883 12 0.3333 273 71.537753423894 4.2106343850e-02
9884 12 0.3333 274 71.800875839976 4.1665726465e-02
9885 12 0.3333 275 72.066972105058 1.0419362900e+00
9886 12 0.3333 276 72.325122709826 4.1664419876e-02
9887 12 0.3333 277 72.587032547249 4.2232327506e-02
9888 12 0.3333 278 72.849890956318 4.1626680645e-02
9889 12 0.3333 279 73.111498308502 4.1932254142e-02
9890 12 0.3333 280 73.374109118409 4.1721906869e-02
9891 12 0.3333 281 73.636437234602 4.1829426779e-02
9892 12 0.3333 282 73.899203874147 4.1909182141e-02
9893 12 0.3333 283 74.160929380667 4.1763832147e-02
9894 12 0.3333 284 74.423968685492 4.1904481122e-02
9895 12 0.3333 285 74.685489217541 4.2030260404e-02
9896 12 0.3333 286 74.948524047964 4.1822288966e-02
9897 12 0.3333 287 75.212366218564 4.2075416828e-02
9898 12 0.3333 288 75.476748495788 4.2728422245e-02
9899 12 0.3333 289 75.705993898190 1.0399632899e+00
9900 12 0.3333 290 75.995342939192 4.2305958891e-02
9901 12 0.3333 291 76.260703124484 4.2596447057e-02
9902 12 0.3333 292 76.525610797216 4.2212637255e-02
9903 12 0.3333 293 76.794146281067 4.3816845525e-02
9904 12 0.3333 294 77.135951369768 9.5605368995e-01
9905 12 0.3333 295 77.233044822244 1.2056169979e-01
9906 12 0.3333 296 77.549619811807 4.3807177971e-02
9907 12 0.3333 297 77.819039805333 4.2318265899e-02
9908 12 0.3333 298 78.083763455923 4.2277048082e-02
9909 12 0.3333 299 78.348298175938 4.2094737214e-02
9910 12 0.3333 300 78.613106276811 4.2162511540e-02
9911 12 0.3333 301 78.877347203657 4.2793290761e-02
9912 12 0.3333 302 79.152599554640 4.7972811077e-02
9913 12 0.3333 303 79.340208632496 1.0323983572e+00
9914 12 0.3333 304 79.650536878498 4.2705134531e-02
9915 12 0.3333 305 79.916999272024 4.2422986357e-02
9916 12 0.3333 306 80.180072700850 4.1822966356e-02
9917 12 0.3333 307 80.443720528318 4.2572684829e-02
9918 12 0.3333 308 80.706637081198 4.1709173457e-02
9919 12 0.3333 309 80.969256108693 4.2036229702e-02
9920 12 0.3333 310 81.233102702241 4.2399070841e-02
9921 12 0.3333 311 81.495135587557 4.1927385567e-02
9922 12 0.3333 312 81.759010653567 4.1998889062e-02
9923 12 0.3333 313 82.022580955770 4.2092793746e-02
9924 12 0.3333 314 82.287293772533 4.2407404079e-02
9925 12 0.3333 315 82.558292465119 4.4161598674e-02
9926 12 0.3333 316 82.900140325004 9.3140750995e-01
9927 12 0.3333 317 82.988564506017 1.4504262460e-01
9928 12 0.3333 318 83.312098452951 4.3729614072e-02
9929 12 0.3333 319 83.581739321478 4.2755728967e-02
9930 12 0.3333 320 83.848030397018 4.2476076619e-02
9931 12 0.3333 321 84.113948834202 4.3095866110e-02
9932 12 0.3333 322 84.384162018792 4.3796260967e-02
9933 12 0.3333 323 84.726421698846 9.5232895597e-01
9934 12 0.3333 324 84.821882743851 1.2437315844e-01
9935 12 0.3333 325 85.141653847203 4.3450172813e-02
9936 12 0.3333 326 85.409919014415 4.2570716252e-02
9937 12 0.3333 327 85.675998803540 4.2167661330e-02
9938 12 0.3333 328 85.939194954244 4.2156954316e-02
9939 12 0.3333 329 86.203234957071 4.2055570539e-02
9940 12 0.3333 330 86.467831832660 4.2770049795e-02
9941 12 0.3333 331 86.731462808240 4.2178430247e-02
9942 12 0.3333 332 86.999565535540 4.3323015238e-02
9943 12 0.3333 333 87.296815400816 7.0431744201e-02
9944 12 0.3333 334 87.430767289739 1.0073954830e+00
9945 12 0.3333 335 87.760390561579 4.4120104462e-02
9946 12 0.3333 336 88.028899037543 4.2752412757e-02
9947 12 0.3333 337 88.292613418821 4.2319749982e-02
9948 12 0.3333 338 88.556294880209 4.1805159236e-02
9949 12 0.3333 339 88.809491803675 1.0418868501e+00
9950 12 0.3333 340 89.082157272639 4.2126960104e-02
9951 12 0.3333 341 89.343665503219 4.1668310048e-02
9952 12 0.3333 342 89.606107544214 4.2008724257e-02
9953 12 0.3333 343 89.869497168365 4.2609049532e-02
9954 12 0.3333 344 90.131200043487 4.1646729000e-02
9955 12 0.3333 345 90.393451677958 4.2248549802e-02
9956 12 0.3333 346 90.655994961716 4.1590477822e-02
9957 12 0.3333 347 90.917577418048 4.1935665036e-02
9958 12 0.3333 348 91.181675361388 4.2616736311e-02
9959 12 0.3333 349 91.441797804718 4.1939049680e-02
9960 12 0.3333 350 91.704274749840 4.1959721464e-02
9961 12 0.3333 351 91.966386785962 4.1629629240e-02
9962 12 0.3333 352 92.229062179906 4.2109736917e-02
9963 12 0.3333 353 92.491893287403 1.0417248447e+00
9964 12 0.3333 354 92.751735363821 4.2611367964e-02
9965 12 0.3333 355 93.015433956075 4.2017655188e-02
9966 12 0.3333 356 93.278318018679 4.2012321615e-02
9967 12 0.3333 357 93.540674646702 4.1869102121e-02
9968 12 0.3333 358 93.805001079592 4.2021646504e-02
9969 12 0.3333 359 94.066697472120 4.2474132841e-02
9970 12 0.3333 360 94.335313944752 4.2927721382e-02
9971 12 0.3333 361 94.647905403919 1.0291326635e+00
9972 12 0.3333 362 94.822718268311 5.1180401911e-02
9973 12 0.3333 363 95.102313410860 4.2826268289e-02
9974 12 0.3333 364 95.368717286610 4.2276809934e-02
9975 12 0.3333 365 95.631791873059 4.3543046769e-02
9976 12 0.3333 366 95.871595024691 1.0409159186e+00
9977 12 0.3333 367 96.154113478503 4.2278932021e-02
9978 12 0.3333 368 96.417233541428 4.1805769519e-02
9979 12 0.3333 369 96.680118376639 4.2140939001e-02
9980 12 0.3333 370 96.942549315640 4.1737697311e-02
9981 12 0.3333 371 97.205515195245 4.1927455125e-02
9982 12 0.3333 372 97.467989646158 4.3295579399e-02
9983 12 0.3333 373 97.731111362012 4.1588852373e-02
9984 12 0.3333 374 97.993839288567 4.2020079735e-02
9985 12 0.3333 375 98.257095608718 4.2231515870e-02
9986 12 0.3333 376 98.522401580467 4.3641770065e-02
9987 12 0.3333 377 98.828641008452 1.0345244568e+00
9988 12 0.3333 378 99.023309336902 4.6893339200e-02
9989 12 0.3333 379 99.297733753262 4.2221026207e-02
9990 12 0.3333 380 99.560959055409 4.2270699185e-02
9991 12 0.3333 381 99.826337402224 4.2765373220e-02
9992 12 0.3333 382 100.086769713001 4.2665730261e-02
9993 12 0.3333 383 100.352990992520 4.3672504899e-02
9994 12 0.3333 384 100.615388714442 4.2460412411e-02
9995 12 0.3333 385 100.882288929793 4.2768964621e-02
9996 12 0.3333 386 101.170040622656 5.9657747014e-02
9997 12 0.3333 387 101.322258571066 1.0189587527e+00
9998 12 0.3333 388 101.646319864761 4.3198986558e-02
9999 12 0.3333 389 101.913685189062 4.2626110208e-02
10000 12 0.3333 390 102.176878914137 4.1976226195e-02
10001 12 0.3333 391 102.441042975115 4.2359606305e-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())