From 6b17e7561d646e9fd2abe11e1a1435749f31cdb4 Mon Sep 17 00:00:00 2001 From: luz paz Date: Tue, 2 Aug 2022 12:03:02 -0400 Subject: [PATCH 1/5] AddonManager: Fix source comment typos [skip ci] --- src/Mod/AddonManager/package_details.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/AddonManager/package_details.py b/src/Mod/AddonManager/package_details.py index f3f1f61c84..72f53e7240 100644 --- a/src/Mod/AddonManager/package_details.py +++ b/src/Mod/AddonManager/package_details.py @@ -168,7 +168,7 @@ class PackageDetails(QWidget): self.display_repo_status(self.repo.update_status) def display_repo_status(self, status): - """ Updates the contents of the widget to diplay the current install status of the widget. """ + """ Updates the contents of the widget to display the current install status of the widget. """ repo = self.repo self.set_change_branch_button_state() self.set_disable_button_state() @@ -597,7 +597,7 @@ class PackageDetails(QWidget): self.ui.progressBar.setValue(progress) def load_finished(self, load_succeeded: bool): - """ Once loading is complete, update the dispaly of the progress bar and loading widget. """ + """ Once loading is complete, update the display of the progress bar and loading widget. """ self.ui.loadingLabel.hide() self.ui.slowLoadLabel.hide() self.ui.webView.show() From 8a114eb79852016492dcf4bcef2fd3fd48fb59c4 Mon Sep 17 00:00:00 2001 From: Uwe Date: Wed, 3 Aug 2022 01:05:37 +0200 Subject: [PATCH 2/5] [Gui] QSint: missing piece to fix QGroupBox visibility - also the freecadscheme must be adapted (e.g. for PartDesign dialogs) - fixes now #6102 completely --- src/Gui/QSint/actionpanel/actionpanelscheme.cpp | 2 +- src/Gui/QSint/actionpanel/freecadscheme.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Gui/QSint/actionpanel/actionpanelscheme.cpp b/src/Gui/QSint/actionpanel/actionpanelscheme.cpp index 4ace47d0ad..ca75b260cc 100644 --- a/src/Gui/QSint/actionpanel/actionpanelscheme.cpp +++ b/src/Gui/QSint/actionpanel/actionpanelscheme.cpp @@ -90,7 +90,7 @@ const char* ActionPanelDefaultStyle = "color: #006600;" "}" - // set a QGroupBox to avoid that the OS styles it, see + // set a QGroupBox to avoid that the OS style is used, see // https://github.com/FreeCAD/FreeCAD/issues/6102 // the px values are taken from Behave-dark.qss, except the padding "QSint--ActionGroup QFrame[class='content'] QGroupBox {" diff --git a/src/Gui/QSint/actionpanel/freecadscheme.cpp b/src/Gui/QSint/actionpanel/freecadscheme.cpp index 09e756a060..e9da9e5917 100644 --- a/src/Gui/QSint/actionpanel/freecadscheme.cpp +++ b/src/Gui/QSint/actionpanel/freecadscheme.cpp @@ -93,6 +93,22 @@ const char* ActionPanelFreeCAD = "background-color: #ddeeff;" "color: #006600;" "}" + + // set a QGroupBox to avoid that the OS style is used, see + // https://github.com/FreeCAD/FreeCAD/issues/6102 + // the px values are taken from Behave-dark.qss, except the padding + "QSint--ActionGroup QFrame[class='content'] QGroupBox {" + "border: 1px solid #bbbbbb;" + "border-radius: 3px;" + "margin-top: 10px;" + "padding: 2px;" + "}" + // since we set a custom frame we also need to set the title + "QSint--ActionGroup QFrame[class='content'] QGroupBox::title {" + "padding-left: 3px;" + "top: -6px;" + "left: 12px;" + "}" ; const char* MinimumActionPanelFreeCAD = From a6288fdabe6d8943fd686605959ac246defaba57 Mon Sep 17 00:00:00 2001 From: Uwe Date: Wed, 3 Aug 2022 01:50:12 +0200 Subject: [PATCH 3/5] [FEM] Elmer: Flux: add missing settings - enable the disabled options. They work and are according to the Elmer manual. The user is free to use them or not and since they are all False by default, existing analyses won't be affected. - add two missing settings - for new equations, enable at least one calculation, otherwise nothing will happen when an inexperienced user uses the default --- src/Mod/Fem/femsolver/elmer/equations/flux.py | 17 +++++++++++++---- src/Mod/Fem/femsolver/elmer/writer.py | 7 +++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Mod/Fem/femsolver/elmer/equations/flux.py b/src/Mod/Fem/femsolver/elmer/equations/flux.py index 6984443131..17edbbc575 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/flux.py +++ b/src/Mod/Fem/femsolver/elmer/equations/flux.py @@ -45,19 +45,31 @@ class Proxy(linear.Proxy, equationbase.FluxProxy): def __init__(self, obj): super(Proxy, self).__init__(obj) + obj.addProperty( + "App::PropertyBool", + "DiscontinuousGalerkin", + "Flux", + "" + ) + obj.addProperty( + "App::PropertyBool", + "AverageWithinMaterials", + "Flux", + "" + ) obj.addProperty( "App::PropertyBool", "CalculateFlux", "Flux", "" ) + obj.CalculateFlux = True obj.addProperty( "App::PropertyString", "FluxVariable", "Flux", "Insert variable name for flux calculation" ) - """ obj.addProperty( "App::PropertyBool", "CalculateFluxAbs", @@ -70,14 +82,12 @@ class Proxy(linear.Proxy, equationbase.FluxProxy): "Flux", "Select calculation of magnitude of flux" ) - """ obj.addProperty( "App::PropertyBool", "CalculateGrad", "Flux", "Select calculation of gradient" ) - """ obj.addProperty( "App::PropertyBool", "CalculateGradAbs", @@ -96,7 +106,6 @@ class Proxy(linear.Proxy, equationbase.FluxProxy): "Flux", "Select calculation of positive magnitude" ) - """ obj.Priority = 5 diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index 02e8cd1c5c..1b43b108e7 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -536,8 +536,15 @@ class Writer(object): s["Equation"] = "Flux Solver" # equation.Name s["Procedure"] = sifio.FileAttr("FluxSolver/FluxSolver") s["Flux Variable"] = equation.FluxVariable + s["Discontinuous Galerkin"] = equation.DiscontinuousGalerkin + s["Average Within Materials"] = equation.AverageWithinMaterials s["Calculate Flux"] = equation.CalculateFlux + s["Calculate Flux Abs"] = equation.CalculateFluxAbs + s["Calculate Flux Magnitude"] = equation.CalculateFluxMagnitude s["Calculate Grad"] = equation.CalculateGrad + s["Calculate Grad Abs"] = equation.CalculateGradAbs + s["Calculate Grad Magnitude"] = equation.CalculateGradMagnitude + s["Enforce Positive Magnitude"] = equation.EnforcePositiveMagnitude return s def _handleElectricforce(self): From bbc21b336a2e14bdff53751371fcbc030e2b92ea Mon Sep 17 00:00:00 2001 From: Uwe Date: Wed, 3 Aug 2022 02:32:01 +0200 Subject: [PATCH 4/5] [FEM] Elmer: fix solver stabilize settings - according to https://www.nic.funet.fi/index/elmer/doc/ElmerModelsManual.pdf the stabilization methods are equation-specific and only available for some solvers This commits changes these settings according to the manual --- src/Mod/Fem/femsolver/elmer/equations/flow.py | 9 +++++++++ src/Mod/Fem/femsolver/elmer/equations/heat.py | 17 +++++++++++++++++ src/Mod/Fem/femsolver/elmer/equations/linear.py | 14 -------------- src/Mod/Fem/femsolver/elmer/writer.py | 8 +------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/Mod/Fem/femsolver/elmer/equations/flow.py b/src/Mod/Fem/femsolver/elmer/equations/flow.py index 2e9db83796..ae63df7ae4 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/flow.py +++ b/src/Mod/Fem/femsolver/elmer/equations/flow.py @@ -44,6 +44,15 @@ class Proxy(nonlinear.Proxy, equationbase.FlowProxy): def __init__(self, obj): super(Proxy, self).__init__(obj) + + obj.addProperty( + "App::PropertyBool", + "Stabilize", + "Flow", + "" + ) + obj.Stabilize = True + obj.Priority = 10 diff --git a/src/Mod/Fem/femsolver/elmer/equations/heat.py b/src/Mod/Fem/femsolver/elmer/equations/heat.py index 7775cf3a4a..4be7c27541 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/heat.py +++ b/src/Mod/Fem/femsolver/elmer/equations/heat.py @@ -44,6 +44,23 @@ class Proxy(nonlinear.Proxy, equationbase.HeatProxy): def __init__(self, obj): super(Proxy, self).__init__(obj) + + # according to the Elmer models manual Bubbles is by default True + # Stabilize is False + obj.addProperty( + "App::PropertyBool", + "Stabilize", + "Heat", + "" + ) + obj.addProperty( + "App::PropertyBool", + "Bubbles", + "Heat", + "" + ) + obj.Bubbles = True + obj.Priority = 20 diff --git a/src/Mod/Fem/femsolver/elmer/equations/linear.py b/src/Mod/Fem/femsolver/elmer/equations/linear.py index 40b937038e..f6e1fc523a 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/linear.py +++ b/src/Mod/Fem/femsolver/elmer/equations/linear.py @@ -126,20 +126,6 @@ class Proxy(equation.Proxy): ) # same as with LinearTolerance obj.setExpression('SteadyStateTolerance', "1e-5") - obj.addProperty( - "App::PropertyBool", - "Stabilize", - "Base", - "" - ) - obj.Stabilize = True - obj.addProperty( - "App::PropertyBool", - "Bubbles", - "Base", - "" - ) - obj.Bubbles = False class ViewProxy(equation.ViewProxy): diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index 1b43b108e7..3bb2ea6767 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -474,8 +474,6 @@ class Writer(object): s["Calculate Capacitance Matrix"] = equation.CalculateCapacitanceMatrix s["Displace mesh"] = False s["Exec Solver"] = "Always" - s["Stabilize"] = equation.Stabilize - s["Bubbles"] = equation.Bubbles s["Optimize Bandwidth"] = True return s @@ -585,7 +583,7 @@ class Writer(object): def _getElasticitySolver(self, equation): s = self._createLinearSolver(equation) - s["Equation"] = equation.Name + s["Equation"] = "Stress Solver" # equation.Name s["Procedure"] = sifio.FileAttr("StressSolve/StressSolver") s["Variable"] = self._getUniqueVarName("Displacement") s["Variable DOFs"] = 3 @@ -597,8 +595,6 @@ class Writer(object): s["Calculate Pangle"] = equation.CalculatePangle s["Displace mesh"] = False s["Exec Solver"] = "Always" - s["Stabilize"] = equation.Stabilize - s["Bubbles"] = equation.Bubbles s["Optimize Bandwidth"] = True return s @@ -771,11 +767,9 @@ class Writer(object): def _getFlowSolver(self, equation): s = self._createNonlinearSolver(equation) s["Equation"] = "Navier-Stokes" - # s["Equation"] = equation.Name s["Procedure"] = sifio.FileAttr("FlowSolve/FlowSolver") s["Exec Solver"] = "Always" s["Stabilize"] = equation.Stabilize - s["Bubbles"] = equation.Bubbles s["Optimize Bandwidth"] = True return s From 9bb9bb923c1cd3ac715b23f0e68f17a3931d56e2 Mon Sep 17 00:00:00 2001 From: Uwe Date: Wed, 3 Aug 2022 04:29:27 +0200 Subject: [PATCH 5/5] [FEM] Elmer: update .sif files - because of solver default settings change --- src/Mod/Fem/femtest/data/elmer/box_static_0_mm.sif | 4 +--- .../Fem/femtest/data/elmer/ccxcantilever_faceload_0_mm.sif | 4 +--- .../Fem/femtest/data/elmer/ccxcantilever_faceload_1_si.sif | 4 +--- .../Fem/femtest/data/elmer/ccxcantilever_nodeload_0_mm.sif | 4 +--- .../data/elmer/ccxcantilever_prescribeddisplacement_0_mm.sif | 4 +--- 5 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/Mod/Fem/femtest/data/elmer/box_static_0_mm.sif b/src/Mod/Fem/femtest/data/elmer/box_static_0_mm.sif index 61231489df..263c01bd8b 100644 --- a/src/Mod/Fem/femtest/data/elmer/box_static_0_mm.sif +++ b/src/Mod/Fem/femtest/data/elmer/box_static_0_mm.sif @@ -5,7 +5,6 @@ Header End Solver 1 - Bubbles = Logical False Calculate Pangle = Logical False Calculate Principal = Logical True Calculate Strains = Logical False @@ -13,7 +12,7 @@ Solver 1 Displace mesh = Logical False Eigen Analysis = Logical False Eigen System Values = Integer 5 - Equation = String "Elasticity" + Equation = String "Stress Solver" Exec Solver = String "Always" Linear System Abort Not Converged = Logical False Linear System Convergence Tolerance = Real 1e-08 @@ -25,7 +24,6 @@ Solver 1 Linear System Solver = String "Iterative" Optimize Bandwidth = Logical True Procedure = File "StressSolve" "StressSolver" - Stabilize = Logical True Steady State Convergence Tolerance = Real 1e-05 Variable = String "Displacement" Variable DOFs = Integer 3 diff --git a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_0_mm.sif b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_0_mm.sif index fbb76526c8..0cc5cf0e3b 100644 --- a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_0_mm.sif +++ b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_0_mm.sif @@ -5,7 +5,6 @@ Header End Solver 1 - Bubbles = Logical False Calculate Pangle = Logical False Calculate Principal = Logical True Calculate Strains = Logical False @@ -13,7 +12,7 @@ Solver 1 Displace mesh = Logical False Eigen Analysis = Logical False Eigen System Values = Integer 5 - Equation = String "Elasticity" + Equation = String "Stress Solver" Exec Solver = String "Always" Linear System Abort Not Converged = Logical False Linear System Convergence Tolerance = Real 1e-08 @@ -25,7 +24,6 @@ Solver 1 Linear System Solver = String "Iterative" Optimize Bandwidth = Logical True Procedure = File "StressSolve" "StressSolver" - Stabilize = Logical True Steady State Convergence Tolerance = Real 1e-05 Variable = String "Displacement" Variable DOFs = Integer 3 diff --git a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_1_si.sif b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_1_si.sif index 170a9b22dc..c239c40ff3 100644 --- a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_1_si.sif +++ b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_faceload_1_si.sif @@ -5,7 +5,6 @@ Header End Solver 1 - Bubbles = Logical False Calculate Pangle = Logical False Calculate Principal = Logical True Calculate Strains = Logical False @@ -13,7 +12,7 @@ Solver 1 Displace mesh = Logical False Eigen Analysis = Logical False Eigen System Values = Integer 5 - Equation = String "Elasticity" + Equation = String "Stress Solver" Exec Solver = String "Always" Linear System Abort Not Converged = Logical False Linear System Convergence Tolerance = Real 1e-08 @@ -25,7 +24,6 @@ Solver 1 Linear System Solver = String "Iterative" Optimize Bandwidth = Logical True Procedure = File "StressSolve" "StressSolver" - Stabilize = Logical True Steady State Convergence Tolerance = Real 1e-05 Variable = String "Displacement" Variable DOFs = Integer 3 diff --git a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_nodeload_0_mm.sif b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_nodeload_0_mm.sif index 2cb4d519a8..97ae9b0793 100644 --- a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_nodeload_0_mm.sif +++ b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_nodeload_0_mm.sif @@ -5,7 +5,6 @@ Header End Solver 1 - Bubbles = Logical False Calculate Pangle = Logical False Calculate Principal = Logical True Calculate Strains = Logical False @@ -13,7 +12,7 @@ Solver 1 Displace mesh = Logical False Eigen Analysis = Logical False Eigen System Values = Integer 5 - Equation = String "Elasticity" + Equation = String "Stress Solver" Exec Solver = String "Always" Linear System Abort Not Converged = Logical False Linear System Convergence Tolerance = Real 1e-08 @@ -25,7 +24,6 @@ Solver 1 Linear System Solver = String "Iterative" Optimize Bandwidth = Logical True Procedure = File "StressSolve" "StressSolver" - Stabilize = Logical True Steady State Convergence Tolerance = Real 1e-05 Variable = String "Displacement" Variable DOFs = Integer 3 diff --git a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_0_mm.sif b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_0_mm.sif index 59b26744df..89db7df193 100644 --- a/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_0_mm.sif +++ b/src/Mod/Fem/femtest/data/elmer/ccxcantilever_prescribeddisplacement_0_mm.sif @@ -5,7 +5,6 @@ Header End Solver 1 - Bubbles = Logical False Calculate Pangle = Logical False Calculate Principal = Logical True Calculate Strains = Logical False @@ -13,7 +12,7 @@ Solver 1 Displace mesh = Logical False Eigen Analysis = Logical False Eigen System Values = Integer 5 - Equation = String "Elasticity" + Equation = String "Stress Solver" Exec Solver = String "Always" Linear System Abort Not Converged = Logical False Linear System Convergence Tolerance = Real 1e-08 @@ -25,7 +24,6 @@ Solver 1 Linear System Solver = String "Iterative" Optimize Bandwidth = Logical True Procedure = File "StressSolve" "StressSolver" - Stabilize = Logical True Steady State Convergence Tolerance = Real 1e-05 Variable = String "Displacement" Variable DOFs = Integer 3