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 5 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
2002 4 0.8333 224 176.452147162993 1.1412011933e+00
2003 4 0.8333 225 177.290468396468 1.5102696954e-01
2004 4 0.8333 226 178.312316428211 1.0260292216e+00
2005 4 0.8333 227 178.752576714998 2.6569191663e-01
2006 4 0.8333 228 179.838899269679 9.6669665657e-01
2007 4 0.8333 229 180.240402636031 3.0204392544e-01
2008 4 0.8333 230 181.177259776750 1.8102707343e-01
2009 4 0.8333 231 182.158554277374 1.0622464110e+00
2010 4 0.8333 232 182.650079987872 2.0325647728e-01
2011 4 0.8333 233 183.582985490824 1.5515243807e-01
2012 4 0.8333 234 184.475314608067 2.6999658575e-01
2013 4 0.8333 235 184.955197132622 1.0593534880e+00
2014 4 0.8333 236 185.642747142564 1.0956131114e+00
2015 4 0.8333 237 186.688728807831 2.0427942874e-01
2016 4 0.8333 238 187.262891358193 1.0931624667e+00
2017 4 0.8333 239 188.274237896541 1.7675222244e-01
2018 4 0.8333 240 189.255578014069 6.0636924832e-01
2019 4 0.8333 241 189.571032432148 6.7794008275e-01
2020 4 0.8333 242 190.591865987007 1.7555763534e-01
2021 4 0.8333 243 191.392987335267 1.4945793034e-01
2022 4 0.8333 244 192.050618905839 1.1577983367e+00
2023 4 0.8333 245 193.060980422988 1.1240742783e+00
2024 4 0.8333 246 193.718694203720 1.4856609939e-01
2025 4 0.8333 247 194.513779607712 1.7519324779e-01
2026 4 0.8333 248 195.273942944332 1.1335908160e+00
2027 4 0.8333 249 196.155315927365 1.8467681538e-01
2028 4 0.8333 250 196.890549106972 1.1769095387e+00
2029 4 0.8333 251 197.941300296487 9.8786830658e-01
2030 4 0.8333 252 198.308862498428 3.1273774795e-01
2031 4 0.8333 253 199.256160547191 1.4249913602e-01
2032 4 0.8333 254 200.107851673784 1.9210450706e-01
2033 4 0.8333 255 201.077084573041 5.5767119858e-01
2034 4 0.8333 256 201.386936079719 7.4643448359e-01
2035 4 0.8333 257 202.479744533551 1.1378109124e+00
2036 4 0.8333 258 203.215639347954 1.9958075371e-01
2037 4 0.8333 259 204.160129355866 1.1076995896e+00
2038 4 0.8333 260 204.717783570852 2.2378084150e-01
2039 4 0.8333 261 205.416428845333 1.1222564412e+00
2040 4 0.8333 262 206.317905298999 2.0046826194e-01
2041 4 0.8333 263 207.176798760620 1.5041858164e-01
2042 4 0.8333 264 207.906438923208 1.1913350614e+00
2043 4 0.8333 265 208.667698189536 1.9154355499e-01
2044 4 0.8333 266 209.573761055770 1.1679000706e+00
2045 4 0.8333 267 210.251346645350 1.7350276113e-01
2046 4 0.8333 268 211.150367881104 1.7080371477e-01
2047 4 0.8333 269 211.722407800917 1.1048986911e+00
2048 4 0.8333 270 212.735671689412 2.1818972981e-01
2049 4 0.8333 271 213.363017886940 1.2082168413e+00
2050 4 0.8333 272 214.480401778659 1.0015278172e+00
2051 4 0.8333 273 214.932625048599 3.3861316566e-01
2052 4 0.8333 274 216.020907322201 6.8208531876e-01
2053 4 0.8333 275 216.344416373799 6.6809389601e-01
2054 4 0.8333 276 217.395426833118 1.7488220421e-01
2055 4 0.8333 277 218.087902811201 1.9350439369e-01
2056 4 0.8333 278 219.056927167558 1.1725596427e+00
2057 4 0.8333 279 219.680889537980 1.9750956080e-01
2058 4 0.8333 280 220.688297535229 1.2046919180e+00
2059 4 0.8333 281 221.405744753943 1.1491539844e+00
2060 4 0.8333 282 222.089921342108 1.6487012049e-01
2061 4 0.8333 283 223.005633614227 2.2655642488e-01
2062 4 0.8333 284 223.938384475991 1.0865967616e+00
2063 4 0.8333 285 224.427127763493 3.7117764399e-01
2064 4 0.8333 286 225.055450264878 1.1214171602e+00
2065 4 0.8333 287 225.967231042901 2.0202188377e-01
2066 4 0.8333 288 226.717323682841 2.3078384056e-01
2067 4 0.8333 289 227.443652744406 1.1363593725e+00
2068 4 0.8333 290 228.364166241614 2.6406774560e-01
2069 4 0.8333 291 229.317452687567 1.1453833873e+00
2070 4 0.8333 292 230.091290195740 2.2215489921e-01
2071 4 0.8333 293 230.926575960933 4.4732481393e-01
2072 4 0.8333 294 231.394816810077 9.8709124944e-01
2073 4 0.8333 295 232.054426110774 1.1633120911e+00
2074 4 0.8333 296 232.960239366245 2.5586013383e-01
2075 4 0.8333 297 233.716786919368 1.1408882242e+00
2076 4 0.8333 298 234.745070505278 2.6729293079e-01
2077 4 0.8333 299 235.481934855054 1.8900453431e-01
2078 4 0.8333 300 236.377572585615 9.2263998111e-01
2079 4 0.8333 301 236.790533974174 5.9845972824e-01
2080 4 0.8333 302 237.768157125201 1.1634091459e+00
2081 4 0.8333 303 238.582678648992 1.5654393605e-01
2082 4 0.8333 304 239.520424967242 1.2730894335e+00
2083 4 0.8333 305 240.146193965076 1.7733585357e-01
2084 4 0.8333 306 241.044968597787 1.3021102945e+00
2085 4 0.8333 307 241.823149257434 1.7517915436e-01
2086 4 0.8333 308 242.711255762511 1.0942002635e+00
2087 4 0.8333 309 243.212567670764 4.7610776044e-01
2088 4 0.8333 310 244.067977469944 1.1742794637e+00
2089 4 0.8333 311 244.883053791246 3.2924317015e-01
2090 4 0.8333 312 245.722529500245 1.6682198146e-01
2091 4 0.8333 313 246.640620507136 2.9153620739e-01
2092 4 0.8333 314 247.159334819149 1.1899640091e+00
2093 4 0.8333 315 248.118837146156 1.2660279585e+00
2094 4 0.8333 316 248.803181092976 2.4721382631e-01
2095 4 0.8333 317 249.614531872714 1.2921990085e+00
2096 4 0.8333 318 250.421176183530 2.2453737065e-01
2097 4 0.8333 319 251.054821914285 1.1345132128e+00
2098 4 0.8333 320 252.063652958407 4.4414589550e-01
2099 4 0.8333 321 252.903049808197 9.1280383001e-01
2100 4 0.8333 322 253.319144741598 5.0794443743e-01
2101 4 0.8333 323 254.389821154599 3.8793523842e-01
2102 4 0.8333 324 255.276104383090 1.3850892314e+00
2103 4 0.8333 325 256.107295363518 4.4831015395e-01
2104 4 0.8333 326 256.496027510772 8.8174830101e-01
2105 4 0.8333 327 257.551300615373 1.9472128688e-01
2106 4 0.8333 328 258.476181679886 1.1872278590e+00
2107 4 0.8333 329 259.049358649207 5.1862616014e-01
2108 4 0.8333 330 259.868860463380 1.3182895940e+00
2109 4 0.8333 331 260.692814907973 1.1804966075e+00
2110 4 0.8333 332 261.226217868654 3.1291923135e-01
2111 4 0.8333 333 262.141647610272 4.4943964198e-01
2112 4 0.8333 334 263.095971368034 2.4247759979e-01
2113 4 0.8333 335 263.620756987478 1.3774837830e+00
2114 4 0.8333 336 264.746081999814 3.6059812345e-01
2115 4 0.8333 337 265.488286327838 1.2131172242e+00
2116 4 0.8333 338 266.280933948985 5.0420655254e-01
2117 4 0.8333 339 266.794758188827 1.1537442542e+00
2118 4 0.8333 340 267.842122330125 1.0957878042e+00
2119 4 0.8333 341 268.455194383443 5.7245610509e-01
2120 4 0.8333 342 269.272320675407 2.2612625166e-01
2121 4 0.8333 343 270.033125358503 1.3544381251e+00
2122 4 0.8333 344 270.815112507486 4.3494443110e-01
2123 4 0.8333 345 271.477593553640 1.3663795733e+00
2124 4 0.8333 346 272.334040445472 5.3845328710e-01
2125 4 0.8333 347 273.386967819778 1.0469395564e+00
2126 4 0.8333 348 273.850177346513 3.0805946921e-01
2127 4 0.8333 349 274.803132243507 5.6090296441e-01
2128 4 0.8333 350 275.586043231202 1.1935271983e+00
2129 4 0.8333 351 276.442796063326 1.5799952777e+00
2130 4 0.8333 352 277.287398835426 2.2837035339e-01
2131 4 0.8333 353 278.104979938800 1.3648912366e+00
2132 4 0.8333 354 278.761833435863 6.4866603817e-01
2133 4 0.8333 355 279.273838318034 1.2857467075e+00
2134 4 1.0000 1 1.126073400698 1.3150969738e-01
2135 4 1.0000 2 1.936008038247 1.2740670325e-01
2136 4 1.0000 3 2.732694368566 1.2636621211e-01
2137 4 1.0000 4 3.525210874953 1.2595312341e-01
2138 4 1.0000 5 4.315900171424 1.2575252173e-01
2139 4 1.0000 6 5.105657834108 1.2564554270e-01
2140 4 1.0000 7 5.894913599662 1.2558829852e-01
2141 4 1.0000 8 6.683914401274 1.2556250831e-01
2142 4 1.0000 9 7.472831226972 1.2556100101e-01
2143 4 1.0000 10 8.261811860851 1.2558322675e-01
2144 4 1.0000 11 9.051019751986 1.2563499919e-01
2145 4 1.0000 12 9.840682412767 1.2573202239e-01
2146 4 1.0000 13 10.631188000706 1.2591308387e-01
2147 4 1.0000 14 11.423335439498 1.2628281622e-01
2148 4 1.0000 15 12.219198761634 1.2720705733e-01
2149 4 1.0000 16 13.026769688219 1.3082036040e-01
2150 4 1.0000 17 14.023520678236 7.4562634887e-01
2151 4 1.0000 18 14.318494499143 4.8317221263e-01
2152 4 1.0000 19 15.293885607707 1.3081752958e-01
2153 4 1.0000 20 16.101786100544 1.2729956533e-01
2154 4 1.0000 21 16.898446754006 1.2644831498e-01
2155 4 1.0000 22 17.691931600186 1.2618381164e-01
2156 4 1.0000 23 18.484669367837 1.2619664153e-01
2157 4 1.0000 24 19.278465403299 1.2656797621e-01
2158 4 1.0000 25 20.077767583641 1.2838024329e-01
2159 4 1.0000 26 20.998876808348 1.1010029703e+00
2160 4 1.0000 27 21.584644069573 1.4137439081e-01
2161 4 1.0000 28 22.408773728392 1.2792693910e-01
2162 4 1.0000 29 23.209795949755 1.2743931654e-01
2163 4 1.0000 30 24.015305976659 1.2973596313e-01
2164 4 1.0000 31 24.974079880271 1.0654312715e+00
2165 4 1.0000 32 25.459337224345 1.7137738089e-01
2166 4 1.0000 33 26.320677650424 1.2896061921e-01
2167 4 1.0000 34 27.122885874619 1.2694305519e-01
2168 4 1.0000 35 27.918817668261 1.2653281929e-01
2169 4 1.0000 36 28.714013503756 1.2668827353e-01
2170 4 1.0000 37 29.512796281109 1.2797203865e-01
2171 4 1.0000 38 30.408651023660 1.1143997676e+00
2172 4 1.0000 39 31.062578881866 1.3372112514e-01
2173 4 1.0000 40 31.885415199595 1.3151295775e-01
2174 4 1.0000 41 32.876666319498 9.8703156710e-01
2175 4 1.0000 42 33.262749009879 2.4598059561e-01
2176 4 1.0000 43 34.178600582902 1.3060644943e-01
2177 4 1.0000 44 34.988031999061 1.2788597841e-01
2178 4 1.0000 45 35.790421171366 1.2779685595e-01
2179 4 1.0000 46 36.598031219834 1.3004332874e-01
2180 4 1.0000 47 37.552927687540 1.0775199238e+00
2181 4 1.0000 48 38.067850708356 1.6236947810e-01
2182 4 1.0000 49 38.927649473319 1.3068092697e-01
2183 4 1.0000 50 39.750027068041 1.3256944188e-01
2184 4 1.0000 51 40.739600779939 5.0729161462e-01
2185 4 1.0000 52 41.037561317314 7.2474979169e-01
2186 4 1.0000 53 42.055098218874 1.3587157812e-01
2187 4 1.0000 54 42.986413745455 2.4004485802e-01
2188 4 1.0000 55 43.384192985687 9.9556411495e-01
2189 4 1.0000 56 44.377326364792 1.3147744678e-01
2190 4 1.0000 57 45.190637795950 1.2845268450e-01
2191 4 1.0000 58 45.996483317830 1.2844013216e-01
2192 4 1.0000 59 46.809759537040 1.3151567494e-01
2193 4 1.0000 60 47.770221275034 3.7114503766e-01
2194 4 1.0000 61 48.092490336667 8.6038537067e-01
2195 4 1.0000 62 49.105451012138 1.3602616821e-01
2196 4 1.0000 63 49.788419654876 1.1180896725e+00
2197 4 1.0000 64 50.680697489760 1.2829564168e-01
2198 4 1.0000 65 51.481686596016 1.2724928330e-01
2199 4 1.0000 66 52.283278834205 1.2894973814e-01
2200 4 1.0000 67 52.981304056158 1.1207292208e+00
2201 4 1.0000 68 53.849638784138 1.2747069460e-01
2202 4 1.0000 69 54.648606438486 1.2738010968e-01
2203 4 1.0000 70 55.453404025106 1.2972083673e-01
2204 4 1.0000 71 56.410187351478 1.0677478162e+00
2205 4 1.0000 72 56.900094197862 1.6942860172e-01
2206 4 1.0000 73 57.759554106506 1.2901921556e-01
2207 4 1.0000 74 58.561525517517 1.2709357412e-01
2208 4 1.0000 75 59.348309134753 1.1269080719e+00
2209 4 1.0000 76 60.159024137605 1.2943983933e-01
2210 4 1.0000 77 60.843979092039 1.1192072302e+00
2211 4 1.0000 78 61.717645976414 1.2746819540e-01
2212 4 1.0000 79 62.514448814611 1.2674153418e-01
2213 4 1.0000 80 63.311443051625 1.2722921086e-01
2214 4 1.0000 81 64.115905559840 1.3014052765e-01
2215 4 1.0000 82 65.075733771066 1.0663371254e+00
2216 4 1.0000 83 65.565146068746 1.7208947137e-01
2217 4 1.0000 84 66.441910300214 1.3587752054e-01
2218 4 1.0000 85 67.096585830474 1.1141933794e+00
2219 4 1.0000 86 67.996294989017 1.2853275463e-01
2220 4 1.0000 87 68.796480035075 1.2733073989e-01
2221 4 1.0000 88 69.551188361421 1.1254235067e+00
2222 4 1.0000 89 70.381485842942 1.2696616531e-01
2223 4 1.0000 90 71.178341837894 1.2786982738e-01
2224 4 1.0000 91 72.054670472848 1.1193636506e+00
2225 4 1.0000 92 72.740091553286 1.3047277859e-01
2226 4 1.0000 93 73.546710204438 1.2808293551e-01
2227 4 1.0000 94 74.354564506743 1.3022569897e-01
2228 4 1.0000 95 75.215073537372 1.6395099399e-01
2229 4 1.0000 96 75.739621987192 1.0816363376e+00
2230 4 1.0000 97 76.835169724346 2.7945397813e-01
2231 4 1.0000 98 77.212440220319 9.6004146826e-01
2232 4 1.0000 99 78.232242428785 1.3695237164e-01
2233 4 1.0000 100 79.253474622315 8.8255782911e-01
2234 4 1.0000 101 79.586331059637 3.5143364771e-01
2235 4 1.0000 102 80.544317556758 1.3237521303e-01
2236 4 1.0000 103 81.358323919004 1.2905341353e-01
2237 4 1.0000 104 82.163516713287 1.2834705490e-01
2238 4 1.0000 105 82.916149951832 1.1269086479e+00
2239 4 1.0000 106 83.766232671166 1.3096188253e-01
2240 4 1.0000 107 84.708061020307 1.0943666001e+00
2241 4 1.0000 108 85.272860954400 1.5026826241e-01
2242 4 1.0000 109 86.126934360505 1.3385988304e-01
2243 4 1.0000 110 87.038010064343 2.1330678551e-01
2244 4 1.0000 111 87.477238627833 1.0306954504e+00
2245 4 1.0000 112 88.668765448977 6.5541944318e-01
2246 4 1.0000 113 88.967995742568 5.8120773003e-01
2247 4 1.0000 114 89.969176766821 1.3359599892e-01
2248 4 1.0000 115 90.787310682979 1.2939945362e-01
2249 4 1.0000 116 91.592772161137 1.2967878844e-01
2250 4 1.0000 117 92.479149199733 1.1209938105e+00
2251 4 1.0000 118 93.169814209339 1.3231225610e-01
2252 4 1.0000 119 93.996168432417 1.3543282015e-01
2253 4 1.0000 120 94.668141730948 1.1212000668e+00
2254 4 1.0000 121 95.776743466501 8.4052257610e-01
2255 4 1.0000 122 96.096923355455 3.9495379739e-01
2256 4 1.0000 123 97.069231503530 1.3334225062e-01
2257 4 1.0000 124 97.888807191767 1.3137943465e-01
2258 4 1.0000 125 98.810848615019 1.1114609953e+00
2259 4 1.0000 126 99.440835089095 1.3953526338e-01
2260 4 1.0000 127 100.275312097162 1.3556535073e-01
2261 4 1.0000 128 101.267920750702 1.0268566519e+00
2262 4 1.0000 129 101.701219327299 2.1251727236e-01
2263 4 1.0000 130 102.619949688272 1.3704846366e-01
2264 4 1.0000 131 103.642675199487 8.9929933371e-01
2265 4 1.0000 132 103.991928261242 3.4233185723e-01
2266 4 1.0000 133 105.044388777110 2.0997731496e-01
2267 4 1.0000 134 105.495861287604 1.0355490373e+00
2268 4 1.0000 135 106.496812474728 1.3852184063e-01
2269 4 1.0000 136 107.183218507410 1.1202856733e+00
2270 4 1.0000 137 108.081574615391 1.3145516897e-01
2271 4 1.0000 138 108.887089640068 1.2939246143e-01
2272 4 1.0000 139 109.699892366081 1.3165348433e-01
2273 4 1.0000 140 110.563263942104 1.7440195372e-01
2274 4 1.0000 141 111.067798548754 1.0750549612e+00
2275 4 1.0000 142 111.891430589789 1.1200777916e+00
2276 4 1.0000 143 112.804642326306 1.3279578727e-01
2277 4 1.0000 144 113.616523237691 1.3146399634e-01
2278 4 1.0000 145 114.331266054607 1.1253269746e+00
2279 4 1.0000 146 115.213705372427 1.3398596230e-01
2280 4 1.0000 147 116.184869450467 1.0572742667e+00
2281 4 1.0000 148 116.661796643340 1.8805775659e-01
2282 4 1.0000 149 117.554724598333 1.3649588850e-01
2283 4 1.0000 150 118.499377204375 2.9787859853e-01
2284 4 1.0000 151 118.862355321863 9.4096246355e-01
2285 4 1.0000 152 119.860764696352 1.3596806226e-01
2286 4 1.0000 153 120.691203347424 1.3389469395e-01
2287 4 1.0000 154 121.384160052157 1.1227195337e+00
2288 4 1.0000 155 122.286165347640 1.3911830380e-01
2289 4 1.0000 156 122.963752368550 1.1253097720e+00
2290 4 1.0000 157 124.040934780701 4.2966722539e-01
2291 4 1.0000 158 124.357898951426 8.0987206184e-01
2292 4 1.0000 159 125.373140347538 1.3463657443e-01
2293 4 1.0000 160 126.198119077062 1.3818208011e-01
2294 4 1.0000 161 127.081275533830 1.8942459003e-01
2295 4 1.0000 162 127.559775978786 1.0585360062e+00
2296 4 1.0000 163 128.541727108632 1.3816169053e-01
2297 4 1.0000 164 129.536946193897 1.0612090152e+00
2298 4 1.0000 165 130.018386010665 1.8987069607e-01
2299 4 1.0000 166 131.055560890932 1.0911306282e+00
2300 4 1.0000 167 131.611981593095 1.6325007570e-01
2301 4 1.0000 168 132.470876297228 1.3733620761e-01
2302 4 1.0000 169 133.451631215905 1.0472644942e+00
2303 4 1.0000 170 133.912661795556 1.9917633479e-01
2304 4 1.0000 171 134.760661421884 1.1381264182e+00
2305 4 1.0000 172 135.593525509062 1.3142811944e-01
2306 4 1.0000 173 136.400418093930 1.3055654417e-01
2307 4 1.0000 174 137.193789051634 1.3438048422e-01
2308 4 1.0000 175 138.099555641902 1.1180770305e+00
2309 4 1.0000 176 138.760422165655 1.4424630291e-01
2310 4 1.0000 177 139.711620116786 1.1060301024e+00
2311 4 1.0000 178 140.289978447800 1.4927066797e-01
2312 4 1.0000 179 141.124944525392 1.1327703936e+00
2313 4 1.0000 180 141.943640989805 1.4062003176e-01
2314 4 1.0000 181 142.936562911521 5.3761383369e-01
2315 4 1.0000 182 143.236415426636 7.0525773988e-01
2316 4 1.0000 183 144.252290847609 1.4139687008e-01
2317 4 1.0000 184 145.064951278415 1.3690274029e-01
2318 4 1.0000 185 145.977762515279 1.1119032402e+00
2319 4 1.0000 186 146.584496026887 1.5213970927e-01
2320 4 1.0000 187 147.422469614313 1.1323104819e+00
2321 4 1.0000 188 148.229497858366 1.3127611388e-01
2322 4 1.0000 189 149.056229702571 1.4125633750e-01
2323 4 1.0000 190 150.018340339036 1.0979235274e+00
2324 4 1.0000 191 150.744355678230 6.2216750081e-01
2325 4 1.0000 192 151.078458424437 6.5680797290e-01
2326 4 1.0000 193 152.084303739931 1.4182704735e-01
2327 4 1.0000 194 153.004869043557 1.1248718938e+00
2328 4 1.0000 195 153.661434355345 1.4001657654e-01
2329 4 1.0000 196 154.479758927089 1.4398972680e-01
2330 4 1.0000 197 155.297256116072 1.3910651416e-01
2331 4 1.0000 198 156.108753406036 1.1328726528e+00
2332 4 1.0000 199 156.894386654131 1.3459885709e-01
2333 4 1.0000 200 157.609205707319 1.1430741079e+00
2334 4 1.0000 201 158.681830081408 5.6389839578e-01
2335 4 1.0000 202 158.982035509551 6.9014989930e-01
2336 4 1.0000 203 160.007169803867 1.4070512626e-01
2337 4 1.0000 204 161.017911420570 5.8118244217e-01
2338 4 1.0000 205 161.330335131167 6.8262603651e-01
2339 4 1.0000 206 162.326956272340 1.5041769479e-01
2340 4 1.0000 207 163.040524350676 1.1328587264e+00
2341 4 1.0000 208 163.934107192227 1.4161354000e-01
2342 4 1.0000 209 164.700879558203 1.3757142545e-01
2343 4 1.0000 210 165.534430446918 1.1315365343e+00
2344 4 1.0000 211 166.309678086015 1.4998668754e-01
2345 4 1.0000 212 167.177323365700 1.1328679801e+00
2346 4 1.0000 213 167.959869753328 1.5101909055e-01
2347 4 1.0000 214 168.954977010984 7.5387335736e-01
2348 4 1.0000 215 169.326126018227 5.8162126084e-01
2349 4 1.0000 216 169.968375890354 1.0585649681e+00
2350 4 1.0000 217 170.945534177077 1.4364106780e-01
2351 4 1.0000 218 171.792169743942 1.5038786126e-01
2352 4 1.0000 219 172.574006847492 1.3533498778e-01
2353 4 1.0000 220 173.407692403661 1.1576119896e+00
2354 4 1.0000 221 174.252104915015 1.8435409779e-01
2355 4 1.0000 222 174.786283959244 1.0926008374e+00
2356 4 1.0000 223 175.755480147861 1.4153075106e-01
2357 4 1.0000 224 176.458569759377 1.1364256533e+00
2358 4 1.0000 225 177.326696528227 1.4981774590e-01
2359 4 1.0000 226 178.328290374145 1.0803342073e+00
2360 4 1.0000 227 178.836101555401 2.1579260152e-01
2361 4 1.0000 228 179.866632438119 1.0605734961e+00
2362 4 1.0000 229 180.361397090786 2.1188196730e-01
2363 4 1.0000 230 181.234240373663 1.7760620286e-01
2364 4 1.0000 231 182.177440698064 1.1092098755e+00
2365 4 1.0000 232 182.780084740879 1.6129677520e-01
2366 4 1.0000 233 183.678036016782 1.6052314006e-01
2367 4 1.0000 234 184.651364624737 5.2697413004e-01
2368 4 1.0000 235 185.050318043444 8.5322059370e-01
2369 4 1.0000 236 185.665493797882 1.0334072156e+00
2370 4 1.0000 237 186.760372574826 2.3312244760e-01
2371 4 1.0000 238 187.275081862011 1.0605219715e+00
2372 4 1.0000 239 188.308167094180 1.7927003392e-01
2373 4 1.0000 240 189.313130379702 8.2601861755e-01
2374 4 1.0000 241 189.646398304339 4.5955986423e-01
2375 4 1.0000 242 190.642812025648 1.7855811903e-01
2376 4 1.0000 243 191.478656530335 1.6154083497e-01
2377 4 1.0000 244 192.059578676819 1.1391845197e+00
2378 4 1.0000 245 193.068374712073 1.1346063766e+00
2379 4 1.0000 246 193.795564692635 1.4544897461e-01
2380 4 1.0000 247 194.573140105511 1.7549033320e-01
2381 4 1.0000 248 195.281041453731 1.1270235508e+00
2382 4 1.0000 249 196.194391726414 1.8905736474e-01
2383 4 1.0000 250 196.896322839877 1.1711346592e+00
2384 4 1.0000 251 197.962166680022 1.0763986059e+00
2385 4 1.0000 252 198.399884190317 2.2794376670e-01
2386 4 1.0000 253 199.308656823123 1.4160582756e-01
2387 4 1.0000 254 200.146764318737 1.9294748610e-01
2388 4 1.0000 255 201.143403444663 8.0137081695e-01
2389 4 1.0000 256 201.457175550263 5.0109040519e-01
2390 4 1.0000 257 202.487146513380 1.1432014489e+00
2391 4 1.0000 258 203.263531912488 1.9678624028e-01
2392 4 1.0000 259 204.176037491206 1.1427417058e+00
2393 4 1.0000 260 204.849874679974 2.1820500432e-01
2394 4 1.0000 261 205.431101341913 1.0920801387e+00
2395 4 1.0000 262 206.357067359834 1.9992958386e-01
2396 4 1.0000 263 207.243033351103 1.5926741486e-01
2397 4 1.0000 264 207.916276260209 1.1864533256e+00
2398 4 1.0000 265 208.713523583848 1.8716296437e-01
2399 4 1.0000 266 209.581948726093 1.1756748069e+00
2400 4 1.0000 267 210.311687734719 1.6720737096e-01
2401 4 1.0000 268 211.234460130213 1.9936225090e-01
2402 4 1.0000 269 211.734648749577 1.0724131586e+00
2403 4 1.0000 270 212.775899153334 2.3118080116e-01
2404 4 1.0000 271 213.369885130706 1.1937005968e+00
2405 4 1.0000 272 214.495244677221 1.0522149799e+00
2406 4 1.0000 273 214.992169574511 2.9303522716e-01
2407 4 1.0000 274 216.075704449453 8.9750246897e-01
2408 4 1.0000 275 216.421163738806 4.5193299935e-01
2409 4 1.0000 276 217.451971310764 1.8281293788e-01
2410 4 1.0000 277 218.136533311375 1.8377379377e-01
2411 4 1.0000 278 219.064986858809 1.1839929458e+00
2412 4 1.0000 279 219.728760741443 1.8528027107e-01
2413 4 1.0000 280 220.695869852404 1.2161024957e+00
2414 4 1.0000 281 221.418424301498 1.1523460912e+00
2415 4 1.0000 282 222.168135573364 1.5506104512e-01
2416 4 1.0000 283 223.055673994152 2.3147228163e-01
2417 4 1.0000 284 223.971993415224 1.1911454906e+00
2418 4 1.0000 285 224.667230285982 4.3252199684e-01
2419 4 1.0000 286 225.108082006983 9.6323292314e-01
2420 4 1.0000 287 226.073656709148 2.0969400572e-01
2421 4 1.0000 288 226.817704185729 2.2967693122e-01
2422 4 1.0000 289 227.455846656383 1.1143966888e+00
2423 4 1.0000 290 228.389830768559 2.6259211104e-01
2424 4 1.0000 291 229.325430354161 1.1542141470e+00
2425 4 1.0000 292 230.170013242452 2.3711149240e-01
2426 4 1.0000 293 231.071885409378 7.4469101961e-01
2427 4 1.0000 294 231.542960808938 7.9720510507e-01
2428 4 1.0000 295 232.095593776452 1.0454240140e+00
2429 4 1.0000 296 233.021013203316 2.5395733690e-01
2430 4 1.0000 297 233.724725323535 1.1278659803e+00
2431 4 1.0000 298 234.773690823111 2.7610182895e-01
2432 4 1.0000 299 235.546510282015 1.9139618312e-01
2433 4 1.0000 300 236.414293987878 1.0335805244e+00
2434 4 1.0000 301 236.850212570441 4.8151491285e-01
2435 4 1.0000 302 237.775214527584 1.1617710962e+00
2436 4 1.0000 303 238.627248453987 1.5502368480e-01
2437 4 1.0000 304 239.528586537942 1.2870249384e+00
2438 4 1.0000 305 240.217104495247 1.6713835612e-01
2439 4 1.0000 306 241.052893636842 1.3050806349e+00
2440 4 1.0000 307 241.897092500465 1.7934993362e-01
2441 4 1.0000 308 242.739093641379 1.1636165902e+00
2442 4 1.0000 309 243.289069814027 4.1133518836e-01
2443 4 1.0000 310 244.080779021252 1.1662526696e+00
2444 4 1.0000 311 244.916745530859 3.2620507183e-01
2445 4 1.0000 312 245.785574627973 1.6809664784e-01
2446 4 1.0000 313 246.729745280782 3.7219900859e-01
2447 4 1.0000 314 247.186355462680 1.1120720466e+00
2448 4 1.0000 315 248.132683305327 1.2797423278e+00
2449 4 1.0000 316 248.888489478492 2.4244007871e-01
2450 4 1.0000 317 249.628320203559 1.2874959729e+00
2451 4 1.0000 318 250.518534911052 2.4979975728e-01
2452 4 1.0000 319 251.070471925918 1.0979693076e+00
2453 4 1.0000 320 252.088254026577 4.5347911346e-01
2454 4 1.0000 321 252.939835707545 1.0132654323e+00
2455 4 1.0000 322 253.383022195867 3.9690567817e-01
2456 4 1.0000 323 254.409485767776 3.9012400632e-01
2457 4 1.0000 324 255.284534770535 1.3946103764e+00
2458 4 1.0000 325 256.208188815975 6.7092865170e-01
2459 4 1.0000 326 256.561099737045 6.5092777901e-01
2460 4 1.0000 327 257.609743661197 1.9907571248e-01
2461 4 1.0000 328 258.498706146185 1.2412243036e+00
2462 4 1.0000 329 259.124504516837 4.8721757767e-01
2463 4 1.0000 330 259.890475805623 1.3148300497e+00
2464 4 1.0000 331 260.726294338394 1.2313885325e+00
2465 4 1.0000 332 261.346161418970 2.4714496553e-01
2466 4 1.0000 333 262.171187742591 4.4153255255e-01
2467 4 1.0000 334 263.184703249997 3.0129014636e-01
2468 4 1.0000 335 263.636091083948 1.3136368380e+00
2469 4 1.0000 336 264.778701094641 3.7899846567e-01
2470 4 1.0000 337 265.507205889767 1.2223115881e+00
2471 4 1.0000 338 266.381628818896 6.3407093699e-01
2472 4 1.0000 339 266.840538839548 1.0096731188e+00
2473 4 1.0000 340 267.870104595078 1.1451366989e+00
2474 4 1.0000 341 268.524464136761 5.3922952267e-01
2475 4 1.0000 342 269.430652762204 2.5360417568e-01
2476 4 1.0000 343 270.062958483089 1.3345947798e+00
2477 4 1.0000 344 270.907620639477 4.6160115087e-01
2478 4 1.0000 345 271.500215644221 1.3155393607e+00
2479 4 1.0000 346 272.357270441760 5.2854823055e-01
2480 4 1.0000 347 273.410539388100 1.1193193207e+00
2481 4 1.0000 348 273.959585008734 2.4299224808e-01
2482 4 1.0000 349 274.830275635188 5.6403786121e-01
2483 4 1.0000 350 275.598154373949 1.1884783776e+00
2484 4 1.0000 351 276.451312734625 1.5814573154e+00
2485 4 1.0000 352 277.375957023021 2.4927563065e-01
2486 4 1.0000 353 278.137927603990 1.4204557931e+00
2487 4 1.0000 354 278.910801337905 8.4000114167e-01
2488 4 1.0000 355 279.335874768542 1.0215350329e+00
2489 8 0.0000 1 0.392973796016 6.2543653021e-02
2490 8 0.0000 2 0.785947735161 6.2543696138e-02
2491 8 0.0000 3 1.178921868414 6.2543685999e-02
2492 8 0.0000 4 1.571896038464 6.2543776634e-02
2493 8 0.0000 5 1.964871168086 6.2543910223e-02
2494 8 0.0000 6 2.357846914353 6.2544025844e-02
2495 8 0.0000 7 2.750823196113 6.2544034823e-02
2496 8 0.0000 8 3.143800015546 6.2544263175e-02
2497 8 0.0000 9 3.536777373245 6.2544090620e-02
2498 8 0.0000 10 3.929755351454 6.2544781248e-02
2499 8 0.0000 11 4.322737766328 6.2544890447e-02
2500 8 0.0000 12 4.715717307389 6.2544489219e-02
2501 8 0.0000 13 5.108699302028 6.2545574813e-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())