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 3 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
1002 4 0.3333 289 227.419330916569 1.1518622332e+00
1003 4 0.3333 290 228.270999212518 2.6032130516e-01
1004 4 0.3333 291 229.234936538771 8.6379662542e-01
1005 4 0.3333 292 229.583517418694 4.1418172935e-01
1006 4 0.3333 293 230.498073659979 2.6809600195e-01
1007 4 0.3333 294 231.268587058539 1.1553566278e+00
1008 4 0.3333 295 232.005256311263 1.2539448748e+00
1009 4 0.3333 296 232.846817267661 2.6443711187e-01
1010 4 0.3333 297 233.698964931476 1.1547879265e+00
1011 4 0.3333 298 234.633727586558 2.2777157117e-01
1012 4 0.3333 299 235.282605344204 2.0398265698e-01
1013 4 0.3333 300 236.242617714622 5.9333019915e-01
1014 4 0.3333 301 236.673395694944 9.4459296852e-01
1015 4 0.3333 302 237.744694222394 1.1471594115e+00
1016 4 0.3333 303 238.418601211140 1.7365674742e-01
1017 4 0.3333 304 239.472300418280 1.1112692820e+00
1018 4 0.3333 305 239.876755326660 3.3161811545e-01
1019 4 0.3333 306 241.004863293366 1.2164432212e+00
1020 4 0.3333 307 241.507812014897 2.4012342527e-01
1021 4 0.3333 308 242.571107463422 7.1159518854e-01
1022 4 0.3333 309 243.009965938831 8.5380166859e-01
1023 4 0.3333 310 244.021569622666 1.1528243662e+00
1024 4 0.3333 311 244.710170993235 3.3922920881e-01
1025 4 0.3333 312 245.445735033455 1.8635577190e-01
1026 4 0.3333 313 246.351419543788 1.9773645526e-01
1027 4 0.3333 314 247.103417853789 1.2792441161e+00
1028 4 0.3333 315 248.041214273143 1.0779036420e+00
1029 4 0.3333 316 248.497523073450 4.2912866236e-01
1030 4 0.3333 317 249.557825280194 1.2138764638e+00
1031 4 0.3333 318 250.096749268568 2.8573161893e-01
1032 4 0.3333 319 251.016992128975 1.1768415879e+00
1033 4 0.3333 320 251.943370713048 3.8340530194e-01
1034 4 0.3333 321 252.671700149001 5.1391279289e-01
1035 4 0.3333 322 253.160217001625 9.7613334441e-01
1036 4 0.3333 323 254.298099265103 3.5913509375e-01
1037 4 0.3333 324 255.169587680093 9.8830112780e-01
1038 4 0.3333 325 255.526974433478 5.8090802476e-01
1039 4 0.3333 326 256.403840448041 1.1640007954e+00
1040 4 0.3333 327 257.353155488824 1.8409010999e-01
1041 4 0.3333 328 258.347114545980 7.9674775975e-01
1042 4 0.3333 329 258.796797566395 8.4864243198e-01
1043 4 0.3333 330 259.775617401771 1.2146199057e+00
1044 4 0.3333 331 260.430931303527 7.6884855997e-01
1045 4 0.3333 332 260.930161707272 8.9241873042e-01
1046 4 0.3333 333 262.048087062094 4.3896775784e-01
1047 4 0.3333 334 262.799174669321 1.8700429967e-01
1048 4 0.3333 335 263.586318954755 1.4580519736e+00
1049 4 0.3333 336 264.572919914604 2.7132227318e-01
1050 4 0.3333 337 265.341097254203 9.4107759401e-01
1051 4 0.3333 338 265.826438080553 6.1535338235e-01
1052 4 0.3333 339 266.698124818586 1.3530544332e+00
1053 4 0.3333 340 267.648140031389 6.7242433095e-01
1054 4 0.3333 341 268.148572981810 8.9747490084e-01
1055 4 0.3333 342 268.900441457482 3.2692529289e-01
1056 4 0.3333 343 269.968925709873 1.2836288388e+00
1057 4 0.3333 344 270.593795516289 4.6970399381e-01
1058 4 0.3333 345 271.429519948371 1.4190783656e+00
1059 4 0.3333 346 272.251532291637 5.5371604047e-01
1060 4 0.3333 347 273.180563832244 4.6838368212e-01
1061 4 0.3333 348 273.582626678126 8.9496305273e-01
1062 4 0.3333 349 274.723691163703 5.3107952109e-01
1063 4 0.3333 350 275.532748467400 1.1704349565e+00
1064 4 0.3333 351 276.348969006685 1.3040475855e+00
1065 4 0.3333 352 276.750598091123 4.8166219500e-01
1066 4 0.3333 353 277.883025602761 7.4873072666e-01
1067 4 0.3333 354 278.351649701962 1.0737007213e+00
1068 4 0.3333 355 279.192686242514 1.5300463578e+00
1069 4 0.5000 1 0.983540797544 1.2946548027e-01
1070 4 0.5000 2 1.785841471453 1.2667587837e-01
1071 4 0.5000 3 2.579210208815 1.2598271763e-01
1072 4 0.5000 4 3.369822150898 1.2571252959e-01
1073 4 0.5000 5 4.159250775183 1.2558449916e-01
1074 4 0.5000 6 4.948094632391 1.2551904476e-01
1075 4 0.5000 7 5.736641734400 1.2548710351e-01
1076 4 0.5000 8 6.525059822721 1.2547678185e-01
1077 4 0.5000 9 7.313468104519 1.2548367887e-01
1078 4 0.5000 10 8.101973120063 1.2550794733e-01
1079 4 0.5000 11 8.890695838899 1.2555424156e-01
1080 4 0.5000 12 9.679806362369 1.2563443994e-01
1081 4 0.5000 13 10.469594281251 1.2577696498e-01
1082 4 0.5000 14 11.260646546793 1.2605703574e-01
1083 4 0.5000 15 12.054455133289 1.2673137507e-01
1084 4 0.5000 16 12.856540699822 1.2921884288e-01
1085 4 0.5000 17 13.736263400729 1.9365295562e-01
1086 4 0.5000 18 14.178752746514 1.0407177087e+00
1087 4 0.5000 19 15.148653266204 1.2985882696e-01
1088 4 0.5000 20 15.953313273998 1.2706009655e-01
1089 4 0.5000 21 16.749346755071 1.2646154940e-01
1090 4 0.5000 22 17.543491484086 1.2638044544e-01
1091 4 0.5000 23 18.338151946098 1.2663141205e-01
1092 4 0.5000 24 19.135980197958 1.2748942543e-01
1093 4 0.5000 25 19.945043236190 1.3099012944e-01
1094 4 0.5000 26 20.943512296505 8.9758986116e-01
1095 4 0.5000 27 21.277675611703 3.3336691947e-01
1096 4 0.5000 28 22.227647903825 1.3147420943e-01
1097 4 0.5000 29 23.042940534323 1.2909085656e-01
1098 4 0.5000 30 23.859294557236 1.3188641002e-01
1099 4 0.5000 31 24.849488798602 5.5590221107e-01
1100 4 0.5000 32 25.140037669224 6.7395362219e-01
1101 4 0.5000 33 26.138480127387 1.3155358830e-01
1102 4 0.5000 34 26.950913563138 1.2806419771e-01
1103 4 0.5000 35 27.753086471893 1.2749426048e-01
1104 4 0.5000 36 28.555212574715 1.2804169069e-01
1105 4 0.5000 37 29.367021114869 1.3130991368e-01
1106 4 0.5000 38 30.362555370140 9.7301873036e-01
1107 4 0.5000 39 30.741165542905 2.6127447936e-01
1108 4 0.5000 40 31.679347185347 1.3504959925e-01
1109 4 0.5000 41 32.616943103827 2.5968261737e-01
1110 4 0.5000 42 32.997031820803 9.7478659413e-01
1111 4 0.5000 43 33.993176219408 1.3148529598e-01
1112 4 0.5000 44 34.806530306549 1.2839919161e-01
1113 4 0.5000 45 35.612331650246 1.2842895629e-01
1114 4 0.5000 46 36.426129270451 1.3167247150e-01
1115 4 0.5000 47 37.410359223147 5.1072892918e-01
1116 4 0.5000 48 37.704539992372 7.1932037485e-01
1117 4 0.5000 49 38.706507639930 1.3190337328e-01
1118 4 0.5000 50 39.523396556795 1.2941246068e-01
1119 4 0.5000 51 40.354947736272 1.4266169183e-01
1120 4 0.5000 52 40.942358895285 1.1011207387e+00
1121 4 0.5000 53 41.870155238537 1.2957354876e-01
1122 4 0.5000 54 42.684828582211 1.3251025158e-01
1123 4 0.5000 55 43.342564493016 1.1151319814e+00
1124 4 0.5000 56 44.233694111589 1.2776187248e-01
1125 4 0.5000 57 45.031458485825 1.2664206919e-01
1126 4 0.5000 58 45.826502819657 1.2662031616e-01
1127 4 0.5000 59 46.624071059312 1.2767306585e-01
1128 4 0.5000 60 47.448102275792 1.4208216437e-01
1129 4 0.5000 61 48.028819181598 1.0998964699e+00
1130 4 0.5000 62 48.951539220028 1.2854314641e-01
1131 4 0.5000 63 49.771138613482 1.1262388200e+00
1132 4 0.5000 64 50.542788065264 1.2626751079e-01
1133 4 0.5000 65 51.335374675687 1.2621938096e-01
1134 4 0.5000 66 52.128356094798 1.2644873658e-01
1135 4 0.5000 67 52.964335120265 1.1245736973e+00
1136 4 0.5000 68 53.707542702757 1.2723928066e-01
1137 4 0.5000 69 54.506862463177 1.2771925732e-01
1138 4 0.5000 70 55.316675292267 1.3125311547e-01
1139 4 0.5000 71 56.311014807079 6.4843175906e-01
1140 4 0.5000 72 56.599765726279 5.8111428765e-01
1141 4 0.5000 73 57.591256016423 1.3186372718e-01
1142 4 0.5000 74 58.408406226180 1.2995488574e-01
1143 4 0.5000 75 59.326731580617 1.1081721930e+00
1144 4 0.5000 76 59.944110406293 1.3803951682e-01
1145 4 0.5000 77 60.823009471441 1.1243272456e+00
1146 4 0.5000 78 61.547413914928 1.2846143776e-01
1147 4 0.5000 79 62.347954937312 1.2724450833e-01
1148 4 0.5000 80 63.148205299724 1.2782720255e-01
1149 4 0.5000 81 63.958875161908 1.3164115768e-01
1150 4 0.5000 82 64.942339558460 5.2610426566e-01
1151 4 0.5000 83 65.234254737397 7.0359003564e-01
1152 4 0.5000 84 66.232675402732 1.3170154680e-01
1153 4 0.5000 85 67.075540438258 1.1270972784e+00
1154 4 0.5000 86 67.841303008013 1.2779657020e-01
1155 4 0.5000 87 68.642641700808 1.2839596644e-01
1156 4 0.5000 88 69.531846198496 1.1172058185e+00
1157 4 0.5000 89 70.202901177241 1.3246800026e-01
1158 4 0.5000 90 71.022567529882 1.3182342836e-01
1159 4 0.5000 91 72.011249735733 9.9776495843e-01
1160 4 0.5000 92 72.406731665540 2.3625646537e-01
1161 4 0.5000 93 73.316716651646 1.3059263941e-01
1162 4 0.5000 94 74.125228959807 1.2798131378e-01
1163 4 0.5000 95 74.925068533508 1.2757174898e-01
1164 4 0.5000 96 75.707108875853 1.1280334608e+00
1165 4 0.5000 97 76.544888868781 1.3811851338e-01
1166 4 0.5000 98 77.165255393542 1.1094457948e+00
1167 4 0.5000 99 78.092725114486 1.3305891866e-01
1168 4 0.5000 100 79.022289325275 2.6105178662e-01
1169 4 0.5000 101 79.399505743619 9.7301125983e-01
1170 4 0.5000 102 80.393568089762 1.3199184303e-01
1171 4 0.5000 103 81.206458006707 1.2906118739e-01
1172 4 0.5000 104 82.012592828937 1.2891746872e-01
1173 4 0.5000 105 82.897717303638 1.1219010881e+00
1174 4 0.5000 106 83.603631970705 1.3566744392e-01
1175 4 0.5000 107 84.612823002379 7.0672836198e-01
1176 4 0.5000 108 84.908068430708 5.2506374397e-01
1177 4 0.5000 109 85.898973400438 1.3302698651e-01
1178 4 0.5000 110 86.722287231861 1.3251840035e-01
1179 4 0.5000 111 87.437262793464 1.1256315724e+00
1180 4 0.5000 112 88.399620469599 1.9498616249e-01
1181 4 0.5000 113 88.853523196593 1.0441224836e+00
1182 4 0.5000 114 89.832738389865 1.3225903897e-01
1183 4 0.5000 115 90.647015994978 1.2950391307e-01
1184 4 0.5000 116 91.460633416196 1.3250869371e-01
1185 4 0.5000 117 92.444531538829 1.0331111917e+00
1186 4 0.5000 118 92.880440876702 2.0494120005e-01
1187 4 0.5000 119 93.779630895028 1.3243381990e-01
1188 4 0.5000 120 94.645149815619 1.1315170086e+00
1189 4 0.5000 121 95.506932800320 2.2377331666e-01
1190 4 0.5000 122 95.923377773812 1.0150406101e+00
1191 4 0.5000 123 96.918201264173 1.3331340215e-01
1192 4 0.5000 124 97.745543365740 1.3421743777e-01
1193 4 0.5000 125 98.756198827604 9.2537954214e-01
1194 4 0.5000 126 99.109116258479 3.1161996162e-01
1195 4 0.5000 127 100.071929073767 1.3904798835e-01
1196 4 0.5000 128 101.026971197204 2.9623584537e-01
1197 4 0.5000 129 101.389265786410 9.4053767707e-01
1198 4 0.5000 130 102.404019084348 1.3580201079e-01
1199 4 0.5000 131 103.301090860781 1.9036576248e-01
1200 4 0.5000 132 103.768277792271 1.0519073172e+00
1201 4 0.5000 133 104.745879005820 1.3490366099e-01
1202 4 0.5000 134 105.458342729631 1.1229425765e+00
1203 4 0.5000 135 106.333344676748 1.2985476426e-01
1204 4 0.5000 136 107.163828222428 1.1273612050e+00
1205 4 0.5000 137 107.922241036952 1.2855811428e-01
1206 4 0.5000 138 108.713193880781 1.2764748153e-01
1207 4 0.5000 139 109.508011239872 1.2702480212e-01
1208 4 0.5000 140 110.300145375803 1.3012125603e-01
1209 4 0.5000 141 111.036004225103 1.1258532982e+00
1210 4 0.5000 142 111.874894984649 1.1278999350e+00
1211 4 0.5000 143 112.673823312033 1.2907754641e-01
1212 4 0.5000 144 113.467177007942 1.2860240979e-01
1213 4 0.5000 145 114.313948484057 1.1276568167e+00
1214 4 0.5000 146 115.068614341485 1.3408182680e-01
1215 4 0.5000 147 116.051913058325 5.2541464100e-01
1216 4 0.5000 148 116.349820292738 7.1048960988e-01
1217 4 0.5000 149 117.349065604770 1.3423927774e-01
1218 4 0.5000 150 118.181914019267 1.4204181388e-01
1219 4 0.5000 151 118.810711948877 1.1103090460e+00
1220 4 0.5000 152 119.718737232518 1.3291783844e-01
1221 4 0.5000 153 120.525201641463 1.2839562592e-01
1222 4 0.5000 154 121.364684507835 1.1269621146e+00
1223 4 0.5000 155 122.112740434504 1.3159754597e-01
1224 4 0.5000 156 122.943370048072 1.1337137578e+00
1225 4 0.5000 157 123.772097505366 1.6532492027e-01
1226 4 0.5000 158 124.289841916756 1.0802034931e+00
1227 4 0.5000 159 125.244283553886 1.3138984201e-01
1228 4 0.5000 160 126.056518164802 1.3477863443e-01
1229 4 0.5000 161 126.872028605691 1.3960219224e-01
1230 4 0.5000 162 127.534336160986 1.1192343125e+00
1231 4 0.5000 163 128.448532462590 1.3801783242e-01
1232 4 0.5000 164 129.475139028480 8.0826056407e-01
1233 4 0.5000 165 129.797498805996 4.3802473291e-01
1234 4 0.5000 166 130.993543113837 8.6426241339e-01
1235 4 0.5000 167 131.334970051334 3.8152521663e-01
1236 4 0.5000 168 132.316428265622 1.4254803662e-01
1237 4 0.5000 169 133.335393716928 5.9033043985e-01
1238 4 0.5000 170 133.640777328848 6.5313817247e-01
1239 4 0.5000 171 134.739847904683 1.1308135592e+00
1240 4 0.5000 172 135.422360821252 1.3954324198e-01
1241 4 0.5000 173 136.252055170042 1.3261480001e-01
1242 4 0.5000 174 137.069630184220 1.3963838766e-01
1243 4 0.5000 175 138.068140370850 1.0421133156e+00
1244 4 0.5000 176 138.533978632072 2.1286618409e-01
1245 4 0.5000 177 139.638290271242 8.4244734140e-01
1246 4 0.5000 178 139.970582775062 4.0877125627e-01
1247 4 0.5000 179 141.095792636567 1.1048533869e+00
1248 4 0.5000 180 141.695584575643 1.6027611534e-01
1249 4 0.5000 181 142.592550573094 1.6555075797e-01
1250 4 0.5000 182 143.142395002988 1.0930387704e+00
1251 4 0.5000 183 144.113411229261 1.3870334014e-01
1252 4 0.5000 184 144.926940830031 1.4023917078e-01
1253 4 0.5000 185 145.929952864013 9.6454511546e-01
1254 4 0.5000 186 146.318273341477 2.9322105703e-01
1255 4 0.5000 187 147.395086298029 1.1058087545e+00
1256 4 0.5000 188 147.991963987653 1.5275555825e-01
1257 4 0.5000 189 148.867037635235 1.4234222482e-01
1258 4 0.5000 190 149.868396651324 5.5718252380e-01
1259 4 0.5000 191 150.204125808877 7.2595701816e-01
1260 4 0.5000 192 150.960851423707 1.0989824601e+00
1261 4 0.5000 193 151.938383464587 1.4583427910e-01
1262 4 0.5000 194 152.958760663478 9.9068418993e-01
1263 4 0.5000 195 153.355651413243 2.6237924940e-01
1264 4 0.5000 196 154.300137721962 1.4760187300e-01
1265 4 0.5000 197 155.124043893539 1.4105759951e-01
1266 4 0.5000 198 156.074686001654 1.0802192530e+00
1267 4 0.5000 199 156.592937751989 1.7435043705e-01
1268 4 0.5000 200 157.577719567567 1.1341472162e+00
1269 4 0.5000 201 158.262563908018 1.5761426994e-01
1270 4 0.5000 202 158.874594450960 1.1191038253e+00
1271 4 0.5000 203 159.823155480248 1.3596296553e-01
1272 4 0.5000 204 160.701403918827 1.7765127191e-01
1273 4 0.5000 205 161.224372259812 1.0910554663e+00
1274 4 0.5000 206 162.162901158393 1.4623571994e-01
1275 4 0.5000 207 163.019966122730 1.1372858585e+00
1276 4 0.5000 208 163.768673449868 1.3831582885e-01
1277 4 0.5000 209 164.551384863455 1.4620847689e-01
1278 4 0.5000 210 165.510873857555 1.1044720675e+00
1279 4 0.5000 211 166.120923950130 1.7055172679e-01
1280 4 0.5000 212 167.132788879746 1.0338042296e+00
1281 4 0.5000 213 167.580479618894 2.1940907711e-01
1282 4 0.5000 214 168.495329462785 1.7294822336e-01
1283 4 0.5000 215 169.118666899320 1.1241436482e+00
1284 4 0.5000 216 169.930342291605 1.1312367244e+00
1285 4 0.5000 217 170.802049679289 1.4412421831e-01
1286 4 0.5000 218 171.642487235862 1.4429563932e-01
1287 4 0.5000 219 172.414893385069 1.4199173542e-01
1288 4 0.5000 220 173.380305895190 1.1181642313e+00
1289 4 0.5000 221 173.952186604745 1.6927202842e-01
1290 4 0.5000 222 174.753746367056 1.1439132097e+00
1291 4 0.5000 223 175.576479554172 1.3494804552e-01
1292 4 0.5000 224 176.436359199293 1.1396206243e+00
1293 4 0.5000 225 177.177899269943 1.5614747952e-01
1294 4 0.5000 226 178.208492574367 6.1412612930e-01
1295 4 0.5000 227 178.528926296668 6.6793374730e-01
1296 4 0.5000 228 179.668514319693 4.3069458664e-01
1297 4 0.5000 229 180.022025937146 8.3896883500e-01
1298 4 0.5000 230 181.053484698388 1.8237141336e-01
1299 4 0.5000 231 182.044713782666 6.3081660391e-01
1300 4 0.5000 232 182.362732969333 6.2908199559e-01
1301 4 0.5000 233 183.381593729117 1.4406229862e-01
1302 4 0.5000 234 184.190329970478 1.7078947620e-01
1303 4 0.5000 235 184.895949455368 1.1392209614e+00
1304 4 0.5000 236 185.618667541077 1.1416811984e+00
1305 4 0.5000 237 186.576916559052 1.7684628510e-01
1306 4 0.5000 238 187.245919142345 1.1246484296e+00
1307 4 0.5000 239 188.198851183400 1.6874527540e-01
1308 4 0.5000 240 189.081171535038 2.7667816308e-01
1309 4 0.5000 241 189.489096271371 1.0108452849e+00
1310 4 0.5000 242 190.497476808704 1.6833404325e-01
1311 4 0.5000 243 191.259584755585 1.4571388822e-01
1312 4 0.5000 244 192.037868226309 1.1736037872e+00
1313 4 0.5000 245 193.041043387812 1.0774184493e+00
1314 4 0.5000 246 193.549399700406 1.8361232349e-01
1315 4 0.5000 247 194.416705687984 1.7838645788e-01
1316 4 0.5000 248 195.260885130989 1.1366572378e+00
1317 4 0.5000 249 196.068937447676 1.7912786809e-01
1318 4 0.5000 250 196.876483746175 1.1809051593e+00
1319 4 0.5000 251 197.821628452301 5.1767569396e-01
1320 4 0.5000 252 198.131923346409 7.8198451185e-01
1321 4 0.5000 253 199.146828913206 1.4393704799e-01
1322 4 0.5000 254 200.016769918112 1.8598660124e-01
1323 4 0.5000 255 200.880601733121 2.5136639914e-01
1324 4 0.5000 256 201.316338715352 1.0640989550e+00
1325 4 0.5000 257 202.462864148268 1.1119872412e+00
1326 4 0.5000 258 203.097603949601 2.1395251318e-01
1327 4 0.5000 259 204.094343375927 8.8091398502e-01
1328 4 0.5000 260 204.462960403520 4.3185709661e-01
1329 4 0.5000 261 205.394869267915 1.1441198791e+00
1330 4 0.5000 262 206.231728364000 2.0046873089e-01
1331 4 0.5000 263 207.044782377324 1.4387885340e-01
1332 4 0.5000 264 207.886422894928 1.1840162930e+00
1333 4 0.5000 265 208.564364196127 2.0810827828e-01
1334 4 0.5000 266 209.549327679177 1.1210047100e+00
1335 4 0.5000 267 210.086536579069 2.1351507688e-01
1336 4 0.5000 268 210.977915576250 1.4762569345e-01
1337 4 0.5000 269 211.702588291247 1.1383597534e+00
1338 4 0.5000 270 212.641105645969 1.9570633208e-01
1339 4 0.5000 271 213.346847013878 1.2305988377e+00
1340 4 0.5000 272 214.404112573587 7.1456309250e-01
1341 4 0.5000 273 214.760912844509 6.1012878176e-01
1342 4 0.5000 274 215.797157026137 2.7792690299e-01
1343 4 0.5000 275 216.244086650699 1.0828734156e+00
1344 4 0.5000 276 217.268192719967 1.6079402599e-01
1345 4 0.5000 277 217.995609693451 2.1280575508e-01
1346 4 0.5000 278 219.033724731636 1.1190908257e+00
1347 4 0.5000 279 219.554326353688 2.4928115941e-01
1348 4 0.5000 280 220.661171435866 1.1431493708e+00
1349 4 0.5000 281 221.329457634731 1.0368390488e+00
1350 4 0.5000 282 221.784008837358 3.1903992112e-01
1351 4 0.5000 283 222.811991689266 1.9637351586e-01
1352 4 0.5000 284 223.618790384596 3.1992417830e-01
1353 4 0.5000 285 224.081950606978 1.0965300032e+00
1354 4 0.5000 286 225.007641271786 1.1835846428e+00
1355 4 0.5000 287 225.793378163179 2.0446829655e-01
1356 4 0.5000 288 226.594357717733 2.4210525959e-01
1357 4 0.5000 289 227.426905971120 1.1512946623e+00
1358 4 0.5000 290 228.308604172098 2.6342041322e-01
1359 4 0.5000 291 229.285273829319 1.0657940581e+00
1360 4 0.5000 292 229.787737820810 2.3205606288e-01
1361 4 0.5000 293 230.596321447755 2.7102854340e-01
1362 4 0.5000 294 231.289005081805 1.1464141873e+00
1363 4 0.5000 295 232.017061593049 1.2389767934e+00
1364 4 0.5000 296 232.880086140672 2.6145736472e-01
1365 4 0.5000 297 233.704873098039 1.1526003569e+00
1366 4 0.5000 298 234.679685756385 2.4424906942e-01
1367 4 0.5000 299 235.354052410294 1.9454968409e-01
1368 4 0.5000 300 236.294119057782 6.9959098055e-01
1369 4 0.5000 301 236.706649812560 8.3293652124e-01
1370 4 0.5000 302 237.754012515694 1.1575221352e+00
1371 4 0.5000 303 238.484936441523 1.6422066371e-01
1372 4 0.5000 304 239.496528571030 1.2066910715e+00
1373 4 0.5000 305 239.983078948854 2.3812120014e-01
1374 4 0.5000 306 241.023864181884 1.2705462290e+00
1375 4 0.5000 307 241.636511470767 1.9254553136e-01
1376 4 0.5000 308 242.632113409161 8.6961142782e-01
1377 4 0.5000 309 243.073396441834 6.9717195204e-01
1378 4 0.5000 310 244.040484254659 1.1710263700e+00
1379 4 0.5000 311 244.788897948045 3.3403364241e-01
1380 4 0.5000 312 245.557052517345 1.7244021529e-01
1381 4 0.5000 313 246.450794113021 2.1371640344e-01
1382 4 0.5000 314 247.120434952028 1.2659731963e+00
1383 4 0.5000 315 248.078804277112 1.1865133889e+00
1384 4 0.5000 316 248.610964768454 3.1868748546e-01
1385 4 0.5000 317 249.581951615574 1.2648730439e+00
1386 4 0.5000 318 250.214003460346 2.3625933479e-01
1387 4 0.5000 319 251.029721917502 1.1708376987e+00
1388 4 0.5000 320 251.998310326746 4.1302607928e-01
1389 4 0.5000 321 252.778538228218 6.4019065403e-01
1390 4 0.5000 322 253.207176909585 8.1586353804e-01
1391 4 0.5000 323 254.339572076654 3.7567912908e-01
1392 4 0.5000 324 255.238516080494 1.2851053222e+00
1393 4 0.5000 325 255.751028301107 3.0715011657e-01
1394 4 0.5000 326 256.423957856839 1.1277721752e+00
1395 4 0.5000 327 257.426473834361 1.8747934486e-01
1396 4 0.5000 328 258.407554735193 9.8053645557e-01
1397 4 0.5000 329 258.884379955155 6.8469519915e-01
1398 4 0.5000 330 259.815383182075 1.2803063291e+00
1399 4 0.5000 331 260.555885858082 9.1116182465e-01
1400 4 0.5000 332 261.006273962014 6.6079680983e-01
1401 4 0.5000 333 262.082635941208 4.4907295789e-01
1402 4 0.5000 334 262.906149045681 1.9118529629e-01
1403 4 0.5000 335 263.597466476557 1.4432835503e+00
1404 4 0.5000 336 264.653455387652 3.0998687806e-01
1405 4 0.5000 337 265.418945424126 1.1116837517e+00
1406 4 0.5000 338 265.990913070145 4.5452957476e-01
1407 4 0.5000 339 266.725683523587 1.3240401648e+00
1408 4 0.5000 340 267.742171562919 8.6697546403e-01
1409 4 0.5000 341 268.254950682856 7.3422528398e-01
1410 4 0.5000 342 268.996231173003 2.8003274299e-01
1411 4 0.5000 343 269.988631715167 1.3216709807e+00
1412 4 0.5000 344 270.662186337976 4.4518635312e-01
1413 4 0.5000 345 271.444667210717 1.4118858960e+00
1414 4 0.5000 346 272.284562513447 5.5127631287e-01
1415 4 0.5000 347 273.287593391601 7.0696543551e-01
1416 4 0.5000 348 273.653974599107 6.4740633689e-01
1417 4 0.5000 349 274.752633254662 5.4569166964e-01
1418 4 0.5000 350 275.556537312194 1.1897210680e+00
1419 4 0.5000 351 276.407689548280 1.5208902369e+00
1420 4 0.5000 352 276.979444686092 2.5257881974e-01
1421 4 0.5000 353 277.978377696103 1.0008211535e+00
1422 4 0.5000 354 278.448444634316 8.4089289261e-01
1423 4 0.5000 355 279.211025052331 1.4979777620e+00
1424 4 0.6667 1 1.032081140724 1.3058209137e-01
1425 4 0.6667 2 1.838589947732 1.2708275204e-01
1426 4 0.6667 3 2.633817647088 1.2619941937e-01
1427 4 0.6667 4 3.425514932403 1.2585115884e-01
1428 4 0.6667 5 4.215678791381 1.2568398772e-01
1429 4 0.6667 6 5.005072836875 1.2559674369e-01
1430 4 0.6667 7 5.794064784852 1.2555222295e-01
1431 4 0.6667 8 6.582867869400 1.2553506655e-01
1432 4 0.6667 9 7.371632169318 1.2553945079e-01
1433 4 0.6667 10 8.160490165581 1.2556532139e-01
1434 4 0.6667 11 8.949590969320 1.2561828735e-01
1435 4 0.6667 12 9.739143880042 1.2571297793e-01
1436 4 0.6667 13 10.529506364456 1.2588488543e-01
1437 4 0.6667 14 11.321409629323 1.2622893787e-01
1438 4 0.6667 15 12.116735871402 1.2707385035e-01
1439 4 0.6667 16 12.922624001893 1.3029900692e-01
1440 4 0.6667 17 13.856312913313 2.9775478795e-01
1441 4 0.6667 18 14.205037477724 9.3286001615e-01
1442 4 0.6667 19 15.198289222412 1.3062688705e-01
1443 4 0.6667 20 16.005742369490 1.2731077866e-01
1444 4 0.6667 21 16.802799966068 1.2655850214e-01
1445 4 0.6667 22 17.597274510155 1.2639292139e-01
1446 4 0.6667 23 18.391765802329 1.2656154199e-01
1447 4 0.6667 24 19.188764656368 1.2727606495e-01
1448 4 0.6667 25 19.995368434420 1.3030293146e-01
1449 4 0.6667 26 20.973502061818 1.0254412160e+00
1450 4 0.6667 27 21.397596009461 2.0894168469e-01
1451 4 0.6667 28 22.292958661053 1.3047090328e-01
1452 4 0.6667 29 23.104619010218 1.2873817744e-01
1453 4 0.6667 30 23.919134091283 1.3160852676e-01
1454 4 0.6667 31 24.921740575216 8.4948388162e-01
1455 4 0.6667 32 25.239548203975 3.8103554011e-01
1456 4 0.6667 33 26.200225717653 1.3119428151e-01
1457 4 0.6667 34 27.011176694034 1.2788672000e-01
1458 4 0.6667 35 27.812250068434 1.2730450781e-01
1459 4 0.6667 36 28.612844623559 1.2771477838e-01
1460 4 0.6667 37 29.421209922733 1.3037680379e-01
1461 4 0.6667 38 30.386992922117 1.0644557379e+00
1462 4 0.6667 39 30.875275907877 1.7493769364e-01
1463 4 0.6667 40 31.758680791509 1.3450862772e-01
1464 4 0.6667 41 32.750842037352 4.9110463958e-01
1465 4 0.6667 42 33.049323716668 7.4015039200e-01
1466 4 0.6667 43 34.054024753958 1.3195122696e-01
1467 4 0.6667 44 34.869112743655 1.2856815185e-01
1468 4 0.6667 45 35.675743872194 1.2853987562e-01
1469 4 0.6667 46 36.490161415877 1.3176140995e-01
1470 4 0.6667 47 37.494548811821 8.3980287533e-01
1471 4 0.6667 48 37.810926214823 3.9136478127e-01
1472 4 0.6667 49 38.778543991751 1.3226451125e-01
1473 4 0.6667 50 39.600840770098 1.3099805216e-01
1474 4 0.6667 51 40.475298579069 1.7643349476e-01
1475 4 0.6667 52 40.957363890219 1.0621727571e+00
1476 4 0.6667 53 41.928770687590 1.3193705080e-01
1477 4 0.6667 54 42.769915763249 1.4459336341e-01
1478 4 0.6667 55 43.351618467494 1.0993215136e+00
1479 4 0.6667 56 44.281290033314 1.2914369386e-01
1480 4 0.6667 57 45.084812165744 1.2730879422e-01
1481 4 0.6667 58 45.883794592599 1.2727616732e-01
1482 4 0.6667 59 46.686967609064 1.2903267768e-01
1483 4 0.6667 60 47.544569677264 1.6708107414e-01
1484 4 0.6667 61 48.040325748100 1.0704089965e+00
1485 4 0.6667 62 48.995471201737 1.2964527444e-01
1486 4 0.6667 63 49.776536448810 1.1266016232e+00
1487 4 0.6667 64 50.592247035027 1.2639353659e-01
1488 4 0.6667 65 51.385215560424 1.2621581480e-01
1489 4 0.6667 66 52.177436779629 1.2611910920e-01
1490 4 0.6667 67 52.970244722476 1.1262575389e+00
1491 4 0.6667 68 53.763004719291 1.2654920758e-01
1492 4 0.6667 69 54.559982436671 1.2747589874e-01
1493 4 0.6667 70 55.368141062106 1.3090720111e-01
1494 4 0.6667 71 56.365361556212 8.8566068563e-01
1495 4 0.6667 72 56.693984742178 3.4476993752e-01
1496 4 0.6667 73 57.644392006352 1.3106549472e-01
1497 4 0.6667 74 58.455754112487 1.2863346735e-01
1498 4 0.6667 75 59.334793493228 1.1197124507e+00
1499 4 0.6667 76 60.021658976531 1.2958388570e-01
1500 4 0.6667 77 60.830749769281 1.1268308361e+00
1501 4 0.6667 78 61.617520717666 1.2665037288e-01

