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 7 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
3002 8 0.0000 514 201.954419681172 7.3498777267e-02
3003 8 0.0000 515 202.476479182412 9.8310726093e-01
3004 8 0.0000 516 202.655705656236 1.4646890050e-01
3005 8 0.0000 517 203.163660474428 1.1216134565e-01
3006 8 0.0000 518 203.502399483366 8.0311912742e-02
3007 8 0.0000 519 203.961814437169 9.9323474113e-02
3008 8 0.0000 520 204.201165098074 1.0324431273e+00
3009 8 0.0000 521 204.655611325155 1.2469521943e-01
3010 8 0.0000 522 205.103252499977 7.7701205486e-02
3011 8 0.0000 523 205.401065491638 1.0553049217e+00
3012 8 0.0000 524 205.870639188246 7.0050120946e-02
3013 8 0.0000 525 206.263028476639 1.2828046294e-01
3014 8 0.0000 526 206.670958237049 6.9103956431e-02
3015 8 0.0000 527 207.076272706900 7.0598151152e-02
3016 8 0.0000 528 207.521062697831 9.8759261725e-02
3017 8 0.0000 529 207.897976277754 1.0828718771e+00
3018 8 0.0000 530 208.253325663733 9.6879475332e-02
3019 8 0.0000 531 208.578229202985 1.0941744041e-01
3020 8 0.0000 532 209.029192718829 7.7072190770e-02
3021 8 0.0000 533 209.555909682705 9.6773732531e-01
3022 8 0.0000 534 209.756362197598 1.9963615824e-01
3023 8 0.0000 535 210.128233691246 9.2452548954e-02
3024 8 0.0000 536 210.567253003462 7.1122101711e-02
3025 8 0.0000 537 210.982834744397 7.2028341566e-02
3026 8 0.0000 538 211.383479323058 7.5937839919e-02
3027 8 0.0000 539 211.696368382944 1.0600631170e+00
3028 8 0.0000 540 212.156231376439 7.1730505493e-02
3029 8 0.0000 541 212.572857817415 7.4964125549e-02
3030 8 0.0000 542 212.910386730886 1.3399683353e-01
3031 8 0.0000 543 213.344304213134 1.1367546145e+00
3032 8 0.0000 544 213.728566224756 7.2385089346e-02
3033 8 0.0000 545 214.132393371017 7.1193404512e-02
3034 8 0.0000 546 214.546551319530 1.0694558898e+00
3035 8 0.0000 547 214.978620281826 1.2929953575e-01
3036 8 0.0000 548 215.297645530836 7.8966550063e-02
3037 8 0.0000 549 215.717808727708 7.4242589531e-02
3038 8 0.0000 550 216.166662198350 1.0823059307e+00
3039 8 0.0000 551 216.434773480791 1.3192038475e-01
3040 8 0.0000 552 216.884042515781 7.1743386662e-02
3041 8 0.0000 553 217.291488113208 7.1378204391e-02
3042 8 0.0000 554 217.735069932847 1.3884801700e-01
3043 8 0.0000 555 218.054488788063 8.1978927689e-02
3044 8 0.0000 556 218.489127935841 7.6011167939e-02
3045 8 0.0000 557 219.021652436674 7.1980332008e-01
3046 8 0.0000 558 219.164049627789 4.5466720521e-01
3047 8 0.0000 559 219.570543752916 1.0768511443e-01
3048 8 0.0000 560 220.023960345463 7.6967779108e-02
3049 8 0.0000 561 220.449184905734 9.0158197855e-02
3050 8 0.0000 562 220.725179988635 1.1361361591e+00
3051 8 0.0000 563 221.278110229446 1.6497435550e-01
3052 8 0.0000 564 221.450596875519 9.6935936936e-01
3053 8 0.0000 565 221.960447831313 7.4474968461e-02
3054 8 0.0000 566 222.362600723875 7.5870708305e-02
3055 8 0.0000 567 222.772708136248 7.2020838487e-02
3056 8 0.0000 568 223.181166213926 1.6314924069e-01
3057 8 0.0000 569 223.581556687649 7.2362867461e-02
3058 8 0.0000 570 224.009239689768 1.1528169912e+00
3059 8 0.0000 571 224.346883120345 8.1885336456e-02
3060 8 0.0000 572 224.843213977530 1.9464615138e-01
3061 8 0.0000 573 225.005375807804 9.4456972397e-01
3062 8 0.0000 574 225.484603398280 1.7069162393e-01
3063 8 0.0000 575 225.912212987583 7.7953895956e-02
3064 8 0.0000 576 226.377854854277 1.3767498168e-01
3065 8 0.0000 577 226.661566491200 9.9649004285e-02
3066 8 0.0000 578 227.094141587373 8.0032048335e-02
3067 8 0.0000 579 227.426515345637 1.0677830568e+00
3068 8 0.0000 580 227.889450331839 7.4295012514e-02
3069 8 0.0000 581 228.311259005746 1.8010934203e-01
3070 8 0.0000 582 228.684157758207 7.6756361322e-02
3071 8 0.0000 583 229.132123192094 1.2015067892e-01
3072 8 0.0000 584 229.350747254695 1.0204735399e+00
3073 8 0.0000 585 229.854278574879 7.6815212903e-02
3074 8 0.0000 586 230.325747120680 1.6094656300e-01
3075 8 0.0000 587 230.623089771222 9.8869544214e-02
3076 8 0.0000 588 231.161545695472 3.7926868887e-01
3077 8 0.0000 589 231.291483793631 7.6146652705e-01
3078 8 0.0000 590 231.938584179396 7.9678140441e-01
3079 8 0.0000 591 232.061394914165 4.6215035230e-01
3080 8 0.0000 592 232.635307961666 1.5463616593e-01
3081 8 0.0000 593 232.914117791527 1.1243218960e-01
3082 8 0.0000 594 233.366840930518 7.9273557559e-02
3083 8 0.0000 595 233.698528653683 1.0679703256e+00
3084 8 0.0000 596 234.149947830081 7.3745622135e-02
3085 8 0.0000 597 234.558660944602 7.5434657061e-02
3086 8 0.0000 598 234.913007992329 2.0191736593e-01
3087 8 0.0000 599 235.338440477362 7.4025393763e-02
3088 8 0.0000 600 235.743062514502 7.9064838343e-02
3089 8 0.0000 601 236.096099259671 2.0502066976e-01
3090 8 0.0000 602 236.524773242119 1.0753011450e+00
3091 8 0.0000 603 236.883254014609 2.0621236767e-01
3092 8 0.0000 604 237.315397201983 7.9299473900e-02
3093 8 0.0000 605 237.765193559069 1.0675764910e+00
3094 8 0.0000 606 238.095952384863 8.4970799605e-02
3095 8 0.0000 607 238.503225008721 7.5202630624e-02
3096 8 0.0000 608 238.915321197058 7.6238527061e-02
3097 8 0.0000 609 239.382559105010 1.9581323734e-01
3098 8 0.0000 610 239.565660042407 1.0933220238e+00
3099 8 0.0000 611 240.070023409498 7.8222954395e-02
3100 8 0.0000 612 240.474595300272 8.4436807627e-02
3101 8 0.0000 613 240.989946977425 5.5940915111e-01
3102 8 0.0000 614 241.103837572511 7.2638847859e-01
3103 8 0.0000 615 241.616665307944 7.6970976979e-02
3104 8 0.0000 616 242.025184378739 7.9284037659e-02
3105 8 0.0000 617 242.450343223889 2.3636511673e-01
3106 8 0.0000 618 242.824271822675 1.0774232858e+00
3107 8 0.0000 619 243.295933529957 1.9761734504e-01
3108 8 0.0000 620 243.570458034251 1.1036233323e-01
3109 8 0.0000 621 244.063668929359 1.0675583039e+00
3110 8 0.0000 622 244.365533424914 8.7578128030e-02
3111 8 0.0000 623 244.835185088139 2.3435736734e-01
3112 8 0.0000 624 245.149449106152 8.4688267225e-02
3113 8 0.0000 625 245.564098947663 8.2861321040e-02
3114 8 0.0000 626 245.972130982962 8.0915524165e-02
3115 8 0.0000 627 246.373915323966 7.6936954604e-02
3116 8 0.0000 628 246.812397335882 2.5034833700e-01
3117 8 0.0000 629 247.138632878893 1.0786938966e+00
3118 8 0.0000 630 247.575993758965 8.6143571351e-02
3119 8 0.0000 631 248.081447233443 9.9434008296e-01
3120 8 0.0000 632 248.330259697260 2.8060586670e-01
3121 8 0.0000 633 248.630243669819 1.3211287544e-01
3122 8 0.0000 634 249.097033074654 8.4328413480e-02
3123 8 0.0000 635 249.565929536823 1.0665373973e+00
3124 8 0.0000 636 249.876120217080 2.7645191571e-01
3125 8 0.0000 637 250.285719347745 8.0127440693e-02
3126 8 0.0000 638 250.698324927352 8.1920213007e-02
3127 8 0.0000 639 251.020568172014 1.0795552926e+00
3128 8 0.0000 640 251.480678771673 8.2801725964e-02
3129 8 0.0000 641 251.952615133634 2.6235467666e-01
3130 8 0.0000 642 252.278688765594 1.2799899638e-01
3131 8 0.0000 643 252.554126581836 2.4610975477e-01
3132 8 0.0000 644 253.066511014727 1.0774898226e+00
3133 8 0.0000 645 253.424590572827 8.4064158769e-02
3134 8 0.0000 646 253.840983244517 8.5946944803e-02
3135 8 0.0000 647 254.289455207450 1.4470455882e-01
3136 8 0.0000 648 254.531732525141 2.2625038222e-01
3137 8 0.0000 649 255.047312532548 1.1625630261e-01
3138 8 0.0000 650 255.306646540265 1.2673065117e+00
3139 8 0.0000 651 255.802887473044 9.3353640627e-02
3140 8 0.0000 652 256.311459906017 4.9195969238e-01
3141 8 0.0000 653 256.431774745541 6.5299692146e-01
3142 8 0.0000 654 256.946285489099 9.4414037223e-02
3143 8 0.0000 655 257.356339611447 8.1203996411e-02
3144 8 0.0000 656 257.765971215880 8.6536619511e-02
3145 8 0.0000 657 258.233868144111 3.0092257131e-01
3146 8 0.0000 658 258.601192424895 1.0842959003e+00
3147 8 0.0000 659 258.917060357626 9.5373519452e-02
3148 8 0.0000 660 259.346589926349 3.3143415774e-01
3149 8 0.0000 661 259.856043603505 1.0115443754e+00
3150 8 0.0000 662 260.101774652518 1.9795748823e-01
3151 8 0.0000 663 260.391863636354 2.8040168694e-01
3152 8 0.0000 664 260.809840428894 1.0790180534e+00
3153 8 0.0000 665 261.276017426915 8.9617830023e-02
3154 8 0.0000 666 261.668563904495 8.3394567057e-02
3155 8 0.0000 667 262.097321710467 3.4734237120e-01
3156 8 0.0000 668 262.468577114864 9.1247965410e-02
3157 8 0.0000 669 262.871004491054 8.4106660270e-02
3158 8 0.0000 670 263.286979343269 9.4609613862e-02
3159 8 0.0000 671 263.581736892235 1.3436694912e+00
3160 8 0.0000 672 264.044758769181 9.5818694200e-02
3161 8 0.0000 673 264.456301683874 8.7052594218e-02
3162 8 0.0000 674 264.932798362773 3.1600956439e-01
3163 8 0.0000 675 265.180937460906 1.3882735152e-01
3164 8 0.0000 676 265.563143333226 1.0809080307e+00
3165 8 0.0000 677 266.028119350477 8.8684862296e-02
3166 8 0.0000 678 266.554589149456 6.5496204260e-01
3167 8 0.0000 679 266.695727007789 5.3685046250e-01
3168 8 0.0000 680 267.069952139020 3.6128803725e-01
3169 8 0.0000 681 267.566074940909 9.5946819734e-02
3170 8 0.0000 682 267.926213651637 1.0853820766e+00
3171 8 0.0000 683 268.422687432594 1.7277580016e-01
3172 8 0.0000 684 268.639554670074 3.0437340792e-01
3173 8 0.0000 685 269.129771156269 9.0084610950e-02
3174 8 0.0000 686 269.537377724201 8.5806262051e-02
3175 8 0.0000 687 269.967057104419 1.0904428990e+00
3176 8 0.0000 688 270.357634558361 4.1194707782e-01
3177 8 0.0000 689 270.720340879386 9.4631463890e-02
3178 8 0.0000 690 271.154245444498 4.1561392207e-01
3179 8 0.0000 691 271.494491036747 1.1034490696e+00
3180 8 0.0000 692 271.904081082336 8.7984517224e-02
3181 8 0.0000 693 272.302063970155 4.3143787165e-01
3182 8 0.0000 694 272.691019200825 9.2544233708e-02
3183 8 0.0000 695 273.091614937652 9.3605202263e-02
3184 8 0.0000 696 273.462324011720 1.0873503415e+00
3185 8 0.0000 697 273.895755982554 9.7474097306e-02
3186 8 0.0000 698 274.296636047379 9.7554103430e-02
3187 8 0.0000 699 274.784345291311 4.0098308348e-01
3188 8 0.0000 700 275.023056666603 1.4453672638e-01
3189 8 0.0000 701 275.566753437410 1.0163102276e+00
3190 8 0.0000 702 275.788130713835 1.6451452720e-01
3191 8 0.0000 703 276.320422239681 2.9537902230e-01
3192 8 0.0000 704 276.473124174247 1.2656943001e+00
3193 8 0.0000 705 276.999281776377 9.2015525232e-02
3194 8 0.0000 706 277.410757081617 1.0307420551e-01
3195 8 0.0000 707 277.885329775898 4.7443474163e-01
3196 8 0.0000 708 278.242152049780 1.0941720079e+00
3197 8 0.0000 709 278.580775624434 1.0481178890e-01
3198 8 0.0000 710 279.014131213503 5.6749259156e-01
3199 8 0.0000 711 279.249959431464 1.0191545872e+00
3200 8 0.0000 712 279.748727616699 1.0303263648e-01
3201 8 0.1667 1 0.427264897434 6.2939336492e-02
3202 8 0.1667 2 0.821578196177 6.2658805556e-02
3203 8 0.1667 3 1.215048767007 6.2598000212e-02
3204 8 0.1667 4 1.608283339638 6.2575447691e-02
3205 8 0.1667 5 2.001419942203 6.2564814299e-02
3206 8 0.1667 6 2.394506710503 6.2559004875e-02
3207 8 0.1667 7 2.787565013878 6.2555433238e-02
3208 8 0.1667 8 3.180605554088 6.2553336212e-02
3209 8 0.1667 9 3.573634802748 6.2551583711e-02
3210 8 0.1667 10 3.966655487148 6.2551011309e-02
3211 8 0.1667 11 4.359675414221 6.2550665440e-02
3212 8 0.1667 12 4.752689158433 6.2549528164e-02
3213 8 0.1667 13 5.145700488787 6.2549988863e-02
3214 8 0.1667 14 5.538718226727 6.2551078668e-02
3215 8 0.1667 15 5.931733027715 6.2548877384e-02
3216 8 0.1667 16 6.324740284030 6.2550201451e-02
3217 8 0.1667 17 6.717761018358 6.2550961017e-02
3218 8 0.1667 18 7.110779149549 6.2551555866e-02
3219 8 0.1667 19 7.503808206813 6.2552014846e-02
3220 8 0.1667 20 7.896828031890 6.2551454126e-02
3221 8 0.1667 21 8.289862973036 6.2554144156e-02
3222 8 0.1667 22 8.682898508173 6.2554247031e-02
3223 8 0.1667 23 9.075956855836 6.2558555789e-02
3224 8 0.1667 24 9.469009616716 6.2554740120e-02
3225 8 0.1667 25 9.862068496228 6.2560126305e-02
3226 8 0.1667 26 10.255151689604 6.2562239428e-02
3227 8 0.1667 27 10.648258749872 6.2566854064e-02
3228 8 0.1667 28 11.041374198431 6.2566923052e-02
3229 8 0.1667 29 11.434531152977 6.2578661829e-02
3230 8 0.1667 30 11.827730839832 6.2580431640e-02
3231 8 0.1667 31 12.220989030524 6.2600888531e-02
3232 8 0.1667 32 12.614395713444 6.2624966680e-02
3233 8 0.1667 33 13.008031043200 6.2683572374e-02
3234 8 0.1667 34 13.402318279281 6.2860307434e-02
3235 8 0.1667 35 13.799877271524 6.4269857047e-02
3236 8 0.1667 36 14.137861434199 1.0590266873e+00
3237 8 0.1667 37 14.573673382127 6.3194214929e-02
3238 8 0.1667 38 14.968956329078 6.2753491550e-02
3239 8 0.1667 39 15.362885646827 6.2662583431e-02
3240 8 0.1667 40 15.756535443639 6.2641107995e-02
3241 8 0.1667 41 16.150059979668 6.2624207070e-02
3242 8 0.1667 42 16.543525510008 6.2621772604e-02
3243 8 0.1667 43 16.936999876019 6.2628168230e-02
3244 8 0.1667 44 17.330523811089 6.2632919665e-02
3245 8 0.1667 45 17.724086637141 6.2648147023e-02
3246 8 0.1667 46 18.117800941443 6.2674208085e-02
3247 8 0.1667 47 18.511676492801 6.2705715462e-02
3248 8 0.1667 48 18.905830493281 6.2759800633e-02
3249 8 0.1667 49 19.300396322007 6.2848380951e-02
3250 8 0.1667 50 19.695799173279 6.3033281054e-02
3251 8 0.1667 51 20.092980291065 6.3475775460e-02
3252 8 0.1667 52 20.495893594025 6.5250894709e-02
3253 8 0.1667 53 21.002969792637 9.4616419176e-01
3254 8 0.1667 54 21.157072137893 1.6853075296e-01
3255 8 0.1667 55 21.629952463428 6.5190008685e-02
3256 8 0.1667 56 22.032964462008 6.3540756560e-02
3257 8 0.1667 57 22.430647816425 6.3128957759e-02
3258 8 0.1667 58 22.826885697854 6.3027675826e-02
3259 8 0.1667 59 23.222853324319 6.3025108901e-02
3260 8 0.1667 60 23.619188718189 6.3170817544e-02
3261 8 0.1667 61 24.017244824057 6.3613434371e-02
3262 8 0.1667 62 24.421039275574 6.5416910930e-02
3263 8 0.1667 63 24.913154232830 2.6660308819e-01
3264 8 0.1667 64 25.038312099466 8.4734180205e-01
3265 8 0.1667 65 25.551980700421 6.5449992878e-02
3266 8 0.1667 66 25.955756334238 6.3584290063e-02
3267 8 0.1667 67 26.353511747420 6.3111595041e-02
3268 8 0.1667 68 26.749332517540 6.2913770230e-02
3269 8 0.1667 69 27.144417048653 6.2869531670e-02
3270 8 0.1667 70 27.539277060093 6.2806699621e-02
3271 8 0.1667 71 27.933727273969 6.2783514177e-02
3272 8 0.1667 72 28.328417086375 6.2840136552e-02
3273 8 0.1667 73 28.723315807386 6.2891277562e-02
3274 8 0.1667 74 29.118953930798 6.3066614567e-02
3275 8 0.1667 75 29.516042454240 6.3398262910e-02
3276 8 0.1667 76 29.917932917362 6.4973969278e-02
3277 8 0.1667 77 30.412350348123 1.0091786269e+00
3278 8 0.1667 78 30.613070778026 1.0728174647e-01
3279 8 0.1667 79 31.060503863770 6.4841529735e-02
3280 8 0.1667 80 31.462789130499 6.3583671448e-02
3281 8 0.1667 81 31.861567981332 6.3462730544e-02
3282 8 0.1667 82 32.261725191097 6.4150228595e-02
3283 8 0.1667 83 32.682731815650 7.7522895271e-02
3284 8 0.1667 84 32.942782279177 1.0417703323e+00
3285 8 0.1667 85 33.417006895400 6.4392620100e-02
3286 8 0.1667 86 33.817053573213 6.3263672200e-02
3287 8 0.1667 87 34.213357940644 6.2963735633e-02
3288 8 0.1667 88 34.608735029517 6.2919695048e-02
3289 8 0.1667 89 35.003701081944 6.2801156679e-02
3290 8 0.1667 90 35.398386839297 6.2876034830e-02
3291 8 0.1667 91 35.793671618410 6.2941661439e-02
3292 8 0.1667 92 36.189357344548 6.3103418328e-02
3293 8 0.1667 93 36.587217321573 6.3594320800e-02
3294 8 0.1667 94 36.990426365660 6.5281446932e-02
3295 8 0.1667 95 37.475748802439 2.2460763266e-01
3296 8 0.1667 96 37.610179753482 8.8955531989e-01
3297 8 0.1667 97 38.121773813280 6.5361357956e-02
3298 8 0.1667 98 38.525223765371 6.3569860508e-02
3299 8 0.1667 99 38.922823553078 6.3080024887e-02
3300 8 0.1667 100 39.318410394156 6.2893972229e-02
3301 8 0.1667 101 39.713352993875 6.2821435462e-02
3302 8 0.1667 102 40.107889444940 6.2806254798e-02
3303 8 0.1667 103 40.502594283405 6.2901781316e-02
3304 8 0.1667 104 40.917323820729 1.0619828638e+00
3305 8 0.1667 105 41.287761271479 6.2985742049e-02
3306 8 0.1667 106 41.682708585328 6.2846020490e-02
3307 8 0.1667 107 42.077322825321 6.2809205297e-02
3308 8 0.1667 108 42.472127516339 6.2986015343e-02
3309 8 0.1667 109 42.869630054237 6.3738919771e-02
3310 8 0.1667 110 43.322275486919 1.0543513404e+00
3311 8 0.1667 111 43.630171764978 6.7409196123e-02
3312 8 0.1667 112 44.034686933163 6.3306901555e-02
3313 8 0.1667 113 44.430556440843 6.2841973209e-02
3314 8 0.1667 114 44.825001881025 6.2802428296e-02
3315 8 0.1667 115 45.219430698072 6.2791407289e-02
3316 8 0.1667 116 45.613354692120 6.2643808487e-02
3317 8 0.1667 117 46.007104568838 6.2736421471e-02
3318 8 0.1667 118 46.401256292917 6.2798083478e-02
3319 8 0.1667 119 46.795579043309 6.2747650378e-02
3320 8 0.1667 120 47.189640360427 6.2746162898e-02
3321 8 0.1667 121 47.584819441534 6.3094188208e-02
3322 8 0.1667 122 48.003532111953 1.0619325215e+00
3323 8 0.1667 123 48.371561244998 6.3514873026e-02
3324 8 0.1667 124 48.770568423323 6.3649614854e-02
3325 8 0.1667 125 49.173908855634 6.5359077207e-02
3326 8 0.1667 126 49.655596246051 2.0412662895e-01
3327 8 0.1667 127 49.796111661893 9.1029974269e-01
3328 8 0.1667 128 50.306933868531 6.5392356450e-02
3329 8 0.1667 129 50.710780642366 6.3690034847e-02
3330 8 0.1667 130 51.109466879352 6.3282277395e-02
3331 8 0.1667 131 51.505936099567 6.3158987825e-02
3332 8 0.1667 132 51.903137160824 6.3361183539e-02
3333 8 0.1667 133 52.303225937429 6.4256167430e-02
3334 8 0.1667 134 52.727378765543 8.0340899417e-02
3335 8 0.1667 135 52.978639986882 1.0385711692e+00
3336 8 0.1667 136 53.456393596685 6.4600657469e-02
3337 8 0.1667 137 53.856876969210 6.3349895610e-02
3338 8 0.1667 138 54.254280935694 6.3224365530e-02
3339 8 0.1667 139 54.650778437702 6.3144956270e-02
3340 8 0.1667 140 55.047190443553 6.3197976096e-02
3341 8 0.1667 141 55.445229141097 6.3621761550e-02
3342 8 0.1667 142 55.848902159114 6.5494554875e-02
3343 8 0.1667 143 56.333680758960 2.1920165563e-01
3344 8 0.1667 144 56.469842041715 8.9515303093e-01
3345 8 0.1667 145 56.981343854222 6.5381238034e-02
3346 8 0.1667 146 57.385352056884 6.3706590811e-02
3347 8 0.1667 147 57.783329358554 6.3131335936e-02
3348 8 0.1667 148 58.179542944884 6.3201710082e-02
3349 8 0.1667 149 58.575335241326 6.2903762321e-02
3350 8 0.1667 150 58.970437163203 6.3031150212e-02
3351 8 0.1667 151 59.348135015618 1.0627511611e+00
3352 8 0.1667 152 59.760710497911 6.3341393603e-02
3353 8 0.1667 153 60.159891643438 6.4025805840e-02
3354 8 0.1667 154 60.580883777799 7.8022515119e-02
3355 8 0.1667 155 60.839577817268 1.0413277697e+00
3356 8 0.1667 156 61.314113897349 6.4510294871e-02
3357 8 0.1667 157 61.714175923462 6.3347410911e-02
3358 8 0.1667 158 62.110614868591 6.3135384825e-02
3359 8 0.1667 159 62.506652933183 6.2955919588e-02
3360 8 0.1667 160 62.901462586534 6.2883695705e-02
3361 8 0.1667 161 63.297349928187 6.3113830835e-02
3362 8 0.1667 162 63.693675570639 6.3220622185e-02
3363 8 0.1667 163 64.091295061010 6.3852796420e-02
3364 8 0.1667 164 64.494050647952 6.5147312154e-02
3365 8 0.1667 165 64.958277568573 1.4067329704e-01
3366 8 0.1667 166 65.128928224522 9.7500037146e-01
3367 8 0.1667 167 65.634370460602 6.5762536373e-02
3368 8 0.1667 168 66.039721053384 6.4183519388e-02
3369 8 0.1667 169 66.444954438106 6.5429381387e-02
3370 8 0.1667 170 66.897088690822 1.1178509833e-01
3371 8 0.1667 171 67.092942458749 1.0048225464e+00
3372 8 0.1667 172 67.590442274616 6.5242114832e-02
3373 8 0.1667 173 67.993112926820 6.3701025000e-02
3374 8 0.1667 174 68.390651867009 6.3319947577e-02
3375 8 0.1667 175 68.787133805413 6.3127879745e-02
3376 8 0.1667 176 69.183412541252 6.3542486960e-02
3377 8 0.1667 177 69.548192011387 1.0617206197e+00
3378 8 0.1667 178 69.969280488282 6.3145122471e-02
3379 8 0.1667 179 70.364989348536 6.2975292491e-02
3380 8 0.1667 180 70.761376179471 6.3616376086e-02
3381 8 0.1667 181 71.159109746504 6.3517663334e-02
3382 8 0.1667 182 71.560622113967 6.5242913742e-02
3383 8 0.1667 183 72.054945844920 1.0121379492e+00
3384 8 0.1667 184 72.259184023026 1.0472937086e-01
3385 8 0.1667 185 72.703741272462 6.4990707619e-02
3386 8 0.1667 186 73.106119724157 6.3726477457e-02
3387 8 0.1667 187 73.504383336415 6.3242707620e-02
3388 8 0.1667 188 73.901439508574 6.3362438906e-02
3389 8 0.1667 189 74.298365624913 6.3278931248e-02
3390 8 0.1667 190 74.696200085058 6.4043010475e-02
3391 8 0.1667 191 75.101207503974 6.5463641946e-02
3392 8 0.1667 192 75.581691569057 1.9488370224e-01
3393 8 0.1667 193 75.726323245200 9.2030385278e-01
3394 8 0.1667 194 76.239927829671 6.6453721803e-02
3395 8 0.1667 195 76.650722530821 6.5640628438e-02
3396 8 0.1667 196 77.135688009654 1.0345738519e+00
3397 8 0.1667 197 77.378284586158 8.4908259338e-02
3398 8 0.1667 198 77.807848746282 6.4500104882e-02
3399 8 0.1667 199 78.208500576348 6.3616145732e-02
3400 8 0.1667 200 78.607476177166 6.3588729883e-02
3401 8 0.1667 201 79.007474911559 6.5345401354e-02
3402 8 0.1667 202 79.340899826939 1.0585136198e+00
3403 8 0.1667 203 79.782466512554 6.3629787919e-02
3404 8 0.1667 204 80.178404208456 6.3087675884e-02
3405 8 0.1667 205 80.572546856404 6.3277975388e-02
3406 8 0.1667 206 80.968276910826 6.3029476389e-02
3407 8 0.1667 207 81.362368193730 6.3398634275e-02
3408 8 0.1667 208 81.757916139785 6.2889814986e-02
3409 8 0.1667 209 82.152770720893 6.3045485756e-02
3410 8 0.1667 210 82.550420577718 6.3931652301e-02
3411 8 0.1667 211 82.912245587420 1.0618629884e+00
3412 8 0.1667 212 83.335564365113 6.3567803517e-02
3413 8 0.1667 213 83.734074245049 6.3959085947e-02
3414 8 0.1667 214 84.137707251602 6.6043468689e-02
3415 8 0.1667 215 84.623539909838 2.2130572245e-01
3416 8 0.1667 216 84.759284089997 8.9337413435e-01
3417 8 0.1667 217 85.273016395136 6.5759720440e-02
3418 8 0.1667 218 85.678175106718 6.3982643943e-02
3419 8 0.1667 219 86.077285925199 6.3681744004e-02
3420 8 0.1667 220 86.477711587354 6.4659037054e-02
3421 8 0.1667 221 86.882912509533 6.5640296220e-02
3422 8 0.1667 222 87.397573082922 8.4637777253e-01
3423 8 0.1667 223 87.523383368333 2.6856129247e-01
3424 8 0.1667 224 88.015024264034 6.6252596382e-02
3425 8 0.1667 225 88.418284122526 6.3827428270e-02
3426 8 0.1667 226 88.809563785238 1.0632765344e+00
3427 8 0.1667 227 89.212860788458 6.3343063425e-02
3428 8 0.1667 228 89.609079911049 6.3167992358e-02
3429 8 0.1667 229 90.002693079713 6.3480671088e-02
3430 8 0.1667 230 90.398702584536 6.3350760114e-02
3431 8 0.1667 231 90.794751363798 6.3109830910e-02
3432 8 0.1667 232 91.191418653255 6.4092477690e-02
3433 8 0.1667 233 91.587387285459 6.3696152106e-02
3434 8 0.1667 234 91.989233170706 6.4912928690e-02
3435 8 0.1667 235 92.480283208975 1.0166761499e+00
3436 8 0.1667 236 92.690818974779 1.0144647761e-01
3437 8 0.1667 237 93.133642097826 6.4991422608e-02
3438 8 0.1667 238 93.535059102838 6.3592065820e-02
3439 8 0.1667 239 93.935210116873 6.4315615997e-02
3440 8 0.1667 240 94.341178244587 6.7032729852e-02
3441 8 0.1667 241 94.655710765596 1.0564941867e+00
3442 8 0.1667 242 95.106271611682 6.4044564437e-02
3443 8 0.1667 243 95.506583202752 6.4753424314e-02
3444 8 0.1667 244 95.872343761345 1.0622358345e+00
3445 8 0.1667 245 96.291688149252 6.3320532971e-02
3446 8 0.1667 246 96.688151581130 6.3331431084e-02
3447 8 0.1667 247 97.084175427917 6.3018588992e-02
3448 8 0.1667 248 97.479764680969 6.4634978719e-02
3449 8 0.1667 249 97.879432529264 6.3719734773e-02
3450 8 0.1667 250 98.283881300203 6.6135046084e-02
3451 8 0.1667 251 98.797274667419 7.7095371584e-01
3452 8 0.1667 252 98.912348389353 3.4421033248e-01
3453 8 0.1667 253 99.415247475103 6.5984462729e-02
3454 8 0.1667 254 99.821421298896 6.4992223437e-02
3455 8 0.1667 255 100.219215287592 6.4655286298e-02
3456 8 0.1667 256 100.614670435659 6.4587302427e-02
3457 8 0.1667 257 101.026206379777 6.9698948610e-02
3458 8 0.1667 258 101.323345303748 1.0521462127e+00
3459 8 0.1667 259 101.783445901685 6.4422111353e-02
3460 8 0.1667 260 102.181329165481 6.3427223101e-02
3461 8 0.1667 261 102.577687331618 6.3384251892e-02
3462 8 0.1667 262 102.975468876152 6.3795906604e-02
3463 8 0.1667 263 103.369225653391 6.4974268380e-02
3464 8 0.1667 264 103.727776314903 1.0613633732e+00
3465 8 0.1667 265 104.156604619427 6.4386422202e-02
3466 8 0.1667 266 104.551902619105 6.4765659751e-02
3467 8 0.1667 267 104.954995102541 6.5067095097e-02
3468 8 0.1667 268 105.437730054874 1.0361669062e+00
3469 8 0.1667 269 105.684464789237 8.4123986183e-02
3470 8 0.1667 270 106.110841852738 6.5774641785e-02
3471 8 0.1667 271 106.520015335764 6.6145825499e-02
3472 8 0.1667 272 106.956310711576 9.5809661853e-02
3473 8 0.1667 273 107.179478094808 1.0238121755e+00
3474 8 0.1667 274 107.669735792747 6.5580077234e-02
3475 8 0.1667 275 108.074609547826 6.4909956976e-02
3476 8 0.1667 276 108.467978947105 6.3906313146e-02
3477 8 0.1667 277 108.866720049047 6.4068431643e-02
3478 8 0.1667 278 109.263887334576 6.3161846869e-02
3479 8 0.1667 279 109.660980369743 6.3723850797e-02
3480 8 0.1667 280 110.061895428664 6.6259464882e-02
3481 8 0.1667 281 110.466563793326 6.7038159758e-02
3482 8 0.1667 282 110.982672924988 6.3396215501e-01
3483 8 0.1667 283 111.092306172221 4.8366818728e-01
3484 8 0.1667 284 111.641966999887 9.1013386106e-02
3485 8 0.1667 285 111.884620949086 1.0320248989e+00
3486 8 0.1667 286 112.374491050976 6.5767131194e-02
3487 8 0.1667 287 112.779805551718 6.5828092889e-02
3488 8 0.1667 288 113.177436524670 6.4303485771e-02
3489 8 0.1667 289 113.573927560062 6.3544322178e-02
3490 8 0.1667 290 113.972690959087 6.4559289408e-02
3491 8 0.1667 291 114.322908197048 1.0608511011e+00
3492 8 0.1667 292 114.752235939214 6.6014238123e-02
3493 8 0.1667 293 115.153166954612 6.3561709795e-02
3494 8 0.1667 294 115.555067131299 6.6891557943e-02
3495 8 0.1667 295 115.971488392287 7.8196580412e-02
3496 8 0.1667 296 116.234400627019 1.0425968534e+00
3497 8 0.1667 297 116.710989976884 6.7338898011e-02
3498 8 0.1667 298 117.109359177198 6.4564177613e-02
3499 8 0.1667 299 117.509669552151 6.3609476779e-02
3500 8 0.1667 300 117.908560805044 6.5542748986e-02
3501 8 0.1667 301 118.304113379796 6.6331243120e-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())