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 8 of 30 · 500/page · 14949 rows next →
# atheta_over_pikz_kw_k
3502 8 0.1667 302 118.782623812602 1.0396312358e+00
3503 8 0.1667 303 119.036936768703 8.0059408690e-02
3504 8 0.1667 304 119.462292254664 6.7995843334e-02
3505 8 0.1667 305 119.860474475852 6.4410211939e-02
3506 8 0.1667 306 120.257387125687 6.3487984338e-02
3507 8 0.1667 307 120.654647129226 6.3741419173e-02
3508 8 0.1667 308 121.060267659226 6.7872023534e-02
3509 8 0.1667 309 121.374783600329 1.0555494821e+00
3510 8 0.1667 310 121.827145639199 6.7534448642e-02
3511 8 0.1667 311 122.227976640718 6.4868126189e-02
3512 8 0.1667 312 122.631031061018 6.7264188957e-02
3513 8 0.1667 313 122.950943919875 1.0605714618e+00
3514 8 0.1667 314 123.399803215535 6.4086873602e-02
3515 8 0.1667 315 123.801617370055 6.8233404521e-02
3516 8 0.1667 316 124.252397264795 1.0561725321e+00
3517 8 0.1667 317 124.569933771039 6.8267434307e-02
3518 8 0.1667 318 124.975387878525 6.3530478329e-02
3519 8 0.1667 319 125.371071192948 6.3829790134e-02
3520 8 0.1667 320 125.771935051440 6.4442046637e-02
3521 8 0.1667 321 126.159151689865 6.7267795562e-02
3522 8 0.1667 322 126.569215440883 6.7340261295e-02
3523 8 0.1667 323 126.965675505452 6.6917196877e-02
3524 8 0.1667 324 127.484557066763 7.9574675814e-01
3525 8 0.1667 325 127.603316573638 3.2054996163e-01
3526 8 0.1667 326 128.098530110346 7.0264167363e-02
3527 8 0.1667 327 128.509523066446 6.5700582234e-02
3528 8 0.1667 328 128.916985708895 6.5898612464e-02
3529 8 0.1667 329 129.355385840892 9.1056155114e-02
3530 8 0.1667 330 129.589407868563 1.0330695935e+00
3531 8 0.1667 331 130.073660893037 6.6723008973e-02
3532 8 0.1667 332 130.488819445004 6.7791599812e-02
3533 8 0.1667 333 130.981880570601 2.4550931229e-01
3534 8 0.1667 334 131.113817909669 8.7090788170e-01
3535 8 0.1667 335 131.633022118258 6.7480874313e-02
3536 8 0.1667 336 132.028029627503 6.8581183401e-02
3537 8 0.1667 337 132.436348370766 6.4779199031e-02
3538 8 0.1667 338 132.844215079914 6.8875788094e-02
3539 8 0.1667 339 133.267883518868 8.8536178552e-02
3540 8 0.1667 340 133.507399642033 1.0321954509e+00
3541 8 0.1667 341 133.993486028854 6.5959395790e-02
3542 8 0.1667 342 134.395543874072 7.1153383115e-02
3543 8 0.1667 343 134.758847503927 1.0634752995e+00
3544 8 0.1667 344 135.177298365559 6.8187886287e-02
3545 8 0.1667 345 135.578805165487 6.3922811078e-02
3546 8 0.1667 346 135.976357480047 6.4878017784e-02
3547 8 0.1667 347 136.374540357155 6.4052380701e-02
3548 8 0.1667 348 136.778306003516 6.7714636929e-02
3549 8 0.1667 349 137.164560153290 6.6034885307e-02
3550 8 0.1667 350 137.574883976082 6.7065685027e-02
3551 8 0.1667 351 138.089180437012 8.6382145216e-01
3552 8 0.1667 352 138.220126782686 2.5304160220e-01
3553 8 0.1667 353 138.710947889134 7.3973423054e-02
3554 8 0.1667 354 139.127793951653 6.7376598346e-02
3555 8 0.1667 355 139.616997496612 2.1370214332e-01
3556 8 0.1667 356 139.760906900992 9.0940602054e-01
3557 8 0.1667 357 140.265967679836 6.7143960811e-02
3558 8 0.1667 358 140.675520359583 6.5310563730e-02
3559 8 0.1667 359 141.120393651692 1.0607066267e+00
3560 8 0.1667 360 141.461786261166 6.6978849958e-02
3561 8 0.1667 361 141.853369658139 7.0318918814e-02
3562 8 0.1667 362 142.258480917793 6.4773686351e-02
3563 8 0.1667 363 142.666129004583 7.1000371045e-02
3564 8 0.1667 364 143.107015822204 1.0581380795e+00
3565 8 0.1667 365 143.423818019639 6.7769427966e-02
3566 8 0.1667 366 143.828956404747 6.4677366357e-02
3567 8 0.1667 367 144.232007961458 6.6122242744e-02
3568 8 0.1667 368 144.614634911236 7.0595365859e-02
3569 8 0.1667 369 145.021259266167 6.4262057518e-02
3570 8 0.1667 370 145.429713039266 7.4810875335e-02
3571 8 0.1667 371 145.933725227857 4.4021119942e-01
3572 8 0.1667 372 146.043163598733 6.7758207955e-01
3573 8 0.1667 373 146.555570839279 7.5329882252e-02
3574 8 0.1667 374 146.964102817975 6.5518660722e-02
3575 8 0.1667 375 147.418628231585 1.0592007039e+00
3576 8 0.1667 376 147.741640791128 6.7620395918e-02
3577 8 0.1667 377 148.147138966988 6.4827976680e-02
3578 8 0.1667 378 148.545164263876 6.3485293522e-02
3579 8 0.1667 379 148.941881736235 6.6173203555e-02
3580 8 0.1667 380 149.345913203552 7.3821526741e-02
3581 8 0.1667 381 149.750531069339 7.0551017484e-02
3582 8 0.1667 382 150.059418570382 1.0600968688e+00
3583 8 0.1667 383 150.500198223366 6.7253734853e-02
3584 8 0.1667 384 150.923917886760 1.0656434607e+00
3585 8 0.1667 385 151.305611638686 6.6681577037e-02
3586 8 0.1667 386 151.685371255553 7.1422912049e-02
3587 8 0.1667 387 152.093968948536 6.6270433885e-02
3588 8 0.1667 388 152.508097183420 7.1029968183e-02
3589 8 0.1667 389 153.000145191676 9.0795673563e-01
3590 8 0.1667 390 153.144373732405 2.1407554608e-01
3591 8 0.1667 391 153.632468710296 6.7061237228e-02
3592 8 0.1667 392 154.035555721824 6.6812380955e-02
3593 8 0.1667 393 154.442177897074 7.6062342466e-02
3594 8 0.1667 394 154.830666564041 6.4897072589e-02
3595 8 0.1667 395 155.235771650531 6.6350832289e-02
3596 8 0.1667 396 155.617381696384 7.4534932279e-02
3597 8 0.1667 397 156.104592639887 1.0442532170e+00
3598 8 0.1667 398 156.364666549447 7.9408966642e-02
3599 8 0.1667 399 156.787270079532 6.5687029653e-02
3600 8 0.1667 400 157.191614045836 6.5634941961e-02
3601 8 0.1667 401 157.596035287037 1.0765582632e+00
3602 8 0.1667 402 157.979054373788 6.6073431551e-02
3603 8 0.1667 403 158.379332197957 6.6261553567e-02
3604 8 0.1667 404 158.842805328608 1.0613108435e+00
3605 8 0.1667 405 159.127605238214 7.6432813363e-02
3606 8 0.1667 406 159.543223765286 6.4727123235e-02
3607 8 0.1667 407 159.941665939099 6.4805459551e-02
3608 8 0.1667 408 160.343803077251 6.5987707103e-02
3609 8 0.1667 409 160.757033801699 7.4621209366e-02
3610 8 0.1667 410 161.184090485762 1.0602045704e+00
3611 8 0.1667 411 161.512987290804 7.2595404957e-02
3612 8 0.1667 412 161.885905827606 7.4674209565e-02
3613 8 0.1667 413 162.300270837563 6.6728454414e-02
3614 8 0.1667 414 162.690446489810 8.2009660318e-02
3615 8 0.1667 415 163.034324263124 1.0598308317e+00
3616 8 0.1667 416 163.474506925361 6.5150079461e-02
3617 8 0.1667 417 163.876719922495 6.5513548829e-02
3618 8 0.1667 418 164.267728343996 8.0948759708e-02
3619 8 0.1667 419 164.666511330334 6.6840039823e-02
3620 8 0.1667 420 165.068147737428 6.5732010920e-02
3621 8 0.1667 421 165.531202008538 1.0535703181e+00
3622 8 0.1667 422 165.829964806125 7.2357565441e-02
3623 8 0.1667 423 166.242813396386 8.4293893989e-02
3624 8 0.1667 424 166.650700459270 6.7659507852e-02
3625 8 0.1667 425 167.162746092814 9.2461191112e-01
3626 8 0.1667 426 167.309950606085 1.9541916549e-01
3627 8 0.1667 427 167.795566845566 6.8907720417e-02
3628 8 0.1667 428 168.211656867620 8.4173796872e-02
3629 8 0.1667 429 168.628582270869 7.6567968703e-02
3630 8 0.1667 430 169.083547416468 1.0420258336e+00
3631 8 0.1667 431 169.337802015394 9.2151320438e-02
3632 8 0.1667 432 169.890893999652 9.4275370939e-01
3633 8 0.1667 433 170.051560553284 1.8102613295e-01
3634 8 0.1667 434 170.504086427129 8.4558353816e-02
3635 8 0.1667 435 170.924939871474 6.6673458269e-02
3636 8 0.1667 436 171.330938714142 6.8088941892e-02
3637 8 0.1667 437 171.736885701567 6.8356995811e-02
3638 8 0.1667 438 172.101373898329 8.0002985245e-02
3639 8 0.1667 439 172.517804183079 6.6445213128e-02
3640 8 0.1667 440 172.924717538679 6.7210817400e-02
3641 8 0.1667 441 173.401123375762 1.0607749999e+00
3642 8 0.1667 442 173.658234926442 8.7374122240e-02
3643 8 0.1667 443 174.101295946400 7.3671501920e-02
3644 8 0.1667 444 174.485523938542 9.7016818462e-02
3645 8 0.1667 445 174.762993016745 1.0429256448e+00
3646 8 0.1667 446 175.240485381120 6.7684267732e-02
3647 8 0.1667 447 175.645860334147 6.6204923934e-02
3648 8 0.1667 448 176.044937480408 6.4986298028e-02
3649 8 0.1667 449 176.441603109236 1.0678770858e+00
3650 8 0.1667 450 176.855223457227 8.6561081566e-02
3651 8 0.1667 451 177.229255478977 6.7277115288e-02
3652 8 0.1667 452 177.630664886528 6.7863439235e-02
3653 8 0.1667 453 178.046618673441 7.9566974293e-02
3654 8 0.1667 454 178.378630000658 1.0721909101e+00
3655 8 0.1667 455 178.803979841839 6.6133324774e-02
3656 8 0.1667 456 179.197072728155 9.1634939350e-02
3657 8 0.1667 457 179.617328049959 7.1310213837e-02
3658 8 0.1667 458 179.921677574905 1.0582942900e+00
3659 8 0.1667 459 180.384615061853 6.7823079825e-02
3660 8 0.1667 460 180.806495999510 9.1672525616e-02
3661 8 0.1667 461 181.182947698813 7.1833555765e-02
3662 8 0.1667 462 181.553663128690 9.0027717941e-02
3663 8 0.1667 463 182.022451337179 1.2067352841e-01
3664 8 0.1667 464 182.221282954434 1.0032373801e+00
3665 8 0.1667 465 182.727160216912 6.9998296011e-02
3666 8 0.1667 466 183.129009933849 6.7879856037e-02
3667 8 0.1667 467 183.530575120838 6.5962164818e-02
3668 8 0.1667 468 183.951518838511 9.5693223810e-02
3669 8 0.1667 469 184.341800287476 7.1657446645e-02
3670 8 0.1667 470 184.854434872498 9.5570762817e-01
3671 8 0.1667 471 185.026077213016 1.7200856597e-01
3672 8 0.1667 472 185.578362309627 1.0113447238e+00
3673 8 0.1667 473 185.776548174387 1.4206424922e-01
3674 8 0.1667 474 186.251616389419 7.1104911081e-02
3675 8 0.1667 475 186.658635155531 1.0376337308e-01
3676 8 0.1667 476 187.192518445498 7.5268518261e-01
3677 8 0.1667 477 187.309202805149 3.6751423395e-01
3678 8 0.1667 478 187.821765731889 6.9855834753e-02
3679 8 0.1667 479 188.254376859012 8.6004171642e-02
3680 8 0.1667 480 188.590664459986 8.0469665164e-02
3681 8 0.1667 481 189.012288387798 6.7612443917e-02
3682 8 0.1667 482 189.416175772224 1.0704812877e+00
3683 8 0.1667 483 189.778133406311 9.6644162448e-02
3684 8 0.1667 484 190.198554348453 6.9614072508e-02
3685 8 0.1667 485 190.628165823414 9.3411793910e-02
3686 8 0.1667 486 190.974823922877 7.6364425061e-02
3687 8 0.1667 487 191.393190849745 6.9545777451e-02
3688 8 0.1667 488 191.871191015602 1.6288214292e-01
3689 8 0.1667 489 192.049370027833 9.9647120355e-01
3690 8 0.1667 490 192.543402032384 7.5951592955e-02
3691 8 0.1667 491 193.063126870841 9.8535686261e-01
3692 8 0.1667 492 193.247943449294 1.4057101816e-01
3693 8 0.1667 493 193.709911096295 7.1865644673e-02
3694 8 0.1667 494 194.117889492322 7.1414650785e-02
3695 8 0.1667 495 194.484061890195 1.0217044249e-01
3696 8 0.1667 496 194.906661716382 6.8628748831e-02
3697 8 0.1667 497 195.267741654809 1.0653371071e+00
3698 8 0.1667 498 195.696918936693 6.7307940906e-02
3699 8 0.1667 499 196.124610990578 1.0818174531e-01
3700 8 0.1667 500 196.488103254048 7.2442016218e-02
3701 8 0.1667 501 196.879948984651 1.0938614734e+00
3702 8 0.1667 502 197.241878429616 7.7130758452e-02
3703 8 0.1667 503 197.663396946280 7.3561886665e-02
3704 8 0.1667 504 198.017001297624 1.1083818382e+00
3705 8 0.1667 505 198.450187448031 6.8584563501e-02
3706 8 0.1667 506 198.843977968361 6.9479532400e-02
3707 8 0.1667 507 199.250798833744 6.6689372375e-02
3708 8 0.1667 508 199.647447097616 6.9991708004e-02
3709 8 0.1667 509 200.079695584473 1.0245443052e-01
3710 8 0.1667 510 200.404123709426 7.9253545356e-02
3711 8 0.1667 511 200.844364375850 7.7714922477e-02
3712 8 0.1667 512 201.254730992781 1.0925908322e+00
3713 8 0.1667 513 201.572534579805 8.0284775955e-02
3714 8 0.1667 514 201.991578931037 7.1359156949e-02
3715 8 0.1667 515 202.484891562923 1.0465027154e+00
3716 8 0.1667 516 202.743191861099 8.6146065408e-02
3717 8 0.1667 517 203.204866480351 1.2047947463e-01
3718 8 0.1667 518 203.572213470726 7.4651180321e-02
3719 8 0.1667 519 204.076829377998 2.5599185515e-01
3720 8 0.1667 520 204.219239525081 8.7482396084e-01
3721 8 0.1667 521 204.683856843418 1.2136192606e-01
3722 8 0.1667 522 205.164029439213 9.7063976086e-02
3723 8 0.1667 523 205.405390012993 1.0335136953e+00
3724 8 0.1667 524 205.900476811410 7.1631331500e-02
3725 8 0.1667 525 206.279917112881 1.2716491655e-01
3726 8 0.1667 526 206.699774838134 6.9231800280e-02
3727 8 0.1667 527 207.104233026508 7.0209142793e-02
3728 8 0.1667 528 207.549344296467 1.0484731820e-01
3729 8 0.1667 529 207.902091626600 1.0852414101e+00
3730 8 0.1667 530 208.313575695893 1.0468268021e-01
3731 8 0.1667 531 208.624132587592 9.5001611519e-02
3732 8 0.1667 532 209.061556569041 7.5793469245e-02
3733 8 0.1667 533 209.564852882330 1.0337227527e+00
3734 8 0.1667 534 209.835990220331 1.5153966799e-01
3735 8 0.1667 535 210.196799665928 7.8610809610e-02
3736 8 0.1667 536 210.617789704055 7.0295634790e-02
3737 8 0.1667 537 211.034297390184 7.4113460083e-02
3738 8 0.1667 538 211.462160442892 9.5940490191e-02
3739 8 0.1667 539 211.701467855913 1.0350048695e+00
3740 8 0.1667 540 212.190355858246 7.2783859909e-02
3741 8 0.1667 541 212.619700276367 8.2193543023e-02
3742 8 0.1667 542 212.938304134282 1.2670260895e-01
3743 8 0.1667 543 213.346516022239 1.1365144853e+00
3744 8 0.1667 544 213.761451886770 7.1960423443e-02
3745 8 0.1667 545 214.164424554373 7.1127009609e-02
3746 8 0.1667 546 214.548564906848 1.0687228013e+00
3747 8 0.1667 547 215.002318108325 1.3691859141e-01
3748 8 0.1667 548 215.345833324903 7.3672115998e-02
3749 8 0.1667 549 215.757743860570 7.4425938358e-02
3750 8 0.1667 550 216.171329132033 1.0984420098e+00
3751 8 0.1667 551 216.473581691160 1.1439601717e-01
3752 8 0.1667 552 216.918509493981 7.1714915880e-02
3753 8 0.1667 553 217.325000454495 7.0974236366e-02
3754 8 0.1667 554 217.759444416766 1.4674566085e-01
3755 8 0.1667 555 218.102789851229 7.5352415053e-02
3756 8 0.1667 556 218.526152592877 7.5473160933e-02
3757 8 0.1667 557 219.046277044576 9.5945192272e-01
3758 8 0.1667 558 219.249427610671 2.3309220345e-01
3759 8 0.1667 559 219.633387215810 9.2789206582e-02
3760 8 0.1667 560 220.079246841718 7.8798428039e-02
3761 8 0.1667 561 220.546137820597 1.5044642052e-01
3762 8 0.1667 562 220.733840247596 1.0709794322e+00
3763 8 0.1667 563 221.355388591129 4.2649048415e-01
3764 8 0.1667 564 221.474435915702 7.0738246985e-01
3765 8 0.1667 565 221.995852267909 7.5158165179e-02
3766 8 0.1667 566 222.396882861039 7.5284538540e-02
3767 8 0.1667 567 222.808073090233 7.2469889958e-02
3768 8 0.1667 568 223.197106814793 1.6294452565e-01
3769 8 0.1667 569 223.620034234366 7.3546080473e-02
3770 8 0.1667 570 224.012508546553 1.1575147181e+00
3771 8 0.1667 571 224.397828220622 7.7985273855e-02
3772 8 0.1667 572 224.926671920916 5.9620674274e-01
3773 8 0.1667 573 225.045381465547 5.4458809875e-01
3774 8 0.1667 574 225.503706797770 1.6675906481e-01
3775 8 0.1667 575 225.943452351072 7.7456863700e-02
3776 8 0.1667 576 226.409721465625 1.5530430302e-01
3777 8 0.1667 577 226.724044584628 8.6638281909e-02
3778 8 0.1667 578 227.158679129362 9.0756470727e-02
3779 8 0.1667 579 227.430424785400 1.0516172167e+00
3780 8 0.1667 580 227.918861974896 7.5478745370e-02
3781 8 0.1667 581 228.326728961654 1.8254702106e-01
3782 8 0.1667 582 228.727374160162 7.6668732687e-02
3783 8 0.1667 583 229.205953048141 2.1452112544e-01
3784 8 0.1667 584 229.361383564468 9.2259684824e-01
3785 8 0.1667 585 229.880746372622 7.6761579598e-02
3786 8 0.1667 586 230.348502539392 1.7405449099e-01
3787 8 0.1667 587 230.671800345457 8.8346798917e-02
3788 8 0.1667 588 231.212132271077 7.8984943215e-01
3789 8 0.1667 589 231.344455230027 3.5002264902e-01
3790 8 0.1667 590 231.961865183813 1.0735888359e+00
3791 8 0.1667 591 232.137746622174 1.8647895680e-01
3792 8 0.1667 592 232.673497432286 1.7816118428e-01
3793 8 0.1667 593 232.983706468874 9.1950346811e-02
3794 8 0.1667 594 233.440548939194 9.4593719537e-02
3795 8 0.1667 595 233.703386859793 1.0481016107e+00
3796 8 0.1667 596 234.187110146080 7.5123043678e-02
3797 8 0.1667 597 234.607618683786 8.1127582512e-02
3798 8 0.1667 598 234.931029995346 1.9509592225e-01
3799 8 0.1667 599 235.375729778996 7.5262161205e-02
3800 8 0.1667 600 235.789718940987 8.4608441436e-02
3801 8 0.1667 601 236.114186561975 1.9876522391e-01
3802 8 0.1667 602 236.527451104319 1.0765439191e+00
3803 8 0.1667 603 236.894621596419 2.0226392596e-01
3804 8 0.1667 604 237.336844047084 7.9289915659e-02
3805 8 0.1667 605 237.767483044661 1.0725692647e+00
3806 8 0.1667 606 238.131086451037 8.2305460491e-02
3807 8 0.1667 607 238.536592920882 7.4874114918e-02
3808 8 0.1667 608 238.949786655123 7.7013197371e-02
3809 8 0.1667 609 239.436536599306 3.3710791087e-01
3810 8 0.1667 610 239.578434757091 9.5029693567e-01
3811 8 0.1667 611 240.099885460630 7.9297746952e-02
3812 8 0.1667 612 240.503993806746 8.3983295605e-02
3813 8 0.1667 613 241.023460770147 9.4952877882e-01
3814 8 0.1667 614 241.154068925753 3.3682670318e-01
3815 8 0.1667 615 241.649651170864 7.6692705596e-02
3816 8 0.1667 616 242.054779482818 7.8822991663e-02
3817 8 0.1667 617 242.460972468512 2.3811906270e-01
3818 8 0.1667 618 242.826411495565 1.0744266963e+00
3819 8 0.1667 619 243.314268921534 2.1251516255e-01
3820 8 0.1667 620 243.610381255095 9.6745345138e-02
3821 8 0.1667 621 244.067049137466 1.0765318516e+00
3822 8 0.1667 622 244.411592853325 7.9483915891e-02
3823 8 0.1667 623 244.851391325912 2.4259934809e-01
3824 8 0.1667 624 245.201071382391 7.8099003551e-02
3825 8 0.1667 625 245.600325206890 8.1583898310e-02
3826 8 0.1667 626 246.005726642873 8.0785395653e-02
3827 8 0.1667 627 246.408576022795 7.6672268002e-02
3828 8 0.1667 628 246.827198607157 2.5831060145e-01
3829 8 0.1667 629 247.141935385638 1.0696867977e+00
3830 8 0.1667 630 247.602996504413 8.6203687059e-02
3831 8 0.1667 631 248.088989783621 1.0407691364e+00
3832 8 0.1667 632 248.384879986358 2.7094909554e-01
3833 8 0.1667 633 248.700720390302 9.8843176380e-02
3834 8 0.1667 634 249.138128490028 8.2877452043e-02
3835 8 0.1667 635 249.570584427715 1.0797427322e+00
3836 8 0.1667 636 249.896255275153 2.6536751885e-01
3837 8 0.1667 637 250.335454423434 8.0648889540e-02
3838 8 0.1667 638 250.767919432087 9.8133792884e-02
3839 8 0.1667 639 251.025262533874 1.0586740950e+00
3840 8 0.1667 640 251.509551506805 8.2961058705e-02
3841 8 0.1667 641 251.969519261045 2.7712008594e-01
3842 8 0.1667 642 252.362141490144 1.6710398664e-01
3843 8 0.1667 643 252.594298044117 1.9350227529e-01
3844 8 0.1667 644 253.069757284509 1.0810719861e+00
3845 8 0.1667 645 253.470338362216 8.2216438091e-02
3846 8 0.1667 646 253.883502088602 8.6549233438e-02
3847 8 0.1667 647 254.346883970912 1.9831834756e-01
3848 8 0.1667 648 254.579784436143 1.7156893057e-01
3849 8 0.1667 649 255.111104079166 1.6486806127e-01
3850 8 0.1667 650 255.312863941489 1.2158133180e+00
3851 8 0.1667 651 255.829954642170 9.4474300576e-02
3852 8 0.1667 652 256.349758551353 8.6604013689e-01
3853 8 0.1667 653 256.491833006248 2.7985713996e-01
3854 8 0.1667 654 256.977225386313 9.3769355704e-02
3855 8 0.1667 655 257.388842425873 8.0712927145e-02
3856 8 0.1667 656 257.793345574503 8.5418511685e-02
3857 8 0.1667 657 258.245250276686 3.0930129103e-01
3858 8 0.1667 658 258.606734607424 1.0903932615e+00
3859 8 0.1667 659 258.980871265172 8.7316572028e-02
3860 8 0.1667 660 259.358468714531 3.2743063393e-01
3861 8 0.1667 661 259.865596626786 1.0672178226e+00
3862 8 0.1667 662 260.230491939472 2.5816587026e-01
3863 8 0.1667 663 260.484683807989 1.8351558064e-01
3864 8 0.1667 664 260.815224408156 1.0590717345e+00
3865 8 0.1667 665 261.310804032641 9.1721265261e-02
3866 8 0.1667 666 261.709163912409 8.2780675953e-02
3867 8 0.1667 667 262.107638079126 3.4935588427e-01
3868 8 0.1667 668 262.511584777063 9.0861351999e-02
3869 8 0.1667 669 262.919688199862 8.5312519958e-02
3870 8 0.1667 670 263.363034648896 1.2711713621e-01
3871 8 0.1667 671 263.587055169554 1.3068258140e+00
3872 8 0.1667 672 264.074660035337 9.6448097762e-02
3873 8 0.1667 673 264.491098523652 8.7187569681e-02
3874 8 0.1667 674 264.955915566332 3.5438963434e-01
3875 8 0.1667 675 265.275989692735 1.2065352341e-01
3876 8 0.1667 676 265.568560961131 1.0601349085e+00
3877 8 0.1667 677 266.063824351506 8.9792602083e-02
3878 8 0.1667 678 266.588332918815 9.8022850546e-01
3879 8 0.1667 679 266.814201540065 2.6035011382e-01
3880 8 0.1667 680 267.098414222661 3.1274417749e-01
3881 8 0.1667 681 267.612944817169 1.0412050160e-01
3882 8 0.1667 682 267.930110464128 1.0754445091e+00
3883 8 0.1667 683 268.467246065247 2.3555296825e-01
3884 8 0.1667 684 268.671768853740 2.4114114149e-01
3885 8 0.1667 685 269.157999997663 9.0596351005e-02
3886 8 0.1667 686 269.567723808693 8.5839756594e-02
3887 8 0.1667 687 269.969766372664 1.0924788898e+00
3888 8 0.1667 688 270.366509347835 4.1394648899e-01
3889 8 0.1667 689 270.761008362691 9.3133882292e-02
3890 8 0.1667 690 271.165329332900 4.2281205103e-01
3891 8 0.1667 691 271.498574184239 1.0954759441e+00
3892 8 0.1667 692 271.944601458872 8.9784191735e-02
3893 8 0.1667 693 272.310463255619 4.2997063043e-01
3894 8 0.1667 694 272.727961367069 9.2751136316e-02
3895 8 0.1667 695 273.132270085887 9.6393487034e-02
3896 8 0.1667 696 273.465251974306 1.0811973565e+00
3897 8 0.1667 697 273.920324703043 9.8492252661e-02
3898 8 0.1667 698 274.322113128562 9.6711368725e-02
3899 8 0.1667 699 274.799201455347 4.3358645839e-01
3900 8 0.1667 700 275.078300348311 1.1446842566e-01
3901 8 0.1667 701 275.575766201493 1.0679207232e+00
3902 8 0.1667 702 275.868502243592 1.1820610581e-01
3903 8 0.1667 703 276.402409877917 9.1418079447e-01
3904 8 0.1667 704 276.516302252108 6.4214591770e-01
3905 8 0.1667 705 277.039264264814 9.2318357332e-02
3906 8 0.1667 706 277.443682981844 1.0137145066e-01
3907 8 0.1667 707 277.895918177618 4.8765279670e-01
3908 8 0.1667 708 278.249707116422 1.0976144683e+00
3909 8 0.1667 709 278.675425458940 1.0973386156e-01
3910 8 0.1667 710 279.046934136894 6.5144671260e-01
3911 8 0.1667 711 279.264468897230 9.1436411240e-01
3912 8 0.1667 712 279.784363236971 1.0483931413e-01
3913 8 0.3333 1 0.456755284640 6.3682449241e-02
3914 8 0.3333 2 0.853747315547 6.2904228534e-02
3915 8 0.3333 3 1.248303223248 6.2719732116e-02
3916 8 0.3333 4 1.642129107545 6.2648273720e-02
3917 8 0.3333 5 2.035639486484 6.2613472937e-02
3918 8 0.3333 6 2.428985344268 6.2594004210e-02
3919 8 0.3333 7 2.822235129033 6.2582006294e-02
3920 8 0.3333 8 3.215423903706 6.2574339941e-02
3921 8 0.3333 9 3.608572580838 6.2568785096e-02
3922 8 0.3333 10 4.001691492761 6.2565259105e-02
3923 8 0.3333 11 4.394795025881 6.2563199868e-02
3924 8 0.3333 12 4.787882828544 6.2560528822e-02
3925 8 0.3333 13 5.180958442419 6.2559551626e-02
3926 8 0.3333 14 5.574034350456 6.2560282009e-02
3927 8 0.3333 15 5.967107141789 6.2557874203e-02
3928 8 0.3333 16 6.360166406745 6.2557906099e-02
3929 8 0.3333 17 6.753236242275 6.2558987439e-02
3930 8 0.3333 18 7.146303598330 6.2559193239e-02
3931 8 0.3333 19 7.539383230364 6.2560599519e-02
3932 8 0.3333 20 7.932455967106 6.2559471042e-02
3933 8 0.3333 21 8.325542660501 6.2562969002e-02
3934 8 0.3333 22 8.718634628140 6.2563110581e-02
3935 8 0.3333 23 9.111753366317 6.2569611036e-02
3936 8 0.3333 24 9.504882160370 6.2567121682e-02
3937 8 0.3333 25 9.898019575508 6.2573376513e-02
3938 8 0.3333 26 10.291194776535 6.2578238354e-02
3939 8 0.3333 27 10.684414938270 6.2587469194e-02
3940 8 0.3333 28 11.077675874811 6.2592182233e-02
3941 8 0.3333 29 11.471012523646 6.2612256461e-02
3942 8 0.3333 30 11.864466514525 6.2627746162e-02
3943 8 0.3333 31 12.258077795126 6.2669158065e-02
3944 8 0.3333 32 12.652044826211 6.2740419870e-02
3945 8 0.3333 33 13.046691247907 6.2908438330e-02
3946 8 0.3333 34 13.443331260937 6.3483049762e-02
3947 8 0.3333 35 13.852997198044 7.0462856536e-02
3948 8 0.3333 36 14.140649969810 1.0500289423e+00
3949 8 0.3333 37 14.602224657537 6.3924072149e-02
3950 8 0.3333 38 15.000170804830 6.2999744435e-02
3951 8 0.3333 39 15.395171872490 6.2778668619e-02
3952 8 0.3333 40 15.789372617750 6.2708031997e-02
3953 8 0.3333 41 16.183235561942 6.2666746420e-02
3954 8 0.3333 42 16.576913745578 6.2648090731e-02
3955 8 0.3333 43 16.970515724074 6.2643379883e-02
3956 8 0.3333 44 17.364114315395 6.2641335381e-02
3957 8 0.3333 45 17.757697357203 6.2646105337e-02
3958 8 0.3333 46 18.151376846491 6.2665625893e-02
3959 8 0.3333 47 18.545170578024 6.2687440111e-02
3960 8 0.3333 48 18.939174890481 6.2729943259e-02
3961 8 0.3333 49 19.333488719298 6.2795435741e-02
3962 8 0.3333 50 19.728446606602 6.2940302924e-02
3963 8 0.3333 51 20.124778577853 6.3280669602e-02
3964 8 0.3333 52 20.525602660672 6.4688182879e-02
3965 8 0.3333 53 21.011761416559 1.0258684789e+00
3966 8 0.3333 54 21.236254680563 9.1488568290e-02
3967 8 0.3333 55 21.671300236993 6.4435972580e-02
3968 8 0.3333 56 22.071678837818 6.3309402453e-02
3969 8 0.3333 57 22.468363126836 6.3017867770e-02
3970 8 0.3333 58 22.864060465738 6.2963286454e-02
3971 8 0.3333 59 23.259735674278 6.2992758712e-02
3972 8 0.3333 60 23.655912560077 6.3152971410e-02
3973 8 0.3333 61 24.053939232346 6.3625244881e-02
3974 8 0.3333 62 24.457997003573 6.5510938897e-02
3975 8 0.3333 63 24.973057571991 7.1846527186e-01
3976 8 0.3333 64 25.082981604652 3.9511272777e-01
3977 8 0.3333 65 25.587180737155 6.5491562320e-02
3978 8 0.3333 66 25.991093142374 6.3593452149e-02
3979 8 0.3333 67 26.388871694042 6.3111636697e-02
3980 8 0.3333 68 26.784665580094 6.2902581249e-02
3981 8 0.3333 69 27.179634810289 6.2849216148e-02
3982 8 0.3333 70 27.574415166801 6.2799040611e-02
3983 8 0.3333 71 27.968751316638 6.2750607121e-02
3984 8 0.3333 72 28.363193728331 6.2798616142e-02
3985 8 0.3333 73 28.757761427114 6.2821563267e-02
3986 8 0.3333 74 29.152835224871 6.2955280357e-02
3987 8 0.3333 75 29.548940336063 6.3168197506e-02
3988 8 0.3333 76 29.948236311958 6.4262142115e-02
3989 8 0.3333 77 30.417911982180 1.0456078139e+00
3990 8 0.3333 78 30.689677386705 7.4305648855e-02
3991 8 0.3333 79 31.106447437402 6.4000420903e-02
3992 8 0.3333 80 31.506121220475 6.3427975059e-02
3993 8 0.3333 81 31.904877833629 6.3612005273e-02
3994 8 0.3333 82 32.307607552575 6.4985813160e-02
3995 8 0.3333 83 32.762228759113 1.1990945589e-01
3996 8 0.3333 84 32.949140707583 9.9601772329e-01
3997 8 0.3333 85 33.447667974217 6.5070069456e-02
3998 8 0.3333 86 33.850188340267 6.3495228070e-02
3999 8 0.3333 87 34.247506608441 6.3070517447e-02
4000 8 0.3333 88 34.643382150123 6.2986931465e-02
4001 8 0.3333 89 35.038775818573 6.2859833382e-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())