fiqus 2025.11.0__py3-none-any.whl → 2026.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. fiqus/MainFiQuS.py +9 -0
  2. fiqus/data/DataConductor.py +112 -3
  3. fiqus/data/DataFiQuS.py +4 -3
  4. fiqus/data/DataFiQuSConductorAC_CC.py +345 -0
  5. fiqus/data/DataFiQuSConductorAC_Rutherford.py +569 -0
  6. fiqus/data/DataFiQuSConductorAC_Strand.py +3 -3
  7. fiqus/data/DataFiQuSHomogenizedConductor.py +478 -0
  8. fiqus/geom_generators/GeometryConductorAC_CC.py +1906 -0
  9. fiqus/geom_generators/GeometryConductorAC_Rutherford.py +706 -0
  10. fiqus/geom_generators/GeometryConductorAC_Strand_RutherfordCopy.py +1848 -0
  11. fiqus/geom_generators/GeometryHomogenizedConductor.py +183 -0
  12. fiqus/getdp_runners/RunGetdpConductorAC_CC.py +123 -0
  13. fiqus/getdp_runners/RunGetdpConductorAC_Rutherford.py +200 -0
  14. fiqus/getdp_runners/RunGetdpHomogenizedConductor.py +178 -0
  15. fiqus/mains/MainConductorAC_CC.py +148 -0
  16. fiqus/mains/MainConductorAC_Rutherford.py +76 -0
  17. fiqus/mains/MainHomogenizedConductor.py +112 -0
  18. fiqus/mesh_generators/MeshConductorAC_CC.py +1305 -0
  19. fiqus/mesh_generators/MeshConductorAC_Rutherford.py +235 -0
  20. fiqus/mesh_generators/MeshConductorAC_Strand_RutherfordCopy.py +718 -0
  21. fiqus/mesh_generators/MeshHomogenizedConductor.py +229 -0
  22. fiqus/post_processors/PostProcessAC_CC.py +65 -0
  23. fiqus/post_processors/PostProcessAC_Rutherford.py +142 -0
  24. fiqus/post_processors/PostProcessHomogenizedConductor.py +114 -0
  25. fiqus/pro_templates/combined/CAC_CC_template.pro +542 -0
  26. fiqus/pro_templates/combined/CAC_Rutherford_template.pro +1742 -0
  27. fiqus/pro_templates/combined/HomogenizedConductor_template.pro +1663 -0
  28. {fiqus-2025.11.0.dist-info → fiqus-2026.1.0.dist-info}/METADATA +9 -12
  29. {fiqus-2025.11.0.dist-info → fiqus-2026.1.0.dist-info}/RECORD +36 -13
  30. tests/test_geometry_generators.py +40 -0
  31. tests/test_mesh_generators.py +76 -0
  32. tests/test_solvers.py +137 -0
  33. /fiqus/pro_templates/combined/{ConductorAC_template.pro → CAC_Strand_template.pro} +0 -0
  34. {fiqus-2025.11.0.dist-info → fiqus-2026.1.0.dist-info}/LICENSE.txt +0 -0
  35. {fiqus-2025.11.0.dist-info → fiqus-2026.1.0.dist-info}/WHEEL +0 -0
  36. {fiqus-2025.11.0.dist-info → fiqus-2026.1.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiqus
3
- Version: 2025.11.0
3
+ Version: 2026.1.0
4
4
  Summary: Source code for STEAM FiQuS tool
5
5
  Home-page: https://gitlab.cern.ch/steam/fiqus
6
6
  Author: STEAM Team
@@ -91,10 +91,10 @@ Source code for STEAM **FiQuS** (**Fi**nite Element **Qu**ench **S**imulator).
91
91
  - J. Dular et al, "Coupled Axial and Transverse Currents Method for Finite Element Modelling of Periodic Superconductors", in Superconductor Science and Technology, doi: [10.1088/1361-6668/ad650d](https://doi.org/10.1088/1361-6668/ad650d).
92
92
  - E. Schnaubelt et al, "Transient Finite Element Simulation of Accelerator Magnets Using Thermal Thin Shell Approximation", arXiV preprint, doi: [10.48550/arXiv.2501.15871](https://doi.org/10.48550/arXiv.2501.15871).
93
93
  - A. Vitrano et al, "An Open-Source Finite Element Quench Simulation Tool for Superconducting Magnets," in IEEE Transactions on Applied Superconductivity, vol. 33, no. 5, pp. 1-6, Aug. 2023, Art no. 4702006, doi: [10.1109/TASC.2023.3259332](https://ieeexplore.ieee.org/abstract/document/10077402).
94
+ - J. Dular et al, "Simulation of Rutherford Cable AC Loss and Magnetization with the Coupled Axial and Transverse Currents Method", in IEEE Transactions on Applied Superconductivity, [10.1109/TASC.2024.3520941](https://doi.org/10.1109/TASC.2024.3520941).
95
+ - J. Dular et al, "Distributed Inter-Strand Coupling Current Model for Finite Element Simulations of Rutherford Cables", arXiv preprint, doi: [arXiv:2510.24618](https://arxiv.org/abs/2510.24618).
94
96
 
95
97
  ## Using FiQuS
96
-
97
- - J. Dular et al, "Simulation of Rutherford Cable AC Loss and Magnetization with the Coupled Axial and Transverse Currents Method", in IEEE Transactions on Applied Superconductivity, [10.1109/TASC.2024.3520941](https://doi.org/10.1109/TASC.2024.3520941).
98
98
  - M. Wozniak et al, "Influence of Critical Current Distribution on Operation, Quench Detection and Protection of HTS Pancake Coils, in IEEE Transactions on Applied Superconductivity, [10.1109/TASC.2025.3532246](https://doi.org/10.1109/TASC.2025.3532246).
99
99
  - Laura AM D’Angelo et al, "Efficient Reduced Magnetic Vector Potential Formulation for the Magnetic Field Simulation of Accelerator Magnets", in IEEE Transactions on Magnetics, vol. 60, no. 3, pp. 1-8, Jan. 2024, Art no. 7000808, doi: [10.1109/TMAG.2024.3352113](https://ieeexplore.ieee.org/abstract/document/10387412).
100
100
  - M. Wozniak et al, "Quench Co-Simulation of Canted Cos-Theta Magnets," in IEEE Transactions on Applied Superconductivity, vol. 34, no. 3, pp. 1-5, Dec. 2023, Art no. 4900105, doi: [10.1109/TASC.2023.3338142](https://ieeexplore.ieee.org/document/10337614).
@@ -103,11 +103,12 @@ Source code for STEAM **FiQuS** (**Fi**nite Element **Qu**ench **S**imulator).
103
103
  Scientific Computing in Electrical Engineering (SCEE) 2024 conference, [arXiv:2404.13333](https://arxiv.org/abs/2404.13333).
104
104
 
105
105
  ## Mathematical Formulations Forming the Basis of Some FiQuS Modules
106
-
107
106
  - E. Schnaubelt et al, "Magneto-Thermal Thin Shell Approximation for 3D Finite Element Analysis of No-Insulation Coils", in IEEE Transactions on Applied Superconductivity, vol. 34, no. 3, pp. 1-6, Dec. 2023, Art no. 4700406, doi: [10.1109/TASC.2023.3340648](https://ieeexplore.ieee.org/document/10349801).
108
107
  - E. Schnaubelt et al, "Electromagnetic Simulation of No-Insulation Coils Using H−φ Thin Shell Approximation", in IEEE Transactions on Applied Superconductivity, vol. 33, no. 5, pp. 1-6, Mar. 2023, Art no. 4900906, doi: [10.1109/TASC.2023.3258905](https://ieeexplore.ieee.org/document/10076826).
109
108
  - E. Schnaubelt et al, "Thermal thin shell approximation towards finite element quench simulation", in Superconductor Science and Technology, vol. 36, no. 4, Art no. 044004, doi: [10.1088/1361-6668/acbeea](https://iopscience.iop.org/article/10.1088/1361-6668/acbeea).
110
-
109
+ - J. Dular et al, "Reduced order hysteretic magnetization model for composite superconductors", in Superconductor Science and Technology, vol. 38, no. 3, Art no. 035017, doi: [10.1088/1361-6668/adb5cc](https://iopscience.iop.org/article/10.1088/1361-6668/adb5cc/meta).
110
+ - J. Dular et al, "A Finite Element a-h-Formulation for the Reduced Order Hysteretic Magnetization Model for Composite Superconductors", in IEEE Transactions on Applied Superconductivity, vol. 35, no. 5, Art no. 8200205, doi: [10.1109/TASC.2025.3528310](https://ieeexplore.ieee.org/abstract/document/10839043).
111
+ - A. Glock et al, "Reduced Order Hysteretic Flux Model for Transport Current Homogenization in Composite Superconductors", in IEEE Transactions on Magnetics, doi: [10.1109/TMAG.2025.3613877](https://ieeexplore.ieee.org/abstract/document/11177605).
111
112
 
112
113
  # Folder Structure
113
114
  ![FiQuS folder structure](https://gitlab.cern.ch/steam/fiqus/-/raw/master/docs/images/FiQuS_folder_structure.svg)
@@ -127,13 +128,9 @@ STEAM-FiQuS documentation: https://steam-fiqus.docs.cern.ch/
127
128
  Coverage report: https://steam-fiqus.docs.cern.ch/htmlcov/
128
129
 
129
130
  # Contact
130
- steam-team@cern.ch
131
-
132
- # STEAM User Agreement
133
- By using any software of the STEAM framework, users agree with this document:
134
- https://edms.cern.ch/document/2024516
135
-
136
- (Copyright © 2022, CERN, Switzerland. All rights reserved.)
131
+ steam-admins@cern.ch
137
132
 
138
133
  # License
139
134
  This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
135
+
136
+ (Copyright © 2022, CERN, Switzerland. All rights reserved.)
@@ -1,10 +1,13 @@
1
- fiqus/MainFiQuS.py,sha256=dyhSz6VZQrZ2zbaATanfKeqDtHw1hkc8SJ0XbA_IojA,21069
1
+ fiqus/MainFiQuS.py,sha256=edv6-4VzlBVUCo35eqmnAVrh7f1daLGEpJhJmVsD9Mw,21915
2
2
  fiqus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- fiqus/data/DataConductor.py,sha256=MUrGvH9I_rs7iHuVNUP-FFrtA7KE7i-Cagocfq7_lQo,17653
4
- fiqus/data/DataFiQuS.py,sha256=rOxuYzVk1Gsscnrf1hoyQ8RRRhPOAgGG7xjKWlsOLKQ,5728
3
+ fiqus/data/DataConductor.py,sha256=srdHdqqxfANeQYbfQB2jl1UllVhHwoPv3vrQ7ZhNbRk,27823
4
+ fiqus/data/DataFiQuS.py,sha256=xsGhww-q7zW15-9C2wlMR8pspEfafOvaENOzhwR8yi0,5967
5
5
  fiqus/data/DataFiQuSCCT.py,sha256=__3AEMvalYm_YgCV9RK-hr9T7e_Dvvx3fBcqbToQWUw,7285
6
6
  fiqus/data/DataFiQuSConductor.py,sha256=HpPelDwQsGbgNoX3SdwHQYcTMCHq8vMmi0C-EGpxWeA,3392
7
- fiqus/data/DataFiQuSConductorAC_Strand.py,sha256=SLERW3APmEiwt0U5DQfqneTaktGetzW5eML3pLQWVGE,38184
7
+ fiqus/data/DataFiQuSConductorAC_CC.py,sha256=fF_g2Ao5Q_vy2g5EcxSGbstHETYP2YKJH2BU_O9kpPo,13903
8
+ fiqus/data/DataFiQuSConductorAC_Rutherford.py,sha256=mEZYPqIMzovyt-7vwD16dMScwwrX2ZTkmn1MmZI4rNM,30037
9
+ fiqus/data/DataFiQuSConductorAC_Strand.py,sha256=vyVcY9IIVbTvOVP1AkbTLafcv2TSM02BHQ6Fxy3ZDbY,38089
10
+ fiqus/data/DataFiQuSHomogenizedConductor.py,sha256=2MIJHJ51nB3_7Gx4St0tFfKh07vFhVu3DzXVNvntsMY,22854
8
11
  fiqus/data/DataFiQuSMultipole.py,sha256=_rX9zP-xNTZioVmu4NCaFVWF66ipesp8cSiB0pmKsG4,32377
9
12
  fiqus/data/DataFiQuSPancake3D.py,sha256=czgDU-h_XBq3OLqFOllr8zLx_MxQoCiWo84DsyOhhbo,136611
10
13
  fiqus/data/DataModelCommon.py,sha256=UoMdZSaHTghal0X9DeNiGUzMNdjolwMy9IRNaQQh38s,23491
@@ -15,23 +18,37 @@ fiqus/data/DataWindingsCCT.py,sha256=qqqxO4VG6rsKpNEImkA1hjrUMyS4UFNfVG_ioQd4ML8
15
18
  fiqus/data/RegionsModelFiQuS.py,sha256=6FTJBE0D4snVivMnKpS4NPJFFrdoZjmpR4KmMNF74R4,6795
16
19
  fiqus/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
20
  fiqus/geom_generators/GeometryCCT.py,sha256=t-b4M3XQ7cZlB-_gR59A5sC6qXIldsfBCDqvxSSS9gs,49902
21
+ fiqus/geom_generators/GeometryConductorAC_CC.py,sha256=B98dl6rlOOZBUX1qw1MVxOq5I3UwkkAUtAnAROry4D8,69785
22
+ fiqus/geom_generators/GeometryConductorAC_Rutherford.py,sha256=8_-YkhpqElDrMl27siJIlFPyJ0T6JrPUUQrfUi44ez0,45614
18
23
  fiqus/geom_generators/GeometryConductorAC_Strand.py,sha256=0MXKxyodC4Q6Ie4ryiIqgdRmyFsEZrFAc_Tu9yW5wuA,100610
24
+ fiqus/geom_generators/GeometryConductorAC_Strand_RutherfordCopy.py,sha256=TME2ZKV7f_UClhr_8E_ss7hWBom-0MDpQVr__nF05wY,100975
25
+ fiqus/geom_generators/GeometryHomogenizedConductor.py,sha256=vaJu5374gFHzWiCjMbRglSqbdE46qDRkZ4Gt6exCvH0,7616
19
26
  fiqus/geom_generators/GeometryMultipole.py,sha256=NXJXZY6WCf37kkjUa3mJG85zX5-uDPSz26HM_z7P7Nw,156639
20
27
  fiqus/geom_generators/GeometryPancake3D.py,sha256=mefxCg7It69jSMqV4y1-dniy2rwjs0phcXH0Ly-9myQ,180157
21
28
  fiqus/geom_generators/GeometryPancake3DUtils.py,sha256=nmOEKtqzUWB5xbITFkIiO38FeLeIydFxtLrRyZXVQPg,23679
22
29
  fiqus/geom_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
30
  fiqus/getdp_runners/RunGetdpCCT.py,sha256=tZVJYxL6Knx_6JIbJmjibG6MGkAGU3EmzIMu6ekrYnM,3682
31
+ fiqus/getdp_runners/RunGetdpConductorAC_CC.py,sha256=KlxIBc8iCRfjoGH-wqwq7DHqz16TH_Lurai2V9xhp8M,5635
32
+ fiqus/getdp_runners/RunGetdpConductorAC_Rutherford.py,sha256=v3SPfTBZCK24qKF_IoS_drqfxWWWWMXfiG4E-g1ijAY,9869
24
33
  fiqus/getdp_runners/RunGetdpConductorAC_Strand.py,sha256=VUMMu6qmx8zYhRp1tqZac8tjJbsVhrJmW2EvxP9NcHc,23043
34
+ fiqus/getdp_runners/RunGetdpHomogenizedConductor.py,sha256=tzWZKqguyE7vdW1LNm4QKRG7AftdmXfPOZ36Ku6pQGU,8871
25
35
  fiqus/getdp_runners/RunGetdpMultipole.py,sha256=mYinMVQDJx2zAZIypFbl7bybu7h3TKjlExZ5evZpqYU,8200
26
36
  fiqus/getdp_runners/RunGetdpPancake3D.py,sha256=bXqd8hRbH-XFmZ50i4q9cE7slNAiiNz2zi3hGI1RLYY,10876
27
37
  fiqus/getdp_runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
38
  fiqus/mains/MainCCT.py,sha256=XpDPlj5n8B70ksOF6AHaeTXB752kN7CMLktISoXqirA,4422
39
+ fiqus/mains/MainConductorAC_CC.py,sha256=R4hwF7uLScZDs6vUlt63JxPTEpcAkiCmpP_m5nvtXA8,5569
40
+ fiqus/mains/MainConductorAC_Rutherford.py,sha256=nmV5pAiMbypFQ-sRts5iAgEPOOsZyJNRTnKNvFQWdxQ,3084
29
41
  fiqus/mains/MainConductorAC_Strand.py,sha256=taZ10hr-c3Mmn83WwsKtar6Ezm3DvODwvmkem5_XZI4,5511
42
+ fiqus/mains/MainHomogenizedConductor.py,sha256=MoxSJq1ypnldsOMyxq8kS-57WTDqCvCl-s6Jo-eqc8E,3962
30
43
  fiqus/mains/MainMultipole.py,sha256=2f1AyYjKikxg5vEknHLsDFBhbL1eOhpPx_YO1Rf_2uk,9700
31
44
  fiqus/mains/MainPancake3D.py,sha256=JgmKqcjUOGmodxZoWXfLxKpp-w6_bX1r6XIhqNTQduU,23561
32
45
  fiqus/mains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
46
  fiqus/mesh_generators/MeshCCT.py,sha256=j2Qj69tdFb-weQnNgv5zi6dkL3ZJxGRdzKqzjlYdIy8,11436
47
+ fiqus/mesh_generators/MeshConductorAC_CC.py,sha256=zj79ciB2MT3V0Y4wyoMb5ZLsrHAa-dm4cfJnO8aipZQ,54503
48
+ fiqus/mesh_generators/MeshConductorAC_Rutherford.py,sha256=xFrBLFInqrzZ-eTvHOv3732spMVxDC3gZHbX1x_SDjQ,14789
34
49
  fiqus/mesh_generators/MeshConductorAC_Strand.py,sha256=EvQ_adA1lUEcgfOQ9-m2G6FuWTioFRQrC0en-Nn_ztg,48041
50
+ fiqus/mesh_generators/MeshConductorAC_Strand_RutherfordCopy.py,sha256=LundceEIHHgL3MDIVAk1pU1gyrEBtj2A43Jh7UoOdWE,48153
51
+ fiqus/mesh_generators/MeshHomogenizedConductor.py,sha256=gkwBRssdV3IvCZybdbwKrOuOsp7kUO0yfsvavGGpYmY,13126
35
52
  fiqus/mesh_generators/MeshMultipole.py,sha256=vxFdVphkpqOCWx5725oGmYHrK6RfB8RoW3bWLsALc78,97227
36
53
  fiqus/mesh_generators/MeshPancake3D.py,sha256=u31glrOUPGityJ5S0z4n3SvI_Vqqyh62jv7OXIq3-lY,126975
37
54
  fiqus/mesh_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -47,8 +64,11 @@ fiqus/plotters/PlotPythonCCT.py,sha256=YgphOuiTk0klqZh4d4u81hahtiDp-tx149EpBjyKH
47
64
  fiqus/plotters/PlotPythonConductorAC.py,sha256=_7ygaz5WVVGuc4RkgOcZ2NUbqWbowtJMmseAeQ49XbQ,59383
48
65
  fiqus/plotters/PlotPythonMultipole.py,sha256=SjJQKHX5mUoMW3yli97W6Kja0Hux8C16YE1U22hQRHY,481
49
66
  fiqus/plotters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ fiqus/post_processors/PostProcessAC_CC.py,sha256=-J6lhiOMGlOhauwJ_WOBoDtOWk5poJfZJuxmh2ABSwQ,2236
68
+ fiqus/post_processors/PostProcessAC_Rutherford.py,sha256=2n_SYfpYDJ6olnTHKAT3Vw1q6RFAQBRX4PZypcbEIEI,6769
50
69
  fiqus/post_processors/PostProcessCCT.py,sha256=C4BU7IHHWm2CbbLunEmHaHN_iW6y9mlisIed3lKfs_A,28633
51
70
  fiqus/post_processors/PostProcessConductorAC.py,sha256=qMtxsmBGRMZVKiDynzfzWh4q6ttOAA2bGPmOzciAgXo,58804
71
+ fiqus/post_processors/PostProcessHomogenizedConductor.py,sha256=absLWaskvfptOAQnL2zLF_tdf1Jmrk3duxsAlbuYTV8,4836
52
72
  fiqus/post_processors/PostProcessMultipole.py,sha256=ONYqw0mxY0QKXWB51xw-e6_jelzzKD39vMcBR8J4JXs,25512
53
73
  fiqus/post_processors/PostProcessPancake3D.py,sha256=PjGaohIj_oWfqyHH-Fr3CgiOitUpjGjYe2Rm3wqtM1g,12940
54
74
  fiqus/post_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -58,8 +78,11 @@ fiqus/pro_assemblers/ProAssembler.py,sha256=DrVd1wiuv-7PIj3G38crBu07aMPyE3FOapOD
58
78
  fiqus/pro_assemblers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
79
  fiqus/pro_material_functions/ironBHcurves.pro,sha256=0Tz1KzZ63G_zaS6dYQ5NYwa9EAtJna0jR61OxsM9J_E,17835
60
80
  fiqus/pro_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ fiqus/pro_templates/combined/CAC_CC_template.pro,sha256=q7ZvZOYJTqx--yKrR6ZSQxWvn2r0HyZwST5bh__dQ2A,30257
82
+ fiqus/pro_templates/combined/CAC_Rutherford_template.pro,sha256=tgKnqZw6FADj42HcYT2M_bw76J5gspSfRZ_F8oMiRSo,100473
83
+ fiqus/pro_templates/combined/CAC_Strand_template.pro,sha256=RN69ycY4vGGPp8YmCHICVGRNfvuEHGB50FxmEeEzrXA,94008
61
84
  fiqus/pro_templates/combined/CCT_template.pro,sha256=gZKoLj6ZefuSzM7dYkEJW49qlzfiUqEwmifaJP4kOzc,13878
62
- fiqus/pro_templates/combined/ConductorAC_template.pro,sha256=RN69ycY4vGGPp8YmCHICVGRNfvuEHGB50FxmEeEzrXA,94008
85
+ fiqus/pro_templates/combined/HomogenizedConductor_template.pro,sha256=sq4B6ZZVDfl8T4L0tBaIA9LzisYzrOv8uB7pAa6ZK64,90770
63
86
  fiqus/pro_templates/combined/Multipole_template.pro,sha256=H0H_R7sa69EL2lHtIQ0kmz-0Ov0MbZZIpnu1L0pAhPM,97994
64
87
  fiqus/pro_templates/combined/Pancake3D_template.pro,sha256=OjWWWAZel5Yk_k4FEFFNkkSFkCv1N0rM2-DRvilH6dc,215797
65
88
  fiqus/pro_templates/combined/TSA_materials.pro,sha256=I8zVOP2ZEFqR0y3JcpSQJWaE6I4UeeMU22PtSD8ExCc,12244
@@ -71,16 +94,16 @@ fiqus/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
94
  fiqus/utils/update_data_settings.py,sha256=Cl_vP-7MXFHG3LiDE8nVtL7CwK9DUvDhxXV7sabP9to,1295
72
95
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
96
  tests/test_FiQuS.py,sha256=mlY5eRp-sE_ubaPG7HHAEsC4Q3iQwI76nfOclPg7m-M,15529
74
- tests/test_geometry_generators.py,sha256=CknRmySOjTbOfmTm4nC_X7K0FJRytjq2HKzQVKTKD2c,9116
75
- tests/test_mesh_generators.py,sha256=Qa1wJ8-0vCInkt300iM_tGVkioBHi4jVBKid9LAKfAM,10881
76
- tests/test_solvers.py,sha256=k2VX19GV2yTCec01ieW-6Z2NAMyMqB9rk5CAp9Ye0Ow,12815
97
+ tests/test_geometry_generators.py,sha256=kadOCdjeWIur8rK7J7ULrvM129Okfl0hwuCATXd3ZVg,10854
98
+ tests/test_mesh_generators.py,sha256=NjtVDH6z7iTBe8aUxnMHhMLrzvPpnHmCM-xyleMe2AU,14105
99
+ tests/test_solvers.py,sha256=_Zyv7foSfjs1iS3qcQTE0ryfwiinTbk7ZFzGsEwlRbI,19040
77
100
  tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
101
  tests/utils/fiqus_test_classes.py,sha256=ynCjYknWGI_pa-lRWQ01aL2SjHz0GTrN4bICW5GlR34,30395
79
102
  tests/utils/generate_reference_files_ConductorAC.py,sha256=_jEE6xcqiz52bnmY6Is11QmG-bZ2vdH0k99p733t4N4,1676
80
103
  tests/utils/generate_reference_files_Pancake3D.py,sha256=9sULcDOmbotrbYHz8DqGv6Km7ThfltnCHFojHUx193U,3126
81
104
  tests/utils/helpers.py,sha256=BQxdHr8N4rGXc2C_YNEeOXxTIDJSUeRyyxLkvWfhiJY,4149
82
- fiqus-2025.11.0.dist-info/LICENSE.txt,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
83
- fiqus-2025.11.0.dist-info/METADATA,sha256=68b71oEsx-HfExyCFDOMeEywFZOheUalzKGvrF5yvFQ,8370
84
- fiqus-2025.11.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
85
- fiqus-2025.11.0.dist-info/top_level.txt,sha256=oGzSIyoVc1zYg14o67zI3QFwWsJvqNzNT0-te9WbUQc,12
86
- fiqus-2025.11.0.dist-info/RECORD,,
105
+ fiqus-2026.1.0.dist-info/LICENSE.txt,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
106
+ fiqus-2026.1.0.dist-info/METADATA,sha256=xDXd4lOVoqzi5Ie-vhHOsn4G6DIgneXCfK7p-1nmE1I,9249
107
+ fiqus-2026.1.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
108
+ fiqus-2026.1.0.dist-info/top_level.txt,sha256=oGzSIyoVc1zYg14o67zI3QFwWsJvqNzNT0-te9WbUQc,12
109
+ fiqus-2026.1.0.dist-info/RECORD,,
@@ -92,6 +92,46 @@ class TestGeometryGenerators(FiQuSGeometryTests):
92
92
  f'{reference_geometry_yaml_file}')
93
93
  self.compare_json_or_yaml_files(geometry_yaml_file, reference_geometry_yaml_file, tolerance=1e-9)
94
94
 
95
+ def test_ConductorAC_Rutherford(self):
96
+ model_names = [
97
+ "TEST_CAC_Rutherford",
98
+ ]
99
+
100
+ for model_name in model_names:
101
+ with self.subTest(model_name=model_name):
102
+ data_model = self.get_data_model(model_name)
103
+
104
+ self.generate_geometry(data_model, model_name)
105
+
106
+ # Compare the number of entities with the reference file:
107
+ geometry_file = self.get_path_to_generated_file(
108
+ data_model=data_model, file_name=model_name, file_extension="brep"
109
+ )
110
+ reference_file = self.get_path_to_reference_file(
111
+ data_model=data_model, file_name=model_name, file_extension="brep"
112
+ )
113
+ self.compare_number_of_entities(geometry_file, reference_file)
114
+
115
+ def test_ConductorAC_CC(self):
116
+ model_names = [
117
+ "TEST_CAC_CC",
118
+ ]
119
+
120
+ for model_name in model_names:
121
+ with self.subTest(model_name=model_name):
122
+ data_model = self.get_data_model(model_name)
123
+
124
+ self.generate_geometry(data_model, model_name)
125
+
126
+ # Compare the number of entities with the reference file:
127
+ geometry_file = self.get_path_to_generated_file(
128
+ data_model=data_model, file_name=model_name, file_extension="brep"
129
+ )
130
+ reference_file = self.get_path_to_reference_file(
131
+ data_model=data_model, file_name=model_name, file_extension="brep"
132
+ )
133
+ self.compare_number_of_entities(geometry_file, reference_file)
134
+
95
135
  def test_Multipole(self):
96
136
  """
97
137
  Checks if Multipole geometry generators work correctly by comparing generated
@@ -101,6 +101,82 @@ class TestMeshGenerators(FiQuSMeshTests):
101
101
  )
102
102
  self.compare_json_or_yaml_files(regions_file, reference_regions_file)
103
103
 
104
+ def test_ConductorAC_Rutherford(self):
105
+ """
106
+ Checks if mesh generators work correctly by comparing the number
107
+ of entities in the generated geometry file to the reference file that was
108
+ checked manually.
109
+ """
110
+ model_names = [
111
+ "TEST_CAC_Rutherford",
112
+ ]
113
+
114
+ for model_name in model_names:
115
+ with self.subTest(model_name=model_name):
116
+ data_model = self.get_data_model(model_name)
117
+
118
+ self.generate_mesh(data_model, model_name)
119
+
120
+ # Compare the number of entities with the reference file:
121
+ mesh_file = self.get_path_to_generated_file(
122
+ data_model=data_model, file_name=model_name, file_extension="msh"
123
+ )
124
+ reference_file = self.get_path_to_reference_file(
125
+ data_model=data_model, file_name=model_name, file_extension="msh"
126
+ )
127
+ self.compare_mesh_qualities(mesh_file, reference_file)
128
+
129
+ # Compare the regions files:
130
+ regions_file = self.get_path_to_generated_file(
131
+ data_model=data_model,
132
+ file_name=model_name,
133
+ file_extension="regions",
134
+ )
135
+ reference_regions_file = self.get_path_to_reference_file(
136
+ data_model=data_model,
137
+ file_name=model_name,
138
+ file_extension="regions",
139
+ )
140
+ self.compare_json_or_yaml_files(regions_file, reference_regions_file)
141
+
142
+ def test_ConductorAC_CC(self):
143
+ """
144
+ Checks if mesh generators work correctly by comparing the number
145
+ of entities in the generated geometry file to the reference file that was
146
+ checked manually.
147
+ """
148
+ model_names = [
149
+ "TEST_CAC_CC",
150
+ ]
151
+
152
+ for model_name in model_names:
153
+ with self.subTest(model_name=model_name):
154
+ data_model = self.get_data_model(model_name)
155
+
156
+ self.generate_mesh(data_model, model_name)
157
+
158
+ # Compare the number of entities with the reference file:
159
+ mesh_file = self.get_path_to_generated_file(
160
+ data_model=data_model, file_name=model_name, file_extension="msh"
161
+ )
162
+ reference_file = self.get_path_to_reference_file(
163
+ data_model=data_model, file_name=model_name, file_extension="msh"
164
+ )
165
+ self.compare_mesh_qualities(mesh_file, reference_file)
166
+
167
+ # Compare the regions files:
168
+ regions_file = self.get_path_to_generated_file(
169
+ data_model=data_model,
170
+ file_name=model_name,
171
+ file_extension="regions",
172
+ )
173
+ reference_regions_file = self.get_path_to_reference_file(
174
+ data_model=data_model,
175
+ file_name=model_name,
176
+ file_extension="regions",
177
+ )
178
+ self.compare_json_or_yaml_files(regions_file, reference_regions_file)
179
+
104
180
  # def test_CCT(self):
105
181
  # """
106
182
  # Checks if CCT geometry generators work correctly by comparing the number
tests/test_solvers.py CHANGED
@@ -190,6 +190,143 @@ class TestSolvers(FiQuSSolverTests):
190
190
  )
191
191
  self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1e-10)
192
192
 
193
+ def test_ConductorAC_Rutherford(self):
194
+ """
195
+ Checks if CAC_Rutherford solver works correctly by comparing the results to the
196
+ reference results that were checked manually.
197
+ """
198
+ if os.getenv("CERNGETDP_VERSION_CAC_RUTHERFORD") is not None:
199
+ os_name = platform.system()
200
+
201
+ if os_name == "Linux":
202
+ self.getdp_path = linux_getdp_prefix_path / Path(f"cac_rutherford/bin/getdp_{os.getenv('CERNGETDP_VERSION_CAC_RUTHERFORD')}")
203
+ else:
204
+ self.getdp_path = windows_getdp_prefix_path / Path(f"cac_rutherford/getdp_{os.getenv('CERNGETDP_VERSION_CAC_RUTHERFORD')}.exe")
205
+ else:
206
+ print("CERNGETDP_VERSION_CAC_RUTHERFORD is not set. Using default getdp path from data settings.")
207
+
208
+
209
+ model_names = [
210
+ "TEST_CAC_Rutherford",
211
+ ]
212
+ for model_name in model_names:
213
+ with self.subTest(model_name=model_name):
214
+ data_model: FDM = self.get_data_model(model_name)
215
+
216
+ self.solve(data_model, model_name)
217
+
218
+ # Compare the current density files:
219
+ pos_file = self.get_path_to_generated_file(
220
+ data_model=data_model,
221
+ file_name="jz",
222
+ file_extension="pos",
223
+ )
224
+ reference_pos_file = self.get_path_to_reference_file(
225
+ data_model=data_model,
226
+ file_name="jz",
227
+ file_extension="pos",
228
+ )
229
+ self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1E-10)
230
+
231
+ # Compare the power loss files:
232
+ pos_file = self.get_path_to_generated_file(
233
+ data_model=data_model,
234
+ file_name="m",
235
+ file_extension="pos",
236
+ )
237
+ reference_pos_file = self.get_path_to_reference_file(
238
+ data_model=data_model,
239
+ file_name="m",
240
+ file_extension="pos",
241
+ )
242
+ self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1E-10)
243
+
244
+ def test_ConductorAC_CC(self):
245
+ """
246
+ Checks if ConductorAC Coated Conductor solver works correctly by comparing the results to the
247
+ reference results that were checked manually.
248
+ """
249
+ if os.getenv("CERNGETDP_VERSION_CAC_CC") is not None:
250
+ os_name = platform.system()
251
+
252
+ if os_name == "Linux":
253
+ self.getdp_path = linux_getdp_prefix_path / Path(f"cac_cc/bin/getdp_{os.getenv('CERNGETDP_VERSION_CAC_CC')}")
254
+ else:
255
+ self.getdp_path = windows_getdp_prefix_path / Path(f"cac_cc/getdp_{os.getenv('CERNGETDP_VERSION_CAC_CC')}.exe")
256
+ else:
257
+ print("CERNGETDP_VERSION_CAC_CC is not set. Using default getdp path from data settings.")
258
+
259
+ model_names = [
260
+ "TEST_CAC_CC",
261
+ ]
262
+ for model_name in model_names:
263
+ with self.subTest(model_name=model_name):
264
+ data_model: FDM = self.get_data_model(model_name)
265
+
266
+ self.solve(data_model, model_name)
267
+
268
+ # Compare the current density files:
269
+ pos_file = self.get_path_to_generated_file(
270
+ data_model=data_model,
271
+ file_name="last_magnetic_field",
272
+ file_extension="pos",
273
+ )
274
+ reference_pos_file = self.get_path_to_reference_file(
275
+ data_model=data_model,
276
+ file_name="last_magnetic_field",
277
+ file_extension="pos",
278
+ )
279
+ self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-2, abs_tolerance=1E-10)
280
+
281
+ def test_HomogenizedConductor(self):
282
+ """
283
+ Checks if HomogenizedConductor solver works correctly by comparing the results to the
284
+ reference results that were checked manually.
285
+ """
286
+ if os.getenv("CERNGETDP_VERSION_HOMOGENIZED_CONDUCTOR") is not None:
287
+ os_name = platform.system()
288
+
289
+ if os_name == "Linux":
290
+ self.getdp_path = linux_getdp_prefix_path / Path(f"homogenized_conductor/bin/getdp_{os.getenv('CERNGETDP_VERSION_HOMOGENIZED_CONDUCTOR')}")
291
+ else:
292
+ self.getdp_path = windows_getdp_prefix_path / Path(f"homogenized_conductor/getdp_{os.getenv('CERNGETDP_VERSION_HOMOGENIZED_CONDUCTOR')}.exe")
293
+ else:
294
+ print("CERNGETDP_VERSION_HOMOGENIZED_CONDUCTOR is not set. Using default getdp path from data settings.")
295
+
296
+ model_names = [
297
+ "TEST_HomogenizedConductor",
298
+ ]
299
+ for model_name in model_names:
300
+ with self.subTest(model_name=model_name):
301
+ data_model: FDM = self.get_data_model(model_name)
302
+
303
+ self.solve(data_model, model_name)
304
+
305
+ # Compare the current density files:
306
+ pos_file = self.get_path_to_generated_file(
307
+ data_model=data_model,
308
+ file_name="js",
309
+ file_extension="pos",
310
+ )
311
+ reference_pos_file = self.get_path_to_reference_file(
312
+ data_model=data_model,
313
+ file_name="js",
314
+ file_extension="pos",
315
+ )
316
+ self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1E-10)
317
+
318
+ # Compare the power loss files:
319
+ pos_file = self.get_path_to_generated_file(
320
+ data_model=data_model,
321
+ file_name="p_tot",
322
+ file_extension="pos",
323
+ )
324
+ reference_pos_file = self.get_path_to_reference_file(
325
+ data_model=data_model,
326
+ file_name="p_tot",
327
+ file_extension="pos",
328
+ )
329
+ self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1E-10)
193
330
 
194
331
  def test_Multipole(self):
195
332
  """