fiqus 2025.1.1__py3-none-any.whl → 2025.10.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 (56) hide show
  1. fiqus/MainFiQuS.py +4 -9
  2. fiqus/data/DataConductor.py +350 -301
  3. fiqus/data/DataFiQuS.py +42 -115
  4. fiqus/data/DataFiQuSCCT.py +150 -150
  5. fiqus/data/DataFiQuSConductor.py +97 -84
  6. fiqus/data/DataFiQuSConductorAC_Strand.py +701 -565
  7. fiqus/data/DataModelCommon.py +439 -0
  8. fiqus/data/DataMultipole.py +0 -13
  9. fiqus/data/DataRoxieParser.py +7 -0
  10. fiqus/data/DataWindingsCCT.py +37 -37
  11. fiqus/data/RegionsModelFiQuS.py +61 -104
  12. fiqus/geom_generators/GeometryCCT.py +904 -905
  13. fiqus/geom_generators/GeometryConductorAC_Strand.py +1863 -1391
  14. fiqus/geom_generators/GeometryMultipole.py +5 -4
  15. fiqus/geom_generators/GeometryPancake3D.py +1 -1
  16. fiqus/getdp_runners/RunGetdpCCT.py +13 -4
  17. fiqus/getdp_runners/RunGetdpConductorAC_Strand.py +341 -201
  18. fiqus/getdp_runners/RunGetdpPancake3D.py +2 -2
  19. fiqus/mains/MainConductorAC_Strand.py +141 -133
  20. fiqus/mains/MainMultipole.py +6 -5
  21. fiqus/mains/MainPancake3D.py +3 -4
  22. fiqus/mesh_generators/MeshCCT.py +209 -209
  23. fiqus/mesh_generators/MeshConductorAC_Strand.py +709 -656
  24. fiqus/mesh_generators/MeshMultipole.py +43 -46
  25. fiqus/mesh_generators/MeshPancake3D.py +7 -4
  26. fiqus/parsers/ParserDAT.py +16 -16
  27. fiqus/parsers/ParserGetDPOnSection.py +212 -212
  28. fiqus/parsers/ParserGetDPTimeTable.py +134 -134
  29. fiqus/parsers/ParserMSH.py +53 -53
  30. fiqus/parsers/ParserPOS.py +214 -214
  31. fiqus/parsers/ParserRES.py +142 -142
  32. fiqus/plotters/PlotPythonCCT.py +133 -133
  33. fiqus/plotters/PlotPythonConductorAC.py +1079 -855
  34. fiqus/plotters/PlotPythonMultipole.py +18 -18
  35. fiqus/post_processors/PostProcessCCT.py +444 -440
  36. fiqus/post_processors/PostProcessConductorAC.py +997 -49
  37. fiqus/post_processors/PostProcessMultipole.py +19 -19
  38. fiqus/pre_processors/PreProcessCCT.py +175 -175
  39. fiqus/pro_material_functions/ironBHcurves.pro +246 -246
  40. fiqus/pro_templates/combined/CCT_template.pro +275 -274
  41. fiqus/pro_templates/combined/ConductorAC_template.pro +1474 -1025
  42. fiqus/pro_templates/combined/Multipole_template.pro +22 -14
  43. fiqus/pro_templates/combined/Pancake3D_template.pro +128 -24
  44. fiqus/utils/Utils.py +12 -7
  45. {fiqus-2025.1.1.dist-info → fiqus-2025.10.0.dist-info}/METADATA +69 -66
  46. fiqus-2025.10.0.dist-info/RECORD +86 -0
  47. {fiqus-2025.1.1.dist-info → fiqus-2025.10.0.dist-info}/WHEEL +1 -1
  48. tests/test_geometry_generators.py +4 -0
  49. tests/test_mesh_generators.py +5 -0
  50. tests/test_solvers.py +41 -4
  51. tests/utils/fiqus_test_classes.py +15 -6
  52. tests/utils/generate_reference_files_ConductorAC.py +57 -57
  53. tests/utils/helpers.py +97 -97
  54. fiqus-2025.1.1.dist-info/RECORD +0 -85
  55. {fiqus-2025.1.1.dist-info → fiqus-2025.10.0.dist-info}/LICENSE.txt +0 -0
  56. {fiqus-2025.1.1.dist-info → fiqus-2025.10.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,86 @@
1
+ fiqus/MainFiQuS.py,sha256=yJS8aeKO8MUu7pTayHSxxJEIX9Knp052xPM0SUvaU8s,21232
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
5
+ fiqus/data/DataFiQuSCCT.py,sha256=__3AEMvalYm_YgCV9RK-hr9T7e_Dvvx3fBcqbToQWUw,7285
6
+ fiqus/data/DataFiQuSConductor.py,sha256=HpPelDwQsGbgNoX3SdwHQYcTMCHq8vMmi0C-EGpxWeA,3392
7
+ fiqus/data/DataFiQuSConductorAC_Strand.py,sha256=SLERW3APmEiwt0U5DQfqneTaktGetzW5eML3pLQWVGE,38184
8
+ fiqus/data/DataFiQuSMultipole.py,sha256=_rX9zP-xNTZioVmu4NCaFVWF66ipesp8cSiB0pmKsG4,32377
9
+ fiqus/data/DataFiQuSPancake3D.py,sha256=czgDU-h_XBq3OLqFOllr8zLx_MxQoCiWo84DsyOhhbo,136611
10
+ fiqus/data/DataModelCommon.py,sha256=UoMdZSaHTghal0X9DeNiGUzMNdjolwMy9IRNaQQh38s,23491
11
+ fiqus/data/DataMultipole.py,sha256=-UUxtgdn32NKxZt3-p-3p5lDcdxlGN9uPlVeLJB9u2E,6323
12
+ fiqus/data/DataRoxieParser.py,sha256=2qlyUmrFOJw7CT2CDs3psv_B7GNtpkTcJoRwpVHr_C0,9277
13
+ fiqus/data/DataSettings.py,sha256=zs5sEYUk4xjeMc_j8gt3PMji7V0yyMYizpXxBKv0aB0,3799
14
+ fiqus/data/DataWindingsCCT.py,sha256=qqqxO4VG6rsKpNEImkA1hjrUMyS4UFNfVG_ioQd4ML8,1709
15
+ fiqus/data/RegionsModelFiQuS.py,sha256=6FTJBE0D4snVivMnKpS4NPJFFrdoZjmpR4KmMNF74R4,6795
16
+ fiqus/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ fiqus/geom_generators/GeometryCCT.py,sha256=t-b4M3XQ7cZlB-_gR59A5sC6qXIldsfBCDqvxSSS9gs,49902
18
+ fiqus/geom_generators/GeometryConductorAC_Strand.py,sha256=0MXKxyodC4Q6Ie4ryiIqgdRmyFsEZrFAc_Tu9yW5wuA,100610
19
+ fiqus/geom_generators/GeometryMultipole.py,sha256=NXJXZY6WCf37kkjUa3mJG85zX5-uDPSz26HM_z7P7Nw,156639
20
+ fiqus/geom_generators/GeometryPancake3D.py,sha256=mefxCg7It69jSMqV4y1-dniy2rwjs0phcXH0Ly-9myQ,180157
21
+ fiqus/geom_generators/GeometryPancake3DUtils.py,sha256=nmOEKtqzUWB5xbITFkIiO38FeLeIydFxtLrRyZXVQPg,23679
22
+ fiqus/geom_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ fiqus/getdp_runners/RunGetdpCCT.py,sha256=tZVJYxL6Knx_6JIbJmjibG6MGkAGU3EmzIMu6ekrYnM,3682
24
+ fiqus/getdp_runners/RunGetdpConductorAC_Strand.py,sha256=VUMMu6qmx8zYhRp1tqZac8tjJbsVhrJmW2EvxP9NcHc,23043
25
+ fiqus/getdp_runners/RunGetdpMultipole.py,sha256=mYinMVQDJx2zAZIypFbl7bybu7h3TKjlExZ5evZpqYU,8200
26
+ fiqus/getdp_runners/RunGetdpPancake3D.py,sha256=bXqd8hRbH-XFmZ50i4q9cE7slNAiiNz2zi3hGI1RLYY,10876
27
+ fiqus/getdp_runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ fiqus/mains/MainCCT.py,sha256=XpDPlj5n8B70ksOF6AHaeTXB752kN7CMLktISoXqirA,4422
29
+ fiqus/mains/MainConductorAC_Strand.py,sha256=taZ10hr-c3Mmn83WwsKtar6Ezm3DvODwvmkem5_XZI4,5511
30
+ fiqus/mains/MainMultipole.py,sha256=2f1AyYjKikxg5vEknHLsDFBhbL1eOhpPx_YO1Rf_2uk,9700
31
+ fiqus/mains/MainPancake3D.py,sha256=JgmKqcjUOGmodxZoWXfLxKpp-w6_bX1r6XIhqNTQduU,23561
32
+ fiqus/mains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ fiqus/mesh_generators/MeshCCT.py,sha256=j2Qj69tdFb-weQnNgv5zi6dkL3ZJxGRdzKqzjlYdIy8,11436
34
+ fiqus/mesh_generators/MeshConductorAC_Strand.py,sha256=EvQ_adA1lUEcgfOQ9-m2G6FuWTioFRQrC0en-Nn_ztg,48041
35
+ fiqus/mesh_generators/MeshMultipole.py,sha256=vxFdVphkpqOCWx5725oGmYHrK6RfB8RoW3bWLsALc78,97227
36
+ fiqus/mesh_generators/MeshPancake3D.py,sha256=u31glrOUPGityJ5S0z4n3SvI_Vqqyh62jv7OXIq3-lY,126975
37
+ fiqus/mesh_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ fiqus/parsers/ParserCOND.py,sha256=nQyRRZf2Jbvf6ri5rdhq2P6b52Qbp2tTHuDRT4ChxHI,41376
39
+ fiqus/parsers/ParserDAT.py,sha256=eLbpr74BDoSw6UAeP_qkM55ZLRYPdk8t-RhTXU_oHE4,675
40
+ fiqus/parsers/ParserGetDPOnSection.py,sha256=pTk2EqO1sitoNIztekyEtIy5xpFKou_L3KGsIjJV3R0,8408
41
+ fiqus/parsers/ParserGetDPTimeTable.py,sha256=hAITcOQNJdG_bEUQoQ4VJEamc83BT8zCVp98jlhp1Ug,5098
42
+ fiqus/parsers/ParserMSH.py,sha256=ijLmPPsiy2azo9fN9iZ2aSc_MjueXwZG3GMqruYeucc,1912
43
+ fiqus/parsers/ParserPOS.py,sha256=XtUhuOJJC-OSGY12YefJ-eFafhdQpLbPY4mHwGAtb9U,10162
44
+ fiqus/parsers/ParserRES.py,sha256=782GouJaw0j5u1RLGag6FauSUTuKV7gKa1G4EowSKBE,5984
45
+ fiqus/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ fiqus/plotters/PlotPythonCCT.py,sha256=YgphOuiTk0klqZh4d4u81hahtiDp-tx149EpBjyKH-Y,6333
47
+ fiqus/plotters/PlotPythonConductorAC.py,sha256=_7ygaz5WVVGuc4RkgOcZ2NUbqWbowtJMmseAeQ49XbQ,59383
48
+ fiqus/plotters/PlotPythonMultipole.py,sha256=SjJQKHX5mUoMW3yli97W6Kja0Hux8C16YE1U22hQRHY,481
49
+ fiqus/plotters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ fiqus/post_processors/PostProcessCCT.py,sha256=C4BU7IHHWm2CbbLunEmHaHN_iW6y9mlisIed3lKfs_A,28633
51
+ fiqus/post_processors/PostProcessConductorAC.py,sha256=qMtxsmBGRMZVKiDynzfzWh4q6ttOAA2bGPmOzciAgXo,58804
52
+ fiqus/post_processors/PostProcessMultipole.py,sha256=ONYqw0mxY0QKXWB51xw-e6_jelzzKD39vMcBR8J4JXs,25512
53
+ fiqus/post_processors/PostProcessPancake3D.py,sha256=PjGaohIj_oWfqyHH-Fr3CgiOitUpjGjYe2Rm3wqtM1g,12940
54
+ fiqus/post_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ fiqus/pre_processors/PreProcessCCT.py,sha256=BDRei7uLdOHxNnsg-r17HcjtvvrST8HUj_lQ1GSmVZo,9217
56
+ fiqus/pre_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ fiqus/pro_assemblers/ProAssembler.py,sha256=DrVd1wiuv-7PIj3G38crBu07aMPyE3FOapODJN7wl9E,3572
58
+ fiqus/pro_assemblers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ fiqus/pro_material_functions/ironBHcurves.pro,sha256=0Tz1KzZ63G_zaS6dYQ5NYwa9EAtJna0jR61OxsM9J_E,17835
60
+ fiqus/pro_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ fiqus/pro_templates/combined/CCT_template.pro,sha256=gZKoLj6ZefuSzM7dYkEJW49qlzfiUqEwmifaJP4kOzc,13878
62
+ fiqus/pro_templates/combined/ConductorAC_template.pro,sha256=RN69ycY4vGGPp8YmCHICVGRNfvuEHGB50FxmEeEzrXA,94008
63
+ fiqus/pro_templates/combined/Multipole_template.pro,sha256=H0H_R7sa69EL2lHtIQ0kmz-0Ov0MbZZIpnu1L0pAhPM,97994
64
+ fiqus/pro_templates/combined/Pancake3D_template.pro,sha256=OjWWWAZel5Yk_k4FEFFNkkSFkCv1N0rM2-DRvilH6dc,215797
65
+ fiqus/pro_templates/combined/TSA_materials.pro,sha256=I8zVOP2ZEFqR0y3JcpSQJWaE6I4UeeMU22PtSD8ExCc,12244
66
+ fiqus/pro_templates/combined/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ fiqus/pro_templates/combined/materials.pro,sha256=D-cBOIMaQyYffIfoR4yRiK69Z6sxHu2QtyjhDIKFiXc,7038
68
+ fiqus/pro_templates/separated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ fiqus/utils/Utils.py,sha256=HPEN92OxtMxk_xrMD4nfvBsA2BuKuk9_x1Yoy2bF2tw,35613
70
+ fiqus/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ fiqus/utils/update_data_settings.py,sha256=Cl_vP-7MXFHG3LiDE8nVtL7CwK9DUvDhxXV7sabP9to,1295
72
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ 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
77
+ tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ tests/utils/fiqus_test_classes.py,sha256=ynCjYknWGI_pa-lRWQ01aL2SjHz0GTrN4bICW5GlR34,30395
79
+ tests/utils/generate_reference_files_ConductorAC.py,sha256=_jEE6xcqiz52bnmY6Is11QmG-bZ2vdH0k99p733t4N4,1676
80
+ tests/utils/generate_reference_files_Pancake3D.py,sha256=9sULcDOmbotrbYHz8DqGv6Km7ThfltnCHFojHUx193U,3126
81
+ tests/utils/helpers.py,sha256=BQxdHr8N4rGXc2C_YNEeOXxTIDJSUeRyyxLkvWfhiJY,4149
82
+ fiqus-2025.10.0.dist-info/LICENSE.txt,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
83
+ fiqus-2025.10.0.dist-info/METADATA,sha256=tkr-2R-VVJFDApZHI-dWXk2ygofsJIoDFeLlwmRtX3s,8370
84
+ fiqus-2025.10.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
85
+ fiqus-2025.10.0.dist-info/top_level.txt,sha256=oGzSIyoVc1zYg14o67zI3QFwWsJvqNzNT0-te9WbUQc,12
86
+ fiqus-2025.10.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.45.1)
2
+ Generator: bdist_wheel (0.41.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -86,6 +86,10 @@ class TestGeometryGenerators(FiQuSGeometryTests):
86
86
  reference_geometry_yaml_file = self.get_path_to_reference_file(
87
87
  data_model=data_model, file_name='GeometryModel', file_extension="yaml"
88
88
  )
89
+ print('Comparing:'
90
+ f'{geometry_yaml_file}'
91
+ ' with'
92
+ f'{reference_geometry_yaml_file}')
89
93
  self.compare_json_or_yaml_files(geometry_yaml_file, reference_geometry_yaml_file, tolerance=1e-9)
90
94
 
91
95
  def test_Multipole(self):
@@ -94,6 +94,11 @@ class TestMeshGenerators(FiQuSMeshTests):
94
94
  file_name=model_name,
95
95
  file_extension="regions",
96
96
  )
