From 68650d540a2a792743ffd247f01b1d320c87724f Mon Sep 17 00:00:00 2001 From: marioalexis Date: Sun, 2 Nov 2025 23:45:38 -0300 Subject: [PATCH] Fem: Fix magnetodynamic2D boundary condition --- .../elmer/equations/magnetodynamic2D_writer.py | 13 +++++++++---- src/Mod/Fem/femsolver/elmer/writer.py | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py index 60816b6cca..2b0ffb93ab 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py +++ b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py @@ -199,17 +199,22 @@ class MgDyn2Dwriter: ) self.write.handled(obj) - def handleMagnetodynamic2DBndConditions(self): + def handleMagnetodynamic2DBndConditions(self, equation): for obj in self.write.getMember("Fem::ConstraintElectrostaticPotential"): if obj.References: for name in obj.References[0][1]: # output the FreeCAD label as comment if obj.Label: self.write.boundary(name, "! FreeCAD Name", obj.Label) - if obj.PotentialEnabled: - if hasattr(obj, "Potential"): - potential = obj.Potential.getValueAs("V") + + if obj.BoundaryCondition == "Dirichlet": + if obj.EnableAV_3: + potential = obj.AV_re_3.getValueAs("Wb/m") self.write.boundary(name, "Potential", potential) + if equation.IsHarmonic: + potential = obj.AV_im_3.getValueAs("Wb/m") + self.write.boundary(name, "Potential im", potential) + if obj.ElectricInfinity: self.write.boundary(name, "Infinity BC", True) self.write.handled(obj) diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index b311a09c33..73fa367b2c 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -466,7 +466,7 @@ class Writer: MgDyn2D.handleMagnetodynamic2DEquation(activeIn, equation) if activeIn: MgDyn2D.handleMagnetodynamic2DConstants() - MgDyn2D.handleMagnetodynamic2DBndConditions() + MgDyn2D.handleMagnetodynamic2DBndConditions(equation) MgDyn2D.handleMagnetodynamic2DBodyForces(activeIn, equation) MgDyn2D.handleMagnetodynamic2DMaterial(activeIn)