Skip to content

Commit 277e036

Browse files
committed
[WIP] Testing area exporting for just conductors of general shape
1 parent f82fe1a commit 277e036

2 files changed

Lines changed: 56 additions & 23 deletions

File tree

src/AreaExporterService.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,14 @@ def addComputedArea(self, geometry:str, label:str, area:float):
2020
self.computedAreas['geometries'].append(geometry)
2121

2222
def addPhysicalModelForConductors(self, mappedElements:Dict[str,str]):
23-
physicalGroups = gmsh.model.getPhysicalGroups(1)
23+
physicalGroups = gmsh.model.getPhysicalGroups(2)
2424
for physicalGroup in physicalGroups:
2525
entityTags = gmsh.model.getEntitiesForPhysicalGroup(*physicalGroup)
2626
geometryName = gmsh.model.getPhysicalName(*physicalGroup)
27-
if geometryName.startswith("Conductor_"):
28-
loop = gmsh.model.geo.addCurveLoop(entityTags)
29-
surface = gmsh.model.geo.addPlaneSurface([loop])
30-
gmsh.model.geo.synchronize()
31-
area = gmsh.model.occ.getMass(2, surface)
32-
gmsh.model.occ.remove([(2, surface)])
27+
if geometryName.startswith("Conductor_") and geometryName[10:].isdigit():
28+
area = 0.0
29+
for tag in entityTags:
30+
area += gmsh.model.occ.getMass(2, tag)
3331

3432
label = ''
3533
for key, geometry in mappedElements.items():

test/test_AreaExporterService.py

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import gmsh
66
from src.mesher import Mesher
77
from src.AreaExporterService import AreaExporterService
8+
9+
810
class testAreaExporterService(unittest.TestCase):
911
@staticmethod
10-
def sumAreasFromList(areas:List[float]):
11-
total:float = 0
12+
def sumAreasFromList(areas: List[float]):
13+
total: float = 0
1214
for area in areas:
1315
total += area
1416
return total
@@ -23,32 +25,65 @@ def setUp(self):
2325

2426
def tearDown(self):
2527
gmsh.finalize()
28+
2629
def inputFileFromCaseName(self, caseName) -> None:
2730
return self.testdataPath + caseName + '/' + caseName + ".step"
2831

2932
def testAreaExporterReturnsTrueValues(self):
3033
caseName = 'five_wires'
31-
mappedElements = Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName)
34+
mappedElements = Mesher().meshFromStep(
35+
self.inputFileFromCaseName(caseName), caseName)
3236
areaExporter = AreaExporterService()
33-
areaExporter.addPhysicalModelForConductors(mappedElements=mappedElements)
37+
areaExporter.addPhysicalModelForConductors(
38+
mappedElements=mappedElements)
3439
geometries = areaExporter.computedAreas['geometries']
3540

36-
internalElements = []
37-
for geometry in geometries:
38-
if geometry['geometry'] == "Conductor_0":
39-
totalArea = geometry['area']
40-
else:
41-
internalElements.append(geometry['area'])
42-
areaElements = self.sumAreasFromList(internalElements)
41+
expectedDict = {
42+
'geometries': [
43+
{
44+
'area': 28.274334,
45+
'geometry': 'Conductor_0',
46+
'label': 'Conductor_0'
47+
},
48+
{
49+
'area': 0.785398,
50+
'geometry': 'Conductor_5',
51+
'label': 'Conductor_1'
52+
},
53+
{
54+
'area': 2.010619,
55+
'geometry': 'Conductor_1',
56+
'label': 'Conductor_002'
57+
},
58+
{
59+
'area': 0.785398,
60+
'geometry': 'Conductor_2',
61+
'label': 'Conductor_003'
62+
},
63+
{
64+
'area': 0.785398,
65+
'geometry': 'Conductor_3',
66+
'label': 'Conductor_004'
67+
},
68+
{
69+
'area': 0.785398,
70+
'geometry': 'Conductor_4',
71+
'label': 'Conductor_005'
72+
},
73+
]
74+
}
4375

44-
self.assertAlmostEqual(totalArea, areaElements, places=5)
76+
self.maxDiff = None
77+
self.assertDictEqual(areaExporter.computedAreas, expectedDict)
4578

4679
def testJsonFormat(self) -> None:
4780
caseName = 'DielectricUnshieldedPair'
48-
mappedElements = Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName)
81+
mappedElements = Mesher().meshFromStep(
82+
self.inputFileFromCaseName(caseName), caseName)
4983
areaExporter = AreaExporterService()
50-
areaExporter.addPhysicalModelForConductors(mappedElements=mappedElements)
51-
84+
areaExporter.addPhysicalModelForConductors(
85+
mappedElements=mappedElements)
86+
5287
expectedDict = {
5388
'geometries': [
5489
{
@@ -60,7 +95,7 @@ def testJsonFormat(self) -> None:
6095
'area': 201.06193,
6196
'geometry': 'Conductor_0',
6297
'label': 'LeftConductor'
63-
}
98+
}
6499
]
65100
}
66101
self.maxDiff = None

0 commit comments

Comments
 (0)