E-024-theta-sweep.json — 10.3 KB, updated 08-19-2026

JSON sidecar (click to expand)
{
  "experiment": "E-024",
  "task": "2.12: theta-flow numerics (theta-independence test)",
  "script": "research/numerics/scripts/E-024-theta-sweep.py",
  "parameters": {
    "a_list": [
      4.0,
      8.0,
      12.0
    ],
    "thetas_over_pi": [
      0.0,
      0.1667,
      0.3333,
      0.5,
      0.6667,
      0.8333,
      1.0
    ],
    "z_max": 300.0,
    "z_metric": 280.0
  },
  "checks": {
    "V1_lattice_all_theta": true,
    "V2_theta_pi_matches_E022": true,
    "V3_weights_positive": true
  },
  "key_values": {
    "a4_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 381,
      "z1_times_a": 3.1471258584711514,
      "mass_total": 184.1835959613851,
      "mass_pm0.1": 119.4128093530634,
      "mass_pm0.05": 91.94966918355006,
      "residual": 48.76433809073876,
      "valley_mass_mean": 1.0747560148463995,
      "plateau_weight_mean": 0.21201886126408157,
      "Delta_eff": 1.6231737129268227
    },
    "a4_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 381,
      "z1_times_a": 3.4619359298190293,
      "mass_total": 184.18630284387328,
      "mass_pm0.1": 118.29623992508816,
      "mass_pm0.05": 86.87180322997308,
      "residual": 48.931287590873524,
      "valley_mass_mean": 1.0734525020079346,
      "plateau_weight_mean": 0.2127447286559719,
      "Delta_eff": 1.6185423804514978
    },
    "a4_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 381,
      "z1_times_a": 3.7176915045337466,
      "mass_total": 183.9726782811009,
      "mass_pm0.1": 113.57262540386267,
      "mass_pm0.05": 85.73049725879235,
      "residual": 50.41888852750091,
      "valley_mass_mean": 1.0599507123301588,
      "plateau_weight_mean": 0.22016981889738385,
      "Delta_eff": 1.5715785355566734
    },
    "a4_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 381,
      "z1_times_a": 3.934163190177167,
      "mass_total": 183.98559583483848,
      "mass_pm0.1": 113.33711825061624,
      "mass_pm0.05": 89.82793793217617,
      "residual": 50.618934373720066,
      "valley_mass_mean": 1.0584655671517333,
      "plateau_weight_mean": 0.22104338154462916,
      "Delta_eff": 1.566216581357752
    },
    "a4_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 381,
      "z1_times_a": 4.128324562896003,
      "mass_total": 183.9983973653932,
      "mass_pm0.1": 119.75726561744686,
      "mass_pm0.05": 95.81754097212591,
      "residual": 48.13040632212352,
      "valley_mass_mean": 1.078317389232299,
      "plateau_weight_mean": 0.21017644682150013,
      "Delta_eff": 1.6352097313960756
    },
    "a4_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 381,
      "z1_times_a": 4.314182529701571,
      "mass_total": 184.01134904950752,
      "mass_pm0.1": 120.40026511109403,
      "mass_pm0.05": 90.96419878254113,
      "residual": 47.43102136203055,
      "valley_mass_mean": 1.0839708546625155,
      "plateau_weight_mean": 0.20712236402633416,
      "Delta_eff": 1.6550765456169134
    },
    "a4_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 381,
      "z1_times_a": 4.504293602793437,
      "mass_total": 184.02432245308052,
      "mass_pm0.1": 116.64777135239572,
      "mass_pm0.05": 93.33647263205195,
      "residual": 48.30754760742576,
      "valley_mass_mean": 1.0771172606797996,
      "plateau_weight_mean": 0.2109499895520775,
      "Delta_eff": 1.6304224593273315
    },
    "a8_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 763,
      "z1_times_a": 3.1437903681267265,
      "mass_total": 184.1082994928043,
      "mass_pm0.1": 134.20929653000076,
      "mass_pm0.05": 123.1835197830814,
      "residual": 57.73718018875971,
      "valley_mass_mean": 1.002945391301941,
      "plateau_weight_mean": 0.09852761124361722,
      "Delta_eff": 2.320359515027157
    },
    "a8_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 763,
      "z1_times_a": 3.418119179475546,
      "mass_total": 184.11283914170593,
      "mass_pm0.1": 131.8317519020843,
      "mass_pm0.05": 126.78097971430489,
      "residual": 56.7356526846647,
      "valley_mass_mean": 1.010930051246359,
      "plateau_weight_mean": 0.09681851993970085,
      "Delta_eff": 2.3457877312638367
    },
    "a8_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 763,
      "z1_times_a": 3.654042277120252,
      "mass_total": 184.11760264338506,
      "mass_pm0.1": 132.1490251381983,
      "mass_pm0.05": 124.0292094105938,
      "residual": 58.16107071439245,
      "valley_mass_mean": 0.9996550153094651,
      "plateau_weight_mean": 0.09925097391534557,
      "Delta_eff": 2.3097585025024654
    },
    "a8_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 763,
      "z1_times_a": 3.867441949623103,
      "mass_total": 184.12212186389277,
      "mass_pm0.1": 133.24139728241443,
      "mass_pm0.05": 121.15410070178395,
      "residual": 59.85047462666191,
      "valley_mass_mean": 0.9862829145811973,
      "plateau_weight_mean": 0.10213391574515683,
      "Delta_eff": 2.26765839342186
    },
    "a8_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 763,
      "z1_times_a": 4.071478758632688,
      "mass_total": 184.1262503654809,
      "mass_pm0.1": 132.29513175105507,
      "mass_pm0.05": 122.51608044758039,
      "residual": 57.48114969555114,
      "valley_mass_mean": 1.0051198465867441,
      "plateau_weight_mean": 0.09809069913916582,
      "Delta_eff": 2.3269695116402334
    },
    "a8_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 763,
      "z1_times_a": 4.27766402464752,
      "mass_total": 184.12992169567084,
      "mass_pm0.1": 131.99007596810569,
      "mass_pm0.05": 124.30470833176733,
      "residual": 57.28031602287514,
      "valley_mass_mean": 1.0067429021650454,
      "plateau_weight_mean": 0.09774797956122035,
      "Delta_eff": 2.332083020259487
    },
    "a8_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 763,
      "z1_times_a": 4.4968101024775144,
      "mass_total": 184.13312237431055,
      "mass_pm0.1": 133.51693635274228,
      "mass_pm0.05": 124.28962039506533,
      "residual": 58.6511497935264,
      "valley_mass_mean": 0.9958886712760646,
      "plateau_weight_mean": 0.10008728633707581,
      "Delta_eff": 2.297592806874823
    },
    "a12_th0.0000pi": {
      "theta_over_pi": 0.0,
      "n_zeros": 1145,
      "z1_times_a": 3.1428501414881977,
      "mass_total": 184.16007157245687,
      "mass_pm0.1": 133.61538092090012,
      "mass_pm0.05": 128.10759866335772,
      "residual": 60.30642315719122,
      "valley_mass_mean": 0.9829654636132195,
      "plateau_weight_mean": 0.06395166824728656,
      "Delta_eff": 2.732446371442262
    },
    "a12_th0.1667pi": {
      "theta_over_pi": 0.1667,
      "n_zeros": 1145,
      "z1_times_a": 3.405992501692748,
      "mass_total": 184.1639822094043,
      "mass_pm0.1": 133.36866840406773,
      "mass_pm0.05": 129.35521418242917,
      "residual": 60.3669918644722,
      "valley_mass_mean": 0.9825157963883501,
      "plateau_weight_mean": 0.06401589805352302,
      "Delta_eff": 2.73098496176509
    },
    "a12_th0.3333pi": {
      "theta_over_pi": 0.3333,
      "n_zeros": 1145,
      "z1_times_a": 3.635830555925344,
      "mass_total": 184.09580595481827,
      "mass_pm0.1": 133.41942035595872,
      "mass_pm0.05": 129.05415843419973,
      "residual": 58.57426551897014,
      "valley_mass_mean": 0.9962027018718106,
      "plateau_weight_mean": 0.06218074895856703,
      "Delta_eff": 2.7739053032480143
    },
    "a12_th0.5000pi": {
      "theta_over_pi": 0.5,
      "n_zeros": 1145,
      "z1_times_a": 3.8476946281889486,
      "mass_total": 184.09881987373944,
      "mass_pm0.1": 132.95788338488353,
      "mass_pm0.05": 129.3505890774291,
      "residual": 58.94147251618104,
      "valley_mass_mean": 0.9933122806155429,
      "plateau_weight_mean": 0.06257056530380153,
      "Delta_eff": 2.764750131884173
    },
    "a12_th0.6667pi": {
      "theta_over_pi": 0.6667,
      "n_zeros": 1145,
      "z1_times_a": 4.05423555082551,
      "mass_total": 184.10127816912785,
      "mass_pm0.1": 133.37160860447023,
      "mass_pm0.05": 129.68837121321633,
      "residual": 58.35802636312266,
      "valley_mass_mean": 0.9979623159206761,
      "plateau_weight_mean": 0.06195119571456758,
      "Delta_eff": 2.7793686068267633
    },
    "a12_th0.8333pi": {
      "theta_over_pi": 0.8333,
      "n_zeros": 1145,
      "z1_times_a": 4.2666373857585445,
      "mass_total": 184.1032513640804,
      "mass_pm0.1": 133.09565694496038,
      "mass_pm0.05": 129.3399679137547,
      "residual": 58.63289108937627,
      "valley_mass_mean": 0.9957965101166993,
      "plateau_weight_mean": 0.062242984171312424,
      "Delta_eff": 2.7724971046813764
    },
    "a12_th1.0000pi": {
      "theta_over_pi": 1.0,
      "n_zeros": 1145,
      "z1_times_a": 4.495304974166889,
      "mass_total": 184.10483484645468,
      "mass_pm0.1": 133.31147006007708,
      "mass_pm0.05": 129.13788187469896,
      "residual": 57.594257954705384,
      "valley_mass_mean": 1.004052197553566,
      "plateau_weight_mean": 0.06114040122580191,
      "Delta_eff": 2.7986264096434
    },
    "V4_theta_spread": {
      "a4": {
        "residual_minmax": [
          47.43102136203055,
          50.618934373720066
        ],
        "residual_spread_pct": 2.234095821084676,
        "mass_pm01_spread_pct": 2.302784187513983,
        "z1_times_a_range": [
          3.1471258584711514,
          4.504293602793437
        ]
      },
      "a8": {
        "residual_minmax": [
          56.7356526846647,
          59.85047462666191
        ],
        "residual_spread_pct": 1.6396401999266315,
        "mass_pm01_spread_pct": 0.6333372523281642,
        "z1_times_a_range": [
          3.1437903681267265,
          4.4968101024775144
        ]
      },
      "a12": {
        "residual_minmax": [
          57.594257954705384,
          60.3669918644722
        ],
        "residual_spread_pct": 1.6057262581418954,
        "mass_pm01_spread_pct": 0.15063835179687926,
        "z1_times_a_range": [
          3.1428501414881977,
          4.495304974166889
        ]
      }
    }
  },
  "elapsed_seconds": 212.6,
  "timestamp_utc": "2026-08-19T18:19:09.910473+00:00"
}

