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