Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CfdOF/Solve/CfdSolverFoam.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@

# Constants
START_FROM = ["startTime", "latestTime"]
START_FROM_NAMES = ["Start time", "Latest time"]


def makeCfdSolverFoam(name="CfdSolver"):
Expand Down
37 changes: 37 additions & 0 deletions CfdOF/Solve/TaskPanelCfdSolverControl.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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)
Expand All @@ -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")

Expand All @@ -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())

Expand Down
135 changes: 133 additions & 2 deletions Gui/TaskPanelCfdSolverControl.ui
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,137 @@
<number>8</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelTimeParameters">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Time Parameters</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="labelStartFrom">
<property name="text">
<string>Start from</string>
</property>
</widget>
</item>
<item row="1" column="2" colspan="2">
<widget class="QComboBox" name="comboBoxStartFrom">
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="labelEndTime">
<property name="text">
<string>End time</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="Gui::InputField" name="inputFieldEndTime">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">0</string>
</property>
<property name="singleStep" stdset="0">
<double>1.000000000000000</double>
</property>
<property name="unit" stdset="0">
<string notr="true">s</string>
</property>
<property name="format" stdset="0">
<number>0</number>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSpinBox" name="spinBoxEndTime">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>100000000</number>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="labelWriteInterval">
<property name="text">
<string>Write interval</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="Gui::InputField" name="inputFieldWriteInterval">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">0</string>
</property>
<property name="singleStep" stdset="0">
<double>1.000000000000000</double>
</property>
<property name="unit" stdset="0">
<string notr="true">s</string>
</property>
<property name="format" stdset="0">
<number>0</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="spinBoxWriteInterval">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>100000000</number>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="labelTimeStep">
<property name="text">
<string>Time step</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="Gui::InputField" name="inputFieldTimeStep">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">0</string>
</property>
<property name="singleStep" stdset="0">
<double>1.000000000000000</double>
</property>
<property name="unit" stdset="0">
<string notr="true">s</string>
</property>
<property name="format" stdset="0">
<number>0</number>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label">
<property name="font">
<font>
Expand All @@ -47,7 +178,7 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<item row="6" column="0" colspan="3">
<widget class="QCheckBox" name="inputParallel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
Expand All @@ -60,7 +191,7 @@
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<item row="7" column="0" colspan="2">
<widget class="QFrame" name="ParallelCoresFrame">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
Expand Down
Binary file modified Translations/CfdOF_ar.qm
Binary file not shown.
31 changes: 28 additions & 3 deletions Translations/CfdOF_ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2635,16 +2635,41 @@ Re-mesh case first?</source>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="46"/>
<source>Solver Parameters</source>
<source>Time Parameters</source>
<translation>اعدادات الزمن</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="53"/>
<source>Start from</source>
<translation>ابدأ من</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="64"/>
<source>End time</source>
<translation>زمن النهاية</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="103"/>
<source>Write interval</source>
<translation>فترة الكتابة</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="142"/>
<source>Time step</source>
<translation>القفزة الزمنية</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="177"/>
<source>solver Parameters</source>
<translation>اعدادات المحلل</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="59"/>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="190"/>
<source>Solve in Parallel</source>
<translation>تحليل على التوازي</translation>
</message>
<message>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="87"/>
<location filename="../Gui/TaskPanelCfdSolverControl.ui" line="218"/>
<source>Number of Parallel Cores</source>
<translation>عدد الانوية على التوازي</translation>
</message>
Expand Down