emerge 0.4.11__py3-none-any.whl → 0.5.1__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 +15 -8
- emerge/_emerge/bc.py +41 -2
- emerge/_emerge/geo/__init__.py +1 -1
- emerge/_emerge/geo/pcb.py +49 -11
- emerge/_emerge/howto.py +2 -2
- emerge/_emerge/logsettings.py +83 -5
- emerge/_emerge/mesh3d.py +30 -12
- emerge/_emerge/mth/common_functions.py +28 -1
- emerge/_emerge/mth/integrals.py +25 -3
- emerge/_emerge/mth/optimized.py +126 -33
- emerge/_emerge/mth/pairing.py +97 -0
- emerge/_emerge/periodic.py +22 -0
- emerge/_emerge/physics/microwave/assembly/assembler.py +129 -155
- emerge/_emerge/physics/microwave/assembly/curlcurl.py +35 -3
- emerge/_emerge/physics/microwave/assembly/periodicbc.py +130 -0
- emerge/_emerge/physics/microwave/microwave_3d.py +3 -3
- emerge/_emerge/physics/microwave/microwave_bc.py +5 -4
- emerge/_emerge/physics/microwave/microwave_data.py +2 -2
- emerge/_emerge/physics/microwave/sparam.py +2 -2
- emerge/_emerge/projects/_gen_base.txt +1 -1
- emerge/_emerge/simmodel.py +137 -126
- emerge/_emerge/solve_interfaces/pardiso_interface.py +468 -0
- emerge/_emerge/solver.py +102 -31
- emerge/lib.py +276 -41
- {emerge-0.4.11.dist-info → emerge-0.5.1.dist-info}/METADATA +1 -1
- {emerge-0.4.11.dist-info → emerge-0.5.1.dist-info}/RECORD +29 -27
- emerge/_emerge/pardiso/pardiso_solver.py +0 -455
- {emerge-0.4.11.dist-info → emerge-0.5.1.dist-info}/WHEEL +0 -0
- {emerge-0.4.11.dist-info → emerge-0.5.1.dist-info}/entry_points.txt +0 -0
- {emerge-0.4.11.dist-info → emerge-0.5.1.dist-info}/licenses/LICENSE +0 -0
emerge/_emerge/solver.py
CHANGED
|
@@ -39,7 +39,7 @@ If so, attempt to import PyPardiso (if its installed)
|
|
|
39
39
|
|
|
40
40
|
if 'arm' not in platform.processor():
|
|
41
41
|
try:
|
|
42
|
-
from .
|
|
42
|
+
from .solve_interfaces.pardiso_interface import PardisoInterface
|
|
43
43
|
_PARDISO_AVAILABLE = True
|
|
44
44
|
except ModuleNotFoundError as e:
|
|
45
45
|
logger.info('Pardiso not found, defaulting to SuperLU')
|
|
@@ -49,6 +49,11 @@ try:
|
|
|
49
49
|
except ModuleNotFoundError as e:
|
|
50
50
|
logger.debug('UMFPACK not found, defaulting to SuperLU')
|
|
51
51
|
|
|
52
|
+
|
|
53
|
+
############################################################
|
|
54
|
+
# EIGENMODE FILTER ROUTINE #
|
|
55
|
+
############################################################
|
|
56
|
+
|
|
52
57
|
def filter_real_modes(eigvals, eigvecs, k0, ermax, urmax, sign):
|
|
53
58
|
"""
|
|
54
59
|
Given arrays of eigenvalues `eigvals` and eigenvectors `eigvecs` (cols of shape (N,)),
|
|
@@ -85,6 +90,11 @@ def filter_real_modes(eigvals, eigvecs, k0, ermax, urmax, sign):
|
|
|
85
90
|
filtered_vecs = filtered_vecs[:, order]
|
|
86
91
|
return filtered_vals, filtered_vecs
|
|
87
92
|
|
|
93
|
+
|
|
94
|
+
############################################################
|
|
95
|
+
# EIGENMODE ORTHOGONALITY CHECK #
|
|
96
|
+
############################################################
|
|
97
|
+
|
|
88
98
|
def filter_unique_eigenpairs(eigen_values: list[complex], eigen_vectors: list[np.ndarray], tol=-3) -> tuple[list[complex], list[np.ndarray]]:
|
|
89
99
|
"""
|
|
90
100
|
Filters eigenvectors by orthogonality using dot-product tolerance.
|
|
@@ -115,6 +125,11 @@ def filter_unique_eigenpairs(eigen_values: list[complex], eigen_vectors: list[np
|
|
|
115
125
|
|
|
116
126
|
return unique_values, unique_vectors
|
|
117
127
|
|
|
128
|
+
|
|
129
|
+
############################################################
|
|
130
|
+
# COMPLEX MATRIX TO REAL MATRIX CONVERSION #
|
|
131
|
+
############################################################
|
|
132
|
+
|
|
118
133
|
def complex_to_real_block(A, b):
|
|
119
134
|
"""Return (Â, b̂) real-augmented representation of A x = b."""
|
|
120
135
|
A_r = sparse.csr_matrix(A.real)
|
|
@@ -135,7 +150,14 @@ def real_to_complex_block(x):
|
|
|
135
150
|
x_i = x[n:]
|
|
136
151
|
return x_r + 1j * x_i
|
|
137
152
|
|
|
138
|
-
|
|
153
|
+
|
|
154
|
+
############################################################
|
|
155
|
+
# BASE CLASS DEFINITIONS #
|
|
156
|
+
############################################################
|
|
157
|
+
|
|
158
|
+
class SimulationError(Exception):
|
|
159
|
+
pass
|
|
160
|
+
|
|
139
161
|
class Sorter:
|
|
140
162
|
""" A Generic class that executes a sort on the indices.
|
|
141
163
|
It must implement a sort and unsort method.
|
|
@@ -220,7 +242,11 @@ class EigSolver:
|
|
|
220
242
|
pass
|
|
221
243
|
|
|
222
244
|
|
|
223
|
-
|
|
245
|
+
|
|
246
|
+
############################################################
|
|
247
|
+
# SORTERS #
|
|
248
|
+
############################################################
|
|
249
|
+
|
|
224
250
|
@dataclass
|
|
225
251
|
class SolveReport:
|
|
226
252
|
solver: str
|
|
@@ -252,7 +278,11 @@ class ReverseCuthillMckee(Sorter):
|
|
|
252
278
|
logger.debug('Reversing Reverse Cuthill-Mckee sorting.')
|
|
253
279
|
return x[self.inv_perm]
|
|
254
280
|
|
|
255
|
-
|
|
281
|
+
|
|
282
|
+
############################################################
|
|
283
|
+
# PRECONDITIONERS #
|
|
284
|
+
############################################################
|
|
285
|
+
|
|
256
286
|
|
|
257
287
|
class ILUPrecon(Preconditioner):
|
|
258
288
|
""" Implements the incomplete LU preconditioner on matrix A. """
|
|
@@ -267,7 +297,11 @@ class ILUPrecon(Preconditioner):
|
|
|
267
297
|
self.ilu = sparse.linalg.spilu(A, drop_tol=1e-2, fill_factor=self.fill_factor, permc_spec='MMD_AT_PLUS_A', diag_pivot_thresh=0.001, options=self.options)
|
|
268
298
|
self.M = sparse.linalg.LinearOperator(A.shape, self.ilu.solve)
|
|
269
299
|
|
|
270
|
-
|
|
300
|
+
|
|
301
|
+
############################################################
|
|
302
|
+
# ITERATIVE SOLVERS #
|
|
303
|
+
############################################################
|
|
304
|
+
|
|
271
305
|
|
|
272
306
|
class SolverBicgstab(Solver):
|
|
273
307
|
""" Implements the Bi-Conjugate Gradient Stabilized method"""
|
|
@@ -341,7 +375,11 @@ class SolverGMRES(Solver):
|
|
|
341
375
|
x, info = gmres(A, b, atol=self.atol, callback=self.callback, restart=500, callback_type='pr_norm')
|
|
342
376
|
return x, info
|
|
343
377
|
|
|
344
|
-
|
|
378
|
+
|
|
379
|
+
############################################################
|
|
380
|
+
# DIRECT SOLVERS #
|
|
381
|
+
############################################################
|
|
382
|
+
|
|
345
383
|
|
|
346
384
|
class SolverSuperLU(Solver):
|
|
347
385
|
""" Implements Scipi's direct SuperLU solver."""
|
|
@@ -374,16 +412,15 @@ class SolverUMFPACK(Solver):
|
|
|
374
412
|
super().__init__()
|
|
375
413
|
self.A: np.ndarray = None
|
|
376
414
|
self.b: np.ndarray = None
|
|
377
|
-
self.
|
|
378
|
-
self.
|
|
379
|
-
self.
|
|
380
|
-
self.
|
|
381
|
-
self.
|
|
382
|
-
self.
|
|
383
|
-
self.
|
|
384
|
-
self.
|
|
385
|
-
self.
|
|
386
|
-
#self.up.control[um.UMFPACK_]
|
|
415
|
+
self.umfpack: um.UmfpackContext = um.UmfpackContext('zl')
|
|
416
|
+
self.umfpack.control[um.UMFPACK_PRL] = 0
|
|
417
|
+
self.umfpack.control[um.UMFPACK_IRSTEP] = 2
|
|
418
|
+
self.umfpack.control[um.UMFPACK_STRATEGY] = um.UMFPACK_STRATEGY_SYMMETRIC
|
|
419
|
+
self.umfpack.control[um.UMFPACK_ORDERING] = 3
|
|
420
|
+
self.umfpack.control[um.UMFPACK_PIVOT_TOLERANCE] = 0.001
|
|
421
|
+
self.umfpack.control[um.UMFPACK_SYM_PIVOT_TOLERANCE] = 0.001
|
|
422
|
+
self.umfpack.control[um.UMFPACK_BLOCK_SIZE] = 64
|
|
423
|
+
self.umfpack.control[um.UMFPACK_FIXQ] = -1
|
|
387
424
|
|
|
388
425
|
self.fact_symb: bool = False
|
|
389
426
|
|
|
@@ -396,14 +433,14 @@ class SolverUMFPACK(Solver):
|
|
|
396
433
|
A.indices = A.indices.astype(np.int64)
|
|
397
434
|
if self.fact_symb is False:
|
|
398
435
|
logger.debug('Executing symbollic factorization.')
|
|
399
|
-
self.
|
|
436
|
+
self.umfpack.symbolic(A)
|
|
400
437
|
#self.up.report_symbolic()
|
|
401
438
|
self.fact_symb = True
|
|
402
439
|
if not reuse_factorization:
|
|
403
440
|
#logger.debug('Executing numeric factorization.')
|
|
404
|
-
self.
|
|
441
|
+
self.umfpack.numeric(A)
|
|
405
442
|
self.A = A
|
|
406
|
-
x = self.
|
|
443
|
+
x = self.umfpack.solve(um.UMFPACK_A, self.A, b, autoTranspose = False )
|
|
407
444
|
return x, 0
|
|
408
445
|
|
|
409
446
|
class SolverPardiso(Solver):
|
|
@@ -413,18 +450,32 @@ class SolverPardiso(Solver):
|
|
|
413
450
|
|
|
414
451
|
def __init__(self):
|
|
415
452
|
super().__init__()
|
|
416
|
-
self.solver:
|
|
453
|
+
self.solver: PardisoInterface = PardisoInterface()
|
|
454
|
+
self.fact_symb: bool = False
|
|
417
455
|
self.A: np.ndarray = None
|
|
418
456
|
self.b: np.ndarray = None
|
|
419
457
|
|
|
420
458
|
def solve(self, A, b, precon, reuse_factorization: bool = False, id: int = -1):
|
|
421
459
|
logger.info(f'Calling Pardiso Solver. ID={id}')
|
|
422
|
-
self.
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
460
|
+
if self.fact_symb is False:
|
|
461
|
+
logger.debug('Executing symbollic factorization.')
|
|
462
|
+
self.solver.symbolic(A)
|
|
463
|
+
self.fact_symb = True
|
|
464
|
+
if not reuse_factorization:
|
|
465
|
+
self.solver.numeric(A)
|
|
466
|
+
self.A = A
|
|
467
|
+
x, error = self.solver.solve(A, b)
|
|
468
|
+
if error != 0:
|
|
469
|
+
logger.error(f'Terminated with error code {error}')
|
|
470
|
+
logger.error(self.solver.get_error(error))
|
|
471
|
+
raise SimulationError(f'PARDISO Terminated with error code {error}')
|
|
472
|
+
return x, error
|
|
426
473
|
|
|
427
|
-
|
|
474
|
+
|
|
475
|
+
############################################################
|
|
476
|
+
# DIRECT EIGENMODE SOLVERS #
|
|
477
|
+
############################################################
|
|
478
|
+
|
|
428
479
|
class SolverLAPACK(EigSolver):
|
|
429
480
|
|
|
430
481
|
def __init__(self):
|
|
@@ -458,7 +509,11 @@ class SolverLAPACK(EigSolver):
|
|
|
458
509
|
lam, vecs = filter_real_modes(lam, vecs, target_k0, 2, 2, sign=sign)
|
|
459
510
|
return lam, vecs
|
|
460
511
|
|
|
461
|
-
|
|
512
|
+
|
|
513
|
+
############################################################
|
|
514
|
+
# ITERATIVE EIGEN SOLVERS #
|
|
515
|
+
############################################################
|
|
516
|
+
|
|
462
517
|
|
|
463
518
|
class SolverARPACK(EigSolver):
|
|
464
519
|
""" Implements the Scipy ARPACK iterative eigenmode solver."""
|
|
@@ -578,7 +633,11 @@ class SmartARPACK(EigSolver):
|
|
|
578
633
|
return eigen_values, eigen_modes
|
|
579
634
|
|
|
580
635
|
|
|
581
|
-
|
|
636
|
+
|
|
637
|
+
############################################################
|
|
638
|
+
# SOLVER ENUM #
|
|
639
|
+
############################################################
|
|
640
|
+
|
|
582
641
|
|
|
583
642
|
class EMSolver(Enum):
|
|
584
643
|
SUPERLU = 1
|
|
@@ -611,7 +670,11 @@ class EMSolver(Enum):
|
|
|
611
670
|
elif self==EMSolver.SMART_ARPACK_BMA:
|
|
612
671
|
return SmartARPACK_BMA()
|
|
613
672
|
|
|
614
|
-
|
|
673
|
+
|
|
674
|
+
############################################################
|
|
675
|
+
# SOLVE ROUTINE #
|
|
676
|
+
############################################################
|
|
677
|
+
|
|
615
678
|
|
|
616
679
|
class SolveRoutine:
|
|
617
680
|
""" A generic class describing a solve routine.
|
|
@@ -852,11 +915,12 @@ class SolveRoutine:
|
|
|
852
915
|
NS = solve_ids.shape[0]
|
|
853
916
|
|
|
854
917
|
A = A.tocsc()
|
|
855
|
-
|
|
856
|
-
logger.debug(f' Removing {NF-NS} prescribed DOFs ({NS} left)')
|
|
857
|
-
|
|
918
|
+
|
|
858
919
|
Asel = A[np.ix_(solve_ids, solve_ids)]
|
|
859
920
|
bsel = b[solve_ids]
|
|
921
|
+
nnz = Asel.nnz
|
|
922
|
+
|
|
923
|
+
logger.debug(f' Removed {NF-NS} prescribed DOFs ({NS:,} left, {nnz:,} non-zero)')
|
|
860
924
|
|
|
861
925
|
if solver.real_only:
|
|
862
926
|
logger.debug(' Converting to real matrix')
|
|
@@ -878,6 +942,7 @@ class SolveRoutine:
|
|
|
878
942
|
precon = str(self.precon)
|
|
879
943
|
|
|
880
944
|
start = time.time()
|
|
945
|
+
|
|
881
946
|
x_solved, code = solver.solve(Asorted, bsorted, self.precon, reuse_factorization=reuse, id=id)
|
|
882
947
|
end = time.time()
|
|
883
948
|
simtime = end-start
|
|
@@ -1031,4 +1096,10 @@ class AutomaticRoutine(SolveRoutine):
|
|
|
1031
1096
|
return self._try_solver(EMSolver.SUPERLU)
|
|
1032
1097
|
return self._try_solver(EMSolver.SUPERLU)
|
|
1033
1098
|
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
############################################################
|
|
1102
|
+
# DEFAULT DEFINITION #
|
|
1103
|
+
############################################################
|
|
1104
|
+
|
|
1034
1105
|
DEFAULT_ROUTINE = AutomaticRoutine()
|
emerge/lib.py
CHANGED
|
@@ -10,48 +10,283 @@ MU0 = 1.2566370612720e-6
|
|
|
10
10
|
|
|
11
11
|
### MATERIALS
|
|
12
12
|
VACUUM = Material(color="#2d8cd5", opacity=0.05)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
13
|
+
|
|
14
|
+
############################################################
|
|
15
|
+
# METALS #
|
|
16
|
+
############################################################
|
|
17
|
+
|
|
18
|
+
GREY = "#bfbfbf"
|
|
19
|
+
MET_ALUMINUM = Material(cond=3.77e7, color=GREY)
|
|
20
|
+
MET_CARBON = Material(cond=3.33e4, color=GREY)
|
|
21
|
+
MET_CHROMIUM = Material(cond=5.56e6, color=GREY)
|
|
22
|
+
MET_COPPER = Material(cond=5.8e7, color="#62290c")
|
|
23
|
+
MET_GOLD = Material(cond=4.10e7, color=GREY)
|
|
24
|
+
MET_INDIUM = Material(cond=6.44e6, color=GREY)
|
|
25
|
+
MET_IRIDIUM = Material(cond=2.13e7, color=GREY)
|
|
26
|
+
MET_IRON = Material(cond=1.04e7, color=GREY)
|
|
27
|
+
MET_LEAD = Material(cond=4.84e6, color=GREY)
|
|
28
|
+
MET_MAGNESIUM = Material(cond=2.38e7, color=GREY)
|
|
29
|
+
MET_NICKEL = Material(cond=1.14e7, color=GREY)
|
|
30
|
+
MET_NICHROME = Material(cond=9.09e5, color=GREY)
|
|
31
|
+
MET_PALLADIUM = Material(cond=9.42e6, color=GREY)
|
|
32
|
+
MET_PLATINUM = Material(cond=9.42e6, color=GREY)
|
|
33
|
+
MET_RHODIUM = Material(cond=2.22e7, color=GREY)
|
|
34
|
+
MET_SILVER = Material(cond=6.29e7, color=GREY)
|
|
35
|
+
MET_TANTALUM = Material(cond=6.44e6, color=GREY)
|
|
36
|
+
MET_TANTALUM_NITRIDE = Material(cond=3.97e5, color=GREY)
|
|
37
|
+
MET_TIN = Material(cond=8.66e6, color=GREY)
|
|
38
|
+
MET_TITANIUM = Material(cond=1.82e6, color=GREY)
|
|
39
|
+
MET_TUNGSTEN = Material(cond=1.79e7, color=GREY)
|
|
40
|
+
MET_ZINC = Material(cond=1.76e7, color=GREY)
|
|
41
|
+
MET_ZIRCONIUM = Material(cond=2.44e7, color=GREY)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
############################################################
|
|
45
|
+
# SEMICONDUCTORS #
|
|
46
|
+
############################################################
|
|
47
|
+
|
|
48
|
+
SEMI_SILICON = Material(er=11.7, tand=0.005, color="#b4b4b4") # Crystalline Si
|
|
49
|
+
SEMI_SILICON_N = Material(er=7.5, tand=0.0003, color="#a0a0a0") # Silicon Nitride (Si₃N₄)
|
|
50
|
+
SEMI_SILICON_OXIDE = Material(er=3.9, tand=0.0001, color="#e0e0e0") # Silicon Dioxide (SiO₂)
|
|
51
|
+
SEMI_GERMANIUM = Material(er=16.0, tand=0.001, color="#787878")
|
|
52
|
+
SEMI_GAAS = Material(er=13.1, tand=0.0016, color="#aa8888") # Gallium Arsenide
|
|
53
|
+
SEMI_GA_N = Material(er=8.9, tand=0.002, color="#8888cc") # Gallium Nitride
|
|
54
|
+
SEMI_INP = Material(er=12.5, tand=0.0015, color="#cc99aa") # Indium Phosphide
|
|
55
|
+
SEMI_ALN = Material(er=8.6, tand=0.0003, color="#ccccee") # Aluminum Nitride
|
|
56
|
+
SEMI_AL2O3 = Material(er=9.8, tand=0.0002, color="#eaeaea") # Alumina
|
|
57
|
+
SEMI_SAPPHIRE = Material(er=9.4, tand=0.0001, color="#ddddff")
|
|
58
|
+
SEMI_DIAMOND = Material(er=5.5, tand=0.00005, color="#cceeff") # Synthetic CVD diamond
|
|
59
|
+
SEMI_HBN = Material(er=4.0, tand=0.0001, color="#eeeeff") # Hexagonal Boron Nitride
|
|
60
|
+
SEMI_SIOXNY = Material(er=5.0, tand=0.002, color="#ddddee") # Silicon Oxynitride (SiOxNy)
|
|
61
|
+
|
|
62
|
+
############################################################
|
|
63
|
+
# LIQUIDS #
|
|
64
|
+
############################################################
|
|
65
|
+
|
|
66
|
+
LIQ_WATER = Material(er=80.1, cond=0.0, color="#0080ff", opacity=0.3)
|
|
67
|
+
LIQ_FERRITE = Material(er=12.0, ur=2000, tand=0.02, color="#994d4d")
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
############################################################
|
|
71
|
+
# DIELECTRICS #
|
|
72
|
+
############################################################
|
|
73
|
+
DIEL_PTFE = Material(er=2.1, tand=0.0002, color="#21912b")
|
|
74
|
+
DIEL_POLYIMIDE = Material(er=3.4, tand=0.02, color="#b8b8b8")
|
|
75
|
+
DIEL_CERAMIC = Material(er=6.0, tand=0.001, color="#efead1")
|
|
76
|
+
DIEL_AD10 = Material(er=10.2, tand=0.0078, color="#21912b")
|
|
77
|
+
DIEL_AD1000 = Material(er=10.2, tand=0.0023, color="#21912b")
|
|
78
|
+
DIEL_AD250 = Material(er=2.5, tand=0.0018, color="#21912b")
|
|
79
|
+
DIEL_AD250_PIM = Material(er=2.5, tand=0.0018, color="#21912b")
|
|
80
|
+
DIEL_AD250A = Material(er=2.50, tand=0.0015, color="#21912b")
|
|
81
|
+
DIEL_AD250C = Material(er=2.50, tand=0.0014, color="#21912b")
|
|
82
|
+
DIEL_AD255 = Material(er=2.55, tand=0.0018, color="#21912b")
|
|
83
|
+
DIEL_AD255A = Material(er=2.55, tand=0.0015, color="#21912b")
|
|
84
|
+
DIEL_AD255C = Material(er=2.55, tand=0.0014, color="#21912b")
|
|
85
|
+
DIEL_AD260A = Material(er=2.60, tand=0.0017, color="#21912b")
|
|
86
|
+
DIEL_AD270 = Material(er=2.7, tand=0.0023, color="#21912b")
|
|
87
|
+
DIEL_AD300 = Material(er=3, tand=0.003, color="#21912b")
|
|
88
|
+
DIEL_AD300_PIM = Material(er=3, tand=0.003, color="#21912b")
|
|
89
|
+
DIEL_AD300A = Material(er=3.00, tand=0.002, color="#21912b")
|
|
90
|
+
DIEL_AD300C = Material(er=2.97, tand=0.002, color="#21912b")
|
|
91
|
+
DIEL_AD320 = Material(er=3.2, tand=0.0038, color="#21912b")
|
|
92
|
+
DIEL_AD320_PIM = Material(er=3.2, tand=0.003, color="#21912b")
|
|
93
|
+
DIEL_AD320A = Material(er=3.20, tand=0.0032, color="#21912b")
|
|
94
|
+
DIEL_AD350 = Material(er=3.5, tand=0.003, color="#21912b")
|
|
95
|
+
DIEL_AD350_PIM = Material(er=3.5, tand=0.003, color="#21912b")
|
|
96
|
+
DIEL_AD350A = Material(er=3.50, tand=0.003, color="#21912b")
|
|
97
|
+
DIEL_AD410 = Material(er=4.1, tand=0.003, color="#21912b")
|
|
98
|
+
DIEL_AD430 = Material(er=4.3, tand=0.003, color="#21912b")
|
|
99
|
+
DIEL_AD450 = Material(er=4.5, tand=0.0035, color="#21912b")
|
|
100
|
+
DIEL_AD450A = Material(er=4.5, tand=0.0035, color="#21912b")
|
|
101
|
+
DIEL_AD5 = Material(er=5.1, tand=0.003, color="#21912b")
|
|
102
|
+
DIEL_AD600 = Material(er=5.90, tand=0.003, color="#21912b")
|
|
103
|
+
DIEL_AR1000 = Material(er=9.8, tand=0.003, color="#21912b")
|
|
104
|
+
DIEL_CER_10 = Material(er=10.00, tand=0.0035, color="#21912b")
|
|
105
|
+
DIEL_CLTE = Material(er=2.96, tand=0.0023, color="#21912b")
|
|
106
|
+
DIEL_CLTE_AT = Material(er=3.00, tand=0.0013, color="#21912b")
|
|
107
|
+
DIEL_CLTE_LC = Material(er=2.94, tand=0.0025, color="#21912b")
|
|
108
|
+
DIEL_CLTE_XT = Material(er=2.94, tand=0.0012, color="#21912b")
|
|
109
|
+
DIEL_COMCLAD_HF_ER2 = Material(er=2, tand=0.0025, color="#21912b")
|
|
110
|
+
DIEL_COMCLAD_HF_ER3 = Material(er=3, tand=0.0025, color="#21912b")
|
|
111
|
+
DIEL_COMCLAD_HF_ER4 = Material(er=4, tand=0.0025, color="#21912b")
|
|
112
|
+
DIEL_COMCLAD_HF_ER5 = Material(er=5, tand=0.0025, color="#21912b")
|
|
113
|
+
DIEL_COMCLAD_HF_ER6 = Material(er=6, tand=0.0025, color="#21912b")
|
|
114
|
+
DIEL_COPPER_CLAD_ULTEM = Material(er=3.05, tand=0.003, color="#21912b")
|
|
115
|
+
DIEL_CUCLAD_217LX = Material(er=2.17, tand=0.0009, color="#21912b")
|
|
116
|
+
DIEL_CUCLAD_233LX = Material(er=2.33, tand=0.0013, color="#21912b")
|
|
117
|
+
DIEL_CUCLAD_250GT = Material(er=2.5, tand=0.0018, color="#21912b")
|
|
118
|
+
DIEL_CUCLAD_250GX = Material(er=2.4, tand=0.0018, color="#21912b")
|
|
119
|
+
DIEL_CUFLON = Material(er=2.05, tand=0.00045, color="#21912b")
|
|
120
|
+
DIEL_DICLAD_522 = Material(er=2.4, tand=0.0018, color="#21912b")
|
|
121
|
+
DIEL_DICLAD_527 = Material(er=2.4, tand=0.0018, color="#21912b")
|
|
122
|
+
DIEL_DICLAD_870 = Material(er=2.33, tand=0.0013, color="#21912b")
|
|
123
|
+
DIEL_DICLAD_880 = Material(er=2.17, tand=0.0009, color="#21912b")
|
|
124
|
+
DIEL_DICLAD_880_PIM = Material(er=2.17, tand=0.0009, color="#21912b")
|
|
125
|
+
DIEL_GETEK = Material(er=3.5, tand=0.01, color="#21912b")
|
|
126
|
+
DIEL_GETEK = Material(er=3.8, tand=0.01, color="#21912b")
|
|
127
|
+
DIEL_IS6802_80 = Material(er=2.80, tand=0.003, color="#21912b")
|
|
128
|
+
DIEL_IS6803_00 = Material(er=3.00, tand=0.003, color="#21912b")
|
|
129
|
+
DIEL_IS6803_20 = Material(er=3.20, tand=0.003, color="#21912b")
|
|
130
|
+
DIEL_IS6803_33 = Material(er=3.33, tand=0.003, color="#21912b")
|
|
131
|
+
DIEL_IS6803_38 = Material(er=3.38, tand=0.0032, color="#21912b")
|
|
132
|
+
DIEL_IS6803_45 = Material(er=3.45, tand=0.0035, color="#21912b")
|
|
133
|
+
DIEL_ISOCLAD_917 = Material(er=2.17, tand=0.0013, color="#21912b")
|
|
134
|
+
DIEL_ISOCLAD_933 = Material(er=2.33, tand=0.0016, color="#21912b")
|
|
135
|
+
DIEL_ISOLA_I_TERA_MT = Material(er=3.45, tand=0.0030, color="#3c9747")
|
|
136
|
+
DIEL_ISOLA_NELCO_4000_13 = Material(er=3.77, tand=0.008, color="#3c9747")
|
|
137
|
+
DIEL_MAT_25N = Material(er=3.38, tand=0.0025, color="#21912b")
|
|
138
|
+
DIEL_MAT25FR = Material(er=3.58, tand=0.0035, color="#21912b")
|
|
139
|
+
DIEL_MEGTRON6R5775 = Material(er=3.61, tand=0.004, color="#21912b")
|
|
140
|
+
DIEL_MERCURYWAVE_9350 = Material(er=3.5, tand=0.004, color="#21912b")
|
|
141
|
+
DIEL_MULTICLAD_HF = Material(er=3.7, tand=0.0045, color="#21912b")
|
|
142
|
+
DIEL_N_8000 = Material(er=3.5, tand=0.011, color="#21912b")
|
|
143
|
+
DIEL_N4350_13RF = Material(er=3.5, tand=0.0065, color="#21912b")
|
|
144
|
+
DIEL_N4380_13RF = Material(er=3.8, tand=0.007, color="#21912b")
|
|
145
|
+
DIEL_N8000Q = Material(er=3.2, tand=0.006, color="#21912b")
|
|
146
|
+
DIEL_N9300_13RF = Material(er=3, tand=0.004, color="#21912b")
|
|
147
|
+
DIEL_N9320_13RF = Material(er=3.2, tand=0.0045, color="#21912b")
|
|
148
|
+
DIEL_N9338_13RF = Material(er=3.38, tand=0.0046, color="#21912b")
|
|
149
|
+
DIEL_N9350_13RF = Material(er=3.48, tand=0.0055, color="#21912b")
|
|
150
|
+
DIEL_NH9294 = Material(er=2.94, tand=0.0022, color="#21912b")
|
|
151
|
+
DIEL_NH9300 = Material(er=3.00, tand=0.0023, color="#21912b")
|
|
152
|
+
DIEL_NH9320 = Material(er=3.20, tand=0.0024, color="#21912b")
|
|
153
|
+
DIEL_NH9338 = Material(er=3.38, tand=0.0025, color="#21912b")
|
|
154
|
+
DIEL_NH9348 = Material(er=3.48, tand=0.003, color="#21912b")
|
|
155
|
+
DIEL_NH9350 = Material(er=3.50, tand=0.003, color="#21912b")
|
|
156
|
+
DIEL_NH9410 = Material(er=4.10, tand=0.003, color="#21912b")
|
|
157
|
+
DIEL_NH9450 = Material(er=4.50, tand=0.003, color="#21912b")
|
|
158
|
+
DIEL_NORCLAD = Material(er=2.55, tand=0.0011, color="#21912b")
|
|
159
|
+
DIEL_NX9240 = Material(er=2.40, tand=0.0016, color="#21912b")
|
|
160
|
+
DIEL_NX9245 = Material(er=2.45, tand=0.0016, color="#21912b")
|
|
161
|
+
DIEL_NX9250 = Material(er=2.50, tand=0.0017, color="#21912b")
|
|
162
|
+
DIEL_NX9255 = Material(er=2.55, tand=0.0018, color="#21912b")
|
|
163
|
+
DIEL_NX9260 = Material(er=2.60, tand=0.0019, color="#21912b")
|
|
164
|
+
DIEL_NX9270 = Material(er=2.70, tand=0.002, color="#21912b")
|
|
165
|
+
DIEL_NX9294 = Material(er=2.94, tand=0.0022, color="#21912b")
|
|
166
|
+
DIEL_NX9300 = Material(er=3.00, tand=0.0023, color="#21912b")
|
|
167
|
+
DIEL_NX9320 = Material(er=3.20, tand=0.0024, color="#21912b")
|
|
168
|
+
DIEL_NY9208 = Material(er=2.08, tand=0.0006, color="#21912b")
|
|
169
|
+
DIEL_NY9217 = Material(er=2.17, tand=0.0008, color="#21912b")
|
|
170
|
+
DIEL_NY9220 = Material(er=2.20, tand=0.0009, color="#21912b")
|
|
171
|
+
DIEL_NY9233 = Material(er=2.33, tand=0.0011, color="#21912b")
|
|
172
|
+
DIEL_POLYGUIDE = Material(er=2.320, tand=0.0005, color="#21912b")
|
|
173
|
+
DIEL_RF_30 = Material(er=3.00, tand=0.0019, color="#21912b")
|
|
174
|
+
DIEL_RF_301 = Material(er=2.97, tand=0.0018, color="#21912b")
|
|
175
|
+
DIEL_RF_35 = Material(er=3.50, tand=0.0025, color="#21912b")
|
|
176
|
+
DIEL_RF_35A2 = Material(er=3.50, tand=0.0015, color="#21912b")
|
|
177
|
+
DIEL_RF_35P = Material(er=3.50, tand=0.0034, color="#21912b")
|
|
178
|
+
DIEL_RF_35TC = Material(er=3.50, tand=0.0011, color="#21912b")
|
|
179
|
+
DIEL_RF_41 = Material(er=4.10, tand=0.0038, color="#21912b")
|
|
180
|
+
DIEL_RF_43 = Material(er=4.30, tand=0.0033, color="#21912b")
|
|
181
|
+
DIEL_RF_45 = Material(er=4.50, tand=0.0037, color="#21912b")
|
|
182
|
+
DIEL_RF_60A = Material(er=6.15, tand=0.0038, color="#21912b")
|
|
183
|
+
DIEL_RO3003 = Material(er=3.00, tand=0.0011, color="#21912b")
|
|
184
|
+
DIEL_RO3006 = Material(er=6.15, tand=0.002, color="#21912b")
|
|
185
|
+
DIEL_RO3010 = Material(er=10.2, tand=0.0022, color="#21912b")
|
|
186
|
+
DIEL_RO3035 = Material(er=3.50, tand=0.0017, color="#21912b")
|
|
187
|
+
DIEL_RO3203 = Material(er=3.02, tand=0.0016, color="#21912b")
|
|
188
|
+
DIEL_RO3206 = Material(er=6.15, tand=0.0027, color="#21912b")
|
|
189
|
+
DIEL_RO3210 = Material(er=10.2, tand=0.0027, color="#21912b")
|
|
190
|
+
DIEL_RO3730 = Material(er=3.00, tand=0.0016, color="#21912b")
|
|
191
|
+
DIEL_RO4003C = Material(er=3.38, tand=0.0029, color="#21912b")
|
|
192
|
+
DIEL_RO4350B = Material(er=3.48, tand=0.0037, color="#21912b")
|
|
193
|
+
DIEL_RO4350B_TX = Material(er=3.48, tand=0.0034, color="#21912b")
|
|
194
|
+
DIEL_RO4360 = Material(er=6.15, tand=0.0038, color="#21912b")
|
|
195
|
+
DIEL_RO4533 = Material(er=3.30, tand=0.0025, color="#21912b")
|
|
196
|
+
DIEL_RO4534 = Material(er=3.40, tand=0.0027, color="#21912b")
|
|
197
|
+
DIEL_RO4535 = Material(er=3.50, tand=0.0037, color="#21912b")
|
|
198
|
+
DIEL_RO4730 = Material(er=3.00, tand=0.0033, color="#21912b")
|
|
199
|
+
DIEL_RT_Duroid_5870 = Material(er=2.33, tand=0.0012, color="#21912b")
|
|
200
|
+
DIEL_RT_Duroid_5880 = Material(er=2.20, tand=0.0009, color="#21912b")
|
|
201
|
+
DIEL_RT_Duroid_5880LZ = Material(er=1.96, tand=0.0019, color="#21912b")
|
|
202
|
+
DIEL_RT_Duroid_6002 = Material(er=2.94, tand=0.0012, color="#21912b")
|
|
203
|
+
DIEL_RT_Duroid_6006 = Material(er=6.15, tand=0.0027, color="#21912b")
|
|
204
|
+
DIEL_RT_Duroid_6010_2LM = Material(er=10.2, tand=0.0023, color="#21912b")
|
|
205
|
+
DIEL_RT_Duroid_6035HTC = Material(er=3.50, tand=0.0013, color="#21912b")
|
|
206
|
+
DIEL_RT_Duroid_6202 = Material(er=2.94, tand=0.0015, color="#21912b")
|
|
207
|
+
DIEL_RT_Duroid_6202PR = Material(er=2.90, tand=0.002, color="#21912b")
|
|
208
|
+
DIEL_SYRON_70000_002IN_Thick = Material(er=3.4, tand=0.0045, color="#21912b")
|
|
209
|
+
DIEL_SYRON_71000_004IN_THICK = Material(er=3.39, tand=0.005, color="#21912b")
|
|
210
|
+
DIEL_SYRON_71000INCH = Material(er=3.61, tand=0.006, color="#21912b")
|
|
211
|
+
DIEL_TACLAMPLUS= Material(er=2.10, tand=0.0004, color="#21912b")
|
|
212
|
+
DIEL_TC350 = Material(er=3.50, tand=0.002, color="#21912b")
|
|
213
|
+
DIEL_TC600 = Material(er=6.15, tand=0.002, color="#21912b")
|
|
214
|
+
DIEL_THETA = Material(er=3.85, tand=0.0123, color="#21912b")
|
|
215
|
+
DIEL_TLA_6 = Material(er=2.62, tand=0.0017, color="#21912b")
|
|
216
|
+
DIEL_TLC_27 = Material(er=2.75, tand=0.003, color="#21912b")
|
|
217
|
+
DIEL_TLC_30 = Material(er=3.00, tand=0.003, color="#21912b")
|
|
218
|
+
DIEL_TLC_32 = Material(er=3.20, tand=0.003, color="#21912b")
|
|
219
|
+
DIEL_TLC_338 = Material(er=3.38, tand=0.0034, color="#21912b")
|
|
220
|
+
DIEL_TLC_35 = Material(er=3.50, tand=0.0037, color="#21912b")
|
|
221
|
+
DIEL_TLE_95 = Material(er=2.95, tand=0.0028, color="#21912b")
|
|
222
|
+
DIEL_TLF_34 = Material(er=3.40, tand=0.002, color="#21912b")
|
|
223
|
+
DIEL_TLF_35 = Material(er=3.50, tand=0.002, color="#21912b")
|
|
224
|
+
DIEL_TLG_29 = Material(er=2.87, tand=0.0027, color="#21912b")
|
|
225
|
+
DIEL_TLG_30 = Material(er=3, tand=0.0038, color="#21912b")
|
|
226
|
+
DIEL_TLP_3 = Material(er=2.33, tand=0.0009, color="#21912b")
|
|
227
|
+
DIEL_TLP_5 = Material(er=2.20, tand=0.0009, color="#21912b")
|
|
228
|
+
DIEL_TLP_5A = Material(er=2.17, tand=0.0009, color="#21912b")
|
|
229
|
+
DIEL_TLT_0 = Material(er=2.45, tand=0.0019, color="#21912b")
|
|
230
|
+
DIEL_TLT_6 = Material(er=2.65, tand=0.0019, color="#21912b")
|
|
231
|
+
DIEL_TLT_7 = Material(er=2.60, tand=0.0019, color="#21912b")
|
|
232
|
+
DIEL_TLT_8 = Material(er=2.55, tand=0.0019, color="#21912b")
|
|
233
|
+
DIEL_TLT_9 = Material(er=2.50, tand=0.0019, color="#21912b")
|
|
234
|
+
DIEL_TLX_0 = Material(er=2.45, tand=0.0019, color="#21912b")
|
|
235
|
+
DIEL_TLX_6 = Material(er=2.65, tand=0.0019, color="#21912b")
|
|
236
|
+
DIEL_TLX_7 = Material(er=2.60, tand=0.0019, color="#21912b")
|
|
237
|
+
DIEL_TLX_8 = Material(er=2.55, tand=0.0019, color="#21912b")
|
|
238
|
+
DIEL_TLX_9 = Material(er=2.50, tand=0.0019, color="#21912b")
|
|
239
|
+
DIEL_TLY_3 = Material(er=2.33, tand=0.0012, color="#21912b")
|
|
240
|
+
DIEL_TLY_3F = Material(er=2.33, tand=0.0012, color="#21912b")
|
|
241
|
+
DIEL_TLY_5 = Material(er=2.20, tand=0.0009, color="#21912b")
|
|
242
|
+
DIEL_TLY_5_L = Material(er=2.20, tand=0.0009, color="#21912b")
|
|
243
|
+
DIEL_TLY_5A = Material(er=2.17, tand=0.0009, color="#21912b")
|
|
244
|
+
DIEL_TLY_5AL = Material(er=2.17, tand=0.0009, color="#21912b")
|
|
245
|
+
DIEL_TMM_10 = Material(er=9.20, tand=0.0022, color="#21912b")
|
|
246
|
+
DIEL_TMM_10i = Material(er=9.80, tand=0.002, color="#21912b")
|
|
247
|
+
DIEL_TMM_3 = Material(er=3.27, tand=0.002, color="#21912b")
|
|
248
|
+
DIEL_TMM_4 = Material(er=4.50, tand=0.002, color="#21912b")
|
|
249
|
+
DIEL_TMM_6 = Material(er=6.00, tand=0.0023, color="#21912b")
|
|
250
|
+
DIEL_TRF_41 = Material(er=4.10, tand=0.0035, color="#21912b")
|
|
251
|
+
DIEL_TRF_43 = Material(er=4.30, tand=0.0035, color="#21912b")
|
|
252
|
+
DIEL_TRF_45 = Material(er=4.50, tand=0.0035, color="#21912b")
|
|
253
|
+
DIEL_TSM_26 = Material(er=2.60, tand=0.0014, color="#21912b")
|
|
254
|
+
DIEL_TSM_29 = Material(er=2.94, tand=0.0013, color="#21912b")
|
|
255
|
+
DIEL_TSM_30 = Material(er=3.00, tand=0.0013, color="#21912b")
|
|
256
|
+
DIEL_TSM_DS = Material(er=2.85, tand=0.001, color="#21912b")
|
|
257
|
+
DIEL_TSM_DS3 = Material(er=3.00, tand=0.0011, color="#21912b")
|
|
258
|
+
DIEL_ULTRALAM_2000 = Material(er=2.4, tand=0.0019, color="#21912b")
|
|
259
|
+
DIEL_ULTRALAM_3850 = Material(er=2.9, tand=0.0025, color="#21912b")
|
|
260
|
+
DIEL_XT_Duroid_80000_002IN_Thick = Material(er=3.23, tand=0.0035, color="#21912b")
|
|
261
|
+
DIEL_XT_Duroid_8100 = Material(er=3.54, tand=0.0049, color="#21912b")
|
|
262
|
+
DIEL_XT_Duroid_81000_004IN_Thick = Material(er=3.32, tand=0.0038, color="#21912b")
|
|
51
263
|
|
|
52
264
|
# Legacy FR Materials
|
|
53
|
-
|
|
54
|
-
|
|
265
|
+
DIEL_FR1 = Material(er=4.8, tand=0.025, color="#3c9747") # Paper + phenolic resin
|
|
266
|
+
DIEL_FR2 = Material(er=4.8, tand=0.02, color="#3c9747") # Paper + phenolic resin
|
|
267
|
+
DIEL_FR3 = Material(er=4.5, tand=0.02, color="#2b7a4b") # Paper + epoxy resin
|
|
268
|
+
DIEL_FR4 = Material(er=4.4, tand=0.015, color="#1e8449") # Woven glass + epoxy resin (industry standard)
|
|
269
|
+
DIEL_FR5 = Material(er=4.2, tand=0.012, color="#156e38") # Woven glass + high-temp epoxy resin
|
|
270
|
+
DIEL_FR6 = Material(er=5.2, tand=0.030, color="#145a32") # Paper + unknown resin, poor thermal performance
|
|
55
271
|
|
|
56
272
|
# Magnetic Materials
|
|
57
|
-
MU_METAL = Material(cond=1.0e6, ur=200000, color="#666680")
|
|
273
|
+
MU_METAL = Material(cond=1.0e6, ur=200000, color="#666680")
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
############################################################
|
|
277
|
+
# FOAMS #
|
|
278
|
+
############################################################
|
|
279
|
+
|
|
280
|
+
FOAM_ROHACELL_31 = Material(er=1.05, tand=0.0005, color="#f0e1a1") # PMI-based structural foam
|
|
281
|
+
FOAM_ROHACELL_51 = Material(er=1.07, tand=0.0006, color="#f0dea0") # denser version
|
|
282
|
+
FOAM_ROHACELL_71 = Material(er=1.10, tand=0.0007, color="#e5d199")
|
|
283
|
+
FOAM_PEI = Material(er=1.15, tand=0.0035, color="#e0b56f") # polyetherimide-based foam
|
|
284
|
+
FOAM_PMI = Material(er=1.10, tand=0.0008, color="#d9c690") # polymethacrylimide
|
|
285
|
+
FOAM_PVC = Material(er=1.20, tand=0.0040, color="#cccccc")
|
|
286
|
+
FOAM_EPS = Material(er=1.03, tand=0.0050, color="#f7f7f7") # expanded polystyrene
|
|
287
|
+
FOAM_XPS = Material(er=1.05, tand=0.0030, color="#e0e0e0") # extruded polystyrene
|
|
288
|
+
FOAM_PU = Material(er=1.10, tand=0.0080, color="#d0d0d0") # polyurethane foam
|
|
289
|
+
FOAM_GLAS = Material(er=3.10, tand=0.0050, color="#888888") # cellular glass, denser
|
|
290
|
+
FOAM_AIREX_C70 = Material(er=1.10, tand=0.0010, color="#f7e7a3") # PET closed cell
|
|
291
|
+
FOAM_AIREX_T92 = Material(er=1.10, tand=0.0020, color="#f6d08a") # higher strength PET
|
|
292
|
+
FOAM_PVC_CORECELL = Material(er=1.56, tand=0.0025, color="#aaaaaa") # structural core PVC
|