| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | __title__ = "FreeCAD FEM constraint electrostatic potential document object" |
| | __author__ = "Markus Hovorka, Bernd Hahnebach, Uwe Stöhr, Mario Passaglia" |
| | __url__ = "https://www.freecad.org" |
| |
|
| | |
| | |
| | |
| |
|
| | from FreeCAD import Base |
| |
|
| | from . import base_fempythonobject |
| |
|
| | _PropHelper = base_fempythonobject._PropHelper |
| |
|
| |
|
| | class ConstraintElectrostaticPotential(base_fempythonobject.BaseFemPythonObject): |
| |
|
| | Type = "Fem::ConstraintElectrostaticPotential" |
| |
|
| | def __init__(self, obj): |
| | super().__init__(obj) |
| |
|
| | for prop in self._get_properties(): |
| | prop.add_to_object(obj) |
| |
|
| | def _get_properties(self): |
| | prop = [] |
| |
|
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectricPotential", |
| | name="Potential", |
| | group="Parameter", |
| | doc="Electric Potential", |
| | value="1 V", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="PotentialEnabled", |
| | group="Parameter", |
| | doc="Enable electric potential", |
| | value=True, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectricPotential", |
| | name="AV_re", |
| | group="Electromagnetic Potential", |
| | doc="Real part of scalar potential", |
| | value="0 V", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectricPotential", |
| | name="AV_im", |
| | group="Electromagnetic Potential", |
| | doc="Imaginary part of scalar potential", |
| | value="0 V", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectromagneticPotential", |
| | name="AV_re_1", |
| | group="Electromagnetic Potential", |
| | doc="Real part of vector potential x-component", |
| | value="0 Wb/m", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectromagneticPotential", |
| | name="AV_re_2", |
| | group="Electromagnetic Potential", |
| | doc="Real part of vector potential y-component", |
| | value="0 Wb/m", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectromagneticPotential", |
| | name="AV_re_3", |
| | group="Electromagnetic Potential", |
| | doc="Real part of vector potential z-component", |
| | value="0 Wb/m", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectromagneticPotential", |
| | name="AV_im_1", |
| | group="Electromagnetic Potential", |
| | doc="Imaginary part of vector potential x-component", |
| | value="0 Wb/m", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectromagneticPotential", |
| | name="AV_im_2", |
| | group="Electromagnetic Potential", |
| | doc="Imaginary part of vector potential y-component", |
| | value="0 Wb/m", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyElectromagneticPotential", |
| | name="AV_im_3", |
| | group="Electromagnetic Potential", |
| | doc="Imaginary part of vector potential z-component", |
| | value="0 Wb/m", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertySurfaceChargeDensity", |
| | name="ElectricFluxDensity", |
| | group="Parameter", |
| | doc="Electric displacement field D.\n" |
| | + "For interfaces, it represents the difference\n" |
| | + "between the normal component in the two media", |
| | value="0 C/m^2", |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyEnumeration", |
| | name="BoundaryCondition", |
| | group="Parameter", |
| | doc="Set boundary condition type", |
| | value=["Dirichlet", "Neumann"], |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="EnableAV", |
| | group="Electromagnetic Potential", |
| | doc="Enable scalar potential boundary condition", |
| | value=False, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="EnableAV_1", |
| | group="Electromagnetic Potential", |
| | doc="Enable vector potential x-component boundary condition", |
| | value=False, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="EnableAV_2", |
| | group="Electromagnetic Potential", |
| | doc="Enable vector potential y-component boundary condition", |
| | value=False, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="EnableAV_3", |
| | group="Electromagnetic Potential", |
| | doc="Enable vector potential z-component boundary condition", |
| | value=False, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="PotentialConstant", |
| | group="Parameter", |
| | doc="", |
| | value=False, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="FarField", |
| | group="Parameter", |
| | doc="Far field approximation assuming spherical symmetry", |
| | value=False, |
| | ) |
| | ) |
| |
|
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="ElectricForcecalculation", |
| | group="Parameter", |
| | doc="Electric force calculation", |
| | value=False, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyInteger", |
| | name="CapacitanceBody", |
| | group="Parameter", |
| | doc="Capacitance body", |
| | value=1, |
| | ) |
| | ) |
| | prop.append( |
| | _PropHelper( |
| | type="App::PropertyBool", |
| | name="CapacitanceBodyEnabled", |
| | group="Parameter", |
| | doc="Capacitance body enabled", |
| | value=False, |
| | ) |
| | ) |
| |
|
| | 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): |
| | |
| | for prop in self._get_properties(): |
| | try: |
| | obj.getPropertyByName(prop.name) |
| | except Base.PropertyError: |
| | prop.add_to_object(obj) |
| |
|
| | |
| | if prop.name == "Potential": |
| | prop.handle_change_type( |
| | obj, |
| | old_type="App::PropertyFloat", |
| | convert_old_value=lambda x: "{} V".format(1e6 * x), |
| | ) |
| | |
| | if prop.name in ("AV_re_1", "AV_re_2", "AV_re_3", "AV_im_1", "AV_im_2", "AV_im_3"): |
| | prop.handle_change_type( |
| | obj, |
| | old_type="App::PropertyElectricPotential", |
| | convert_old_value=lambda x: "{} Wb/m".format(x.getValueAs("V").Value), |
| | ) |
| |
|
| | |
| | try: |
| | obj.EnableAV_1 = not obj.getPropertyByName( |
| | "AV_re_1_Disabled" |
| | ) or not obj.getPropertyByName("AV_im_1_Disabled") |
| | obj.EnableAV_2 = not obj.getPropertyByName( |
| | "AV_re_2_Disabled" |
| | ) or not obj.getPropertyByName("AV_im_2_Disabled") |
| | obj.EnableAV_3 = not obj.getPropertyByName( |
| | "AV_re_3_Disabled" |
| | ) or not obj.getPropertyByName("AV_im_3_Disabled") |
| | obj.EnableAV = not obj.getPropertyByName("AV_re_Disabled") or not obj.getPropertyByName( |
| | "AV_im_Disabled" |
| | ) |
| |
|
| | |
| | obj.setPropertyStatus("AV_re_1_Disabled", "-LockDynamic") |
| | obj.removeProperty("AV_re_1_Disabled") |
| | obj.setPropertyStatus("AV_re_2_Disabled", "-LockDynamic") |
| | obj.removeProperty("AV_re_2_Disabled") |
| | obj.setPropertyStatus("AV_re_3_Disabled", "-LockDynamic") |
| | obj.removeProperty("AV_re_3_Disabled") |
| | obj.setPropertyStatus("AV_im_1_Disabled", "-LockDynamic") |
| | obj.removeProperty("AV_im_1_Disabled") |
| | obj.setPropertyStatus("AV_im_2_Disabled", "-LockDynamic") |
| | 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 |
| |
|
| | |
| | try: |
| | obj.ElectricFluxDensity = obj.getPropertyByName("SurfaceChargeDensity") |
| | obj.setPropertyStatus("SurfaceChargeDensity", "-LockDynamic") |
| | obj.removeProperty("SurfaceChargeDensity") |
| |
|
| | except Base.PropertyError: |
| | pass |
| |
|
| | |
| | try: |
| | obj.FarField = obj.getPropertyByName("ElectricInfinity") |
| | obj.setPropertyStatus("ElectricInfinity", "-LockDynamic") |
| | obj.removeProperty("ElectricInfinity") |
| |
|
| | except Base.PropertyError: |
| | pass |
| |
|