From 2731f7c4babcb38b6be4330aaf633bcb0f3712e0 Mon Sep 17 00:00:00 2001 From: Jonathan Bergh Date: Tue, 31 May 2022 12:48:17 +1200 Subject: [PATCH] Continue, add periodic partner selector and obj --- CfdCaseWriterFoam.py | 4 +++- CfdFluidBoundary.py | 2 ++ _TaskPanelCfdFluidBoundary.py | 14 +++++++++++++- core/gui/TaskPanelCfdFluidBoundary.ui | 12 +++++++++++- data/defaults/constant/polyMesh/_boundaryPatches | 10 ++++++++++ 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/CfdCaseWriterFoam.py b/CfdCaseWriterFoam.py index 68830950..ebb4221f 100644 --- a/CfdCaseWriterFoam.py +++ b/CfdCaseWriterFoam.py @@ -281,8 +281,8 @@ def processFluidProperties(self): def processBoundaryConditions(self): """ Compute any quantities required before case build """ - settings = self.settings # Copy keys so that we can delete while iterating + settings = self.settings bc_names = list(settings['boundaries'].keys()) for bc_name in bc_names: bc = settings['boundaries'][bc_name] @@ -310,6 +310,7 @@ def processBoundaryConditions(self): raise RuntimeError except (SystemError, RuntimeError): raise RuntimeError(str(bc['DirectionFace']) + " is not a valid, planar face.") + if settings['solver']['SolverName'] in ['simpleFoam', 'porousSimpleFoam', 'pimpleFoam', 'SRFSimpleFoam']: bc['KinematicPressure'] = bc['Pressure']/settings['fluidProperties'][0]['Density'] @@ -361,6 +362,7 @@ def processBoundaryConditions(self): if settings['boundaries'].get('defaultFaces'): raise ValueError("More than one default boundary defined") settings['boundaries']['defaultFaces'] = bc + if not settings['boundaries'].get('defaultFaces'): settings['boundaries']['defaultFaces'] = { 'BoundaryType': 'wall', diff --git a/CfdFluidBoundary.py b/CfdFluidBoundary.py index 338e3af9..98fa6737 100644 --- a/CfdFluidBoundary.py +++ b/CfdFluidBoundary.py @@ -334,6 +334,8 @@ def initProperties(self, obj): "Periodic", "Axis of rotational for rotational periodics") addObjectProperty(obj, 'PeriodicSeparationVector', FreeCAD.Vector(0, 0, 0), "App::PropertyPosition", "Periodic", "Separation vector for translational periodics") + addObjectProperty(obj, 'PeriodicPartner', '', "App::PropertyString", "Periodic", + "Partner patch for the current periodic") # Turbulence all_turb_specs = [] diff --git a/_TaskPanelCfdFluidBoundary.py b/_TaskPanelCfdFluidBoundary.py index 3f8f70a1..7f80afa9 100644 --- a/_TaskPanelCfdFluidBoundary.py +++ b/_TaskPanelCfdFluidBoundary.py @@ -29,7 +29,7 @@ import FreeCAD if FreeCAD.GuiUp: import FreeCADGui - from PySide import QtGui + from PySide import QtGui, QtCore from PySide.QtGui import QFormLayout import CfdTools from CfdTools import getQuantity, setQuantity, indexOrDefault, storeIfChanged @@ -116,6 +116,16 @@ def __init__(self, obj, physics_model, material_objs): self.form.buttonGroupPeriodic.setId(self.form.rb_rotational_periodic, 0) self.form.buttonGroupPeriodic.setId(self.form.rb_translational_periodic, 1) + boundary_patches = CfdTools.getCfdBoundaryGroup(self.analysis_obj) + periodic_patches = [] + for patch in boundary_patches: + if patch.BoundarySubType == 'cyclicAMI' and patch.Label != self.obj.Label: + periodic_patches.append(patch.Label) + + self.form.comboBoxPeriodicPartner.addItems(periodic_patches) + pi = self.form.comboBoxPeriodicPartner.findText(self.obj.PeriodicPartner, QtCore.Qt.MatchFixedString) + self.form.comboBoxPeriodicPartner.setCurrentIndex(pi) + self.form.rb_rotational_periodic.setChecked(self.obj.RotationalPeriodic) self.form.rb_translational_periodic.setChecked(not self.obj.RotationalPeriodic) setQuantity(self.form.input_corx, self.obj.PeriodicCentreOfRotation.x) @@ -447,6 +457,8 @@ def accept(self): self.form.input_sepz.property("quantity").Value) storeIfChanged(self.obj, 'PeriodicSeparationVector', separation_vector) + storeIfChanged(self.obj, 'PeriodicPartner', self.form.comboBoxPeriodicPartner.currentText()) + # Turbulence if self.turb_model in CfdFluidBoundary.TURBULENT_INLET_SPEC: turb_index = self.form.comboTurbulenceSpecification.currentIndex() diff --git a/core/gui/TaskPanelCfdFluidBoundary.ui b/core/gui/TaskPanelCfdFluidBoundary.ui index 9cb75bc8..05ff404d 100644 --- a/core/gui/TaskPanelCfdFluidBoundary.ui +++ b/core/gui/TaskPanelCfdFluidBoundary.ui @@ -1615,6 +1615,16 @@ + + + + Partner patch + + + + + + @@ -2109,7 +2119,7 @@ - + diff --git a/data/defaults/constant/polyMesh/_boundaryPatches b/data/defaults/constant/polyMesh/_boundaryPatches index 86977951..52a6f72d 100644 --- a/data/defaults/constant/polyMesh/_boundaryPatches +++ b/data/defaults/constant/polyMesh/_boundaryPatches @@ -22,6 +22,16 @@ { type cyclic; } +%:cyclicAMI + %(0%)_master + { + type patch; + } + + %(0%)_slave + { + type patch; + } %:empty %(0%) {