97
+ print('Comparing'
98
+ f'{regions_file}'
99
+ 'with'
100
+ f'{reference_regions_file}'
101
+ )
97
102
  self.compare_json_or_yaml_files(regions_file, reference_regions_file)
98
103
 
99
104
  # def test_CCT(self):
tests/test_solvers.py CHANGED
@@ -2,6 +2,12 @@ import unittest
2
2
  from tests.utils.fiqus_test_classes import FiQuSSolverTests
3
3
  from fiqus.data.DataFiQuS import FDM
4
4
  import fiqus.data.DataFiQuSPancake3D as Pancake3D
5
+ import os
6
+ import platform
7
+ from pathlib import Path
8
+
9
+ linux_getdp_prefix_path = Path("/bin/cerngetdp/")
10
+ windows_getdp_prefix_path = Path("C:/cerngetdp/")
5
11
 
6
12
 
7
13
  class TestSolvers(FiQuSSolverTests):
@@ -10,6 +16,16 @@ class TestSolvers(FiQuSSolverTests):
10
16
  Checks if Pancake3D solvers work correctly by comparing the results to the
11
17
  reference results that were checked manually.
12
18
  """
19
+ if os.getenv("CERNGETDP_VERSION_PANCAKE3D") is not None:
20
+ os_name = platform.system()
21
+
22
+ if os_name == "Linux":
23
+ self.getdp_path = linux_getdp_prefix_path / Path(f"pancake3d/bin/getdp_{os.getenv('CERNGETDP_VERSION_PANCAKE3D')}")
24
+ else:
25
+ self.getdp_path = windows_getdp_prefix_path / Path(f"pancake3d/getdp_{os.getenv('CERNGETDP_VERSION_PANCAKE3D')}.exe")
26
+ else:
27
+ print("CERNGETDP_VERSION_PANCAKE3D is not set. Using default getdp path from data settings.")
28
+
13
29
  model_names = [
14
30
  "TEST_Pancake3D_REF",
15
31
  "TEST_Pancake3D_REFStructured",
@@ -111,6 +127,17 @@ class TestSolvers(FiQuSSolverTests):
111
127
  Checks if CACStrand solvers work correctly by comparing the results to the
112
128
  reference results that were checked manually.
113
129
  """