Source code

Python script (click to expand)
"""E-024 — task 2.12: theta-flow numerics (D-041 §5/§8, D-038 §5).

Theory (de Branges/Clark): the model space's kernel K_a(z,z) is
theta-INDEPENDENT; the extension choice theta only phase-shifts the
atom lattice z_k(theta). PREDICTION (to be tested): consolidation
statistics (valley-captured mass, residual) are theta-independent —
if confirmed, no theta(a) flow can fix consolidation and the
obstruction is entirely the K-saturation (D-040 F6); if refuted,
the theta-flow channel is alive.

For theta in {0, pi/6, pi/3, pi/2, 2pi/3, 5pi/6, pi} and a in {4,8,12}:
  - zeros of W(a,theta;z) on (0, Z_MAX] via the real gauge
        g_theta(z) = Re[ e^{-i theta/2} (z - i) V_+(z) ]
    (e^{-i theta/2} W = 2 Re[e^{-i theta/2}(z-i)V_+] on the real line,
    using Vm = conj(Vp); reduces to z ImV - ReV at theta=pi);
  - Clark weights w_k = 1/K_a(z_k,z_k) (E-022 Schur-Toeplitz route);
  - metrics: n_zeros, z1*a, mass within +/-0.1 and +/-0.05 of true
    gammas, residual R(a,theta) = total - captured, mean valley mass,
    effective depth Delta_eff = log(mean valley weight / mean plateau
    weight).

Checks:
  V1. all zeros real & count = maximal lattice a*Z_MAX/pi +/- 2,
      every theta (self-adjointness).
  V2. theta=pi reproduces E-022: |z1*a - 4.4953| < 0.05 at a=12 and
      mass(+/-0.1) within 1% of E-022 value.
  V3. weights positive, all theta.
  V4. headline: theta-spread of residual R and mass(+/-0.1) reported
      per a (small spread = theta-independence confirmed).

Outputs: research/numerics/data/E-024-theta-sweep.csv (+ .json)
"""
import importlib.util
import json
import sys
import time
from datetime import datetime, timezone
from pathlib import Path

