@@ -19,23 +19,28 @@ def addComputedArea(self, geometry:str, label:str, area:float):
1919 }
2020 self .computedAreas ['geometries' ].append (geometry )
2121
22- def addPhysicalModelOfDimension (self , mappedElements :Dict [str ,str ], dimension = 2 ):
23- physicalGroups = gmsh .model .getPhysicalGroups (dimension )
22+ def addPhysicalModelForConductors (self , mappedElements :Dict [str ,str ]):
23+ physicalGroups = gmsh .model .getPhysicalGroups (1 )
2424 for physicalGroup in physicalGroups :
2525 entityTags = gmsh .model .getEntitiesForPhysicalGroup (* physicalGroup )
2626 geometryName = gmsh .model .getPhysicalName (* physicalGroup )
27- label = ''
28- for key , geometry in mappedElements .items ():
29- if geometry == geometryName :
30- label = key
31- for tag in entityTags :
32- if dimension == 1 :
33- rad = gmsh .model .occ .getMass (dimension , tag ) / (2 * np .pi )
34- area = rad * rad * np .pi
35- if dimension == 2 :
36- area = gmsh .model .occ .getMass (dimension , tag )
37- if geometryName != AreaExporterService ._EMPTY_NAME_CASE :
38- self .addComputedArea (geometryName , label , area )
27+ if geometryName .startswith ("Conductor_" ):
28+ label = ''
29+ for key , geometry in mappedElements .items ():
30+ if geometry == geometryName :
31+ label = key
32+ break
33+
34+ assert len (entityTags ) == 1
35+ loop = gmsh .model .geo .addCurveLoop (entityTags )
36+ surface = gmsh .model .geo .addPlaneSurface ([loop ])
37+
38+ gmsh .model .geo .synchronize ()
39+
40+ area = gmsh .model .occ .getMass (2 , surface )
41+ gmsh .model .occ .remove ([(2 , surface )])
42+ if geometryName != AreaExporterService ._EMPTY_NAME_CASE :
43+ self .addComputedArea (geometryName , label , area )
3944
4045 def exportToJson (self , exportFileName :str ):
4146 with open (exportFileName + ".areas.json" , 'w' ) as f :
0 commit comments