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%)
{