emerge 0.5.3__tar.gz → 0.5.4__tar.gz
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-0.5.3 → emerge-0.5.4}/.bumpversion.toml +1 -1
- {emerge-0.5.3 → emerge-0.5.4}/LICENSE +39 -0
- {emerge-0.5.3 → emerge-0.5.4}/PKG-INFO +11 -8
- {emerge-0.5.3 → emerge-0.5.4}/README.md +10 -7
- {emerge-0.5.3 → emerge-0.5.4}/THIRD_PARTY_LICENSES.md +100 -2
- {emerge-0.5.3 → emerge-0.5.4}/emerge/__init__.py +2 -2
- emerge-0.5.4/emerge/_emerge/__init__.py +17 -0
- emerge-0.5.4/emerge/_emerge/_cache_check.py +46 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/logsettings.py +17 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/mesh3d.py +9 -9
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/mth/pairing.py +1 -2
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/periodic.py +1 -1
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/selection.py +1 -1
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/simmodel.py +0 -1
- {emerge-0.5.3 → emerge-0.5.4}/emerge/lib.py +53 -36
- {emerge-0.5.3 → emerge-0.5.4}/pyproject.toml +1 -1
- {emerge-0.5.3 → emerge-0.5.4}/uv.lock +1 -1
- emerge-0.5.3/emerge/_emerge/__init__.py +0 -42
- {emerge-0.5.3 → emerge-0.5.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/.gitignore +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/.python-version +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/UMFPACK_Install_windows.md +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/UMFPACK_installer_windows.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/__main__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/bc.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/const.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/coord.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/cs.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/dataset.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/femdata.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/index_interp.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/legrange2.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/ned2_interp.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/nedelec2.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/elements/nedleg2.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/horn.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/modeler.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/operations.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/pcb.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/pcb_tools/calculator.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/pcb_tools/macro.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/pmlbox.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/polybased.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/shapes.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo/step.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geo2d.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/geometry.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/howto.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/material.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/mesher.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/mth/common_functions.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/mth/integrals.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/mth/optimized.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/adaptive_freq.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/assembly/assembler.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/assembly/curlcurl.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/assembly/periodicbc.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/assembly/robinbc.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/microwave_3d.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/microwave_bc.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/microwave_data.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/periodic.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/port_functions.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/sc.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/simjob.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/sparam.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/touchstone.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/display.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/matplotlib/mpldisplay.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/pyvista/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/pyvista/display.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/pyvista/display_settings.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot/simple_plots.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/plot.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/projects/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/projects/_gen_base.txt +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/projects/_load_base.txt +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/projects/generate_project.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/simulation_data.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/solve_interfaces/cudss_interface.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/solve_interfaces/pardiso_interface.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/solver.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/system.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/cli.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/plot.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/emerge/pyvista.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo10_sgh.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo11_lumped_element_filter.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo1_stepped_imp_filter.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo2_combline_filter.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo3_coupled_line_filter.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo3_patch_antenna.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo4_boundary_selection.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo5_revolve.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo6_striplines_with_vias.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo7_periodic_cells.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo8_waveguide_bpf_synthesis.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/examples/demo9_dielectric_resonator.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/src/__init__.py +0 -0
- {emerge-0.5.3 → emerge-0.5.4}/src/_img/logo.jpeg +0 -0
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
PREAMBLE — Licence map and disclaimers (not part of the GNU GPL text)
|
|
3
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
This repository is distributed under two distinct licences:
|
|
5
|
+
|
|
6
|
+
• **Gmsh-derived components**
|
|
7
|
+
These files are licensed under the **GNU General Public License,
|
|
8
|
+
version 2 or (at your option) any later version (“GPL-2.0+”)**, together
|
|
9
|
+
with the original *Gmsh additional permission* that allows linking with
|
|
10
|
+
Netgen, METIS, OpenCASCADE and ParaView under their respective licences.
|
|
11
|
+
When you distribute binaries containing these components, the complete
|
|
12
|
+
corresponding source code must be offered under GPL-2.0+.
|
|
13
|
+
|
|
14
|
+
• **`lib.py` — materials-property database**
|
|
15
|
+
This single file is dedicated to the public domain under **CC0 1.0**.
|
|
16
|
+
You may copy, modify, merge, publish, distribute, sublicense and/or sell
|
|
17
|
+
copies of `lib.py` without restriction. The data it contains are
|
|
18
|
+
provided *“as is”* for informational purposes only; verify all critical
|
|
19
|
+
values independently.
|
|
20
|
+
|
|
21
|
+
DISCLAIMER OF WARRANTY
|
|
22
|
+
This software is provided **“as is,”** without any express or implied
|
|
23
|
+
warranty, including but not limited to merchantability, fitness for a
|
|
24
|
+
particular purpose and non-infringement. The authors shall not be liable for
|
|
25
|
+
any damages arising from the use or inability to use this software.
|
|
26
|
+
|
|
27
|
+
DATA ACCURACY NOTICE
|
|
28
|
+
Material-property data in `lib.py` may be incomplete, out of date or
|
|
29
|
+
unsuitable for engineering design. Always confirm crucial values from
|
|
30
|
+
independent, authoritative sources.
|
|
31
|
+
|
|
32
|
+
By using any part of this codebase you acknowledge and accept the terms
|
|
33
|
+
above.
|
|
34
|
+
|
|
35
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
36
|
+
The complete text of the **GNU General Public License, version 2**
|
|
37
|
+
(immediately followed by the original Gmsh additional permission) follows below.
|
|
38
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
39
|
+
|
|
1
40
|
GNU GENERAL PUBLIC LICENSE
|
|
2
41
|
Version 2, June 1991
|
|
3
42
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: emerge
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.4
|
|
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
|
|
@@ -39,19 +39,17 @@ You can now install the basic version of emerge from PyPi!
|
|
|
39
39
|
```
|
|
40
40
|
pip install emerge
|
|
41
41
|
```
|
|
42
|
-
If you want to install the library with PyPardiso on Intel machines, you can install the optional dependency with EMerge using:
|
|
43
|
-
```
|
|
44
|
-
pip install emerge[pypardiso]
|
|
45
|
-
```
|
|
46
42
|
On MacOS and Linux you can install it with the very fast UMFPACK through scikit-umfpack
|
|
47
43
|
|
|
48
44
|
```
|
|
49
45
|
pip install emerge[scikit-umfpack]
|
|
50
46
|
```
|
|
51
|
-
On linux and MacOS with intel or AMD chips you can also include both:
|
|
52
47
|
|
|
48
|
+
### Experimental
|
|
49
|
+
|
|
50
|
+
If you have a new NVidia card you can try the first test implementation of the cuDSS solver. The dependencies can be installed through:
|
|
53
51
|
```
|
|
54
|
-
pip install emerge[
|
|
52
|
+
pip install emerge[cudss]
|
|
55
53
|
```
|
|
56
54
|
The `scikit-umfpack` solver can be installed on Windows as well from binaries with conda. This is a bit more complicated and is described in the installation guide.
|
|
57
55
|
|
|
@@ -83,11 +81,16 @@ To run this FEM library you need the following libraries
|
|
|
83
81
|
- matplotlib (for the matplotlib base display)
|
|
84
82
|
- pyvista (for the PyVista base display)
|
|
85
83
|
- numba-progress
|
|
84
|
+
- mkl (x86 devices only)
|
|
86
85
|
|
|
87
86
|
Optional:
|
|
88
|
-
- pypardiso
|
|
89
87
|
- scikit-umfpack
|
|
88
|
+
- cudss
|
|
90
89
|
|
|
91
90
|
## NOTICE
|
|
92
91
|
|
|
93
92
|
First time runs will be very slow because Numba needs to generate local C-compiled functions of the assembler and other mathematical functions. These compilations are chached so this should only take time once.
|
|
93
|
+
|
|
94
|
+
## Third Party License Notice
|
|
95
|
+
|
|
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.”
|
|
@@ -13,19 +13,17 @@ You can now install the basic version of emerge from PyPi!
|
|
|
13
13
|
```
|
|
14
14
|
pip install emerge
|
|
15
15
|
```
|
|
16
|
-
If you want to install the library with PyPardiso on Intel machines, you can install the optional dependency with EMerge using:
|
|
17
|
-
```
|
|
18
|
-
pip install emerge[pypardiso]
|
|
19
|
-
```
|
|
20
16
|
On MacOS and Linux you can install it with the very fast UMFPACK through scikit-umfpack
|
|
21
17
|
|
|
22
18
|
```
|
|
23
19
|
pip install emerge[scikit-umfpack]
|
|
24
20
|
```
|
|
25
|
-
On linux and MacOS with intel or AMD chips you can also include both:
|
|
26
21
|
|
|
22
|
+
### Experimental
|
|
23
|
+
|
|
24
|
+
If you have a new NVidia card you can try the first test implementation of the cuDSS solver. The dependencies can be installed through:
|
|
27
25
|
```
|
|
28
|
-
pip install emerge[
|
|
26
|
+
pip install emerge[cudss]
|
|
29
27
|
```
|
|
30
28
|
The `scikit-umfpack` solver can be installed on Windows as well from binaries with conda. This is a bit more complicated and is described in the installation guide.
|
|
31
29
|
|
|
@@ -57,11 +55,16 @@ To run this FEM library you need the following libraries
|
|
|
57
55
|
- matplotlib (for the matplotlib base display)
|
|
58
56
|
- pyvista (for the PyVista base display)
|
|
59
57
|
- numba-progress
|
|
58
|
+
- mkl (x86 devices only)
|
|
60
59
|
|
|
61
60
|
Optional:
|
|
62
|
-
- pypardiso
|
|
63
61
|
- scikit-umfpack
|
|
62
|
+
- cudss
|
|
64
63
|
|
|
65
64
|
## NOTICE
|
|
66
65
|
|
|
67
66
|
First time runs will be very slow because Numba needs to generate local C-compiled functions of the assembler and other mathematical functions. These compilations are chached so this should only take time once.
|
|
67
|
+
|
|
68
|
+
## Third Party License Notice
|
|
69
|
+
|
|
70
|
+
“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.”
|
|
@@ -691,14 +691,14 @@ Agreement.
|
|
|
691
691
|
Intel MKL is redistributable **only under Intel’s terms**; review them carefully
|
|
692
692
|
if you ship binaries.
|
|
693
693
|
|
|
694
|
-
**Link to full text:** <https://software.intel.com/
|
|
694
|
+
**Link to full text:** <https://software.intel.com/sites/landingpage/pintool/intel-simplified-software-license.txt>
|
|
695
695
|
|
|
696
696
|
▼ **BEGIN LICENSE (Intel SSL)**
|
|
697
697
|
Intel Simplified Software License (Version October 2022)
|
|
698
698
|
|
|
699
699
|
PIN: Copyright (C) Intel Corporation
|
|
700
700
|
|
|
701
|
-
Use and Redistribution. You may use and redistribute the software, which is provided in binary form only, (the
|
|
701
|
+
Use and Redistribution. You may use and redistribute the software, which is provided in binary form only, (the Software), without modification, provided the following conditions are met:
|
|
702
702
|
|
|
703
703
|
* Redistributions must reproduce the above copyright notice and these terms of use in the Software and in the documentation and/or other materials provided with the distribution.
|
|
704
704
|
* Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission.
|
|
@@ -735,5 +735,103 @@ THE UNITED NATIONS CONVENTION ON CONTRACTS FOR THE INTERNATIONAL SALE OF GOODS (
|
|
|
735
735
|
|
|
736
736
|
---
|
|
737
737
|
|
|
738
|
+
## 6. Apache License 2.0 (“Permissive”)
|
|
739
|
+
|
|
740
|
+
| Package | Version (optional) |
|
|
741
|
+
|---------|--------------------|
|
|
742
|
+
| **nvmath-python[cu12]** | *any* |
|
|
743
|
+
|
|
744
|
+
`nvmath-python[cu12]` is redistributable under the Apache License 2.0.
|
|
745
|
+
|
|
746
|
+
**Link to full text:** <https://www.apache.org/licenses/LICENSE-2.0>
|
|
747
|
+
|
|
748
|
+
▼ **BEGIN LICENSE (Apache-2.0)**
|
|
749
|
+
|
|
750
|
+
-------------------------------------------------------------------------------
|
|
751
|
+
Copyright & License Notice
|
|
752
|
+
-------------------------------------------------------------------------------
|
|
753
|
+
|
|
754
|
+
Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED.
|
|
755
|
+
|
|
756
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
757
|
+
you may not use this file except in compliance with the License.
|
|
758
|
+
You may obtain a copy of the License at
|
|
759
|
+
|
|
760
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
761
|
+
|
|
762
|
+
Unless required by applicable law or agreed to in writing, software
|
|
763
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
764
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
765
|
+
implied. See the License for the specific language governing
|
|
766
|
+
permissions and limitations under the License.
|
|
767
|
+
|
|
768
|
+
▲ **END LICENSE (Apache-2.0)**
|
|
769
|
+
|
|
770
|
+
---
|
|
771
|
+
|
|
772
|
+
## 7. MIT License (“Permissive”)
|
|
773
|
+
|
|
774
|
+
| Package | Version (optional) |
|
|
775
|
+
|---------|--------------------|
|
|
776
|
+
| **cupy-cuda12x** | *any* |
|
|
777
|
+
|
|
778
|
+
`cupy-cuda12x` is redistributable under the MIT License.
|
|
779
|
+
|
|
780
|
+
**Link to full text:** <https://opensource.org/licenses/MIT>
|
|
781
|
+
|
|
782
|
+
▼ **BEGIN LICENSE (MIT)**
|
|
783
|
+
|
|
784
|
+
Copyright (c) 2015 Preferred Infrastructure, Inc.
|
|
785
|
+
Copyright (c) 2015 Preferred Networks, Inc.
|
|
786
|
+
|
|
787
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
788
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
789
|
+
in the Software without restriction, including without limitation the rights
|
|
790
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
791
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
792
|
+
furnished to do so, subject to the following conditions:
|
|
793
|
+
|
|
794
|
+
The above copyright notice and this permission notice shall be included in
|
|
795
|
+
all copies or substantial portions of the Software.
|
|
796
|
+
|
|
797
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
798
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
799
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
800
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
801
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
802
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
803
|
+
THE SOFTWARE.
|
|
804
|
+
|
|
805
|
+
▲ **END LICENSE (MIT)**
|
|
806
|
+
|
|
807
|
+
---
|
|
808
|
+
|
|
809
|
+
## 8. NVIDIA cuDSS SDK License (“Proprietary”)
|
|
810
|
+
|
|
811
|
+
| Package | Version (optional) |
|
|
812
|
+
|---------|--------------------|
|
|
813
|
+
| **nvidia-cudss-cu12** | *any* |
|
|
814
|
+
|
|
815
|
+
`nvidia-cudss-cu12` is provided under NVIDIA’s proprietary cuDSS SDK licence.
|
|
816
|
+
End-users will be prompted to accept this EULA when `pip` downloads the wheel.
|
|
817
|
+
|
|
818
|
+
**Link to full text:** <https://docs.nvidia.com/cuda/cudss/license.html>
|
|
819
|
+
|
|
820
|
+
▼ **BEGIN LICENSE (NVIDIA cuDSS)**
|
|
821
|
+
|
|
822
|
+
-------------------------------------------------------------------------------
|
|
823
|
+
Copyright & License Notice
|
|
824
|
+
-------------------------------------------------------------------------------
|
|
825
|
+
|
|
826
|
+
Copyright © 2023-2025, NVIDIA Corporation & Affiliates. ALL RIGHTS RESERVED.
|
|
827
|
+
|
|
828
|
+
Licensed under the **“License Agreement for NVIDIA Math Libraries
|
|
829
|
+
Software Development Kits” (v. February 10 2022)**.
|
|
830
|
+
|
|
831
|
+
**Link to full text:** <https://docs.nvidia.com/cuda/cudss/license.html>
|
|
832
|
+
d
|
|
833
|
+
▲ **END LICENSE (NVIDIA cuDSS)**
|
|
834
|
+
|
|
835
|
+
---
|
|
738
836
|
|
|
739
837
|
*Last updated: 2025-08-06*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""A Python based FEM solver.
|
|
2
|
-
Copyright (C) 2025
|
|
2
|
+
Copyright (C) 2025 Robert Fennis
|
|
3
3
|
|
|
4
4
|
This program is free software; you can redistribute it and/or
|
|
5
5
|
modify it under the terms of the GNU General Public License
|
|
@@ -36,7 +36,7 @@ os.environ["NUMEXPR_NUM_THREADS"] = NTHREADS
|
|
|
36
36
|
############################################################
|
|
37
37
|
# IMPORT MODULES #
|
|
38
38
|
############################################################
|
|
39
|
-
|
|
39
|
+
from ._emerge import _cache_check
|
|
40
40
|
from ._emerge.logsettings import LOG_CONTROLLER
|
|
41
41
|
from loguru import logger
|
|
42
42
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# """A Python based FEM solver.
|
|
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
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
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 numba.core import event, types
|
|
19
|
+
from numba import njit
|
|
20
|
+
|
|
21
|
+
_COMPILE_MESSAGE = """
|
|
22
|
+
[ EMERGE ]
|
|
23
|
+
⚠ Numba is compiling optimized code; this may take a few minutes.
|
|
24
|
+
• Additional functions may be compiled on-the-fly.
|
|
25
|
+
• Compilation happens only once—subsequent runs load from cache.
|
|
26
|
+
Please wait…"""
|
|
27
|
+
|
|
28
|
+
@njit(cache=True)
|
|
29
|
+
def _donothing(a):
|
|
30
|
+
return a
|
|
31
|
+
|
|
32
|
+
class Notify(event.Listener):
|
|
33
|
+
def on_start(self, ev):
|
|
34
|
+
f = ev.data['dispatcher']
|
|
35
|
+
sig = ev.data['args']
|
|
36
|
+
if f is _donothing: # limit to the function you care about
|
|
37
|
+
sig = ev.data['args']
|
|
38
|
+
print(_COMPILE_MESSAGE)
|
|
39
|
+
|
|
40
|
+
def on_end(self, ev): # unused here
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# install listener only for this block:
|
|
45
|
+
with event.install_listener("numba:compile", Notify()):
|
|
46
|
+
_donothing(0)
|
|
@@ -1,3 +1,20 @@
|
|
|
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
|
+
|
|
1
18
|
from loguru import logger
|
|
2
19
|
import sys
|
|
3
20
|
from typing import Literal
|
|
@@ -455,15 +455,11 @@ class Mesh3D(Mesh):
|
|
|
455
455
|
Returns:
|
|
456
456
|
tuple[dict[int, int], np.ndarray, np.ndarray]: The node index mapping and the node index arrays
|
|
457
457
|
"""
|
|
458
|
-
|
|
459
|
-
def gen_key(coord, mult):
|
|
460
|
-
return tuple([int(round(c*mult)) for c in coord])
|
|
461
458
|
|
|
462
|
-
ftag_to_node = dict()
|
|
463
|
-
face_dimtags = gmsh.model.get_entities(2)
|
|
464
|
-
|
|
465
459
|
node_ids_1 = []
|
|
466
460
|
node_ids_2 = []
|
|
461
|
+
|
|
462
|
+
face_dimtags = gmsh.model.get_entities(2)
|
|
467
463
|
|
|
468
464
|
for d,t in face_dimtags:
|
|
469
465
|
domain_tag, f_tags, node_tags = gmsh.model.mesh.get_elements(2, t)
|
|
@@ -472,19 +468,23 @@ class Mesh3D(Mesh):
|
|
|
472
468
|
node_ids_1.extend(node_tags)
|
|
473
469
|
if t in bc.face2.tags:
|
|
474
470
|
node_ids_2.extend(node_tags)
|
|
475
|
-
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
node_ids_1 = sorted(list(set(node_ids_1)))
|
|
474
|
+
node_ids_2 = sorted(list(set(node_ids_2)))
|
|
476
475
|
|
|
477
476
|
all_node_ids = np.unique(np.array(node_ids_1 + node_ids_2))
|
|
478
477
|
dsmin = shortest_distance(self.nodes[:,all_node_ids])
|
|
479
478
|
|
|
480
|
-
node_ids_1_arry = np.
|
|
481
|
-
node_ids_2_arry = np.
|
|
479
|
+
node_ids_1_arry = np.array(node_ids_1)
|
|
480
|
+
node_ids_2_arry = np.array(node_ids_2)
|
|
482
481
|
dv = np.array(bc.dv)
|
|
483
482
|
|
|
484
483
|
nodemap = pair_coordinates(self.nodes, node_ids_1_arry, node_ids_2_arry, dv, dsmin/2)
|
|
485
484
|
node_ids_2_unsorted = [nodemap[i] for i in sorted(node_ids_1)]
|
|
486
485
|
node_ids_2_sorted = sorted(node_ids_2_unsorted)
|
|
487
486
|
conv_map = {i1: i2 for i1, i2 in zip(node_ids_2_unsorted, node_ids_2_sorted)}
|
|
487
|
+
|
|
488
488
|
return conv_map, np.array(node_ids_2_unsorted), np.array(node_ids_2_sorted)
|
|
489
489
|
|
|
490
490
|
|
|
@@ -47,7 +47,6 @@ def link_coords(coords: np.ndarray, ids1: np.ndarray, ids2: np.ndarray, disp: np
|
|
|
47
47
|
for i1 in range(N):
|
|
48
48
|
ictr = 0
|
|
49
49
|
c1 = coords[:,ids1[i1]]
|
|
50
|
-
|
|
51
50
|
for i2 in range(id_start, N):
|
|
52
51
|
if available[i2] == 0:
|
|
53
52
|
continue
|
|
@@ -91,7 +90,7 @@ def pair_coordinates(coords: np.ndarray, ids1: np.ndarray, ids2: np.ndarray, dis
|
|
|
91
90
|
ids2_c_sorted = sorted(ids2, key= lambda x: tuple(coords[:,x]-disp))
|
|
92
91
|
|
|
93
92
|
mapping = link_coords(coords, np.array(ids1_c_sorted), np.array(ids2_c_sorted), disp, dsmax)
|
|
94
|
-
|
|
93
|
+
|
|
95
94
|
mapping = {i: j for i,j in zip(mapping[0,:], mapping[1,:])}
|
|
96
95
|
|
|
97
96
|
return mapping
|
|
@@ -31,7 +31,7 @@ def _pair_selection(f1: Selection, f2: Selection, translation: tuple[float, floa
|
|
|
31
31
|
f2s = []
|
|
32
32
|
for t1, c1 in zip(f1.tags, c1s):
|
|
33
33
|
for t2, c2 in zip(f2.tags, c2s):
|
|
34
|
-
if np.linalg.norm((c1 + ds)-c2) < 1e-
|
|
34
|
+
if np.linalg.norm((c1 + ds)-c2) < 1e-8:
|
|
35
35
|
f1s.append(Selection([t1,]))
|
|
36
36
|
f2s.append(Selection([t2,]))
|
|
37
37
|
return f1s, f2s
|
|
@@ -536,7 +536,7 @@ class Selector:
|
|
|
536
536
|
nx: float,
|
|
537
537
|
ny: float,
|
|
538
538
|
nz: float,
|
|
539
|
-
tolerance: float = 1e-
|
|
539
|
+
tolerance: float = 1e-8) -> FaceSelection:
|
|
540
540
|
"""Returns a FaceSelection for all faces that lie in a provided infinite plane
|
|
541
541
|
specified by an origin plus a plane normal vector.
|
|
542
542
|
|
|
@@ -384,7 +384,6 @@ class Simulation3D:
|
|
|
384
384
|
logger.error('GMSH Mesh error detected.')
|
|
385
385
|
print(_GMSH_ERROR_TEXT)
|
|
386
386
|
raise
|
|
387
|
-
|
|
388
387
|
self.mesh.update(self.mesher._get_periodic_bcs())
|
|
389
388
|
self.mesh.exterior_face_tags = self.mesher.domain_boundary_face_tags
|
|
390
389
|
gmsh.model.occ.synchronize()
|
|
@@ -1,15 +1,28 @@
|
|
|
1
|
+
"""
|
|
2
|
+
╔══════════════════════════════════════════════════════════════════════╗
|
|
3
|
+
║ library.py – Material-property database ║
|
|
4
|
+
║ ║
|
|
5
|
+
║ This file is released under CC0 1.0 – Public-Domain Dedication. ║
|
|
6
|
+
║ You may use, copy, modify, and distribute it without restriction. ║
|
|
7
|
+
║ ║
|
|
8
|
+
║ All OTHER files in this repository are proprietary. See LICENSE ║
|
|
9
|
+
║ at the project root for full terms, conditions, and disclaimers. ║
|
|
10
|
+
║ ║
|
|
11
|
+
║ DISCLAIMER: Data herein are provided “as is”, with no warranties. ║
|
|
12
|
+
║ Verify critical values independently before use. ║
|
|
13
|
+
╚══════════════════════════════════════════════════════════════════════╝
|
|
14
|
+
"""
|
|
1
15
|
from ._emerge.material import Material, AIR, COPPER
|
|
2
16
|
from ._emerge.const import C0, Z0, PI, EPS0, MU0
|
|
3
17
|
|
|
4
18
|
EISO: float = (Z0/(2*PI))**0.5
|
|
5
19
|
EOMNI = (3*Z0/(4*PI))**0.5
|
|
6
20
|
|
|
7
|
-
|
|
8
|
-
### MATERIALS
|
|
21
|
+
##MATERIALS
|
|
9
22
|
VACUUM = Material(color="#2d8cd5", opacity=0.05)
|
|
10
23
|
|
|
11
24
|
############################################################
|
|
12
|
-
#
|
|
25
|
+
# METALS #
|
|
13
26
|
############################################################
|
|
14
27
|
|
|
15
28
|
GREY = "#bfbfbf"
|
|
@@ -39,22 +52,22 @@ MET_ZIRCONIUM = Material(cond=2.44e7, color=GREY, opacity=0.5)
|
|
|
39
52
|
|
|
40
53
|
|
|
41
54
|
############################################################
|
|
42
|
-
#
|
|
55
|
+
# SEMICONDUCTORS #
|
|
43
56
|
############################################################
|
|
44
57
|
|
|
45
|
-
SEMI_SILICON = Material(er=11.7, tand=0.005, color="#b4b4b4", opacity=0.5)
|
|
46
|
-
SEMI_SILICON_N = Material(er=7.5, tand=0.0003, color="#a0a0a0", opacity=0.5)
|
|
47
|
-
SEMI_SILICON_OXIDE = Material(er=3.9, tand=0.0001, color="#e0e0e0", opacity=0.5)
|
|
58
|
+
SEMI_SILICON = Material(er=11.7, tand=0.005, color="#b4b4b4", opacity=0.5) # Crystalline Si
|
|
59
|
+
SEMI_SILICON_N = Material(er=7.5, tand=0.0003, color="#a0a0a0", opacity=0.5) # Silicon Nitride (Si₃N₄)
|
|
60
|
+
SEMI_SILICON_OXIDE = Material(er=3.9, tand=0.0001, color="#e0e0e0", opacity=0.5) # Silicon Dioxide (SiO₂)
|
|
48
61
|
SEMI_GERMANIUM = Material(er=16.0, tand=0.001, color="#787878", opacity=0.5)
|
|
49
|
-
SEMI_GAAS = Material(er=13.1, tand=0.0016, color="#aa8888", opacity=0.5)
|
|
50
|
-
SEMI_GA_N = Material(er=8.9, tand=0.002, color="#8888cc", opacity=0.5)
|
|
51
|
-
SEMI_INP = Material(er=12.5, tand=0.0015, color="#cc99aa", opacity=0.5)
|
|
52
|
-
SEMI_ALN = Material(er=8.6, tand=0.0003, color="#ccccee", opacity=0.5)
|
|
53
|
-
SEMI_AL2O3 = Material(er=9.8, tand=0.0002, color="#eaeaea", opacity=0.5)
|
|
62
|
+
SEMI_GAAS = Material(er=13.1, tand=0.0016, color="#aa8888", opacity=0.5) # Gallium Arsenide
|
|
63
|
+
SEMI_GA_N = Material(er=8.9, tand=0.002, color="#8888cc", opacity=0.5) # Gallium Nitride
|
|
64
|
+
SEMI_INP = Material(er=12.5, tand=0.0015, color="#cc99aa", opacity=0.5) # Indium Phosphide
|
|
65
|
+
SEMI_ALN = Material(er=8.6, tand=0.0003, color="#ccccee", opacity=0.5) # Aluminum Nitride
|
|
66
|
+
SEMI_AL2O3 = Material(er=9.8, tand=0.0002, color="#eaeaea", opacity=0.5) # Alumina
|
|
54
67
|
SEMI_SAPPHIRE = Material(er=9.4, tand=0.0001, color="#ddddff", opacity=0.5)
|
|
55
|
-
SEMI_DIAMOND = Material(er=5.5, tand=0.00005, color="#cceeff", opacity=0.5)
|
|
56
|
-
SEMI_HBN = Material(er=4.0, tand=0.0001, color="#eeeeff", opacity=0.5)
|
|
57
|
-
SEMI_SIOXNY = Material(er=5.0, tand=0.002, color="#ddddee", opacity=0.5)
|
|
68
|
+
SEMI_DIAMOND = Material(er=5.5, tand=0.00005, color="#cceeff", opacity=0.5) # Synthetic CVD diamond
|
|
69
|
+
SEMI_HBN = Material(er=4.0, tand=0.0001, color="#eeeeff", opacity=0.5) # Hexagonal Boron Nitride
|
|
70
|
+
SEMI_SIOXNY = Material(er=5.0, tand=0.002, color="#ddddee", opacity=0.5) # Silicon Oxynitride (SiOxNy)
|
|
58
71
|
|
|
59
72
|
############################################################
|
|
60
73
|
# LIQUIDS #
|
|
@@ -63,13 +76,17 @@ SEMI_SIOXNY = Material(er=5.0, tand=0.002, color="#ddddee", opacity
|
|
|
63
76
|
LIQ_WATER = Material(er=80.1, cond=0.0, color="#0080ff", opacity=0.3)
|
|
64
77
|
LIQ_FERRITE = Material(er=12.0, ur=2000, tand=0.02, color="#994d4d", opacity=0.3)
|
|
65
78
|
|
|
66
|
-
|
|
67
79
|
############################################################
|
|
68
80
|
# DIELECTRICS #
|
|
69
81
|
############################################################
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
|
|
83
|
+
# TRADEMARKS: All product names (e.g. “DUROID”) are the property of their
|
|
84
|
+
# respective owners. Use of them here does not imply any affiliation with or
|
|
85
|
+
# endorsement by those owners.
|
|
86
|
+
|
|
87
|
+
DIEL_PTFE = Material(er=2.1, tand=0.0002, color="#21912b", opacity=0.3)
|
|
88
|
+
DIEL_POLYIMIDE = Material(er=3.4, tand=0.02, color="#b8b8b8")
|
|
89
|
+
DIEL_CERAMIC = Material(er=6.0, tand=0.001, color="#efead1")
|
|
73
90
|
DIEL_AD10 = Material(er=10.2, tand=0.0078, color="#21912b", opacity=0.3)
|
|
74
91
|
DIEL_AD1000 = Material(er=10.2, tand=0.0023, color="#21912b", opacity=0.3)
|
|
75
92
|
DIEL_AD250 = Material(er=2.5, tand=0.0018, color="#21912b", opacity=0.3)
|
|
@@ -259,12 +276,12 @@ DIEL_XT_Duroid_8100 = Material(er=3.54, tand=0.0049, color="#21912b", opacity=0.
|
|
|
259
276
|
DIEL_XT_Duroid_81000_004IN_Thick = Material(er=3.32, tand=0.0038, color="#21912b", opacity=0.3)
|
|
260
277
|
|
|
261
278
|
# Legacy FR Materials
|
|
262
|
-
DIEL_FR1 = Material(er=4.8, tand=0.025, color="#3c9747", opacity=0.3)
|
|
263
|
-
DIEL_FR2 = Material(er=4.8, tand=0.02, color="#3c9747", opacity=0.3)
|
|
264
|
-
DIEL_FR3 = Material(er=4.5, tand=0.02, color="#2b7a4b", opacity=0.3)
|
|
265
|
-
DIEL_FR4 = Material(er=4.4, tand=0.015, color="#1e8449", opacity=0.3)
|
|
266
|
-
DIEL_FR5 = Material(er=4.2, tand=0.012, color="#156e38", opacity=0.3)
|
|
267
|
-
DIEL_FR6 = Material(er=5.2, tand=0.030, color="#145a32", opacity=0.3)
|
|
279
|
+
DIEL_FR1 = Material(er=4.8, tand=0.025, color="#3c9747", opacity=0.3) # Paper + phenolic resin
|
|
280
|
+
DIEL_FR2 = Material(er=4.8, tand=0.02, color="#3c9747", opacity=0.3) # Paper + phenolic resin
|
|
281
|
+
DIEL_FR3 = Material(er=4.5, tand=0.02, color="#2b7a4b", opacity=0.3) # Paper + epoxy resin
|
|
282
|
+
DIEL_FR4 = Material(er=4.4, tand=0.015, color="#1e8449", opacity=0.3) # Woven glass + epoxy resin (industry standard)
|
|
283
|
+
DIEL_FR5 = Material(er=4.2, tand=0.012, color="#156e38", opacity=0.3) # Woven glass + high-temp epoxy resin
|
|
284
|
+
DIEL_FR6 = Material(er=5.2, tand=0.030, color="#145a32", opacity=0.3) # Paper + unknown resin, poor thermal performance
|
|
268
285
|
|
|
269
286
|
# Magnetic Materials
|
|
270
287
|
MU_METAL = Material(cond=1.0e6, ur=200000, color="#666680", opacity=0.3)
|
|
@@ -274,16 +291,16 @@ MU_METAL = Material(cond=1.0e6, ur=200000, color="#666680", opacity=0.3)
|
|
|
274
291
|
# FOAMS #
|
|
275
292
|
############################################################
|
|
276
293
|
|
|
277
|
-
FOAM_ROHACELL_31 = Material(er=1.05, tand=0.0005, color="#f0e1a1", opacity=0.15)
|
|
278
|
-
FOAM_ROHACELL_51 = Material(er=1.07, tand=0.0006, color="#f0dea0", opacity=0.15)
|
|
294
|
+
FOAM_ROHACELL_31 = Material(er=1.05, tand=0.0005, color="#f0e1a1", opacity=0.15) # PMI-based structural foam
|
|
295
|
+
FOAM_ROHACELL_51 = Material(er=1.07, tand=0.0006, color="#f0dea0", opacity=0.15) # denser version
|
|
279
296
|
FOAM_ROHACELL_71 = Material(er=1.10, tand=0.0007, color="#e5d199", opacity=0.15)
|
|
280
|
-
FOAM_PEI = Material(er=1.15, tand=0.0035, color="#e0b56f", opacity=0.15)
|
|
281
|
-
FOAM_PMI = Material(er=1.10, tand=0.0008, color="#d9c690", opacity=0.15)
|
|
297
|
+
FOAM_PEI = Material(er=1.15, tand=0.0035, color="#e0b56f", opacity=0.15) # polyetherimide-based foam
|
|
298
|
+
FOAM_PMI = Material(er=1.10, tand=0.0008, color="#d9c690", opacity=0.15) # polymethacrylimide
|
|
282
299
|
FOAM_PVC = Material(er=1.20, tand=0.0040, color="#cccccc", opacity=0.15)
|
|
283
|
-
FOAM_EPS = Material(er=1.03, tand=0.0050, color="#f7f7f7", opacity=0.15)
|
|
284
|
-
FOAM_XPS = Material(er=1.05, tand=0.0030, color="#e0e0e0", opacity=0.15)
|
|
285
|
-
FOAM_PU = Material(er=1.10, tand=0.0080, color="#d0d0d0", opacity=0.15)
|
|
286
|
-
FOAM_GLAS = Material(er=3.10, tand=0.0050, color="#888888", opacity=0.15)
|
|
287
|
-
FOAM_AIREX_C70 = Material(er=1.10, tand=0.0010, color="#f7e7a3", opacity=0.15)
|
|
288
|
-
FOAM_AIREX_T92 = Material(er=1.10, tand=0.0020, color="#f6d08a", opacity=0.15)
|
|
289
|
-
FOAM_PVC_CORECELL = Material(er=1.56, tand=0.0025, color="#aaaaaa", opacity=0.15)
|
|
300
|
+
FOAM_EPS = Material(er=1.03, tand=0.0050, color="#f7f7f7", opacity=0.15) # expanded polystyrene
|
|
301
|
+
FOAM_XPS = Material(er=1.05, tand=0.0030, color="#e0e0e0", opacity=0.15) # extruded polystyrene
|
|
302
|
+
FOAM_PU = Material(er=1.10, tand=0.0080, color="#d0d0d0", opacity=0.15) # polyurethane foam
|
|
303
|
+
FOAM_GLAS = Material(er=3.10, tand=0.0050, color="#888888", opacity=0.15) # cellular glass, denser
|
|
304
|
+
FOAM_AIREX_C70 = Material(er=1.10, tand=0.0010, color="#f7e7a3", opacity=0.15) # PET closed cell
|
|
305
|
+
FOAM_AIREX_T92 = Material(er=1.10, tand=0.0020, color="#f6d08a", opacity=0.15) # higher strength PET
|
|
306
|
+
FOAM_PVC_CORECELL = Material(er=1.56, tand=0.0025, color="#aaaaaa", opacity=0.15) # structural core PVC
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# """A Python based FEM solver.
|
|
2
|
-
# Copyright (C) 2025 name of 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
|
-
# """
|
|
19
|
-
# import os
|
|
20
|
-
|
|
21
|
-
# os.environ["OMP_NUM_THREADS"] = "1"
|
|
22
|
-
# os.environ["MKL_NUM_THREADS"] = "1"
|
|
23
|
-
# os.environ["OPENBLAS_NUM_THREADS"] = "1"
|
|
24
|
-
|
|
25
|
-
# from loguru import logger
|
|
26
|
-
# from .logsettings import logger_format
|
|
27
|
-
# import sys
|
|
28
|
-
|
|
29
|
-
# logger.remove()
|
|
30
|
-
# logger.add(sys.stderr, format=logger_format)
|
|
31
|
-
|
|
32
|
-
# logger.debug('Importing modules')
|
|
33
|
-
# from _emerge.simmodel import Simulation3D
|
|
34
|
-
# from _emerge.material import Material, FR4, AIR, VACUUM, COPPER
|
|
35
|
-
# import bc
|
|
36
|
-
# from _emerge.solver import superlu_info, SolverBicgstab, SolverGMRES, SolveRoutine, ReverseCuthillMckee, Sorter, SolverPardiso, SolverUMFPACK
|
|
37
|
-
# from _emerge.cs import CoordinateSystem, Plane, Axis, XAX, YAX, ZAX, XYPLANE, XZPLANE, YZPLANE, YXPLANE, ZXPLANE, ZYPLANE
|
|
38
|
-
# from _emerge.coord import Line
|
|
39
|
-
# import geo
|
|
40
|
-
# from _emerge.selection import Selection, FaceSelection, DomainSelection, EdgeSelection
|
|
41
|
-
# from _emerge.mth.common_functions import norm
|
|
42
|
-
# logger.debug('Importing complete!')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emerge-0.5.3 → emerge-0.5.4}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|