From 11eb9b0a400ebbfb60ec443be9ddbca8216638f6 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 28 Jan 2026 07:32:30 +0100 Subject: [PATCH 1/2] Adds new test --- test/test_mesher.py | 21 + ...ink2024_large_one_centered_fdtd_cell.FCStd | Bin 0 -> 7898 bytes ...sink2024_large_one_centered_fdtd_cell.json | 28 ++ ...sink2024_large_one_centered_fdtd_cell.step | 378 ++++++++++++++++++ 4 files changed, 427 insertions(+) create mode 100644 testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.FCStd create mode 100644 testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.json create mode 100644 testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.step diff --git a/test/test_mesher.py b/test/test_mesher.py index 9ea4e26..b5184dc 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -365,6 +365,27 @@ def test_lansink2024_single_wire_multipolar(self): self.assertEqual(self.countEntitiesInPhysicalGroupWithName( name), expectedEntities[idx], name) + def test_lansink2024_large_one_centered_fdtd_cell(self): + caseName = 'lansink2024_large_one_centered_fdtd_cell' + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + + gmsh.write(caseName + '.msh') + gmsh.write(caseName + '.vtk') + + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + expectedNames = ['Conductor_0', + 'Conductor_1', + 'OpenBoundary_0', + 'Vacuum_0'] + expectedEntities = [1, 1, 1, + 1] + self.assertEqual(sorted(pGNames), sorted(expectedNames)) + + for idx, name in enumerate(expectedNames): + self.assertEqual(self.countEntitiesInPhysicalGroupWithName( + name), expectedEntities[idx], name) + def test_unshielded_nesting(self): caseName = 'UnshieldedNested' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) diff --git a/testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.FCStd b/testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..a687fe94fbeaace9e3abc0c1889f73ee8ac98b75 GIT binary patch literal 7898 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 y{P)6_e;586{m+gQlKv(fN+TfN{WV Date: Wed, 28 Jan 2026 07:36:20 +0100 Subject: [PATCH 2/2] Minor --- ...ink2024_large_one_centered_fdtd_cell.FCStd | Bin 7898 -> 7879 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.FCStd b/testData/lansink2024_large_one_centered_fdtd_cell/lansink2024_large_one_centered_fdtd_cell.FCStd index a687fe94fbeaace9e3abc0c1889f73ee8ac98b75..cb64a0e8918bd18418b6fb2c915f10c8a148108f 100644 GIT binary patch delta 6323 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