import mpmath as mp
import numpy as np
import scipy.linalg
import scipy.optimize

REPO = Path(__file__).resolve().parents[3]
DATA = REPO / "research" / "numerics" / "data"
CSV = DATA / "E-024-theta-sweep.csv"
JSON = DATA / "E-024-theta-sweep.json"

_spec = importlib.util.spec_from_file_location(
    "E16", Path(__file__).with_name("E-016-herglotz-fine-structure.py"))
E16 = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(E16)                     # runs the e^20 sieve
sys.path.insert(0, str(Path(__file__).parent))
from prime_backend_v2 import PrimeBackendV2       # noqa: E402

H = E16.H_MAIN
LAM = E16.LAM_SHIFT
A_LIST = [4.0, 8.0, 12.0]
THETAS = [0.0, np.pi / 6, np.pi / 3, np.pi / 2, 2 * np.pi / 3,
          5 * np.pi / 6, np.pi]
Z_MAX = 300.0
Z_METRIC = 280.0
N_GRID = 40000
XN = E16.XN
mp.mp.dps = 40


def collect_t_points(a, h):
    n_elem = int(round(2 * a / h))
    pts = []

    def add_quad(lo, hi, peak):
        n_lo = int(np.ceil(np.exp(lo)))
        n_hi = int(np.floor(np.exp(hi)))
        if n_hi - n_lo > 64:
            for aa, bb in ((lo, peak), (peak, hi)):
                if bb - aa > 0:
                    mid, half = 0.5 * (aa + bb), 0.5 * (bb - aa)
                    pts.extend(mid + half * XN)
            return
        segs = sorted({lo, peak, hi} |
                      {float(np.log(n))
                       for n in range(max(n_lo, 2), n_hi + 1)
                       if lo < np.log(n) < hi})
        for p0, p1 in zip(segs, segs[1:]):
            if p1 - p0 > 0:
                mid, half = 0.5 * (p0 + p1), 0.5 * (p1 - p0)
                pts.extend(mid + half * XN)

    for k in range(n_elem):
        if k == 0:
            add_quad(0.0, h, 0.0)
        else:
            add_quad((k - 1) * h, (k + 1) * h, k * h)
    return np.array(pts)