130
+ if os.getenv("CERNGETDP_VERSION_CAC_STRAND") is not None:
131
+ os_name = platform.system()
132
+
133
+ if os_name == "Linux":
134
+ self.getdp_path = linux_getdp_prefix_path / Path(f"cac_strand/bin/getdp_{os.getenv('CERNGETDP_VERSION_CAC_STRAND')}")
135
+ else:
136
+ self.getdp_path = windows_getdp_prefix_path / Path(f"cac_strand/getdp_{os.getenv('CERNGETDP_VERSION_CAC_STRAND')}.exe")
137
+ else:
138
+ print("CERNGETDP_VERSION_CAC_STRAND is not set. Using default getdp path from data settings.")
139
+
140
+
114
141
  model_names = [
115
142
  "TEST_CAC_Strand_hexFilaments",
116
143
  "TEST_CAC_Strand_adaptiveMesh",
@@ -140,12 +167,12 @@ class TestSolvers(FiQuSSolverTests):
140
167
  # Compare the magnetic flux density files:
141
168
  pos_file = self.get_path_to_generated_file(
142
169
  data_model=data_model,
143
- file_name="b",
170
+ file_name="b_Omega",
144
171
  file_extension="pos",
145
172
  )
146
173
  reference_pos_file = self.get_path_to_reference_file(
147
174
  data_model=data_model,
148
- file_name="b",
175
+ file_name="b_Omega",
149
176
  file_extension="pos",
150
177
  )
151
178
  self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1e-10)
