View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002685 | OpenFOAM | Patch | public | 2017-09-03 19:37 | 2017-09-09 23:03 |
Reporter | wyldckat | Assigned To | henry | ||
Priority | low | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | dev | ||||
Fixed in Version | dev | ||||
Summary | 0002685: createPatch will always dump 'cyclic' matches to '.obj' files | ||||
Description | I stumbled on this issue sometime ago at work, with cases that had several cyclic patches that were being created with 'createPatch'. The '.obj' files with the cyclic matches were always dumped, without any option to not dump them to disk, unless I hacked into the source code. But the really annoying part is that it dumps the '.obj' files into the directory from which the application was launched from... because the scripting was done outside of the case folder and therefore the option '-case' was being used, hence _contaminating_ the folder from which the application was launched :( Attached is a proposition to at least add an obligatory option to 'createPatch' to not dump these files by default. But it still leaves open the need to assign a default folder within the case structure for these kinds of files; I don't know if this was a decision by design (the user can choose by running from within the dumping folder) or this was left open to be decided in the future. Therefore, attached are the following files: - 'proposition_v1.patch' provides an easy was to inspect the changes online. - 'proposition_v1.tar.gz' provides the following modified/new files: - 'applications/utilities/mesh/manipulation/createPatch/createPatch.C' - has a new obligatory switch 'dumpCyclicMatches' and it's used whenever the function 'dumpCyclicMatch' is called. - 'applications/utilities/mesh/manipulation/createPatch/createPatchDict' - was updated to have the new option 'dumpCyclicMatches', it's set to false by default and has a comment indicating what it's for. - All 'createPatchDict' files have been updated with the new obligatory option 'dumpCyclicMatches' in the 'tutorials' folder. - 'tutorials/incompressible/pimpleFoam/laminar/planarCouette' - a new tutorial case was added, based on the one from 'planarPoiseuille' on the same parent directory, but using a modified mesh from 'icoFoam/cavity/cavity'. - This tutorial case is based on the principle described at https://en.wikipedia.org/wiki/Couette_flow - The main objective of this tutorial was to test if the new option was working with 'createPatchDict', because all other tutorial cases have their cyclics created by the meshers or are created as cyclicAMI, which are not dumped to '.obj' by 'createPatchDict'. - It's configured to run only 25 seconds instead of 1000 (= 0.1*0.1/1e-5 = h^2/nu <- this is the expected time needed to reach steady-state), so that is left to the end-user to perform any validation and experimentation. In addition, several example settings were left in 'transportProperties' were left in it for the end-user to test, but perhaps those should be taken out due to maintenance? - I haven't created any validation for this tutorial, since I didn't know if this was necessary. | ||||
Tags | No tags attached. | ||||
|
proposition_v1.patch (32,586 bytes)
diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatch.C b/applications/utilities/mesh/manipulation/createPatch/createPatch.C index f240270..a64fc1f 100644 --- a/applications/utilities/mesh/manipulation/createPatch/createPatch.C +++ b/applications/utilities/mesh/manipulation/createPatch/createPatch.C @@ -532,6 +532,9 @@ int main(int argc, char *argv[]) // Whether to synchronise points const Switch pointSync(dict.lookup("pointSync")); + // Whether to dump cyclic matches to .OBJ files + const Switch dumpCyclicMatches(dict.lookup("dumpCyclicMatches")); + const polyBoundaryMesh& patches = mesh.boundaryMesh(); @@ -539,7 +542,10 @@ int main(int argc, char *argv[]) patches.checkParallelSync(true); - dumpCyclicMatch("initial_", mesh); + if(dumpCyclicMatches) + { + dumpCyclicMatch("initial_", mesh); + } // Read patch construct info from dictionary PtrList<dictionary> patchSources(dict.lookup("patches")); @@ -758,7 +764,10 @@ int main(int argc, char *argv[]) autoPtr<mapPolyMesh> map = meshMod.changeMesh(mesh, true); mesh.movePoints(map().preMotionPoints()); - dumpCyclicMatch("coupled_", mesh); + if(dumpCyclicMatches) + { + dumpCyclicMatch("coupled_", mesh); + } // Synchronise points. if (!pointSync) @@ -869,7 +878,10 @@ int main(int argc, char *argv[]) filterPatches(mesh, addedPatchNames); - dumpCyclicMatch("final_", mesh); + if(dumpCyclicMatches) + { + dumpCyclicMatch("final_", mesh); + } // Set the precision of the points data to 10 diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatchDict b/applications/utilities/mesh/manipulation/createPatch/createPatchDict index 62e6cf6..66262a0 100644 --- a/applications/utilities/mesh/manipulation/createPatch/createPatchDict +++ b/applications/utilities/mesh/manipulation/createPatch/createPatchDict @@ -44,6 +44,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/createPatchDict b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/createPatchDict index 8fb65d5..aeec10a 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/createPatchDict @@ -17,6 +17,8 @@ FoamFile pointSync false; +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict index 09a0c7f..1792b00 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict @@ -12,12 +12,15 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // matchTolerance 1E-3; pointSync false; +dumpCyclicMatches false; + patches ( { diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict index deb7202..bb9da7c 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict index d8182f3..ece679f 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict index d8182f3..ece679f 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict index d83f0bc..a34dafb 100644 --- a/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict +++ b/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict index 137b9a2..bb79d8f 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict @@ -14,8 +14,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + pointSync false; +dumpCyclicMatches false; + patches ( { diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict index 2a4e08a..3be3ff9 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict +++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict @@ -12,10 +12,13 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // pointSync false; +dumpCyclicMatches false; + patches ( { diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/U b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/U new file mode 100644 index 0000000..d76d835 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/U @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + movingWall + { + type fixedValue; + value uniform (1 0 0); + } + + bottomWall + { + type noSlip; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/p b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/p new file mode 100644 index 0000000..604b78e --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/p @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + bottomWall + { + type zeroGradient; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/sigma b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/sigma new file mode 100644 index 0000000..17f8635 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/sigma @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volSymmTensorField; + object R; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform (0 0 0 0 0 0); + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + bottomWall + { + type zeroGradient; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allclean b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allclean new file mode 100755 index 0000000..bf98fa6 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allclean @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase + +# Delete OBJ files that are created by createPatch, +# when 'dumpCyclicMatches' set to true. +rm -f $objFiles > /dev/null 2>&1 + +#------------------------------------------------------------------------------ diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allrun b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allrun new file mode 100755 index 0000000..916e0ba --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allrun @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh + +runApplication createPatch -overwrite + +runApplication $(getApplication) + +#------------------------------------------------------------------------------ diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/transportProperties b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/transportProperties new file mode 100644 index 0000000..2a62bb7 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/transportProperties @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu [0 2 -1 0 0 0 0] 1.5e-05; + +BirdCarreauCoeffs +{ + nu0 [0 2 -1 0 0 0 0] 1e-03; + nuInf [0 2 -1 0 0 0 0] 1e-05; + k [0 0 1 0 0 0 0] 1; + n [0 0 0 0 0 0 0] 0.5; +} + +CrossPowerLawCoeffs +{ + nu0 [0 2 -1 0 0 0 0] 1e-03; + nuInf [0 2 -1 0 0 0 0] 1e-05; + m [0 0 1 0 0 0 0] 1; + n [0 0 0 0 0 0 0] 0.5; +} + +powerLawCoeffs +{ + nuMax [0 2 -1 0 0 0 0] 1e-03; + nuMin [0 2 -1 0 0 0 0] 1e-05; + k [0 2 -1 0 0 0 0] 1e-05; + n [0 0 0 0 0 0 0] 1; +} + +HerschelBulkleyCoeffs +{ + nu0 [0 2 -1 0 0 0 0] 1e-03; + tau0 [0 2 -2 0 0 0 0] 1; + k [0 2 -1 0 0 0 0] 1e-05; + n [0 0 0 0 0 0 0] 1; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/turbulenceProperties b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/turbulenceProperties new file mode 100644 index 0000000..e7cf615 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/turbulenceProperties @@ -0,0 +1,32 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +laminar +{ + laminarModel Maxwell; + + MaxwellCoeffs + { + nuM 1; + lambda 5; + } + + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/blockMeshDict b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/blockMeshDict new file mode 100644 index 0000000..f96ec72 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/blockMeshDict @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +vertices +( + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + (0 0 0.1) + (1 0 0.1) + (1 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + movingWall + { + type wall; + faces + ( + (3 7 6 2) + ); + } + bottomWall + { + type wall; + faces + ( + (1 5 4 0) + ); + } + left + { + type wall; + faces + ( + (0 4 7 3) + ); + } + right + { + type wall; + faces + ( + (2 6 5 1) + ); + } + frontAndBack + { + type empty; + faces + ( + (0 3 2 1) + (4 5 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/controlDict b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/controlDict new file mode 100644 index 0000000..7d6ef2a --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/controlDict @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application pimpleFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 25; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 0.5; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/createPatchDict b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/createPatchDict new file mode 100644 index 0000000..c2b99fc --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/createPatchDict @@ -0,0 +1,96 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object createPatchDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// This application/dictionary controls: +// - optional: create new patches from boundary faces (either given as +// a set of patches or as a faceSet) +// - always: order faces on coupled patches such that they are opposite. This +// is done for all coupled faces, not just for any patches created. +// - optional: synchronise points on coupled patches. +// - always: remove zero-sized (non-coupled) patches (that were not added) + +// 1. Create cyclic: +// - specify where the faces should come from +// - specify the type of cyclic. If a rotational specify the rotationAxis +// and centre to make matching easier +// - always create both halves in one invocation with correct 'neighbourPatch' +// setting. +// - optionally pointSync true to guarantee points to line up. + +// 2. Correct incorrect cyclic: +// This will usually fail upon loading: +// "face 0 area does not match neighbour 2 by 0.0100005%" +// " -- possible face ordering problem." +// - in polyMesh/boundary file: +// - loosen matchTolerance of all cyclics to get case to load +// - or change patch type from 'cyclic' to 'patch' +// and regenerate cyclic as above + +// Do a synchronisation of coupled points after creation of any patches. +// Note: this does not work with points that are on multiple coupled patches +// with transformations (i.e. cyclics). +pointSync true; + +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + +// Patches to create. +patches +( + { + // Name of new patch + name cyc_half0; + + // Dictionary to construct new patch from + patchInfo + { + type cyclic; + neighbourPatch cyc_half1; + } + + // How to construct: either from 'patches' or 'set' + constructFrom patches; + + // If constructFrom = patches : names of patches. Wildcards allowed. + patches (left); + + // If constructFrom = set : name of faceSet + set f0; + } + { + // Name of new patch + name cyc_half1; + + // Dictionary to construct new patch from + patchInfo + { + type cyclic; + neighbourPatch cyc_half0; + } + + // How to construct: either from 'patches' or 'set' + constructFrom patches; + + // If constructFrom = patches : names of patches. Wildcards allowed. + patches (right); + + // If constructFrom = set : name of faceSet + set f0; + } +); + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSchemes b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSchemes new file mode 100644 index 0000000..c7802ef --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSchemes @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default backward; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss linearUpwind grad(U); + div(phi,sigma) Gauss vanAlbada; + + div(sigma) Gauss linear; + div((nu*dev2(T(grad(U))))) Gauss linear; + div((nuM*grad(U))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSolution b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSolution new file mode 100644 index 0000000..c82c0fb --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSolution @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + smoother DIC; + tolerance 1e-6; + relTol 0.05; + } + + "(U|sigma)" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0.1; + } + + pFinal + { + $p; + relTol 0; + } + + "(U|sigma)Final" + { + $U; + relTol 0; + } +} + +PIMPLE +{ + momentumPredictor off; + nOuterCorrectors 15; + nCorrectors 3; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; + turbOnFinalIterOnly no; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict index 7270ff3..79c71cb 100644 --- a/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patchInfo ( diff --git a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict index cbfab2f..d1bf7cf 100644 --- a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict index c919a48..cda56e8 100644 --- a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict index cbfab2f..d1bf7cf 100644 --- a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict index c919a48..cda56e8 100644 --- a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict index 5aafd9a..31f6b4b 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict index d83f0bc..a34dafb 100644 --- a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict +++ b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( diff --git a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict index fb68e22..5e7f869 100644 --- a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict +++ b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Dump cyclic matches into .obj format +dumpCyclicMatches false; + // Patches to create. patches ( |
|
|
|
> Attached is a proposition to at least add an obligatory option to 'createPatch' to not dump these files by default. Why make the option obligatory? Wouldn't it be more convenient if it is not obligatory and defaults to false? |
|
One minor point: I think it would be more consistent with the rest of OpeFOAM if the option is named "writeCyclicMatch"; dump is not used often to specify the writing of files. |
|
I was in doubt regarding making it optional or not. I ended up making it obligatory for the users who do expect the obj files to be created and then report this as a bug when they don't find the reason as to why it stopped working as it used to. If you prefer that this is made optional, I can revise the proposition later tonight. |
|
> I think it would be more consistent with the rest of OpeFOAM if the option is named "writeCyclicMatch" OK, I'll also change this. I had simply used the same name as the function that is in 'createPatch'. |
|
I think that given you are making the writing of the obj files optional it should default to false as they are indeed optional and not the principle purpose of the utility. > I had simply used the same name as the function that is in 'createPatch'. OK your decision makes sense but the use of the name "dump" for the write function and option is inconsistent with the rest of OpenFOAM and I think both should be changed. |
|
proposition_v2.patch (32,489 bytes)
diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatch.C b/applications/utilities/mesh/manipulation/createPatch/createPatch.C index f240270..15107b5 100644 --- a/applications/utilities/mesh/manipulation/createPatch/createPatch.C +++ b/applications/utilities/mesh/manipulation/createPatch/createPatch.C @@ -532,6 +532,12 @@ int main(int argc, char *argv[]) // Whether to synchronise points const Switch pointSync(dict.lookup("pointSync")); + // Whether to dump cyclic matches to .OBJ files + const Switch writeCyclicMatch + ( + dict.lookupOrDefault("writeCyclicMatch", false) + ); + const polyBoundaryMesh& patches = mesh.boundaryMesh(); @@ -539,7 +545,10 @@ int main(int argc, char *argv[]) patches.checkParallelSync(true); - dumpCyclicMatch("initial_", mesh); + if(writeCyclicMatch) + { + dumpCyclicMatch("initial_", mesh); + } // Read patch construct info from dictionary PtrList<dictionary> patchSources(dict.lookup("patches")); @@ -758,7 +767,10 @@ int main(int argc, char *argv[]) autoPtr<mapPolyMesh> map = meshMod.changeMesh(mesh, true); mesh.movePoints(map().preMotionPoints()); - dumpCyclicMatch("coupled_", mesh); + if(writeCyclicMatch) + { + dumpCyclicMatch("coupled_", mesh); + } // Synchronise points. if (!pointSync) @@ -869,7 +881,10 @@ int main(int argc, char *argv[]) filterPatches(mesh, addedPatchNames); - dumpCyclicMatch("final_", mesh); + if(writeCyclicMatch) + { + dumpCyclicMatch("final_", mesh); + } // Set the precision of the points data to 10 diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatchDict b/applications/utilities/mesh/manipulation/createPatch/createPatchDict index 62e6cf6..e60471d 100644 --- a/applications/utilities/mesh/manipulation/createPatch/createPatchDict +++ b/applications/utilities/mesh/manipulation/createPatch/createPatchDict @@ -44,6 +44,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict index 09a0c7f..8124147 100644 --- a/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/flameSpreadWaterSuppressionPanel/system/filmRegion/createPatchDict @@ -12,9 +12,8 @@ FoamFile class dictionary; object createPatchDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -matchTolerance 1E-3; +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // pointSync false; diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict index deb7202..bba4dc2 100644 --- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict index d8182f3..ac9a87a 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire2D/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict index d8182f3..ac9a87a 100644 --- a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict +++ b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict index d83f0bc..c0a3886 100644 --- a/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict +++ b/tutorials/incompressible/pimpleDyMFoam/propeller/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict index 137b9a2..a8b9e06 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict @@ -14,6 +14,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + pointSync false; patches diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict index 2a4e08a..7b83a63 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict +++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // pointSync false; diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/U b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/U new file mode 100644 index 0000000..d76d835 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/U @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + movingWall + { + type fixedValue; + value uniform (1 0 0); + } + + bottomWall + { + type noSlip; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/p b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/p new file mode 100644 index 0000000..604b78e --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/p @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + bottomWall + { + type zeroGradient; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/sigma b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/sigma new file mode 100644 index 0000000..17f8635 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/0/sigma @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volSymmTensorField; + object R; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform (0 0 0 0 0 0); + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + bottomWall + { + type zeroGradient; + } + + #includeEtc "caseDicts/setConstraintTypes" +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allclean b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allclean new file mode 100755 index 0000000..bf98fa6 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allclean @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase + +# Delete OBJ files that are created by createPatch, +# when 'dumpCyclicMatches' set to true. +rm -f $objFiles > /dev/null 2>&1 + +#------------------------------------------------------------------------------ diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allrun b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allrun new file mode 100755 index 0000000..916e0ba --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/Allrun @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh + +runApplication createPatch -overwrite + +runApplication $(getApplication) + +#------------------------------------------------------------------------------ diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/transportProperties b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/transportProperties new file mode 100644 index 0000000..2a62bb7 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/transportProperties @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu [0 2 -1 0 0 0 0] 1.5e-05; + +BirdCarreauCoeffs +{ + nu0 [0 2 -1 0 0 0 0] 1e-03; + nuInf [0 2 -1 0 0 0 0] 1e-05; + k [0 0 1 0 0 0 0] 1; + n [0 0 0 0 0 0 0] 0.5; +} + +CrossPowerLawCoeffs +{ + nu0 [0 2 -1 0 0 0 0] 1e-03; + nuInf [0 2 -1 0 0 0 0] 1e-05; + m [0 0 1 0 0 0 0] 1; + n [0 0 0 0 0 0 0] 0.5; +} + +powerLawCoeffs +{ + nuMax [0 2 -1 0 0 0 0] 1e-03; + nuMin [0 2 -1 0 0 0 0] 1e-05; + k [0 2 -1 0 0 0 0] 1e-05; + n [0 0 0 0 0 0 0] 1; +} + +HerschelBulkleyCoeffs +{ + nu0 [0 2 -1 0 0 0 0] 1e-03; + tau0 [0 2 -2 0 0 0 0] 1; + k [0 2 -1 0 0 0 0] 1e-05; + n [0 0 0 0 0 0 0] 1; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/turbulenceProperties b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/turbulenceProperties new file mode 100644 index 0000000..e7cf615 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/constant/turbulenceProperties @@ -0,0 +1,32 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +laminar +{ + laminarModel Maxwell; + + MaxwellCoeffs + { + nuM 1; + lambda 5; + } + + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/blockMeshDict b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/blockMeshDict new file mode 100644 index 0000000..f96ec72 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/blockMeshDict @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +vertices +( + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + (0 0 0.1) + (1 0 0.1) + (1 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + movingWall + { + type wall; + faces + ( + (3 7 6 2) + ); + } + bottomWall + { + type wall; + faces + ( + (1 5 4 0) + ); + } + left + { + type wall; + faces + ( + (0 4 7 3) + ); + } + right + { + type wall; + faces + ( + (2 6 5 1) + ); + } + frontAndBack + { + type empty; + faces + ( + (0 3 2 1) + (4 5 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/controlDict b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/controlDict new file mode 100644 index 0000000..7d6ef2a --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/controlDict @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application pimpleFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 25; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 0.5; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/createPatchDict b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/createPatchDict new file mode 100644 index 0000000..9082f3b --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/createPatchDict @@ -0,0 +1,96 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object createPatchDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// This application/dictionary controls: +// - optional: create new patches from boundary faces (either given as +// a set of patches or as a faceSet) +// - always: order faces on coupled patches such that they are opposite. This +// is done for all coupled faces, not just for any patches created. +// - optional: synchronise points on coupled patches. +// - always: remove zero-sized (non-coupled) patches (that were not added) + +// 1. Create cyclic: +// - specify where the faces should come from +// - specify the type of cyclic. If a rotational specify the rotationAxis +// and centre to make matching easier +// - always create both halves in one invocation with correct 'neighbourPatch' +// setting. +// - optionally pointSync true to guarantee points to line up. + +// 2. Correct incorrect cyclic: +// This will usually fail upon loading: +// "face 0 area does not match neighbour 2 by 0.0100005%" +// " -- possible face ordering problem." +// - in polyMesh/boundary file: +// - loosen matchTolerance of all cyclics to get case to load +// - or change patch type from 'cyclic' to 'patch' +// and regenerate cyclic as above + +// Do a synchronisation of coupled points after creation of any patches. +// Note: this does not work with points that are on multiple coupled patches +// with transformations (i.e. cyclics). +pointSync true; + +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + +// Patches to create. +patches +( + { + // Name of new patch + name cyc_half0; + + // Dictionary to construct new patch from + patchInfo + { + type cyclic; + neighbourPatch cyc_half1; + } + + // How to construct: either from 'patches' or 'set' + constructFrom patches; + + // If constructFrom = patches : names of patches. Wildcards allowed. + patches (left); + + // If constructFrom = set : name of faceSet + set f0; + } + { + // Name of new patch + name cyc_half1; + + // Dictionary to construct new patch from + patchInfo + { + type cyclic; + neighbourPatch cyc_half0; + } + + // How to construct: either from 'patches' or 'set' + constructFrom patches; + + // If constructFrom = patches : names of patches. Wildcards allowed. + patches (right); + + // If constructFrom = set : name of faceSet + set f0; + } +); + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSchemes b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSchemes new file mode 100644 index 0000000..c7802ef --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSchemes @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default backward; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss linearUpwind grad(U); + div(phi,sigma) Gauss vanAlbada; + + div(sigma) Gauss linear; + div((nu*dev2(T(grad(U))))) Gauss linear; + div((nuM*grad(U))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSolution b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSolution new file mode 100644 index 0000000..c82c0fb --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/laminar/planarCouette/system/fvSolution @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + smoother DIC; + tolerance 1e-6; + relTol 0.05; + } + + "(U|sigma)" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0.1; + } + + pFinal + { + $p; + relTol 0; + } + + "(U|sigma)Final" + { + $U; + relTol 0; + } +} + +PIMPLE +{ + momentumPredictor off; + nOuterCorrectors 15; + nCorrectors 3; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; + turbOnFinalIterOnly no; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict index 7270ff3..fd1f0a6 100644 --- a/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/cylinder/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patchInfo ( diff --git a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict index cbfab2f..5f540ab 100644 --- a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict index c919a48..29ec3b0 100644 --- a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/wallFilmRegion/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict index cbfab2f..5f540ab 100644 --- a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict index c919a48..29ec3b0 100644 --- a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict +++ b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/wallFilmRegion/createPatchDict @@ -45,6 +45,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict index 5aafd9a..63a90c4 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict index d83f0bc..c0a3886 100644 --- a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict +++ b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( diff --git a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict index fb68e22..70b752d 100644 --- a/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict +++ b/tutorials/multiphase/potentialFreeSurfaceDyMFoam/oscillatingBox/system/createPatchDict @@ -12,6 +12,7 @@ FoamFile class dictionary; object createPatchDict; } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Do a synchronisation of coupled points after creation of any patches. @@ -19,6 +20,9 @@ FoamFile // with transformations (i.e. cyclics). pointSync false; +// Optional: Write cyclic matches into .obj format; defaults to false. +// writeCyclicMatch false; + // Patches to create. patches ( |
|
|
|
OK, the week didn't go as I had planned... but here is the revised patch+tarball. Attached are the following files: - 'proposition_v2.patch' provides an easy was to inspect the changes online. - 'proposition_v2.tar.gz' provides the following modified/new files: - 'applications/utilities/mesh/manipulation/createPatch/createPatch.C' - has a new optional switch 'writeCyclicMatch' and it's used whenever the function 'dumpCyclicMatch' is called. - 'applications/utilities/mesh/manipulation/createPatch/createPatchDict' - was updated to have the new option 'writeCyclicMatch', it's set to false by default, it's commented out and has a comment indicating what it's for. - The majority of the 'createPatchDict' files have been updated with the new optional switch 'writeCyclicMatch' in the 'tutorials' folder, specifically only those files that have the original comments, now also have this new entry. - 'tutorials/incompressible/pimpleFoam/laminar/planarCouette' - a new tutorial case was added, based on the one from 'planarPoiseuille' on the same parent directory, but using a modified mesh from 'icoFoam/cavity/cavity'. - This tutorial case is based on the principle described at https://en.wikipedia.org/wiki/Couette_flow - The main objective of this tutorial was to test if the new option was working with 'createPatchDict', because all other tutorial cases have their cyclics created by the meshers or are created as cyclicAMI, which are not dumped to '.obj' by 'createPatchDict'. - It's configured to run only 25 seconds instead of 1000 (= 0.1*0.1/1e-5 = h^2/nu <- this is the expected time needed to reach steady-state), so that is left to the end-user to perform any validation and experimentation. In addition, several example settings were left in 'transportProperties' were left in it for the end-user to test, but perhaps those should be taken out due to maintenance? - I haven't created any validation for this tutorial, since I didn't know if this was necessary. |
|
Thanks for the updated patch > it's set to false by default, it's commented out and has a comment indicating what it's for. I think if the entry is present in the dictionary it is confusing if it is commented-out; it should either be set or left out. I have left the entry in the dictionary uncommented to aid backward compatibility for those who prefered the old default of the OBJ files being written. I have renamed the dumpCyclicMatch function for consistency with the writeCyclicMatch and the rest of OpenFOAM. I will push the changes shortly. |
|
Thanks Bruno Resolved by commit f53f52a691773914303d665525bc7ec5976a6fd4 |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-09-03 19:37 | wyldckat | New Issue | |
2017-09-03 19:37 | wyldckat | Status | new => assigned |
2017-09-03 19:37 | wyldckat | Assigned To | => henry |
2017-09-03 19:37 | wyldckat | File Added: proposition_v1.patch | |
2017-09-03 19:37 | wyldckat | File Added: proposition_v1.tar.gz | |
2017-09-04 18:04 | henry | Note Added: 0008690 | |
2017-09-04 18:06 | henry | Note Added: 0008691 | |
2017-09-04 18:10 | wyldckat | Note Added: 0008692 | |
2017-09-04 18:11 | wyldckat | Note Added: 0008693 | |
2017-09-04 20:53 | henry | Note Added: 0008694 | |
2017-09-09 16:13 | wyldckat | File Added: proposition_v2.patch | |
2017-09-09 16:13 | wyldckat | File Added: proposition_v2.tar.gz | |
2017-09-09 16:16 | wyldckat | Note Added: 0008732 | |
2017-09-09 22:59 | henry | Note Added: 0008740 | |
2017-09-09 23:03 | henry | Status | assigned => resolved |
2017-09-09 23:03 | henry | Resolution | open => fixed |
2017-09-09 23:03 | henry | Fixed in Version | => dev |
2017-09-09 23:03 | henry | Note Added: 0008741 |