Skip to content

Commit c80ddcd

Browse files
committed
refactors getters
1 parent 06768d4 commit c80ddcd

1 file changed

Lines changed: 23 additions & 25 deletions

File tree

src/ShapesClassification.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)