@@ -273,6 +273,46 @@ def __init__(self, grid, wake=None, cfln=0.5, dt=None,
273273 self .solverInitializationTime = time .time () - t0
274274 self .update_logger (['solverInitializationTime' ])
275275
276+ def _apply_stl_materials (self ):
277+ '''
278+ Mask the cells inside the stl and assing the material
279+ defined by the user
280+
281+ * Note: stl material should contain **relative** epsilon and mu
282+ ** Note 2: when assigning the stl material, the default values
283+ 1./eps_0 and 1./mu_0 are substracted
284+ '''
285+ grid = self .grid .grid
286+ self .stl_solids = self .grid .stl_solids
287+ self .stl_materials = self .grid .stl_materials
288+ self .stl_colors = self .grid .stl_colors
289+
290+ for key in self .stl_solids .keys ():
291+
292+ # TODO: adapt for subpixel smoothing
293+ mask = np .reshape (grid [key ], (self .Nx , self .Ny , self .Nz )).astype (int )
294+
295+ eps = self .stl_materials [key ][0 ]* eps_0
296+ mu = self .stl_materials [key ][1 ]* mu_0
297+
298+ # Setting to zero
299+ self .ieps += self .ieps * (- 1.0 * mask )
300+ self .imu += self .imu * (- 1.0 * mask )
301+
302+ # Adding new values
303+ self .ieps += mask * 1. / eps
304+ self .imu += mask * 1. / mu
305+
306+ # Conductivity
307+ if len (self .stl_materials [key ]) == 3 :
308+ sigma = self .stl_materials [key ][2 ]
309+ self .sigma += self .sigma * (- 1.0 * mask )
310+ self .sigma += mask * sigma
311+ self .use_conductivity = True
312+
313+ elif self .sigma_bg > 0.0 : # assumed sigma = 0
314+ self .sigma += self .sigma * (- 1.0 * mask )
315+
276316 def update_tensors (self , tensor = 'all' ):
277317 '''Update tensor matrices after
278318 Field ieps, imu or sigma have been modified
@@ -945,45 +985,6 @@ def _set_field_in_conductors_to_0(self):
945985 self .H *= self .flag_cleanup
946986 self .E *= self .flag_cleanup
947987
948- def _apply_stl_materials (self ):
949- '''
950- Mask the cells inside the stl and assing the material
951- defined by the user
952-
953- * Note: stl material should contain **relative** epsilon and mu
954- ** Note 2: when assigning the stl material, the default values
955- 1./eps_0 and 1./mu_0 are substracted
956- '''
957- grid = self .grid .grid
958- self .stl_solids = self .grid .stl_solids
959- self .stl_materials = self .grid .stl_materials
960- self .stl_colors = self .grid .stl_colors
961-
962- for key in self .stl_solids .keys ():
963-
964- mask = np .reshape (grid [key ], (self .Nx , self .Ny , self .Nz )).astype (int )
965-
966- eps = self .stl_materials [key ][0 ]* eps_0
967- mu = self .stl_materials [key ][1 ]* mu_0
968-
969- # Setting to zero
970- self .ieps += self .ieps * (- 1.0 * mask )
971- self .imu += self .imu * (- 1.0 * mask )
972-
973- # Adding new values
974- self .ieps += mask * 1. / eps
975- self .imu += mask * 1. / mu
976-
977- # Conductivity
978- if len (self .stl_materials [key ]) == 3 :
979- sigma = self .stl_materials [key ][2 ]
980- self .sigma += self .sigma * (- 1.0 * mask )
981- self .sigma += mask * sigma
982- self .use_conductivity = True
983-
984- elif self .sigma_bg > 0.0 : # assumed sigma = 0
985- self .sigma += self .sigma * (- 1.0 * mask )
986-
987988 def _attrcleanup (self ):
988989 # Fields
989990 del self .L , self .tL , self .iA , self .itA
0 commit comments