@@ -153,12 +180,12 @@ class TestSolvers(FiQuSSolverTests):
153
180
  # Compare the current density files:
154
181
  pos_file = self.get_path_to_generated_file(
155
182
  data_model=data_model,
156
- file_name="j",
183
+ file_name="j_OmegaC",
157
184
  file_extension="pos",
158
185
  )
159
186
  reference_pos_file = self.get_path_to_reference_file(
160
187
  data_model=data_model,
161
- file_name="j",
188
+ file_name="j_OmegaC",
162
189
  file_extension="pos",
163
190
  )
164
191
  self.compare_pos_files(pos_file, reference_pos_file, rel_tolerance=1e-3, abs_tolerance=1e-10)
@@ -169,6 +196,16 @@ class TestSolvers(FiQuSSolverTests):
169
196
  Checks if Multipole solvers work correctly by comparing the results to the
170
197
  reference results that were checked manually.
171
198
  """
199
+ if os.getenv("CERNGETDP_VERSION_MULTIPOLE") is not None:
200
+ os_name = platform.system()
201
+
202
+ if os_name == "Linux":
203
+ self.getdp_path = linux_getdp_prefix_path / Path(f"multipole/bin/getdp_{os.getenv('CERNGETDP_VERSION_MULTIPOLE')}")
204
+ else:
205
+ self.getdp_path = windows_getdp_prefix_path / Path(f"multipole/getdp_{os.getenv('CERNGETDP_VERSION_MULTIPOLE')}.exe")
206
+ else:
207
+ print("CERNGETDP_VERSION_MULTIPOLE is not set. Using default getdp path from data settings.")
208
+
172
209
  model_names = [
173
210
  "TEST_MULTIPOLE_MBH_1in1_TSA_withQH",
174
211
  "TEST_MULTIPOLE_MBH_1in1_TSA",
@@ -155,12 +155,21 @@ class BaseClassesForTests(unittest.TestCase):
155
155
  )
156
156
 
157
157
  # Run FiQuS:
158
- MainFiQuS(
159
- model_folder=model_folder,
160
- input_file_path=self.get_input_file_path(model_name),
161
- fdm=data_model,
162
- # verbose=False,
163
- )
158
+ if hasattr(self, "getdp_path"):
159
+ MainFiQuS(
160
+ model_folder=model_folder,
161
+ input_file_path=self.get_input_file_path(model_name),
162
+ fdm=data_model,
163
+ GetDP_path=self.getdp_path
164
+ # verbose=False,
165
+ )
166
+ else:
167
+ MainFiQuS(
168
+ model_folder=model_folder,
169
+ input_file_path=self.get_input_file_path(model_name),
170
+ fdm=data_model,
171
+ # verbose=False,
172
+ )
164
173
 
165
174
  def get_path_to_generated_file(
166
175
  self,
@@ -1,57 +1,57 @@
1
- import os
2
- import shutil
3
- import sys
4
- sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../'))) # Add the path to the fiqus package to the system path
5
- from fiqus.data.DataFiQuS import FDM
6
- from fiqus.utils.Utils import FilesAndFolders as Util
7
- from fiqus import MainFiQuS as mf
8
-
9
-
10
- # Generate reference files for the models below:
11
- model_names = [
12
- "TEST_CAC_Strand_adaptiveMesh",
13
- "TEST_CAC_Strand_hexFilaments",
14
- "TEST_CAC_wireInChannel",
15
- ]
16
- # The run types for the models above:
17
- run_types = [
18
- 'geometry_and_mesh',
19
- 'start_from_yaml',
20
- 'start_from_yaml',
21
- ]
22
-
23
- for model_name, run_type in zip(model_names, run_types):
24
- # get path to the input file:
25
- input_file = os.path.join(
26
- os.path.dirname(os.path.dirname(__file__)),
27
- "_inputs",
28
- model_name,
29
- f"{model_name}.yaml",
30
- )
31
-
32
- # select _references folder as the output folder:
33
- output_folder = os.path.join(
34
- os.path.dirname(os.path.dirname(__file__)), "_references", model_name
35
- )
36
-
37
- # if the output folder exists, remove it:
38
- if os.path.exists(output_folder):
39
- shutil.rmtree(output_folder)
40
-
41
- # Create the output folder:
42
- os.makedirs(output_folder)
43
-
44
- # Cast input yaml file to FDM
45
- data_model: FDM = Util.read_data_from_yaml(input_file, FDM)
46
-
47
- data_model.run.overwrite = True
48
-
49
- # Make the run type start_from_yaml:
50
- data_model.run.type = run_type
51
-
52
- fiqus_instance = mf.MainFiQuS(
53
- fdm=data_model, model_folder=output_folder, input_file_path=input_file
54
- )
55
-
56
- # remove fiqus_instance to avoid memory issues:
57
- del fiqus_instance
1
+ import os
2
+ import shutil
3
+ import sys
4
+ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../'))) # Add the path to the fiqus package to the system path
5
+ from fiqus.data.DataFiQuS import FDM
6
+ from fiqus.utils.Utils import FilesAndFolders as Util
7
+ from fiqus import MainFiQuS as mf
8
+
9
+
10
+ # Generate reference files for the models below:
11
+ model_names = [
12
+ "TEST_CAC_Strand_adaptiveMesh",
13
+ "TEST_CAC_Strand_hexFilaments",
14
+ "TEST_CAC_wireInChannel",
15
+ ]
16
+ # The run types for the models above:
17
+ run_types = [
18
+ 'geometry_and_mesh',
19
+ 'start_from_yaml',
20
+ 'start_from_yaml',
21
+ ]
22
+
23
+ for model_name, run_type in zip(model_names, run_types):
24
+ # get path to the input file:
25
+ input_file = os.path.join(
26
+ os.path.dirname(os.path.dirname(__file__)),
27
+ "_inputs",
28
+ model_name,
29
+ f"{model_name}.yaml",
30
+ )
31
+
32
+ # select _references folder as the output folder:
33
+ output_folder = os.path.join(
34
+ os.path.dirname(os.path.dirname(__file__)), "_references", model_name
35
+ )
36
+
37
+ # if the output folder exists, remove it:
38
+ if os.path.exists(output_folder):
39
+ shutil.rmtree(output_folder)
40
+
41
+ # Create the output folder:
42
+ os.makedirs(output_folder)
43
+
44
+ # Cast input yaml file to FDM
45
+ data_model: FDM = Util.read_data_from_yaml(input_file, FDM)
46
+
47
+ data_model.run.overwrite = True
48
+
49
+ # Make the run type start_from_yaml:
50
+ data_model.run.type = run_type
51
+
52
+ fiqus_instance = mf.MainFiQuS(
53
+ fdm=data_model, model_folder=output_folder, input_file_path=input_file
54
+ )
55
+
56
+ # remove fiqus_instance to avoid memory issues:
57
+ del fiqus_instance
tests/utils/helpers.py CHANGED
@@ -1,97 +1,97 @@
1
- import functools
2
- import itertools
3
- import operator
4
- import os
5
- import unittest
6
- from pathlib import Path
7
-
8
- import numpy as np
9
-
10
- from fiqus.data.DataFiQuS import FDM
11
- from fiqus.utils.Utils import FilesAndFolders as FFs
12
-
13
-
14
- class Paths:
15
- """
16
- Helper class used in FiQuS tests to get file and folder paths
17
- :param model_name: name of yaml input file (without .yaml)
18
- :param f_extension: file extension to apply to the folders, for example '.brep' or '.msh'
19
- :return: tuple: fdm, outputs_folder, input_folder, input_file, model_folder, model_file, reference_folder, reference_file
20
- """
21
-
22
- def __init__(self, model_name, f_extension=''):
23
- self.inputs_folder_name = '_inputs'
24
- self.outputs_folder_name = '_outputs'
25
- self.references_folder_name = '_references'
26
-
27
- self.test_outputs_folder = os.path.join(os.getcwd(), self.outputs_folder_name)
28
- self.inputs_folder = os.path.join(os.getcwd(), self.inputs_folder_name, model_name)
29
- self.model_folder = os.path.join(os.getcwd(), self.outputs_folder_name, model_name)
30
- self.references_folder = os.path.join(os.getcwd(), self.references_folder_name, model_name)
31
-
32
- self.input_file = os.path.join(self.inputs_folder, f'{model_name}.yaml')
33
- self.model_file = os.path.join(self.model_folder, f'{model_name}.{f_extension}')
34
- self.reference_file = os.path.join(self.references_folder, f'{model_name}.{f_extension}')
35
-
36
-
37
- def filecmp(filename1, filename2):
38
- """
39
- From: https://stackoverflow.com/questions/254350/in-python-is-there-a-concise-way-of-comparing-whether-the-contents-of-two-text
40
- Do the two files have exactly the same contents?
41
- """
42
- with open(filename1, "rb") as fp1, open(filename2, "rb") as fp2:
43
- print(f'The {filename1} size is: {os.fstat(fp1.fileno()).st_size} b')
44
- print(f'The {filename2} size is: {os.fstat(fp2.fileno()).st_size} b')
45
- if os.fstat(fp1.fileno()).st_size != os.fstat(fp2.fileno()).st_size:
46
- return False # different sizes ∴ not equal
47
-
48
- # set up one 4k-reader for each file
49
- fp1_reader = functools.partial(fp1.read, 4096)
50
- fp2_reader = functools.partial(fp2.read, 4096)
51
-
52
- # pair each 4k-chunk from the two readers while they do not return '' (EOF)
53
- cmp_pairs = zip(iter(fp1_reader, b''), iter(fp2_reader, b''))
54
-
55
- # return True for all pairs that are not equal
56
- inequalities = itertools.starmap(operator.ne, cmp_pairs)
57
- ineqs = []
58
- for ineq in inequalities:
59
- ineqs.append(ineq)
60
- # voila; any() stops at first True value
61
- print(f'The file comp function gives: {not any(inequalities)}')
62
- return not any(inequalities)
63
-
64
-
65
- def assert_two_parameters(true_value, test_value):
66
- """
67
- Some functions used in multiple test functions
68
- **Assert two parameters - accepts multiple types**
69
- """
70
- # TODO: improve robustness and readability
71
- test_case = unittest.TestCase()
72
-
73
- if isinstance(true_value, np.ndarray) or isinstance(true_value, list):
74
- if len(true_value) == 1:
75
- true_value = float(true_value)
76
-
77
- if isinstance(test_value, np.ndarray) or isinstance(test_value, list):
78
- if len(test_value) == 1:
79
- test_value = float(test_value)
80
-
81
- # Comparison
82
- if isinstance(test_value, np.ndarray) or isinstance(test_value, list):
83
- if np.array(true_value).ndim == 2:
84
- for i, test_row in enumerate(test_value):
85
- if isinstance(test_row[0], np.floating):
86
- test_row = np.array(test_row).round(10)
87
- true_value[i] = np.array(true_value[i]).round(10)
88
-
89
- test_case.assertListEqual(list(test_row), list(true_value[i]))
90
- else:
91
- if isinstance(test_value[0], np.floating):
92
- test_value = np.array(test_value).round(10)
93
- true_value = np.array(true_value).round(10)
94
-
95
- test_case.assertListEqual(list(test_value), list(true_value))
96
- else:
97
- test_case.assertEqual(test_value, true_value)
1
+ import functools
2
+ import itertools
3
+ import operator
4
+ import os
5
+ import unittest
6
+ from pathlib import Path
7
+
8
+ import numpy as np
9
+
10
+ from fiqus.data.DataFiQuS import FDM
11
+ from fiqus.utils.Utils import FilesAndFolders as FFs
12
+
13
+
14
+ class Paths:
15
+ """
16
+ Helper class used in FiQuS tests to get file and folder paths
17
+ :param model_name: name of yaml input file (without .yaml)
18
+ :param f_extension: file extension to apply to the folders, for example '.brep' or '.msh'
19
+ :return: tuple: fdm, outputs_folder, input_folder, input_file, model_folder, model_file, reference_folder, reference_file
20
+ """
21
+
22
+ def __init__(self, model_name, f_extension=''):
23
+ self.inputs_folder_name = '_inputs'
24
+ self.outputs_folder_name = '_outputs'
25
+ self.references_folder_name = '_references'
26
+
27
+ self.test_outputs_folder = os.path.join(os.getcwd(), self.outputs_folder_name)
28
+ self.inputs_folder = os.path.join(os.getcwd(), self.inputs_folder_name, model_name)
29
+ self.model_folder = os.path.join(os.getcwd(), self.outputs_folder_name, model_name)
30
+ self.references_folder = os.path.join(os.getcwd(), self.references_folder_name, model_name)
31
+
32
+ self.input_file = os.path.join(self.inputs_folder, f'{model_name}.yaml')
33
+ self.model_file = os.path.join(self.model_folder, f'{model_name}.{f_extension}')
34
+ self.reference_file = os.path.join(self.references_folder, f'{model_name}.{f_extension}')
35
+
36
+
37
+ def filecmp(filename1, filename2):
38
+ """
39
+ From: https://stackoverflow.com/questions/254350/in-python-is-there-a-concise-way-of-comparing-whether-the-contents-of-two-text
40
+ Do the two files have exactly the same contents?
41
+ """
42
+ with open(filename1, "rb") as fp1, open(filename2, "rb") as fp2:
43
+ print(f'The {filename1} size is: {os.fstat(fp1.fileno()).st_size} b')
44
+ print(f'The {filename2} size is: {os.fstat(fp2.fileno()).st_size} b')
45
+ if os.fstat(fp1.fileno()).st_size != os.fstat(fp2.fileno()).st_size:
46
+ return False # different sizes ∴ not equal
47
+
48
+ # set up one 4k-reader for each file
49
+ fp1_reader = functools.partial(fp1.read, 4096)
50
+ fp2_reader = functools.partial(fp2.read, 4096)
51
+
52
+ # pair each 4k-chunk from the two readers while they do not return '' (EOF)
53
+ cmp_pairs = zip(iter(fp1_reader, b''), iter(fp2_reader, b''))
54
+
55
+ # return True for all pairs that are not equal
56
+ inequalities = itertools.starmap(operator.ne, cmp_pairs)
57
+ ineqs = []
58
+ for ineq in inequalities:
59
+ ineqs.append(ineq)
60
+ # voila; any() stops at first True value
61
+ print(f'The file comp function gives: {not any(inequalities)}')
62
+ return not any(inequalities)
63
+
64
+
65
+ def assert_two_parameters(true_value, test_value):
66
+ """
67
+ Some functions used in multiple test functions
68
+ **Assert two parameters - accepts multiple types**
69
+ """
70
+ # TODO: improve robustness and readability
71
+ test_case = unittest.TestCase()
72
+
73
+ if isinstance(true_value, np.ndarray) or isinstance(true_value, list):
74
+ if len(true_value) == 1:
75
+ true_value = float(true_value)
76
+
77
+ if isinstance(test_value, np.ndarray) or isinstance(test_value, list):
78
+ if len(test_value) == 1:
79
+ test_value = float(test_value)
80
+
81
+ # Comparison
82
+ if isinstance(test_value, np.ndarray) or isinstance(test_value, list):
83
+ if np.array(true_value).ndim == 2:
84
+ for i, test_row in enumerate(test_value):
85
+ if isinstance(test_row[0], np.floating):
86
+ test_row = np.array(test_row).round(10)
87
+ true_value[i] = np.array(true_value[i]).round(10)
88
+
89
+ test_case.assertListEqual(list(test_row), list(true_value[i]))
90
+ else:
91
+ if isinstance(test_value[0], np.floating):
92
+ test_value = np.array(test_value).round(10)
93
+ true_value = np.array(true_value).round(10)
94
+
95
+ test_case.assertListEqual(list(test_value), list(true_value))
96
+ else:
97
+ test_case.assertEqual(test_value, true_value)
@@ -1,85 +0,0 @@
1
- fiqus/MainFiQuS.py,sha256=k1dPUJMXQs-OHc_CbwuyCH1qMxV_7LnRpy5RKbMlRm8,22011
2
- fiqus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- fiqus/data/DataConductor.py,sha256=wthDctDDa81GO9TNTHwTTuQ9WK8fmyDmwqeEja8gFFM,13618
4
- fiqus/data/DataFiQuS.py,sha256=8gT8xGA_kUrOiuAyUbSSc08ECK8tIcBlmVvGF-zWCH4,7808
5
- fiqus/data/DataFiQuSCCT.py,sha256=pXBYgeuAb10H46nB1oRJjz4uZDMzkgCgjotXc8phfHs,7137
6
- fiqus/data/DataFiQuSConductor.py,sha256=sa_enAWP3yW0sJwpfmad173ewIv4eFC8G75UPnKnB5w,2626
7
- fiqus/data/DataFiQuSConductorAC_Strand.py,sha256=kkzcXLHKFScePjJ9tffAjBDbsV1RoCTVodZ-HBTdiO8,27909
8
- fiqus/data/DataFiQuSMultipole.py,sha256=_rX9zP-xNTZioVmu4NCaFVWF66ipesp8cSiB0pmKsG4,32377
9
- fiqus/data/DataFiQuSPancake3D.py,sha256=czgDU-h_XBq3OLqFOllr8zLx_MxQoCiWo84DsyOhhbo,136611
10
- fiqus/data/DataMultipole.py,sha256=RObn5MGoe_Xtk-8mhB1eoil1Jd5DS6BhiLUuNmLbb-E,6793
11
- fiqus/data/DataRoxieParser.py,sha256=v2F8ytjNnKLrVFizeBELb2dXu-78NH44CDLXO3CAP3I,9157
12
- fiqus/data/DataSettings.py,sha256=zs5sEYUk4xjeMc_j8gt3PMji7V0yyMYizpXxBKv0aB0,3799
13
- fiqus/data/DataWindingsCCT.py,sha256=45af8J8iAAiRlhO1eIjHsngNUWgpZAZ_UGL3aF8AJCI,1672
14
- fiqus/data/RegionsModelFiQuS.py,sha256=xS4GONADNJuy-Vm81bR-RcMa-8m3aMH_WjOXtbDRlsQ,7778
15
- fiqus/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- fiqus/geom_generators/GeometryCCT.py,sha256=W30vm8qmi_xe6Mkxqj8z3Wjs8nn0C9e2GnghsOxE9Tk,49067
17
- fiqus/geom_generators/GeometryConductorAC_Strand.py,sha256=SKjzJ5I7D1Fc2UJSaHy_QS1TxHho5pk95v0kgxV7fyk,74625
18
- fiqus/geom_generators/GeometryMultipole.py,sha256=eaxvzuayuUPc0TWFxScpImIpEze6KWfJ74KvvteldfQ,156572
19
- fiqus/geom_generators/GeometryPancake3D.py,sha256=8SAWnJfqL888SOEaMV1f_-02iDR6O8-GKrklfQ5g-mM,180145
20
- fiqus/geom_generators/GeometryPancake3DUtils.py,sha256=nmOEKtqzUWB5xbITFkIiO38FeLeIydFxtLrRyZXVQPg,23679
21
- fiqus/geom_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- fiqus/getdp_runners/RunGetdpCCT.py,sha256=hXRy90LAFMFl52gV6SrEwW5KYyvF3D0fqTFoN0P017U,3043
23
- fiqus/getdp_runners/RunGetdpConductorAC_Strand.py,sha256=SjaRNxGs7J1RQWVS_zocHF0rtxtD6UcOf28kxWDHKNo,9997
24
- fiqus/getdp_runners/RunGetdpMultipole.py,sha256=mYinMVQDJx2zAZIypFbl7bybu7h3TKjlExZ5evZpqYU,8200
25
- fiqus/getdp_runners/RunGetdpPancake3D.py,sha256=RLQbuYKdrelYgKBFcZ8-lZVSJLQ8gmNI0sXbJlrkYZk,10852
26
- fiqus/getdp_runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- fiqus/mains/MainCCT.py,sha256=XpDPlj5n8B70ksOF6AHaeTXB752kN7CMLktISoXqirA,4422
28
- fiqus/mains/MainConductorAC_Strand.py,sha256=UsZV7t6hRSkwUMwsoWn2m7x-PuVM6yABqBjgLpC_9Qg,5015
29
- fiqus/mains/MainMultipole.py,sha256=2a6f1q6w4eBK7iME6FSPGc0zX2DEX5aU2y1YehTIXlk,9634
30
- fiqus/mains/MainPancake3D.py,sha256=FjMltWLzZN0-VqieexqhWMunMujTepM7BbAjlw6ULEg,23589
31
- fiqus/mains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- fiqus/mesh_generators/MeshCCT.py,sha256=e2oERrb2Vp7W8eAptijFq1vi-cUbYS_T3jCDqH3foIg,11227
33
- fiqus/mesh_generators/MeshConductorAC_Strand.py,sha256=bz8kzFDd_XnRA892ifuCp11zMTZMQ5NdsNKSslP7gZc,42466
34
- fiqus/mesh_generators/MeshMultipole.py,sha256=mjdjzw5RGlggoXAVvUqFM43yGXSwDNbta0z1l76c7uc,97181
35
- fiqus/mesh_generators/MeshPancake3D.py,sha256=dIL-F070C5xlSK6m4kSA8D3OeKuVRoy0Ptz-4KHz4CI,126821
36
- fiqus/mesh_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- fiqus/parsers/ParserCOND.py,sha256=nQyRRZf2Jbvf6ri5rdhq2P6b52Qbp2tTHuDRT4ChxHI,41376
38
- fiqus/parsers/ParserDAT.py,sha256=SPJHDbPuk1e7F9FZ3i7oRvOvYGO4LIkpy-ROGJBUEQ0,659
39
- fiqus/parsers/ParserGetDPOnSection.py,sha256=fKDiGJfsVHceZ4ZPnQo3ue2COd7AlbnrkGsX5pXaYqA,8196
40
- fiqus/parsers/ParserGetDPTimeTable.py,sha256=-OBbvt89lbxkUy8pzOciq9qPs47d_dK_vuMXndfvMmE,4964
41
- fiqus/parsers/ParserMSH.py,sha256=ZgLQQhEukhvxp2-ccbIQu4uWlSOp3yCa-8thEKi61H8,1859
42
- fiqus/parsers/ParserPOS.py,sha256=tihug_0UnCP7ELJK0Tl2gGrHxvCC5V4Q7tpv4zd-cVY,9907
43
- fiqus/parsers/ParserRES.py,sha256=e8M8bsIgkAzr0tDcQSeEgsLVLGOmE_j6ju3fPTPQEU4,5842
44
- fiqus/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- fiqus/plotters/PlotPythonCCT.py,sha256=WITIiKSfHSvGVL52PiMWxo6ydeswe-PBE9Ta-QnMJ9E,6200
46
- fiqus/plotters/PlotPythonConductorAC.py,sha256=rugT6Czctk4lrZ0NBt23ZFBVZlkZD-zihHcbgoiwP9c,45465
47
- fiqus/plotters/PlotPythonMultipole.py,sha256=BYbdeEDgB3sqeRR7_uHb2CVm2SQ3pAbvhkLJBcuS-Yg,463
48
- fiqus/plotters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- fiqus/post_processors/PostProcessCCT.py,sha256=csozi3iyW5cRoT97em0F0s_Egd-DG8wRAiWfLnNl6Sk,28003
50
- fiqus/post_processors/PostProcessConductorAC.py,sha256=Mv3CalGj2_pF383nZHZ-uv1j-3nz8HUjsd1jSd6AY8M,2135
51
- fiqus/post_processors/PostProcessMultipole.py,sha256=y7WbdDMJx68DVXeokD0chuJitU5j39FWGOIlqKsxELA,25398
52
- fiqus/post_processors/PostProcessPancake3D.py,sha256=PjGaohIj_oWfqyHH-Fr3CgiOitUpjGjYe2Rm3wqtM1g,12940
53
- fiqus/post_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- fiqus/pre_processors/PreProcessCCT.py,sha256=z1TWuXNnSK2Jz93P-73XRZZO7GAlyLLEiIYnS39byCE,9042
55
- fiqus/pre_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- fiqus/pro_assemblers/ProAssembler.py,sha256=DrVd1wiuv-7PIj3G38crBu07aMPyE3FOapODJN7wl9E,3572
57
- fiqus/pro_assemblers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- fiqus/pro_material_functions/ironBHcurves.pro,sha256=-4xfRg4BYefTEoNawPo3nbsrJJmiSxdOTQG4aAzbvLI,17589
59
- fiqus/pro_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- fiqus/pro_templates/combined/CCT_template.pro,sha256=6r_fz9bH7AReCfDn33lyu472kjB0rkTma9_r4vBqV0U,13558
61
- fiqus/pro_templates/combined/ConductorAC_template.pro,sha256=8aZwuRveHY2R0bEvC9Ysz_SISPLU7eNvi5szO_RUEtA,60694
62
- fiqus/pro_templates/combined/Multipole_template.pro,sha256=5FOXwPpxQKpGYFEswrFj5lL9t652i6mWz4PYDp5q4mg,97396
63
- fiqus/pro_templates/combined/Pancake3D_template.pro,sha256=CAmIVgzygFJSXDozuNeCL8eyId1HnMjVeyQOl-O4Suk,211330
64
- fiqus/pro_templates/combined/TSA_materials.pro,sha256=I8zVOP2ZEFqR0y3JcpSQJWaE6I4UeeMU22PtSD8ExCc,12244
65
- fiqus/pro_templates/combined/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- fiqus/pro_templates/combined/materials.pro,sha256=D-cBOIMaQyYffIfoR4yRiK69Z6sxHu2QtyjhDIKFiXc,7038
67
- fiqus/pro_templates/separated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- fiqus/utils/Utils.py,sha256=J8HECe0Yz50nTWtpUb8PGJGrX75wgvUkD30LopHTScw,35462
69
- fiqus/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- fiqus/utils/update_data_settings.py,sha256=Cl_vP-7MXFHG3LiDE8nVtL7CwK9DUvDhxXV7sabP9to,1295
71
- tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- tests/test_FiQuS.py,sha256=mlY5eRp-sE_ubaPG7HHAEsC4Q3iQwI76nfOclPg7m-M,15529
73
- tests/test_geometry_generators.py,sha256=1bk3yYaVIQ_XabaIrqIrwjOSvC0eCtBz7NeIEDlPCq8,8944
74
- tests/test_mesh_generators.py,sha256=vGFP6AoMpMcpBDXqTS4323RuGhJIJ_xKu39Z7mWnm9I,10699
75
- tests/test_solvers.py,sha256=-P8Q_HIX3s02e23bk9_SW672v7Vwgs1-e503tenFWoc,10955
76
- tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- tests/utils/fiqus_test_classes.py,sha256=i7G0wWA7MNdj-pAnXnGrpnv3KXx9JMDRUbKwFMRgJLQ,30050
78
- tests/utils/generate_reference_files_ConductorAC.py,sha256=F5KK1AmHg1AmjZL6wRoR4R4kPpQu5KyLZtk1EnDsS1I,1619
79
- tests/utils/generate_reference_files_Pancake3D.py,sha256=9sULcDOmbotrbYHz8DqGv6Km7ThfltnCHFojHUx193U,3126
80
- tests/utils/helpers.py,sha256=bX3jz6Cux175TVWMpeaMo1SspQAewCSzKsC4ZwRBRR4,4052
81
- fiqus-2025.1.1.dist-info/LICENSE.txt,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
82
- fiqus-2025.1.1.dist-info/METADATA,sha256=j8fv8nUs6lZnzXzRd1TQvnsCuQMXcvlgdd8uAnCW7oU,7915
83
- fiqus-2025.1.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
84
- fiqus-2025.1.1.dist-info/top_level.txt,sha256=oGzSIyoVc1zYg14o67zI3QFwWsJvqNzNT0-te9WbUQc,12
85
- fiqus-2025.1.1.dist-info/RECORD,,