diff --git a/CfdOF/Solve/CfdSolverFoam.py b/CfdOF/Solve/CfdSolverFoam.py
index 27a8515d..d1ac69bb 100644
--- a/CfdOF/Solve/CfdSolverFoam.py
+++ b/CfdOF/Solve/CfdSolverFoam.py
@@ -41,6 +41,7 @@
# Constants
START_FROM = ["startTime", "latestTime"]
+START_FROM_NAMES = ["Start time", "Latest time"]
def makeCfdSolverFoam(name="CfdSolver"):
diff --git a/CfdOF/Solve/TaskPanelCfdSolverControl.py b/CfdOF/Solve/TaskPanelCfdSolverControl.py
index 11ce89ff..4ef62627 100644
--- a/CfdOF/Solve/TaskPanelCfdSolverControl.py
+++ b/CfdOF/Solve/TaskPanelCfdSolverControl.py
@@ -31,6 +31,8 @@
import os.path
import time
from CfdOF.CfdConsoleProcess import CfdConsoleProcess
+from CfdOF.Solve import CfdSolverFoam
+from CfdOF.CfdTools import setQuantity, indexOrDefault, storeIfChanged
if FreeCAD.GuiUp:
import FreeCADGui
from PySide import QtCore
@@ -46,6 +48,7 @@ def __init__(self, solver_runner_obj):
self.form = FreeCADGui.PySideUic.loadUi(ui_path)
self.analysis_object = CfdTools.getActiveAnalysis()
+ self.physics_object = CfdTools.getPhysicsModel(self.analysis_object)
self.solver_runner = solver_runner_obj
self.solver_object = solver_runner_obj.solver
@@ -56,6 +59,16 @@ def __init__(self, solver_runner_obj):
self.solver_object.Proxy.solver_process = CfdConsoleProcess(finished_hook=self.solverFinished,
stdout_hook=self.gotOutputLines,
stderr_hook=self.gotErrorLines)
+ self.form.comboBoxStartFrom.addItems(CfdSolverFoam.START_FROM_NAMES)
+ if self.physics_object.Time == "Steady":
+ self.form.inputFieldEndTime.setVisible(False)
+ self.form.inputFieldWriteInterval.setVisible(False)
+ self.form.inputFieldTimeStep.setVisible(False)
+ self.form.labelTimeStep.setVisible(False)
+ else:
+ self.form.spinBoxEndTime.setVisible(False)
+ self.form.spinBoxWriteInterval.setVisible(False)
+
self.Timer = QtCore.QTimer()
self.Timer.setInterval(1000)
self.Timer.timeout.connect(self.updateText)
@@ -65,6 +78,12 @@ def __init__(self, solver_runner_obj):
self.working_dir = CfdTools.getOutputPath(self.analysis_object)
+ self.form.comboBoxStartFrom.setToolTip("Whether to start from 0 or from the latest time step")
+ self.form.inputFieldEndTime.setToolTip("The end time for the simulation")
+ self.form.spinBoxEndTime.setToolTip("The number of iterations for the simulation")
+ self.form.inputFieldWriteInterval.setToolTip("The time period between each write of the time step")
+ self.form.spinBoxWriteInterval.setToolTip("The iterations between each write of the time step")
+ self.form.inputFieldTimeStep.setToolTip("The maximum time step for the simulation (might decrease to maintaine the limits for CFnumber and maxCo ..etc)")
self.form.inputParallel.setToolTip("Whether to Solve the Case in Parallel")
self.form.inputParallelCores.setToolTip("Number of Parallel Cores to Use")
@@ -82,10 +101,28 @@ def __init__(self, solver_runner_obj):
self.Timer.start()
def load(self):
+ self.form.comboBoxStartFrom.setCurrentIndex(
+ indexOrDefault(CfdSolverFoam.START_FROM, self.solver_object.StartFrom, 0))
+ if self.physics_object.Time == "Steady":
+ self.form.spinBoxEndTime.setValue(self.solver_object.MaxIterations)
+ self.form.spinBoxWriteInterval.setValue(self.solver_object.SteadyWriteInterval)
+ else:
+ setQuantity(self.form.inputFieldEndTime, self.solver_object.EndTime)
+ setQuantity(self.form.inputFieldWriteInterval, self.solver_object.TransientWriteInterval)
+ setQuantity(self.form.inputFieldTimeStep, self.solver_object.TimeStep)
self.form.inputParallel.setChecked(self.solver_object.Parallel)
self.form.inputParallelCores.setValue(self.solver_object.ParallelCores)
def store(self):
+ storeIfChanged(self.solver_object, 'StartFrom',
+ CfdSolverFoam.START_FROM[self.form.comboBoxStartFrom.currentIndex()])
+ if self.physics_object.Time == "Steady":
+ CfdTools.storeIfChanged(self.solver_object, 'MaxIterations', self.form.spinBoxEndTime.value())
+ CfdTools.storeIfChanged(self.solver_object, 'SteadyWriteInterval', self.form.spinBoxWriteInterval.value())
+ else:
+ CfdTools.storeIfChanged(self.solver_object, 'EndTime', self.form.inputFieldEndTime.property("quantity").Value)
+ CfdTools.storeIfChanged(self.solver_object, 'TransientWriteInterval', self.form.inputFieldWriteInterval.property("quantity").Value)
+ CfdTools.storeIfChanged(self.solver_object, 'TimeStep', self.form.inputFieldTimeStep.property("quantity").Value)
CfdTools.storeIfChanged(self.solver_object, 'Parallel', self.form.inputParallel.isChecked())
CfdTools.storeIfChanged(self.solver_object, 'ParallelCores', self.form.inputParallelCores.value())
diff --git a/Gui/TaskPanelCfdSolverControl.ui b/Gui/TaskPanelCfdSolverControl.ui
index a44126b0..f24a9c98 100644
--- a/Gui/TaskPanelCfdSolverControl.ui
+++ b/Gui/TaskPanelCfdSolverControl.ui
@@ -35,6 +35,137 @@
8
-
+
+
+
+ 75
+ true
+
+
+
+ Time Parameters
+
+
+
+ -
+
+
+ Start from
+
+
+
+ -
+
+
+
+ -
+
+
+ End time
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 0
+
+
+ 1.000000000000000
+
+
+ s
+
+
+ 0
+
+
+
+ -
+
+
+ 1
+
+
+ 100000000
+
+
+
+ -
+
+
+ Write interval
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 0
+
+
+ 1.000000000000000
+
+
+ s
+
+
+ 0
+
+
+
+ -
+
+
+ 1
+
+
+ 100000000
+
+
+
+ -
+
+
+ Time step
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 0
+
+
+ 1.000000000000000
+
+
+ s
+
+
+ 0
+
+
+
+ -
@@ -47,7 +178,7 @@
- -
+
-
@@ -60,7 +191,7 @@
- -
+
-
QFrame::NoFrame
diff --git a/Translations/CfdOF_ar.qm b/Translations/CfdOF_ar.qm
index 62d9818f..d68c6630 100644
Binary files a/Translations/CfdOF_ar.qm and b/Translations/CfdOF_ar.qm differ
diff --git a/Translations/CfdOF_ar.ts b/Translations/CfdOF_ar.ts
index 6d428655..a2ef2091 100644
--- a/Translations/CfdOF_ar.ts
+++ b/Translations/CfdOF_ar.ts
@@ -2635,16 +2635,41 @@ Re-mesh case first?
- Solver Parameters
+ Time Parameters
+ اعدادات الزمن
+
+
+
+ Start from
+ ابدأ من
+
+
+
+ End time
+ زمن النهاية
+
+
+
+ Write interval
+ فترة الكتابة
+
+
+
+ Time step
+ القفزة الزمنية
+
+
+
+ solver Parameters
اعدادات المحلل
-
+
Solve in Parallel
تحليل على التوازي
-
+
Number of Parallel Cores
عدد الانوية على التوازي