emerge 0.5.4__py3-none-any.whl → 0.5.6__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.

Potentially problematic release.


This version of emerge might be problematic. Click here for more details.

Files changed (32) hide show
  1. emerge/__init__.py +3 -0
  2. emerge/_emerge/cs.py +2 -2
  3. emerge/_emerge/elements/ned2_interp.py +21 -26
  4. emerge/_emerge/elements/nedleg2.py +25 -43
  5. emerge/_emerge/geo/shapes.py +26 -3
  6. emerge/_emerge/geometry.py +27 -1
  7. emerge/_emerge/material.py +1 -0
  8. emerge/_emerge/mesh3d.py +63 -14
  9. emerge/_emerge/mesher.py +7 -4
  10. emerge/_emerge/mth/optimized.py +30 -0
  11. emerge/_emerge/periodic.py +46 -16
  12. emerge/_emerge/physics/microwave/assembly/assembler.py +4 -21
  13. emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +23 -19
  14. emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py +465 -0
  15. emerge/_emerge/physics/microwave/assembly/robinbc.py +59 -18
  16. emerge/_emerge/physics/microwave/microwave_3d.py +22 -4
  17. emerge/_emerge/physics/microwave/microwave_bc.py +101 -35
  18. emerge/_emerge/physics/microwave/microwave_data.py +1 -1
  19. emerge/_emerge/plot/pyvista/display.py +40 -7
  20. emerge/_emerge/plot/pyvista/display_settings.py +1 -0
  21. emerge/_emerge/simmodel.py +15 -1
  22. emerge/_emerge/solve_interfaces/cudss_interface.py +44 -2
  23. emerge/_emerge/solve_interfaces/pardiso_interface.py +1 -0
  24. emerge/_emerge/solver.py +28 -22
  25. emerge/ext.py +4 -0
  26. emerge/lib.py +1 -1
  27. {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/METADATA +5 -3
  28. {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/RECORD +31 -30
  29. emerge/_emerge/elements/legrange2.py +0 -172
  30. {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/WHEEL +0 -0
  31. {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/entry_points.txt +0 -0
  32. {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: emerge
3
- Version: 0.5.4
3
+ Version: 0.5.6
4
4
  Summary: An open source EM FEM simulator in Python
5
5
  Project-URL: Homepage, https://github.com/FennisRobert/EMerge
6
6
  Project-URL: Issues, https://github.com/FennisRobert/EMerge/issues
@@ -42,7 +42,9 @@ pip install emerge
42
42
  On MacOS and Linux you can install it with the very fast UMFPACK through scikit-umfpack
43
43
 
44
44
  ```
45
- pip install emerge[scikit-umfpack]
45
+ brew install swig suite-sparse #MacOS
46
+ sudo apt-get install libsuitesparse-dev #Linux
47
+ pip install emerge[umfpack]
46
48
  ```
47
49
 
48
50
  ### Experimental
@@ -93,4 +95,4 @@ First time runs will be very slow because Numba needs to generate local C-compil
93
95
 
94
96
  ## Third Party License Notice
95
97
 
96
- “This package depends on Intel® Math Kernel Library (MKL), which is licensed separately under the Intel Simplified Software License (October 2022). Installing with pip will fetch the MKL wheel and prompt you to accept that licence.”
98
+ “This package depends on Intel® Math Kernel Library (MKL), which is licensed separately under the Intel Simplified Software License (October 2022). Installing with pip will fetch the MKL wheel and prompt you to accept that licence.”
@@ -1,7 +1,8 @@
1
- emerge/__init__.py,sha256=MBJc3Kae-Dno0pGuoKuqVef1kFWhbWghhWD54-sMYMU,2583
1
+ emerge/__init__.py,sha256=fTLCl-XBjUuatkqGewgn3IJX3kG3nrinr3C7Ioc3ghE,2607
2
2
  emerge/__main__.py,sha256=WVf16sfrOI910QWohrQDaChZdRifMNoS6VKzCT6f3ZA,92
3
3
  emerge/cli.py,sha256=NU1uhwuZ6i50680v3_I4kDZPTHqz74gOYK71UBhb8oE,666
4
- emerge/lib.py,sha256=YWRnrQq3Cl1nRkUg0STKkUSqCxD_Danfh9IXasYn2d8,22316
4
+ emerge/ext.py,sha256=IBoHH5PQFj5pYMfp6r-uMpNNgbSe8c0g9x8qjBzzVmU,223
5
+ emerge/lib.py,sha256=pq8YtX9G-hkUm-CyQl1RvRUyEqOaWJXi9-IadHCqhJg,22316
5
6
  emerge/plot.py,sha256=AH2D9rKeWUXlSOlh-pUUfLt0oxVLcqF_piki-BmPEg0,83
6
7
  emerge/pyvista.py,sha256=-Ht2YcZYsh8-dici5ZPNAWwsis6uz5wNj8n8mxv5fog,42
7
8
  emerge/_emerge/__init__.py,sha256=aidfiILy33dt3VyiZ2mgtA87mq-WQ5pXItZUE5wR5ws,703
@@ -9,29 +10,28 @@ emerge/_emerge/_cache_check.py,sha256=fGOiLTdtzg8HIsNP6vrs8BwvgBGAijwg06zsR1v6tr
9
10
  emerge/_emerge/bc.py,sha256=TeSVNkDgOGaoHw5raTzhUV0ngtyHa33sXAoL2hRn70M,8077
10
11
  emerge/_emerge/const.py,sha256=PTZZTSDOP5NsZ8XnJrKTY2P0tPUhmutBJ1yrm-t7xsI,129
11
12
  emerge/_emerge/coord.py,sha256=BKvyrcnHY-_bgHqysnByy5k9_DK4VVfr9KKkRaawG2E,4371
12
- emerge/_emerge/cs.py,sha256=ZW9HawRLN0x3bl5Dwv1OcSGOIIsbSbTV7Bnetu0sksM,17936
13
+ emerge/_emerge/cs.py,sha256=efabOj7hK-eG2IYVzhGG08vyvJm2bB9PT04qt5B-BY8,17960
13
14
  emerge/_emerge/dataset.py,sha256=UcSAJ_siLrOjNBBWRWsS3GUZUpayp63EM6pP6ClwKDI,1534
14
15
  emerge/_emerge/geo2d.py,sha256=e_HkX1GQ2iYrdO0zeEgzVOzfGyU1WGJyjeGBAobOttE,3323
15
- emerge/_emerge/geometry.py,sha256=L_jxWxaGSWvRJ4yYWhl2MFLPETITGLaKJLX9zFOOtto,17306
16
+ emerge/_emerge/geometry.py,sha256=xZqgtqWoQpHBd5gSThhWAO24jaFL28aQ1_44NZyPNmQ,18072
16
17
  emerge/_emerge/howto.py,sha256=qY3v6DynB9ZBVeYa3sPFq1cDuvf2zyjnLShknqYyvKQ,8208
17
18
  emerge/_emerge/logsettings.py,sha256=DcUWIUUhdLe9ev5XC1bd5ZUrJz00MjABkY8rnekFrPY,3373
18
- emerge/_emerge/material.py,sha256=zsEyr3bnsh43-Omb5_foy1uWfzRIVckPHOiu2eC02bE,4021
19
- emerge/_emerge/mesh3d.py,sha256=OtDPFMBtsV9vXHrrxvGRChHH_dqjxmTxYgfgXv7w6Lg,31895
20
- emerge/_emerge/mesher.py,sha256=fbHAqKvxdi2UhX37OgfF6TSyCB8b2YMDvpj7lrh6qLk,13044
21
- emerge/_emerge/periodic.py,sha256=AdoGhEyODEFZS3R8kzf9wpxp0oVtcn9dOO1g2S8nAtc,11081
19
+ emerge/_emerge/material.py,sha256=HTjQ8wDzkBwYA1sLPRuqR8lPeoXsW-4m5K3yXoKqjXQ,4022
20
+ emerge/_emerge/mesh3d.py,sha256=_MJa_kCZNKCq196UcshA4_GdYIs2FCF76zzXFTSLw3I,34333
21
+ emerge/_emerge/mesher.py,sha256=fKgPb6oZe_bqp0XYfZ6UNgBfRaAS3-tjUtZX8NalJe8,13199
22
+ emerge/_emerge/periodic.py,sha256=xfdKKq3qX7iBBestnRizOzJNfXlpr9lCPkiYhfrRIR8,12013
22
23
  emerge/_emerge/plot.py,sha256=cf1I9mj7EIUJcq8vmANlUkqoV6QqVaJaP-zlC-T9E18,8041
23
24
  emerge/_emerge/selection.py,sha256=6UizuWC01sUGjFodrGTy8N1J1832vfOWA4u5paNupw4,21297
24
- emerge/_emerge/simmodel.py,sha256=9KdkJESx15IbmIKQak3DS_XNd_5ED3iPlh95zleuMEk,17659
25
+ emerge/_emerge/simmodel.py,sha256=8EqIavO4GUoJapOChUCXlapsQ4C9ofhRkoFSzDCVlD0,18206
25
26
  emerge/_emerge/simulation_data.py,sha256=r9-9lpLeA1Z5HU3jDVOXV1H80GVawnXL5K81_dvmlE4,14506
26
- emerge/_emerge/solver.py,sha256=FlWRpEvWtCCZpFKkI2TzPM2xh26UjKH4v9qHciznoJ4,48213
27
+ emerge/_emerge/solver.py,sha256=PGPI2LuF4XhfyS8KfC-49X9M1mtYUadgHyqopYfPj58,48542
27
28
  emerge/_emerge/system.py,sha256=p4HNz7d_LMRNE9Gk75vVdFecDH2iN_groAM9u-yQTpk,1618
28
29
  emerge/_emerge/elements/__init__.py,sha256=I3n9aic6lJW-oGeqTEZ-Fpxvyl2i-WqsHdnrM3v1oB8,799
29
30
  emerge/_emerge/elements/femdata.py,sha256=3rFVz1-PLtqxnDFvTH1Q9dA98lO5VyjcFKecCJCwfQ4,8020
30
31
  emerge/_emerge/elements/index_interp.py,sha256=DlDy2KrhM5QsF6jYQIl4BJndr9F9wnjFMXxlX3ewb4s,2070
31
- emerge/_emerge/elements/legrange2.py,sha256=6pqQ6O8FyFBWCPwtvSN5yRxUG3L6pgGssw4BrMdtIho,7667
32
- emerge/_emerge/elements/ned2_interp.py,sha256=G6fZrq2lGwODxSQ_qqgTDX2oKhhUsys1pc51T00k_sg,27279
32
+ emerge/_emerge/elements/ned2_interp.py,sha256=kMhbjS1fACa1fmhSkQTU35jS3iF63dJcFe5DHl4Xo78,32541
33
33
  emerge/_emerge/elements/nedelec2.py,sha256=chU3Ewz7grKZtpyglj2qFJYHvBzCXFQZa1skzjfHoPo,6138
34
- emerge/_emerge/elements/nedleg2.py,sha256=aEWnPkRt5FNdDsl1TmW722neSzbK_cpRH_PwBqv2HCQ,9508
34
+ emerge/_emerge/elements/nedleg2.py,sha256=CehidddpNpeQLSoafvkODm1qotdfb3cu3ENWGivQ7pg,8472
35
35
  emerge/_emerge/geo/__init__.py,sha256=ERmbdr8NUnDQWK-E-Bbc4Kl8AQczjpIP5BnwtZmcurE,1102
36
36
  emerge/_emerge/geo/horn.py,sha256=h4GzGzEkXgWaQgoBMvhFgGsqOrNRB3CJg3RBKXigCz0,4186
37
37
  emerge/_emerge/geo/modeler.py,sha256=N8yRtkK0nb3_jjDexpszmSdeElz8g0kuJpqm3vKl1mI,15575
@@ -39,46 +39,47 @@ emerge/_emerge/geo/operations.py,sha256=LKA7_BU4iw6-i6KOUyuL6l10QjXSwnXsixOaTw-M
39
39
  emerge/_emerge/geo/pcb.py,sha256=yhPsU_BgAi1w3FGFtoY8BjXklu2CcKvcbcLMi582x8Q,52209
40
40
  emerge/_emerge/geo/pmlbox.py,sha256=TNjuyPtuqrAU5Yl8GrLlievuwYf3hUKJaCEz0cXKSzo,7922
41
41
  emerge/_emerge/geo/polybased.py,sha256=4J5ExvL-yw4NtA1ZZfIYdj3J5g0vpzq_nlCsIjFQFBU,19473
42
- emerge/_emerge/geo/shapes.py,sha256=TTdlHG-OPogS19UCt6EeZqb8tb7WxZ6ZZHxBHIOrKuQ,17206
42
+ emerge/_emerge/geo/shapes.py,sha256=CSXzJPVlTHqtbXeGoZNRm7AjQIShBNU6gCWKDy6mY9Q,18389
43
43
  emerge/_emerge/geo/step.py,sha256=XcAiEN8W4umNmZdYmrGHX_aJUuiMgc6vgT-UIk8Gbqc,2689
44
44
  emerge/_emerge/geo/pcb_tools/calculator.py,sha256=eGYUXdXmHUJCPlfJyY96S87wjeAVFG-e4sPOwbYj0eA,832
45
45
  emerge/_emerge/geo/pcb_tools/macro.py,sha256=0g-0anOFyxrEkFobiSu0cwWFRQ32xB8Az24mmwo0z6M,2992
46
46
  emerge/_emerge/mth/common_functions.py,sha256=oURfF-8p_0s1dKbUATc15dnKHFwvqWa6GC-JMW9UwnI,2061
47
47
  emerge/_emerge/mth/integrals.py,sha256=lL7KrHdyFGpboQyvf6W_4bZRZCrMbjd2e8GDHctL-B8,3572
48
- emerge/_emerge/mth/optimized.py,sha256=K0YQ_faD6aETox2HKYlIIUJElqaGc8zrYEI9SedpQCc,16493
48
+ emerge/_emerge/mth/optimized.py,sha256=FUKlYtD0FRyOdZpdMlpp3Mi_PVvPXeisbXMdzTKZBxQ,17626
49
49
  emerge/_emerge/mth/pairing.py,sha256=i8bBvTeMmzgF0JdiDNJiTXxx913x4f10777pzD6FJo0,3535
50
50
  emerge/_emerge/physics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  emerge/_emerge/physics/microwave/__init__.py,sha256=QHeILGYWmvbfLl1o9wrTiWLm0evfXDgS0JiikUoMTts,28
52
52
  emerge/_emerge/physics/microwave/adaptive_freq.py,sha256=aWhijhCVAbnuwkru-I1AaRdY20uyozf6OWRIh9r2ijg,9786
53
- emerge/_emerge/physics/microwave/microwave_3d.py,sha256=rwH7HBpi1Sm_vJvIe3cm1ELwRuiOKj9LC7eL43dTOVU,48329
54
- emerge/_emerge/physics/microwave/microwave_bc.py,sha256=ZS5Z7sgU1PfJvu0JY3dudbUsnD0O6R7nBzAT8xEVPcY,39101
55
- emerge/_emerge/physics/microwave/microwave_data.py,sha256=36r-rxKSTJg6K9DcMOW3gbaK7w8oVa1dCcwlvY6BfiA,43875
53
+ emerge/_emerge/physics/microwave/microwave_3d.py,sha256=VrEvBFoXZctuq1sxO-BV5xlLlakbVG81SpIupR8KPQ8,48969
54
+ emerge/_emerge/physics/microwave/microwave_bc.py,sha256=-fxeZREL42snL4XvXuUqo4QJh24o8lHJ_IcWxkt5yAU,42484
55
+ emerge/_emerge/physics/microwave/microwave_data.py,sha256=6xQL-XaFr1j1OZfCNltODXxXlXAZ9ghEaNKW7nHKCis,43889
56
56
  emerge/_emerge/physics/microwave/periodic.py,sha256=wYSUgLFVtCLqSG3EDKoCDRU93iPUzBdXzVRdHTRmbpI,3000
57
57
  emerge/_emerge/physics/microwave/port_functions.py,sha256=aVU__AkVk8b1kH2J_oDLF5iNReCxC9nzCtesFSSSSQo,2112
58
58
  emerge/_emerge/physics/microwave/sc.py,sha256=o7lBhRSYSfs3G6VZC2jj7MjNhkLWngmcyy952KcYXJQ,4999
59
59
  emerge/_emerge/physics/microwave/simjob.py,sha256=aCWCs7IXBfVBWWYhwyHvXSRHY3FOd3CK5ABcaFEsNnM,4927
60
60
  emerge/_emerge/physics/microwave/sparam.py,sha256=1SXGyr1UsrPnCIi4ffwobM4pzgkj50y4LrWCr_J5IRY,4946
61
61
  emerge/_emerge/physics/microwave/touchstone.py,sha256=pMcCOLWVqIKctcShcJxyaV-0rhRWXMSS1Jz14dVQEyY,5799
62
- emerge/_emerge/physics/microwave/assembly/assembler.py,sha256=wqkGRsvKyXLgJNeQuzUuBqXcqUtE6TwWq7ICM3PT4Pg,22727
62
+ emerge/_emerge/physics/microwave/assembly/assembler.py,sha256=lTQ2hELZCG5bC4ybhkAoDSi9zr6K4i2N7LuJ4npxd4o,21926
63
63
  emerge/_emerge/physics/microwave/assembly/curlcurl.py,sha256=DJNlngn6VGbPrqux7qFypLj3thxSK2ODI1Z7j_4NxWM,18970
64
- emerge/_emerge/physics/microwave/assembly/generalized_eigen.py,sha256=Q7isg5rkmstNJS0SPlw-vUM_uQMj1XjwyZWshGm8RvA,17382
64
+ emerge/_emerge/physics/microwave/assembly/generalized_eigen.py,sha256=XroDY5kGlRHITBGQLp8RKv2TAV59fYQzEiexZ141CfI,17228
65
+ emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py,sha256=1zhLLNEd0M62oCDzeYCs93NsU0UPhreH9E9kXUA51fY,17665
65
66
  emerge/_emerge/physics/microwave/assembly/periodicbc.py,sha256=Zg1kgQMccDQA2oVErpfldv6v2oYfc9Y3xWcpfg93-FY,4646
66
- emerge/_emerge/physics/microwave/assembly/robinbc.py,sha256=Hkdf-O5JipbtmzzhEfARk4edcfzaTHov8jiD3aQ08v4,16281
67
+ emerge/_emerge/physics/microwave/assembly/robinbc.py,sha256=syJ-NuHHA0WDQECuaPdeW-OfzIGHmxxqalKiokSyJFI,17742
67
68
  emerge/_emerge/plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
69
  emerge/_emerge/plot/display.py,sha256=TQLlKb-LkaG5ZOSLfxp9KXPlZPRFTxNj1LhVQ-Lp1-s,18476
69
70
  emerge/_emerge/plot/simple_plots.py,sha256=95wkxkK1x-fL7Cb8ioeMe3QAUAnTy9wNIkZCVOhSrwY,18751
70
71
  emerge/_emerge/plot/matplotlib/mpldisplay.py,sha256=szKafDrgdAW5Nyc5UOHuJC87n0WGkXYackOVv182TDQ,8671
71
72
  emerge/_emerge/plot/pyvista/__init__.py,sha256=CPclatEu6mFnJZzCQk09g6T6Fh20WTbiLAJGSwAnPXU,30
72
- emerge/_emerge/plot/pyvista/display.py,sha256=nv2YoOrIAoy7_wYXa7842s14cC7S7yLBf045lHkF5G4,33333
73
- emerge/_emerge/plot/pyvista/display_settings.py,sha256=mt57cDerGKuJ4VvjWwdnQ3kCe9Skcl-ZR3siO-HPui0,864
73
+ emerge/_emerge/plot/pyvista/display.py,sha256=L7_cy7C6EnIIj_-V5E_-j5ORJtIXscvYCmBE03-eCK4,34692
74
+ emerge/_emerge/plot/pyvista/display_settings.py,sha256=K2OhzKqeFzMXlEfZ5F4CQ9sN3l7nOgVjLplZBuMPjvE,899
74
75
  emerge/_emerge/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
76
  emerge/_emerge/projects/_gen_base.txt,sha256=_4McYD9Sb1KWRsrGV51mNNAJNYkjm_IemMnCdAsGuLo,607
76
77
  emerge/_emerge/projects/_load_base.txt,sha256=JTAhWvHXJQYKe-aDD4HDdmE7f3VXxeurhDzwFCegrEg,511
77
78
  emerge/_emerge/projects/generate_project.py,sha256=TNw-0SpLc82MBq0bd9hB_yqvBZCgmuPonCBsHTp91uk,1450
78
- emerge/_emerge/solve_interfaces/cudss_interface.py,sha256=RQujuLvgRpDA8nzw2fveUw3JLntgm0Lp3WjSEe6CsLY,8040
79
- emerge/_emerge/solve_interfaces/pardiso_interface.py,sha256=_p6-qwe7Q6K7SqaK1keBYNoZik4eYRVso_oMbxMeW2E,15304
80
- emerge-0.5.4.dist-info/METADATA,sha256=t3f_SiCrTUCqhXPLqHnHK5z6vBpqK54DTHFK6nZb4SQ,3261
81
- emerge-0.5.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
82
- emerge-0.5.4.dist-info/entry_points.txt,sha256=8rFvAXticpKg4OTC8JEvAksnduW72KIEskCGG9XnFf8,43
83
- emerge-0.5.4.dist-info/licenses/LICENSE,sha256=SuHm9Fw32RI6tylP2YCyTPITMwpueazVUZwUMFRE_zk,17856
84
- emerge-0.5.4.dist-info/RECORD,,
79
+ emerge/_emerge/solve_interfaces/cudss_interface.py,sha256=-SjiTNIyE7iJ8Bm14Cva5e2lpJDgfiS2Mvz1Bgy-UL4,9688
80
+ emerge/_emerge/solve_interfaces/pardiso_interface.py,sha256=iVFxToMmIzhj3hcAP-O_MDHKz82ePFIHY1us11kzUBU,15305
81
+ emerge-0.5.6.dist-info/METADATA,sha256=diytWp8I8KQK9QPRZHJBLkINkULanPmXoHJfQX_bl3Y,3340
82
+ emerge-0.5.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
83
+ emerge-0.5.6.dist-info/entry_points.txt,sha256=8rFvAXticpKg4OTC8JEvAksnduW72KIEskCGG9XnFf8,43
84
+ emerge-0.5.6.dist-info/licenses/LICENSE,sha256=SuHm9Fw32RI6tylP2YCyTPITMwpueazVUZwUMFRE_zk,17856
85
+ emerge-0.5.6.dist-info/RECORD,,
@@ -1,172 +0,0 @@
1
- # # EMerge is an open source Python based FEM EM simulation module.
2
- # # Copyright (C) 2025 Robert Fennis.
3
-
4
- # # This program is free software; you can redistribute it and/or
5
- # # modify it under the terms of the GNU General Public License
6
- # # as published by the Free Software Foundation; either version 2
7
- # # of the License, or (at your option) any later version.
8
-
9
- # # This program is distributed in the hope that it will be useful,
10
- # # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- # # GNU General Public License for more details.
13
-
14
- # # You should have received a copy of the GNU General Public License
15
- # # along with this program; if not, see
16
- # # <https://www.gnu.org/licenses/>.
17
-
18
- # from __future__ import annotations
19
- # import numpy as np
20
- # from ..mesh3d import Mesh3D
21
- # from ..dataset_old import Dataset, Axis
22
- # from .femdata import FEMBasis
23
- # from ..mth.tet import leg2_tet_interp, leg2_tet_grad_interp, leg2_tet_stiff
24
- # from ..mth.tri import leg2_tri_stiff
25
- # from ..mth.optimized import local_mapping
26
- # from typing import Callable
27
-
28
- # ############### Nedelec2 Class
29
-
30
- # class Legrange2(FEMBasis):
31
-
32
-
33
- # def __init__(self, mesh: Mesh3D):
34
- # super().__init__(mesh)
35
-
36
- # self.nedges: int = self.mesh.n_edges
37
- # self.ntris: int = self.mesh.n_tris
38
- # self.ntets: int = self.mesh.n_tets
39
-
40
- # self.nfield: int = 2*self.nedges + 2*self.ntris
41
-
42
- # self.axes: list[Axis] = []
43
- # self.fieldata: Dataset = None
44
-
45
- # ######## MESH Derived
46
-
47
- # nedges = self.mesh.n_edges
48
- # ntris = self.mesh.n_tris
49
-
50
- # self.tet_to_field: np.ndarray = np.zeros((10, self.mesh.tets.shape[1]), dtype=int)
51
- # self.tet_to_field[:4,:] = self.mesh.tets
52
- # self.tet_to_field[4:10,:] = self.mesh.tet_to_edge + self.mesh.n_nodes
53
-
54
- # self.edge_to_field: np.ndarray = np.arange(nedges) + self.mesh.n_nodes
55
-
56
- # self.tri_to_field: np.ndarray = np.zeros((6,ntris), dtype=int)
57
-
58
- # self.tri_to_field[:3,:] = self.mesh.tris
59
- # self.tri_to_field[3:6,:] = self.mesh.tri_to_edge + self.mesh.n_nodes
60
-
61
- # ##
62
- # self._field: np.ndarray = None
63
-
64
- # def __call__(self, **kwargs) -> Legrange2:
65
- # self._field = self.fielddata(**kwargs)
66
- # return self
67
-
68
- # def interpolate(self, field, xs: np.ndarray, ys: np.ndarray, zs:np.ndarray, tet_ids: np.ndarray = None) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
69
- # if tet_ids is None:
70
- # tet_ids = np.arange(self.mesh.n_tets)
71
- # return leg2_tet_interp(np.array([xs, ys,zs]), field, self.mesh.tets, self.mesh.tris, self.mesh.edges, self.mesh.nodes, self.tet_to_field, self.mesh.tet_to_edge, self.mesh.tet_to_tri, tet_ids)
72
-
73
- # def interpolate_grad(self, field, xs: np.ndarray, ys: np.ndarray, zs:np.ndarray, tet_ids: np.ndarray = None) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
74
- # if tet_ids is None:
75
- # tet_ids = np.arange(self.mesh.tet_ids)
76
- # return leg2_tet_grad_interp(np.array([xs, ys,zs]), field, self.mesh.tets, self.mesh.tris, self.mesh.edges, self.mesh.nodes, self.tet_to_field, self.mesh.tet_to_edge, self.mesh.tet_to_tri, tet_ids)
77
-
78
- # def fieldf(self, field: np.ndarray, basis: np.ndarray = None, origin: np.ndarray = None) -> Callable:
79
- # if basis is None:
80
- # basis = np.eye(3)
81
-
82
- # if origin is None:
83
- # origin = np.zeros(3)
84
-
85
- # ibasis = np.linalg.pinv(basis)
86
- # def func(xs: np.ndarray, ys: np.ndarray, zs: np.ndarray) -> np.ndarray:
87
- # xyz = np.array([xs, ys, zs]) + origin[:, np.newaxis]
88
- # xyzg = basis @ xyz
89
- # return ibasis @ np.array(self.interpolate(field, xyzg[0,:], xyzg[1,:], xyzg[2,:]))
90
- # return func
91
-
92
-
93
- # ###### Vertex getter
94
-
95
- # def field_to_vertices(self, ifield: np.ndarray):
96
- # return_ids = ifield[ifield < self.mesh.n_nodes]
97
- # return return_ids
98
-
99
- # def field_to_edges(self, ifield: np.ndarray):
100
- # return_ids = ifield[ifield >= self.mesh.n_nodes] - self.mesh.n_nodes
101
- # return return_ids
102
- # ###### INDEX MAPPINGS
103
-
104
- # def local_tet_to_triid(self, itet: int) -> np.ndarray:
105
- # tri_ids = self.tet_to_field[6:10, itet] - self.n_edges
106
- # global_tri_map = self.mesh.tris[:, tri_ids]
107
- # return local_mapping(self.mesh.tets[:, itet], global_tri_map)
108
-
109
- # def local_tet_to_edgeid(self, itet: int) -> np.ndarray:
110
- # global_edge_map = self.mesh.edges[:, self.tet_to_field[:6,itet]]
111
- # return local_mapping(self.mesh.tets[:, itet], global_edge_map)
112
-
113
- # def local_tri_to_edgeid(self, itri: int) -> np.ndarray:
114
- # global_edge_map = self.mesh.edges[:, self.tri_to_field[:3,itri]]
115
- # return local_mapping(self.mesh.tris[:, itri], global_edge_map)
116
-
117
- # def map_edge_to_field(self, edge_ids: np.ndarray) -> np.ndarray:
118
- # """
119
- # Returns the field ids for the edges.
120
- # """
121
- # # Concatinate the edges with the edges + ntris + nedges
122
- # edge_ids = np.array(edge_ids)
123
- # return np.concatenate((edge_ids, edge_ids + self.ntris + self.nedges))
124
-
125
- # ########
126
- # @staticmethod
127
- # def tet_stiff_mass_submatrix(tet_vertices: np.ndarray,
128
- # edge_lengths: np.ndarray,
129
- # local_edge_map: np.ndarray,
130
- # local_tri_map: np.ndarray,
131
- # C_stiffness: float,
132
- # C_mass: float) -> tuple[np.ndarray, np.ndarray]:
133
- # raise NotImplementedError("tet_stiff_mass_submatrix is not implemented for Legrange2")
134
-
135
- # @staticmethod
136
- # def tet_stiff_submatrix(tet_vertices: np.ndarray,
137
- # edge_lengths: np.ndarray,
138
- # local_edge_map: np.ndarray,
139
- # local_tri_map: np.ndarray,
140
- # C_stiffness: float) -> tuple[np.ndarray, np.ndarray]:
141
- # raise leg2_tet_stiff(tet_vertices, edge_lengths, local_edge_map, local_tri_map, C_stiffness)
142
-
143
-
144
- # @staticmethod
145
- # def tri_stiff_mass_submatrix(tri_vertices: np.ndarray,
146
- # edge_lengths: np.ndarray,
147
- # local_edge_map: np.ndarray,
148
- # C_stiffness: float,
149
- # C_mass: float) -> tuple[np.ndarray, np.ndarray]:
150
- # raise NotImplementedError("tri stiff mass is not implemented for Legrange2")
151
-
152
- # @staticmethod
153
- # def tri_stiff_submatrix(tri_vertices: np.ndarray,
154
- # local_edge_map: np.ndarray,
155
- # C_stiffness: float) -> np.ndarray:
156
- # return leg2_tri_stiff(tri_vertices, local_edge_map, C_stiffness)
157
-
158
-
159
- # @staticmethod
160
- # def tri_stiff_vec_matrix(lcs_vertices: np.ndarray,
161
- # edge_lengths: np.ndarray,
162
- # gamma: complex,
163
- # lcs_Uinc: np.ndarray,
164
- # DPTs: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
165
- # raise NotImplementedError("tri stiff mass is not implemented for Legrange2")
166
-
167
- # @staticmethod
168
- # def tri_surf_integral(lcs_vertices: np.ndarray,
169
- # edge_lengths: np.ndarray,
170
- # lcs_Uinc: np.ndarray,
171
- # DPTs: np.ndarray) -> complex:
172
- # raise NotImplementedError("tri stiff mass is not implemented for Legrange2")
File without changes