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.
- emerge/__init__.py +3 -0
- emerge/_emerge/cs.py +2 -2
- emerge/_emerge/elements/ned2_interp.py +21 -26
- emerge/_emerge/elements/nedleg2.py +25 -43
- emerge/_emerge/geo/shapes.py +26 -3
- emerge/_emerge/geometry.py +27 -1
- emerge/_emerge/material.py +1 -0
- emerge/_emerge/mesh3d.py +63 -14
- emerge/_emerge/mesher.py +7 -4
- emerge/_emerge/mth/optimized.py +30 -0
- emerge/_emerge/periodic.py +46 -16
- emerge/_emerge/physics/microwave/assembly/assembler.py +4 -21
- emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +23 -19
- emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py +465 -0
- emerge/_emerge/physics/microwave/assembly/robinbc.py +59 -18
- emerge/_emerge/physics/microwave/microwave_3d.py +22 -4
- emerge/_emerge/physics/microwave/microwave_bc.py +101 -35
- emerge/_emerge/physics/microwave/microwave_data.py +1 -1
- emerge/_emerge/plot/pyvista/display.py +40 -7
- emerge/_emerge/plot/pyvista/display_settings.py +1 -0
- emerge/_emerge/simmodel.py +15 -1
- emerge/_emerge/solve_interfaces/cudss_interface.py +44 -2
- emerge/_emerge/solve_interfaces/pardiso_interface.py +1 -0
- emerge/_emerge/solver.py +28 -22
- emerge/ext.py +4 -0
- emerge/lib.py +1 -1
- {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/METADATA +5 -3
- {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/RECORD +31 -30
- emerge/_emerge/elements/legrange2.py +0 -172
- {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/WHEEL +0 -0
- {emerge-0.5.4.dist-info → emerge-0.5.6.dist-info}/entry_points.txt +0 -0
- {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.
|
|
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
|
-
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
19
|
-
emerge/_emerge/mesh3d.py,sha256=
|
|
20
|
-
emerge/_emerge/mesher.py,sha256=
|
|
21
|
-
emerge/_emerge/periodic.py,sha256=
|
|
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=
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
54
|
-
emerge/_emerge/physics/microwave/microwave_bc.py,sha256
|
|
55
|
-
emerge/_emerge/physics/microwave/microwave_data.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
73
|
-
emerge/_emerge/plot/pyvista/display_settings.py,sha256=
|
|
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
|
|
79
|
-
emerge/_emerge/solve_interfaces/pardiso_interface.py,sha256=
|
|
80
|
-
emerge-0.5.
|
|
81
|
-
emerge-0.5.
|
|
82
|
-
emerge-0.5.
|
|
83
|
-
emerge-0.5.
|
|
84
|
-
emerge-0.5.
|
|
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
|
|
File without changes
|
|
File without changes
|