diff --git a/src/Mod/Fem/Gui/Resources/ui/CurrentDensity.ui b/src/Mod/Fem/Gui/Resources/ui/CurrentDensity.ui
index f7b8ee65f6..4613750d18 100644
--- a/src/Mod/Fem/Gui/Resources/ui/CurrentDensity.ui
+++ b/src/Mod/Fem/Gui/Resources/ui/CurrentDensity.ui
@@ -161,7 +161,9 @@
- Real part of potential y-component
+ Real part of potential y-component
+Note: for 2D only setting for x is possible,
+ setting for y will be ignored
true
@@ -205,7 +207,9 @@
- Imaginary part of potential y-component
+ Imaginary part of potential y-component
+Note: for 2D only setting for x is possible,
+ setting for y will be ignored
true
diff --git a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py
index 0897010eca..52d3354152 100644
--- a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py
+++ b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py
@@ -144,44 +144,33 @@ class MgDyn2Dwriter:
)
def _outputMagnetodynamic2DBodyForce(self, obj, name, equation):
- if hasattr(obj, "CurrentDensity"):
- currentDensity = self.write.getFromUi(
- obj.CurrentDensity.getValueAs("A/m^2"), "A/m^2", "I/L^2"
- )
- currentDensity = round(currentDensity, 10) # to get rid of numerical artifacts
- if currentDensity == 0.0:
- # a zero density would break Elmer
- raise general_writer.WriteError("The current density must not be zero!")
- self.write.bodyForce(name, "Current Density", currentDensity)
-
- if hasattr(obj, "Magnetization_im_1"):
+ if hasattr(obj, "CurrentDensity_re_1"):
+ # output only if current density is enabled and needed
+ if not obj.CurrentDensity_re_1_Disabled:
+ currentDensity = float(obj.CurrentDensity_re_1.getValueAs("A/m^2"))
+ self.write.bodyForce(name, "Current Density", currentDensity)
+ # imaginaries are only needed for harmonic equation
+ if equation.IsHarmonic:
+ if not obj.CurrentDensity_im_1_Disabled:
+ currentDensity = float(obj.CurrentDensity_im_1.getValueAs("A/m^2"))
+ self.write.bodyForce(name, "Current Density Im", currentDensity)
+
+ if hasattr(obj, "Magnetization_re_1"):
# output only if magnetization is enabled and needed
if not obj.Magnetization_re_1_Disabled:
- if hasattr(obj, "Magnetization_re_1"):
- magnetization = float(obj.Magnetization_re_1.getValueAs("A/m"))
- self.write.material(name, "Magnetization 1", magnetization)
+ magnetization = float(obj.Magnetization_re_1.getValueAs("A/m"))
+ self.write.material(name, "Magnetization 1", magnetization)
if not obj.Magnetization_re_2_Disabled:
- if hasattr(obj, "Magnetization_re_2"):
- magnetization = float(obj.Magnetization_re_2.getValueAs("A/m"))
- self.write.material(name, "Magnetization 2", magnetization)
- if not obj.Magnetization_re_3_Disabled:
- if hasattr(obj, "Magnetization_re_3"):
- magnetization = float(obj.Magnetization_re_3.getValueAs("A/m"))
- self.write.material(name, "Magnetization 3", magnetization)
+ magnetization = float(obj.Magnetization_re_2.getValueAs("A/m"))
+ self.write.material(name, "Magnetization 2", magnetization)
# imaginaries are only needed for harmonic equation
if equation.IsHarmonic:
if not obj.Magnetization_im_1_Disabled:
- if hasattr(obj, "Magnetization_im_1"):
- magnetization = float(obj.Magnetization_im_1.getValueAs("A/m"))
- self.write.material(name, "Magnetization Im 1", magnetization)
+ magnetization = float(obj.Magnetization_im_1.getValueAs("A/m"))
+ self.write.material(name, "Magnetization Im 1", magnetization)
if not obj.Magnetization_im_2_Disabled:
- if hasattr(obj, "Magnetization_im_2"):
- magnetization = float(obj.Magnetization_im_2.getValueAs("A/m"))
- self.write.material(name, "Magnetization Im 2", magnetization)
- if not obj.Magnetization_im_3_Disabled:
- if hasattr(obj, "Magnetization_im_3"):
- magnetization = float(obj.Magnetization_im_3.getValueAs("A/m"))
- self.write.material(name, "Magnetization Im 3", magnetization)
+ magnetization = float(obj.Magnetization_im_2.getValueAs("A/m"))
+ self.write.material(name, "Magnetization Im 2", magnetization)
def handleMagnetodynamic2DBodyForces(self, bodies, equation):
currentDensities = self.write.getMember("Fem::ConstraintCurrentDensity")