def locate_zeros_theta(cp, x, h, theta, z_max=Z_MAX, n_grid=N_GRID):
    zg = np.linspace(1e-3, z_max, n_grid)
    E = np.exp(1j * np.outer(zg, x))
    V = E16.hat_FT(zg, h) * (E @ cp)
    f = np.exp(-0.5j * theta) * (zg - 1j) * V
    g = f.real

    def g_direct(zz):
        V1 = E16.hat_FT(np.array([zz]), h)[0] * complex(
            np.exp(1j * zz * x) @ cp)
        return float(np.real(np.exp(-0.5j * theta) * (zz - 1j) * V1))

    idx = np.flatnonzero(np.sign(g[:-1]) * np.sign(g[1:]) < 0)
    zeros = []
    for i in idx:
        try:
            zeros.append(scipy.optimize.brentq(g_direct, zg[i], zg[i + 1],
                                               xtol=1e-13, rtol=1e-13))
        except ValueError:
            pass
    return np.array(zeros)


def main() -> int:
    if JSON.exists() and "--force" not in sys.argv:
        print(f"cached: {JSON} (use --force to recompute)")
        return 0
    t0 = time.time()

    print("backend: load E-022 cache ...", flush=True)
    tq = np.concatenate([collect_t_points(a, H) for a in A_LIST])
    be = PrimeBackendV2(tq)
    be.load_cache(DATA / "E-022-backend-cache.npz")
    E16._BUILD.clear()
    E16.prime_sum_vec = be.prime_sum

    mp.mp.dps = 30
    gam = np.array([float(mp.zetazero(k).imag) for k in range(1, 201)])
    gam = gam[gam <= Z_METRIC]

    rows = []
    report = {"per_a_theta": {}}
    v1_ok = v3_ok = True
    v2 = {}
    for a in A_LIST:
        ta = time.time()
        x, h, Q, M, b = E16.build(a, H)
        n = len(x)
        cp, _ = E16.solve_v(Q, M, b[+1.0], LAM, n)
        # Toeplitz bordered solver for weights (theta-independent K)
        mc = np.zeros(n)
        mc[0] = 2 * h / 3
        mc[1] = h / 6
        tc = Q[:, 0] - LAM * mc
        u1 = scipy.linalg.solve_toeplitz((tc, tc), np.ones(n))
        s1 = u1.sum()

        def K1(z):
            bz = E16.hat_FT(np.array([z]), h)[0] * np.exp(-1j * z * x)
            u0 = scipy.linalg.solve_toeplitz((tc, tc), bz)
            v = u0 - (u0.sum() / s1) * u1
            return float(np.real(np.conj(bz) @ v))

        for th in THETAS:
            zeros = locate_zeros_theta(cp, x, h, th)
            lat = a * Z_MAX / np.pi
            if abs(len(zeros) - lat) > 2:
                v1_ok = False
            zm = zeros[zeros <= Z_METRIC]
            ws = np.array([1.0 / K1(z) for z in zm])
            if np.any(ws <= 0):
                v3_ok = False
            tot = float(ws.sum())
            idx = np.clip(np.searchsorted(gam, zm), 1, len(gam) - 1)
            d = np.minimum(np.abs(zm - gam[idx - 1]),
                           np.abs(zm - gam[idx]))
            m01 = float(ws[d <= 0.1].sum())
            m005 = float(ws[d <= 0.05].sum())
            # valley atoms = nearest to each gamma; plateau = rest
            near_idx = np.array([np.argmin(np.abs(zm - g)) for g in gam])
            valley_mass = ws[near_idx]
            mask_pl = np.ones(len(zm), bool)
            mask_pl[near_idx] = False
            pl = ws[mask_pl]
            d_eff = float(np.log(valley_mass.mean() / pl.mean()))
            key = f"a{a:g}_th{th / np.pi:.4f}pi"
            report["per_a_theta"][key] = {
                "theta_over_pi": round(th / np.pi, 4),
                "n_zeros": int(len(zeros)),
                "z1_times_a": float(zeros[0] * a),
                "mass_total": tot,
                "mass_pm0.1": m01, "mass_pm0.05": m005,
                "residual": tot - float(valley_mass.sum()),
                "valley_mass_mean": float(valley_mass.mean()),
                "plateau_weight_mean": float(pl.mean()),
                "Delta_eff": d_eff,
            }
            for k, (zz, ww) in enumerate(zip(zm, ws), 1):
                rows.append((a, th / np.pi, k, zz, ww))
        print(f"a={a:g} done ({time.time() - ta:.0f}s)", flush=True)

    # V2: theta=pi cross-check vs E-022
    e022 = report["per_a_theta"]["a12_th1.0000pi"]
    v2 = {"z1_times_a_ok": bool(abs(e022["z1_times_a"] - 4.4953) < 0.05)}
    # V4: theta-spread per a
    v4 = {}
    for a in A_LIST:
        vals = [report["per_a_theta"][f"a{a:g}_th{th / np.pi:.4f}pi"]
                for th in THETAS]
        res = np.array([v["residual"] for v in vals])
        m01 = np.array([v["mass_pm0.1"] for v in vals])
        z1a = np.array([v["z1_times_a"] for v in vals])
        v4[f"a{a:g}"] = {
            "residual_minmax": [float(res.min()), float(res.max())],
            "residual_spread_pct": float(100 * res.std() / res.mean()),
            "mass_pm01_spread_pct": float(100 * m01.std() / m01.mean()),
            "z1_times_a_range": [float(z1a.min()), float(z1a.max())],
        }
        print(f"a={a:g}: residual spread {v4[f'a{a:g}']['residual_spread_pct']:.2f}%, "
              f"mass01 spread {v4[f'a{a:g}']['mass_pm01_spread_pct']:.2f}%, "
              f"z1a in [{z1a.min():.3f},{z1a.max():.3f}]", flush=True)

    checks = {"V1_lattice_all_theta": v1_ok,
              "V2_theta_pi_matches_E022": v2["z1_times_a_ok"],
              "V3_weights_positive": v3_ok}

    import csv as csvmod
    with open(CSV, "w", newline="") as f:
        w = csvmod.writer(f)
        w.writerow(["a", "theta_over_pi", "k", "z_k", "w_k"])
        for a, thp, k, zz, ww in rows:
            w.writerow([f"{a:g}", f"{thp:.4f}", k, f"{zz:.12f}",
                        f"{ww:.10e}"])

    meta = {
        "experiment": "E-024",
        "task": "2.12: theta-flow numerics (theta-independence test)",
        "script": "research/numerics/scripts/E-024-theta-sweep.py",
        "parameters": {"a_list": A_LIST,
                       "thetas_over_pi": [round(t / np.pi, 4)
                                          for t in THETAS],
                       "z_max": Z_MAX, "z_metric": Z_METRIC},
        "checks": checks,
        "key_values": {**report["per_a_theta"], "V4_theta_spread": v4},
        "elapsed_seconds": round(time.time() - t0, 1),
        "timestamp_utc": datetime.now(timezone.utc).isoformat(),
    }
    JSON.write_text(json.dumps(meta, indent=2))
    print(f"wrote {CSV.name}, {JSON.name}; elapsed "
          f"{meta['elapsed_seconds']}s", flush=True)
    return 0 if all(checks.values()) else 1


if __name__ == "__main__":
    sys.exit(main())