@@ -40,37 +40,35 @@ def getNumberFromName(entity_name: str, label: str):
4040 num = int (entity_name [ini :])
4141 return num
4242
43- def get_pecs (self , entity_tags ) -> Dict [str , Dict [str ,any ]]:
44- pecNames = self .__getGeometryNamesByMaterialType ('PEC' )
45- pecs = dict ()
43+ def get_entities_by_material_type (self , entity_tags , material_type : str , entity_dim : int = 2 ) -> Dict [str , List [Tuple [int ,int ]]]:
44+ """
45+ Generic method to extract entities by material type from the cross-section data.
46+
47+ Args:
48+ entity_tags: List of entity tags from gmsh
49+ material_type: The material type to filter by (e.g., 'PEC', 'Dielectric', 'OpenBoundary')
50+ entity_dim: The entity dimension to filter by (default: 2 for surfaces)
51+
52+ Returns:
53+ Dictionary mapping entity names to lists of entity tags
54+ """
55+ material_names = self .__getGeometryNamesByMaterialType (material_type )
56+ entities = dict ()
4657 for s in entity_tags :
4758 name = gmsh .model .get_entity_name (* s ).split ('/' )[- 1 ]
48- if s [0 ] != 2 or name not in pecNames :
59+ if s [0 ] != entity_dim or name not in material_names :
4960 continue
50- pecs .setdefault (name ,[]).append (s )
51-
52- return pecs
61+ entities .setdefault (name , []).append (s )
62+ return entities
5363
54- def get_dielectrics (self , entity_tags ) -> Dict [str , Dict [str ,any ]]:
55- dielectricNames = self .__getGeometryNamesByMaterialType ('Dielectric' )
56- dielectrics = dict ()
57- for s in entity_tags :
58- name = gmsh .model .get_entity_name (* s ).split ('/' )[- 1 ]
59- if s [0 ] != 2 or name not in dielectricNames :
60- continue
61- dielectrics .setdefault (name ,[]).append (s )
62-
63- return dielectrics
64+ def get_pecs (self , entity_tags ) -> Dict [str , List [Tuple [int ,int ]]]:
65+ return self .get_entities_by_material_type (entity_tags , 'PEC' )
66+
67+ def get_dielectrics (self , entity_tags ) -> Dict [str , List [Tuple [int ,int ]]]:
68+ return self .get_entities_by_material_type (entity_tags , 'Dielectric' )
6469
6570 def get_open_boundaries (self , entity_tags ) -> Dict [str , List [Tuple [int ,int ]]]:
66- openBoundaryNames = self .__getGeometryNamesByMaterialType ('OpenBoundary' )
67- open_boundaries = dict ()
68- for s in entity_tags :
69- name = gmsh .model .get_entity_name (* s ).split ('/' )[- 1 ]
70- if s [0 ] != 2 or name not in openBoundaryNames :
71- continue
72- open_boundaries .setdefault (name ,[]).append (s )
73- return open_boundaries
71+ return self .get_entities_by_material_type (entity_tags , 'OpenBoundary' )
7472
7573 def __getGeometryNamesByMaterialType (self , materialType :str ) -> List [str ]:
7674 names = [
0 commit comments