diff --git a/CHANGELOG.md b/CHANGELOG.md index 98b334c4..24faf7c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ Brought to you by the developers of the CfdOF FreeCAD OpenFOAM integration workbench. ## Release notes +## v1.16.0 +* Support added for passive scalar transport solution +* Added support for Detached Eddy Simulation (DES, DDES and IDDES) +* Auto-detection of changes requiring re-writing the case or re-meshing, and prompts to do so when necessary + ## v1.15.0 * Added dynamic mesh adaptation functionality * Added Reporting functions functionality diff --git a/README.md b/README.md index bc908f75..3fff66d4 100644 --- a/README.md +++ b/README.md @@ -20,19 +20,21 @@ www.openfoam.com, and owner of the OPENFOAM® and OpenCFD® trade marks * Incompressible, laminar flow (simpleFoam, pimpleFoam) * RANS turbulent flow supporting k-omega SST (incl. transition), k-epsilon, and Spalart-Allmaras models * LES turbulent flow supporting k-Equation, Smagorinsky and WALE (Wall bounded) models +* DES turbulent flow supporting k-omega SST and Spalart-Allmaras DES, DDES and IDDES variants * Incompressible free-surface flow (interFoam, multiphaseInterFoam) * Compressible buoyant flow (buoyantSimpleFoam, buoyantPimpleFoam) * High-speed compressible flow ([HiSA](https://hisa.gitlab.io)) * Porous regions and porous baffles * Basic material database * Flow initialisation with a potential solver +* Solution of arbitrary passive scalar transport functions #### Meshing * Cut-cell Cartesian meshing with boundary layers (cfMesh) * Cut-cell Cartesian meshing with baffles (snappyHexMesh) and implicit / explicit snapping * Tetrahedral meshing using Gmsh, including conversion to polyhedral dual mesh * Post-meshing check mesh * Support for dynamic mesh adaptation for supported solvers -#### Post processing and monitoring +#### Post-processing and monitoring * Postprocessing using Paraview * Basic support for force-based function objects (Forces, Force Coefficients) * Basic support for probes diff --git a/core/functionobjects/reporting/CfdReportingFunctions.py b/core/functionobjects/reporting/CfdReportingFunctions.py index 6c74fa3f..506cbe32 100644 --- a/core/functionobjects/reporting/CfdReportingFunctions.py +++ b/core/functionobjects/reporting/CfdReportingFunctions.py @@ -33,7 +33,7 @@ # Constants OBJECT_NAMES = ["Force", "ForceCoefficients", "Probes"] -OBJECT_DESCRIPTIONS = ["Calculate forces on patches", "Calculate force coefficients from patches", +OBJECT_DESCRIPTIONS = ["Calculate forces on patches", "Calculate force coefficients from patches", "Sample fields at specified locations"] # GUI @@ -198,7 +198,7 @@ def setEdit(self, vobj, mode): CfdTools.cfdErrorBox("Reporting function must have a parent analysis object") return False - import core.functionobjects.reporting.TaskPanelCfdReportingFunctions as TaskPanelCfdReportingFunctions + from core.functionobjects.reporting import TaskPanelCfdReportingFunctions as TaskPanelCfdReportingFunctions import importlib importlib.reload(TaskPanelCfdReportingFunctions) taskd = TaskPanelCfdReportingFunctions.TaskPanelCfdReportingFunctions(self.Object) diff --git a/core/functionobjects/scalartransport/ViewProviderCfdScalarTransportFunction.py b/core/functionobjects/scalartransport/ViewProviderCfdScalarTransportFunction.py index b0e55a74..3caa6a13 100644 --- a/core/functionobjects/scalartransport/ViewProviderCfdScalarTransportFunction.py +++ b/core/functionobjects/scalartransport/ViewProviderCfdScalarTransportFunction.py @@ -67,7 +67,7 @@ def setEdit(self, vobj, mode): CfdTools.cfdErrorBox("Scalar transport object must have a parent analysis object") return False - import core.functionobjects.scalartransport.TaskPanelCfdScalarTransportFunctions \ + from core.functionobjects.scalartransport import TaskPanelCfdScalarTransportFunctions \ as TaskPanelCfdScalarTransportFunctions import importlib importlib.reload(TaskPanelCfdScalarTransportFunctions) diff --git a/core/mesh/dynamic/TaskPanelCfdDynamicMeshRefinement.py b/core/mesh/dynamic/TaskPanelCfdDynamicMeshRefinement.py index f5db3fe0..5a7ea237 100644 --- a/core/mesh/dynamic/TaskPanelCfdDynamicMeshRefinement.py +++ b/core/mesh/dynamic/TaskPanelCfdDynamicMeshRefinement.py @@ -26,7 +26,7 @@ import FreeCAD import FreeCADGui from CfdTools import setQuantity, getQuantity, indexOrDefault -import core.mesh.dynamic.CfdDynamicMeshRefinement as CfdDynamicMeshRefinement +from core.mesh.dynamic import CfdDynamicMeshRefinement as CfdDynamicMeshRefinement class TaskPanelCfdDynamicMeshRefinement: diff --git a/data/defaults/system/_functions_DESRegions b/data/defaults/system/_functions_DESRegions index 17c76b9e..649e5385 100644 --- a/data/defaults/system/_functions_DESRegions +++ b/data/defaults/system/_functions_DESRegions @@ -1,4 +1,3 @@ - DESModelRegions1 { type DESModelRegions; diff --git a/data/defaults/system/_functions_scalarTransport b/data/defaults/system/_functions_scalarTransport index b8efe300..b0810534 100644 --- a/data/defaults/system/_functions_scalarTransport +++ b/data/defaults/system/_functions_scalarTransport @@ -38,4 +38,5 @@ } } } + %} diff --git a/data/defaults/system/controlDict b/data/defaults/system/controlDict index fe0e236c..78ac0500 100644 --- a/data/defaults/system/controlDict +++ b/data/defaults/system/controlDict @@ -77,12 +77,10 @@ functions %:True %[system/_functions_reporting%] %} - %{%(scalarTransportFunctionsEnabled%) %:True %[system/_functions_scalarTransport%] %} - %{%(physics/TurbulenceModel%) %:kOmegaSSTDES kOmegaSSTDDES kOmegaSSTIDDES SpalartAllmarasDES SpalartAllmarasDDES SpalartAllmarasIDDES %[system/_functions_DESRegions%] diff --git a/demos/Duct/04-screen.fcmacro b/demos/Duct/04-screen.fcmacro index 79219bf7..6e50e10d 100755 --- a/demos/Duct/04-screen.fcmacro +++ b/demos/Duct/04-screen.fcmacro @@ -11,7 +11,7 @@ import CfdMeshRefinement CfdMeshRefinement.makeCfdMeshRefinement(App.ActiveDocument.Fusion_Mesh) FreeCAD.ActiveDocument.MeshRefinement.RelativeLength = 0.5 FreeCAD.ActiveDocument.MeshRefinement.RefinementThickness = '0 mm' -FreeCAD.ActiveDocument.MeshRefinement.NumberLayers = 1 +FreeCAD.ActiveDocument.MeshRefinement.NumberLayers = 0 FreeCAD.ActiveDocument.MeshRefinement.ExpansionRatio = 1.2 FreeCAD.ActiveDocument.MeshRefinement.FirstLayerHeight = '0 mm' FreeCAD.ActiveDocument.MeshRefinement.RegionEdgeRefinement = 1.0 diff --git a/demos/UAV/02-firstAnalysis.fcmacro b/demos/UAV/02-firstAnalysis.fcmacro index 567c291d..dd5057c1 100755 --- a/demos/UAV/02-firstAnalysis.fcmacro +++ b/demos/UAV/02-firstAnalysis.fcmacro @@ -39,7 +39,7 @@ referenceList = FreeCAD.ActiveDocument.MeshRefinement.ShapeRefs = [ 'Face74', 'Face75', 'Face76'))] FreeCAD.ActiveDocument.MeshRefinement.RelativeLength = 0.25 FreeCAD.ActiveDocument.MeshRefinement.RefinementThickness = '100 mm' -FreeCAD.ActiveDocument.MeshRefinement.NumberLayers = 1 +FreeCAD.ActiveDocument.MeshRefinement.NumberLayers = 0 FreeCAD.ActiveDocument.MeshRefinement.ExpansionRatio = 1.2 FreeCAD.ActiveDocument.MeshRefinement.FirstLayerHeight = '0 mm' FreeCAD.ActiveDocument.MeshRefinement.RegionEdgeRefinement = 1.0 diff --git a/demos/UAV/03-refineMesh.fcmacro b/demos/UAV/03-refineMesh.fcmacro index 0d93cffc..a55cc84a 100755 --- a/demos/UAV/03-refineMesh.fcmacro +++ b/demos/UAV/03-refineMesh.fcmacro @@ -14,7 +14,7 @@ FreeCAD.ActiveDocument.MeshRefinement001.ShapeRefs = [ FreeCAD.ActiveDocument.MeshRefinement001.RelativeLength = 0.25 FreeCAD.ActiveDocument.MeshRefinement001.RefinementThickness = '0 mm' -FreeCAD.ActiveDocument.MeshRefinement001.NumberLayers = 1 +FreeCAD.ActiveDocument.MeshRefinement001.NumberLayers = 0 FreeCAD.ActiveDocument.MeshRefinement001.ExpansionRatio = 1.2 FreeCAD.ActiveDocument.MeshRefinement001.FirstLayerHeight = '0 mm' FreeCAD.ActiveDocument.MeshRefinement001.RegionEdgeRefinement = 1.0 @@ -36,7 +36,7 @@ FreeCAD.ActiveDocument.MeshRefinement002.ShapeRefs = [ 'Face31', 'Face32', 'Face45', 'Face46', 'Face47', 'Face48', 'Face49', 'Face50', 'Face51', 'Face52', 'Face53', 'Face75'))] FreeCAD.ActiveDocument.MeshRefinement002.RelativeLength = 0.02 FreeCAD.ActiveDocument.MeshRefinement002.RefinementThickness = '1 mm' -FreeCAD.ActiveDocument.MeshRefinement002.NumberLayers = 1 +FreeCAD.ActiveDocument.MeshRefinement002.NumberLayers = 0 FreeCAD.ActiveDocument.MeshRefinement002.ExpansionRatio = 1.2 FreeCAD.ActiveDocument.MeshRefinement002.FirstLayerHeight = '0 mm' FreeCAD.ActiveDocument.MeshRefinement002.RegionEdgeRefinement = 1.0 diff --git a/metadata.txt b/metadata.txt index dd2d844d..a8150fe4 100644 --- a/metadata.txt +++ b/metadata.txt @@ -8,7 +8,7 @@ description=Computational Fluid Dynamics (CFD) analysis based on OpenFOAM about=Simple workflow to get started with CFD analysis. Supports incompressible laminar and turbulent flow, basic multiphase flow, and cut-cell cartesian meshing -version=1.15.1 +version=1.16.1 tracker=https://forum.freecadweb.org/viewforum.php?f=37&sid=3d90858d2ff441bd10475a693b55643a repository=https://gitlab.com/opensimproject/cfdof license=LGPL diff --git a/package.xml b/package.xml index 48ede1c2..4b10ada1 100644 --- a/package.xml +++ b/package.xml @@ -2,7 +2,7 @@ CfdOF Computational Fluid Dynamics (CFD) for FreeCAD based on OpenFOAM - 1.15.1 + 1.16.1 Oliver Oxtoby LGPL-2 https://gitlab.com/opensimproject/CfdOF diff --git a/testFiles/cases/LESStep/case/constant/turbulenceProperties b/testFiles/cases/LESStep/case/constant/turbulenceProperties index 2e260e2c..ace2a7ca 100644 --- a/testFiles/cases/LESStep/case/constant/turbulenceProperties +++ b/testFiles/cases/LESStep/case/constant/turbulenceProperties @@ -85,5 +85,4 @@ LES maxDeltaRatio 1.1; } - } diff --git a/testFiles/cases/Projectile/meshCase/system/meshDict b/testFiles/cases/Projectile/meshCase/system/meshDict index d57c1a7f..82b235ad 100644 --- a/testFiles/cases/Projectile/meshCase/system/meshDict +++ b/testFiles/cases/Projectile/meshCase/system/meshDict @@ -23,25 +23,25 @@ objectRefinements { MeshRefinement002 { - cellSize 0.00675; + additionalRefinementLevels 6; type insideSurface; closedSurfaceFile "constant/triSurface/MeshRefinement002.stl"; } MeshRefinement003 { - cellSize 0.0135; + additionalRefinementLevels 5; type insideSurface; closedSurfaceFile "constant/triSurface/MeshRefinement003.stl"; } MeshRefinement004 { - cellSize 0.027; + additionalRefinementLevels 4; type insideSurface; closedSurfaceFile "constant/triSurface/MeshRefinement004.stl"; } MeshRefinement005 { - cellSize 0.027; + additionalRefinementLevels 4; type insideSurface; closedSurfaceFile "constant/triSurface/MeshRefinement005.stl"; } @@ -51,13 +51,13 @@ surfaceMeshRefinement { MeshRefinement { - cellSize 0.003375; + additionalRefinementLevels 7; surfaceFile "constant/triSurface/MeshRefinement.stl"; refinementThickness 0.005; } MeshRefinement001 { - cellSize 0.001575; + additionalRefinementLevels 8; surfaceFile "constant/triSurface/MeshRefinement001.stl"; refinementThickness 0.005; } diff --git a/testFiles/cases/UAV/meshCase/system/meshDict b/testFiles/cases/UAV/meshCase/system/meshDict index 02b58d2d..a79ffee9 100644 --- a/testFiles/cases/UAV/meshCase/system/meshDict +++ b/testFiles/cases/UAV/meshCase/system/meshDict @@ -23,7 +23,7 @@ objectRefinements { MeshRefinement001 { - cellSize 0.025; + additionalRefinementLevels 2; type insideSurface; closedSurfaceFile "constant/triSurface/MeshRefinement001.stl"; } @@ -33,13 +33,13 @@ surfaceMeshRefinement { MeshRefinement { - cellSize 0.002; + additionalRefinementLevels 6; surfaceFile "constant/triSurface/MeshRefinement.stl"; refinementThickness 0.001; } MeshRefinement002 { - cellSize 0.002; + additionalRefinementLevels 6; surfaceFile "constant/triSurface/MeshRefinement002.stl"; refinementThickness 0.001; } diff --git a/testFiles/cases/ViscousTubeBundle/meshCase/system/meshDict b/testFiles/cases/ViscousTubeBundle/meshCase/system/meshDict index 07e95e83..b9d6f27c 100644 --- a/testFiles/cases/ViscousTubeBundle/meshCase/system/meshDict +++ b/testFiles/cases/ViscousTubeBundle/meshCase/system/meshDict @@ -24,7 +24,7 @@ surfaceMeshRefinement { MeshRefinement { - cellSize 0.005; + additionalRefinementLevels 1; surfaceFile "constant/triSurface/MeshRefinement.stl"; refinementThickness 0.005; }