diff --git a/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui b/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui
index 7d4ffb0def..a3f11b8bfd 100644
--- a/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui
+++ b/src/Mod/Fem/Gui/Resources/ui/ElectrostaticPotential.ui
@@ -103,8 +103,8 @@ with a harmonic/oscillating driving force
false
-
- -
+
+
-
true
@@ -114,7 +114,7 @@ with a harmonic/oscillating driving force
- -
+
-
true
@@ -125,23 +125,13 @@ with a harmonic/oscillating driving force
-
-
-
- true
-
+
Scalar
-
-
-
-
-
-
-
- -
true
@@ -163,7 +153,7 @@ with a harmonic/oscillating driving force
- -
+
-
true
@@ -186,23 +176,13 @@ with a harmonic/oscillating driving force
-
-
-
- true
-
+
X
-
-
-
-
-
-
-
- -
true
@@ -225,7 +205,7 @@ Note: has no effect if a solid was selected
- -
+
-
true
@@ -249,23 +229,13 @@ Note: has no effect if a solid was selected
-
-
-
- true
-
+
Y
-
-
-
-
-
-
-
- -
true
@@ -288,7 +258,7 @@ Note: has no effect if a solid was selected
- -
+
-
true
@@ -312,23 +282,13 @@ Note: has no effect if a solid was selected
-
-
-
- true
-
+
Z
-
-
-
-
-
-
-
- -
true
@@ -351,7 +311,7 @@ Note: has no effect if a solid was selected
- -
+
-
true
@@ -380,15 +340,15 @@ Note: has no effect if a solid was selected
-
-
-
+
true
- Whether the boundary condition defines a farfield potential
+ Far field approximation assuming spherical symmetry
- Electric infinity
+ Far field
@@ -412,6 +372,8 @@ Note: has no effect if a solid was selected
Neumann
+
+ -
-
@@ -431,6 +393,213 @@ Note: has no effect if a solid was selected
+
+ -
+
+
+ To define magnetic flux density
+
+
+ Magnetic flux density
+
+
+ true
+
+
+
+ -
+
+
+
+
+
+ true
+
+
+ Imaginary part is only used for equations
+with a harmonic/oscillating driving force
+
+
+ false
+
+
+
-
+
+
+ true
+
+
+ Real
+
+
+
+ -
+
+
+ true
+
+
+ Imaginary
+
+
+
+ -
+
+
+ X
+
+
+
+ -
+
+
+ true
+
+
+ Real part of magnetic flux density x-component
+
+
+ true
+
+
+ Wb/m^2
+
+
+ 1.000000000000000
+
+
+ 1.000000000000000
+
+
+
+ -
+
+
+ true
+
+
+ Imaginary part of magnetic flux density x-component
+
+
+ true
+
+
+ Wb/m^2
+
+
+ 1.000000000000000
+
+
+ 1.000000000000000
+
+
+
+ -
+
+
+ Y
+
+
+
+ -
+
+
+ true
+
+
+ Real part of magnetic flux density y-component
+
+
+ true
+
+
+ Wb/m^2
+
+
+ 1.000000000000000
+
+
+ 1.000000000000000
+
+
+
+ -
+
+
+ true
+
+
+ Imaginary part of magnetic flux density y-component
+
+
+ true
+
+
+ Wb/m^2
+
+
+ 1.000000000000000
+
+
+ 1.000000000000000
+
+
+
+ -
+
+
+ Z
+
+
+
+ -
+
+
+ true
+
+
+ Real part of magnetic flux density z-component
+
+
+ true
+
+
+ Wb/m^2
+
+
+ 1.000000000000000
+
+
+ 1.000000000000000
+
+
+
+ -
+
+
+ true
+
+
+ Imaginary part of magnetic flux density z-component
+
+
+ true
+
+
+ Wb/m^2
+
+
+ 1.000000000000000
+
+
+ 1.000000000000000
+
+
+
+
+
+
+
-
diff --git a/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py b/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py
index 600e000c11..78eebc1fa4 100644
--- a/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py
+++ b/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py
@@ -141,7 +141,7 @@ def setup(doc=None, solvertype="elmer"):
name_pot1 = "ElectrostaticPotential1"
con_elect_pot1 = ObjectsFem.makeConstraintElectrostaticPotential(doc, name_pot1)
con_elect_pot1.References = [(geom_obj, "Face1")]
- con_elect_pot1.ElectricInfinity = True
+ con_elect_pot1.FarField = True
con_elect_pot1.PotentialEnabled = False
analysis.addObject(con_elect_pot1)
diff --git a/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py b/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py
index 26ac86f6cf..57a192260f 100644
--- a/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py
+++ b/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py
@@ -210,9 +210,9 @@ class ConstraintElectrostaticPotential(base_fempythonobject.BaseFemPythonObject)
prop.append(
_PropHelper(
type="App::PropertyBool",
- name="ElectricInfinity",
+ name="FarField",
group="Parameter",
- doc="Electric Infinity",
+ doc="Far field approximation assuming spherical symmetry",
value=False,
)
)
@@ -245,6 +245,89 @@ class ConstraintElectrostaticPotential(base_fempythonobject.BaseFemPythonObject)
)
)
+ prop.append(
+ _PropHelper(
+ type="App::PropertyMagneticFluxDensity",
+ name="Magnetic_re_1",
+ group="Magnetic Flux Density",
+ doc="Real part of magnetic flux density x-component",
+ value="0 Wb/m^2",
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyMagneticFluxDensity",
+ name="Magnetic_re_2",
+ group="Magnetic Flux Density",
+ doc="Real part of magnetic flux density y-component",
+ value="0 Wb/m^2",
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyMagneticFluxDensity",
+ name="Magnetic_re_3",
+ group="Magnetic Flux Density",
+ doc="Real part of magnetic flux density z-component",
+ value="0 Wb/m^2",
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyMagneticFluxDensity",
+ name="Magnetic_im_1",
+ group="Magnetic Flux Density",
+ doc="Imaginary part of magnetic flux density x-component",
+ value="0 Wb/m^2",
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyMagneticFluxDensity",
+ name="Magnetic_im_2",
+ group="Magnetic Flux Density",
+ doc="Imaginary part of magnetic flux density y-component",
+ value="0 Wb/m^2",
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyMagneticFluxDensity",
+ name="Magnetic_im_3",
+ group="Magnetic Flux Density",
+ doc="Imaginary part of magnetic flux density z-component",
+ value="0 Wb/m^2",
+ )
+ )
+
+ prop.append(
+ _PropHelper(
+ type="App::PropertyBool",
+ name="EnableMagnetic_1",
+ group="Magnetic Flux Density",
+ doc="Enable magnetic flux density x-component boundary condition",
+ value=False,
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyBool",
+ name="EnableMagnetic_2",
+ group="Magnetic Flux Density",
+ doc="Enable magnetic flux density y-component boundary condition",
+ value=False,
+ )
+ )
+ prop.append(
+ _PropHelper(
+ type="App::PropertyBool",
+ name="EnableMagnetic_3",
+ group="Magnetic Flux Density",
+ doc="Enable magnetic flux density z-component boundary condition",
+ value=False,
+ )
+ )
+
return prop
def onDocumentRestored(self, obj):
@@ -281,7 +364,9 @@ class ConstraintElectrostaticPotential(base_fempythonobject.BaseFemPythonObject)
obj.EnableAV_3 = not obj.getPropertyByName(
"AV_re_3_Disabled"
) or not obj.getPropertyByName("AV_im_3_Disabled")
- obj.EnableAV = not obj.getPropertyByName("AV_im_Disabled")
+ obj.EnableAV = not obj.getPropertyByName("AV_re_Disabled") or not obj.getPropertyByName(
+ "AV_im_Disabled"
+ )
# remove old properties
obj.setPropertyStatus("AV_re_1_Disabled", "-LockDynamic")
@@ -296,9 +381,10 @@ class ConstraintElectrostaticPotential(base_fempythonobject.BaseFemPythonObject)
obj.removeProperty("AV_im_2_Disabled")
obj.setPropertyStatus("AV_im_3_Disabled", "-LockDynamic")
obj.removeProperty("AV_im_3_Disabled")
+ obj.setPropertyStatus("AV_re_Disabled", "-LockDynamic")
+ obj.removeProperty("AV_re_Disabled")
obj.setPropertyStatus("AV_im_Disabled", "-LockDynamic")
obj.removeProperty("AV_im_Disabled")
-
except Base.PropertyError:
pass
@@ -310,3 +396,12 @@ class ConstraintElectrostaticPotential(base_fempythonobject.BaseFemPythonObject)
except Base.PropertyError:
pass
+
+ # rename ElectricInfinity
+ try:
+ obj.FarField = obj.getPropertyByName("ElectricInfinity")
+ obj.setPropertyStatus("ElectricInfinity", "-LockDynamic")
+ obj.removeProperty("ElectricInfinity")
+
+ except Base.PropertyError:
+ pass
diff --git a/src/Mod/Fem/femsolver/elmer/equations/electrostatic_writer.py b/src/Mod/Fem/femsolver/elmer/equations/electrostatic_writer.py
index 9f6b2999be..14d9389c55 100644
--- a/src/Mod/Fem/femsolver/elmer/equations/electrostatic_writer.py
+++ b/src/Mod/Fem/femsolver/elmer/equations/electrostatic_writer.py
@@ -138,7 +138,7 @@ class ESwriter:
self.write.boundary(name, "Electric Flux", flux_density)
if obj.PotentialConstant:
self.write.boundary(name, "Potential Constant", True)
- if obj.ElectricInfinity:
+ if obj.FarField:
self.write.boundary(name, "Electric Infinity BC", True)
if obj.ElectricForcecalculation:
self.write.boundary(name, "Calculate Electric Force", True)
diff --git a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py
index 2b0ffb93ab..17895cd139 100644
--- a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py
+++ b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic2D_writer.py
@@ -215,8 +215,24 @@ class MgDyn2Dwriter:
potential = obj.AV_im_3.getValueAs("Wb/m")
self.write.boundary(name, "Potential im", potential)
- if obj.ElectricInfinity:
+ elif obj.BoundaryCondition == "Neumann":
+ if obj.EnableMagnetic_1:
+ b_1 = obj.Magnetic_re_1.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 1", b_1)
+ if equation.IsHarmonic:
+ b_1 = obj.Magnetic_im_1.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 1 im", b_1)
+
+ if obj.EnableMagnetic_2:
+ b_2 = obj.Magnetic_re_2.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 2", b_2)
+ if equation.IsHarmonic:
+ b_2 = obj.Magnetic_im_2.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 2 im", b_2)
+
+ if obj.FarField:
self.write.boundary(name, "Infinity BC", True)
+
self.write.handled(obj)
def handleMagnetodynamic2DEquation(self, bodies, equation):
diff --git a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py
index cfb9095c95..95ba4e5aa7 100644
--- a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py
+++ b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py
@@ -282,38 +282,61 @@ class MgDynwriter:
self.write.boundary(name, "Electric Current Density Im", current_density)
if femutils.is_derived_from(obj, "Fem::ConstraintElectrostaticPotential"):
- if obj.EnableAV:
- potential = obj.AV_re.getValueAs("V")
- if equation.IsHarmonic:
- self.write.boundary(name, "AV re", potential)
- potential = obj.AV_im.getValueAs("V")
- self.write.boundary(name, "AV im", potential)
- else:
- self.write.boundary(name, "AV", potential)
- if obj.EnableAV_1:
- potential = obj.AV_re_1.getValueAs("Wb/m")
- if equation.IsHarmonic:
- self.write.boundary(name, "AV re {e} 1", potential)
- potential = obj.AV_im_1.getValueAs("Wb/m")
- self.write.boundary(name, "AV im {e} 1", potential)
- else:
- self.write.boundary(name, "AV {e} 1", potential)
- if obj.EnableAV_2:
- potential = obj.AV_re_2.getValueAs("Wb/m")
- if equation.IsHarmonic:
- self.write.boundary(name, "AV re {e} 2", potential)
- potential = obj.AV_im_2.getValueAs("Wb/m")
- self.write.boundary(name, "AV im {e} 2", potential)
- else:
- self.write.boundary(name, "AV {e} 2", potential)
- if obj.EnableAV_3:
- potential = obj.AV_re_3.getValueAs("Wb/m")
- if equation.IsHarmonic:
- self.write.boundary(name, "AV re {e} 3", potential)
- potential = obj.AV_im_3.getValueAs("Wb/m")
- self.write.boundary(name, "AV im {e} 3", potential)
- else:
- self.write.boundary(name, "AV {e} 3", potential)
+ if obj.BoundaryCondition == "Dirichlet":
+ if obj.EnableAV:
+ potential = obj.AV_re.getValueAs("V")
+ if equation.IsHarmonic:
+ self.write.boundary(name, "AV re", potential)
+ potential = obj.AV_im.getValueAs("V")
+ self.write.boundary(name, "AV im", potential)
+ else:
+ self.write.boundary(name, "AV", potential)
+ if obj.EnableAV_1:
+ potential = obj.AV_re_1.getValueAs("Wb/m")
+ if equation.IsHarmonic:
+ self.write.boundary(name, "AV re {e} 1", potential)
+ potential = obj.AV_im_1.getValueAs("Wb/m")
+ self.write.boundary(name, "AV im {e} 1", potential)
+ else:
+ self.write.boundary(name, "AV {e} 1", potential)
+ if obj.EnableAV_2:
+ potential = obj.AV_re_2.getValueAs("Wb/m")
+ if equation.IsHarmonic:
+ self.write.boundary(name, "AV re {e} 2", potential)
+ potential = obj.AV_im_2.getValueAs("Wb/m")
+ self.write.boundary(name, "AV im {e} 2", potential)
+ else:
+ self.write.boundary(name, "AV {e} 2", potential)
+ if obj.EnableAV_3:
+ potential = obj.AV_re_3.getValueAs("Wb/m")
+ if equation.IsHarmonic:
+ self.write.boundary(name, "AV re {e} 3", potential)
+ potential = obj.AV_im_3.getValueAs("Wb/m")
+ self.write.boundary(name, "AV im {e} 3", potential)
+ else:
+ self.write.boundary(name, "AV {e} 3", potential)
+
+ elif obj.BoundaryCondition == "Neumann":
+ if obj.EnableMagnetic_1:
+ b1 = obj.Magnetic_re_1.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 1", b1)
+ if equation.IsHarmonic:
+ b1 = obj.Magnetic_im_1.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density Im 1", b1)
+
+ if obj.EnableMagnetic_2:
+ b2 = obj.Magnetic_re_2.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 2", b2)
+ if equation.IsHarmonic:
+ b2 = obj.Magnetic_im_2.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density Im 2", b2)
+
+ if obj.EnableMagnetic_3:
+ b3 = obj.Magnetic_re_3.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density 3", b3)
+ if equation.IsHarmonic:
+ b3 = obj.Magnetic_im_3.getValueAs("Wb/m^2")
+ self.write.boundary(name, "Magnetic Flux Density Im 3", b3)
def handleMagnetodynamicBndConditions(self, equation):
# the current density can either be a body force or a boundary constraint
diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py
index e4d1b39c06..c6cbc3adfe 100644
--- a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py
+++ b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py
@@ -166,9 +166,9 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.potential_constant_changed,
)
QtCore.QObject.connect(
- self.parameter_widget.ckb_electric_infinity,
+ self.parameter_widget.ckb_far_field,
QtCore.SIGNAL("toggled(bool)"),
- self.electric_infinity_changed,
+ self.far_field_changed,
)
QtCore.QObject.connect(
self.parameter_widget.qsb_electric_flux_density,
@@ -176,6 +176,58 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.electric_flux_density_changed,
)
+ QtCore.QObject.connect(
+ self.parameter_widget.ckb_magnetic,
+ QtCore.SIGNAL("toggled(bool)"),
+ self.magnetic_enabled_changed,
+ )
+
+ QtCore.QObject.connect(
+ self.parameter_widget.ckb_magnetic_1,
+ QtCore.SIGNAL("toggled(bool)"),
+ self.magnetic_1_enabled_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.qsb_magnetic_re_1,
+ QtCore.SIGNAL("valueChanged(Base::Quantity)"),
+ self.magnetic_re_1_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.qsb_magnetic_im_1,
+ QtCore.SIGNAL("valueChanged(Base::Quantity)"),
+ self.magnetic_im_1_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.ckb_magnetic_2,
+ QtCore.SIGNAL("toggled(bool)"),
+ self.magnetic_2_enabled_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.qsb_magnetic_re_2,
+ QtCore.SIGNAL("valueChanged(Base::Quantity)"),
+ self.magnetic_re_2_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.qsb_magnetic_im_2,
+ QtCore.SIGNAL("valueChanged(Base::Quantity)"),
+ self.magnetic_im_2_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.ckb_magnetic_3,
+ QtCore.SIGNAL("toggled(bool)"),
+ self.magnetic_3_enabled_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.qsb_magnetic_re_3,
+ QtCore.SIGNAL("valueChanged(Base::Quantity)"),
+ self.magnetic_re_3_changed,
+ )
+ QtCore.QObject.connect(
+ self.parameter_widget.qsb_magnetic_im_3,
+ QtCore.SIGNAL("valueChanged(Base::Quantity)"),
+ self.magnetic_im_3_changed,
+ )
+
self.init_parameter_widget()
def open(self):
@@ -229,11 +281,22 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.boundary_condition = self.obj.BoundaryCondition
self.potential_constant = self.obj.PotentialConstant
- self.electric_infinity = self.obj.ElectricInfinity
+ self.far_field = self.obj.FarField
self.capacitance_body_enabled = self.obj.CapacitanceBodyEnabled
self.capacitance_body = self.obj.CapacitanceBody
self.electric_flux_density = self.obj.ElectricFluxDensity
+ self.magnetic_1_enabled = self.obj.EnableMagnetic_1
+ self.magnetic_2_enabled = self.obj.EnableMagnetic_2
+ self.magnetic_3_enabled = self.obj.EnableMagnetic_3
+
+ self.magnetic_re_1 = self.obj.Magnetic_re_1
+ self.magnetic_re_2 = self.obj.Magnetic_re_2
+ self.magnetic_re_3 = self.obj.Magnetic_re_3
+ self.magnetic_im_1 = self.obj.Magnetic_im_1
+ self.magnetic_im_2 = self.obj.Magnetic_im_2
+ self.magnetic_im_3 = self.obj.Magnetic_im_3
+
def _set_params(self):
self.obj.Potential = self.potential
self.obj.PotentialEnabled = self.potential_enabled
@@ -254,12 +317,23 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.obj.BoundaryCondition = self.boundary_condition
self.obj.PotentialConstant = self.potential_constant
- self.obj.ElectricInfinity = self.electric_infinity
+ self.obj.FarField = self.far_field
self.obj.CapacitanceBodyEnabled = self.capacitance_body_enabled
self.obj.CapacitanceBody = self.capacitance_body
self.obj.ElectricFluxDensity = self.electric_flux_density
+ self.obj.Magnetic_re_1 = self.magnetic_re_1
+ self.obj.Magnetic_re_2 = self.magnetic_re_2
+ self.obj.Magnetic_re_3 = self.magnetic_re_3
+ self.obj.Magnetic_im_1 = self.magnetic_im_1
+ self.obj.Magnetic_im_2 = self.magnetic_im_2
+ self.obj.Magnetic_im_3 = self.magnetic_im_3
+
+ self.obj.EnableMagnetic_1 = self.magnetic_1_enabled
+ self.obj.EnableMagnetic_2 = self.magnetic_2_enabled
+ self.obj.EnableMagnetic_3 = self.magnetic_3_enabled
+
def init_parameter_widget(self):
self._get_params()
@@ -305,7 +379,7 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.parameter_widget.ckb_potential_constant.setChecked(self.potential_constant)
- self.parameter_widget.ckb_electric_infinity.setChecked(self.electric_infinity)
+ self.parameter_widget.ckb_far_field.setChecked(self.far_field)
self.parameter_widget.ckb_capacitance_body.setChecked(self.capacitance_body_enabled)
self.parameter_widget.spb_capacitance_body.setProperty("value", self.capacitance_body)
@@ -320,6 +394,43 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.obj, "ElectricFluxDensity"
)
+ # magnetic flux density
+ self.parameter_widget.qsb_magnetic_re_1.setProperty("value", self.magnetic_re_1)
+ self.parameter_widget.qsb_magnetic_re_1.setEnabled(self.magnetic_1_enabled)
+ FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_magnetic_re_1).bind(
+ self.obj, "Magnetic_re_1"
+ )
+ self.parameter_widget.qsb_magnetic_re_2.setProperty("value", self.magnetic_re_2)
+ self.parameter_widget.qsb_magnetic_re_2.setEnabled(self.magnetic_2_enabled)
+ FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_magnetic_re_2).bind(
+ self.obj, "Magnetic_re_2"
+ )
+ self.parameter_widget.qsb_magnetic_re_3.setProperty("value", self.magnetic_re_3)
+ self.parameter_widget.qsb_magnetic_re_3.setEnabled(self.magnetic_3_enabled)
+ FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_magnetic_re_3).bind(
+ self.obj, "Magnetic_re_3"
+ )
+
+ self.parameter_widget.qsb_magnetic_im_1.setProperty("value", self.magnetic_im_1)
+ self.parameter_widget.qsb_magnetic_im_1.setEnabled(self.magnetic_1_enabled)
+ FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_magnetic_im_1).bind(
+ self.obj, "Magnetic_im_1"
+ )
+ self.parameter_widget.qsb_magnetic_im_2.setProperty("value", self.magnetic_im_2)
+ self.parameter_widget.qsb_magnetic_im_2.setEnabled(self.magnetic_2_enabled)
+ FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_magnetic_im_2).bind(
+ self.obj, "Magnetic_im_2"
+ )
+ self.parameter_widget.qsb_magnetic_im_3.setProperty("value", self.magnetic_im_3)
+ self.parameter_widget.qsb_magnetic_im_3.setEnabled(self.magnetic_3_enabled)
+ FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_magnetic_im_3).bind(
+ self.obj, "Magnetic_im_3"
+ )
+
+ self.parameter_widget.ckb_magnetic_1.setChecked(self.magnetic_1_enabled)
+ self.parameter_widget.ckb_magnetic_2.setChecked(self.magnetic_2_enabled)
+ self.parameter_widget.ckb_magnetic_3.setChecked(self.magnetic_3_enabled)
+
self.bc_enum = self.obj.getEnumerationsOfProperty("BoundaryCondition")
index = self.bc_enum.index(self.boundary_condition)
self.parameter_widget.cb_boundary_condition.addItems(self.bc_enum)
@@ -329,6 +440,10 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
if not (self.av_enabled or self.av_1_enabled or self.av_2_enabled or self.av_3_enabled):
self.parameter_widget.ckb_electromagnetic.setChecked(False)
+ # start with magnetic inputs hidden if no field is set
+ if not (self.magnetic_1_enabled or self.magnetic_2_enabled or self.magnetic_3_enabled):
+ self.parameter_widget.ckb_magnetic.setChecked(False)
+
def potential_changed(self, value):
self.potential = value
@@ -386,8 +501,8 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
def potential_constant_changed(self, value):
self.potential_constant = value
- def electric_infinity_changed(self, value):
- self.electric_infinity = value
+ def far_field_changed(self, value):
+ self.far_field = value
def capacitance_body_enabled_changed(self, value):
self.capacitance_body_enabled = value
@@ -408,3 +523,39 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
elif self.boundary_condition == "Neumann":
self.parameter_widget.gb_neumann.setEnabled(True)
self.parameter_widget.gb_dirichlet.setEnabled(False)
+
+ def magnetic_enabled_changed(self, value):
+ self.parameter_widget.gb_magnetic.setVisible(value)
+
+ def magnetic_1_enabled_changed(self, value):
+ self.magnetic_1_enabled = value
+ self.parameter_widget.qsb_magnetic_re_1.setEnabled(value)
+ self.parameter_widget.qsb_magnetic_im_1.setEnabled(value)
+
+ def magnetic_2_enabled_changed(self, value):
+ self.magnetic_2_enabled = value
+ self.parameter_widget.qsb_magnetic_re_2.setEnabled(value)
+ self.parameter_widget.qsb_magnetic_im_2.setEnabled(value)
+
+ def magnetic_3_enabled_changed(self, value):
+ self.magnetic_3_enabled = value
+ self.parameter_widget.qsb_magnetic_re_3.setEnabled(value)
+ self.parameter_widget.qsb_magnetic_im_3.setEnabled(value)
+
+ def magnetic_re_1_changed(self, value):
+ self.magnetic_re_1 = value
+
+ def magnetic_re_2_changed(self, value):
+ self.magnetic_re_2 = value
+
+ def magnetic_re_3_changed(self, value):
+ self.magnetic_re_3 = value
+
+ def magnetic_im_1_changed(self, value):
+ self.magnetic_im_1 = value
+
+ def magnetic_im_2_changed(self, value):
+ self.magnetic_im_2 = value
+
+ def magnetic_im_3_changed(self, value):
+ self.magnetic_im_3 = value