|
[Sponsors] |
[mesh manipulation] createpatch not working when using layer addition in snappyHexMesh |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
February 3, 2020, 10:46 |
createpatch not working when using layer addition in snappyHexMesh
|
#1 |
New Member
Max
Join Date: Sep 2019
Posts: 8
Rep Power: 7 |
I am running a CFD simulation of a fan that is located inside a box. To do this I use snappyHexMesh to generate a baffle that is edited in createpatch to make it cyclic. Before this, I used cyclicAMI which worked fine. Now I would like to use cyclic as that will enable me to use the fan BC. When I only have the fan patch in a domain with the fan BC it works fine. When I then load another part in the simulation, without running layer addition in snappyHexMesh, it works fine as well. However, when I turn on the layer addition for the other part, even if it is not near the fan patch, createPatch does not work anymore giving the following error:
Code:
/*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1812 | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : v1812 OPENFOAM=1812 Arch : "LSB;label=32;scalar=64" Exec : createPatch -parallel -decomposeParDict system/decomposeParDict.6 -overwrite Date : Feb 03 2020 Time : 15:01:40 Host : urepower8 PID : 59302 I/O : uncollated Case : /home/URE14/OpenFOAM/URE14-v1812/run/Max/Experiment_Fancurve nProcs : 50 Hosts : ( (urepower8 50) ) Pstream initialized with: floatTransfer : 0 nProcsSimpleSum : 0 commsType : nonBlocking polling iterations : 0 trapFpe: Floating point exception trapping enabled (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10) allowSystemOperations : Allowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create polyMesh for time = 0 Reading "system/createPatchDict" Adding new patch fan_in as patch 8 from { type cyclic; neighbourPatch fan_out; } Adding new patch fan_out as patch 9 from { type cyclic; neighbourPatch fan_in; } Moving faces from patch fan to patch 8 Moving faces from patch fan_slave to patch 9 Doing topology modification to order faces. [19] Cannot find point in pts1 matching point 6 coord:(-0.26609 0.000615407 0.193233) in pts0 when using tolerance 7.7534e-08 [19] Searching started from:0 in pts1 [19] Cannot find point in pts1 matching point 20 coord:(-0.266101 0.00184115 0.193226) in pts0 when using tolerance 7.7501e-08 [19] Searching started from:0 in pts1 [19] Cannot find point in pts1 matching point 18 coord:(-0.266099 0.00308022 0.193227) in pts0 when using tolerance 7.69666e-08 [19] Searching started from:0 in pts1 [19] Cannot find point in pts1 matching point 4 coord:(-0.266091 0.00431021 0.193232) in pts0 when using tolerance 7.67744e-08 [19] Searching started from:0 in pts1 [19] Cannot find point in pts1 matching point 0 coord:(-0.266108 0.00554009 0.193221) in pts0 when using tolerance 7.81904e-08 etc...... Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1812 | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object snappyHexMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Which of the steps to run castellatedMesh true; snap true; addLayers true; // Geometry. Definition of all surfaces. All surfaces are of class // searchableSurface. // Surfaces are used // - to specify refinement for any mesh cell intersecting it // - to specify refinement for any mesh cell inside/outside/near // - to 'snap' the mesh boundary to the surface geometry { fan.stl { type triSurfaceMesh; name fan; } fanbox.stl { type triSurfaceMesh; name fanbox; } } // Settings for the castellatedMesh generation. castellatedMeshControls { // Refinement parameters maxLocalCells 1000000; maxGlobalCells 80000000; minRefinementCells 3000; maxLoadUnbalance 0.10; nCellsBetweenLevels 4; allowFreeStandingZoneFaces true; resolveFeatureAngle 30; planarAngle 30; features ( { file "fan.eMesh"; level 4; } { file "fanbox.eMesh"; level 4; } ); // Surface based refinement // ~~~~~~~~~~~~~~~~~~~~~~~~ refinementSurfaces { fanbox { // Surface-wise min and max refinement level level (6 6); // Optional specification of patch type (default is wall). No // constraint types (cyclic, symmetry) etc. are allowed. patchInfo { type wall; inGroups (URE14Group); } } fan { level (7 7); faceZone fanFaces; faceType baffle; } } refinementRegions { } locationInMesh (3.0001 3.0001 0.43); } // Settings for the snapping. snapControls { nSmoothPatch 5; tolerance 2.0; nSolveIter 150; nRelaxIter 5; nFeatureSnapIter 15; implicitFeatureSnap false; explicitFeatureSnap true; multiRegionFeatureSnap false; } // Settings for the layer addition. addLayersControls { // Are the thickness parameters below relative to the undistorted // size of the refined cell outside layer (true) or absolute sizes (false). relativeSizes true; // Per final patch (so not geometry!) the layer information layers { "(fanbox).*" { nSurfaceLayers 6; } } // Expansion factor for layer mesh expansionRatio 1.2; // Wanted thickness of final added cell layer. If multiple layers // is the thickness of the layer furthest away from the wall. // Relative to undistorted size of cell outside layer. // See relativeSizes parameter. finalLayerThickness 0.5; // Minimum thickness of cell layer. If for any reason layer // cannot be above minThickness do not add layer. // Relative to undistorted size of cell outside layer. minThickness 0.001; // If points get not extruded do nGrow layers of connected faces that are // also not grown. This helps convergence of the layer addition process // close to features. // Note: changed(corrected) w.r.t 1.7.x! (didn't do anything in 1.7.x) nGrow 0; // Advanced settings // When not to extrude surface. 0 is flat surface, 90 is when two faces // are perpendicular featureAngle 180; // At non-patched sides allow mesh to slip if extrusion direction makes // angle larger than slipFeatureAngle. slipFeatureAngle 75; // Maximum number of snapping relaxation iterations. Should stop // before upon reaching a correct mesh. nRelaxIter 5; // Number of smoothing iterations of surface normals nSmoothSurfaceNormals 3; // Number of smoothing iterations of interior mesh movement direction nSmoothNormals 4; // Smooth layer thickness over surface patches nSmoothThickness 10; // Stop layer growth on highly warped cells maxFaceThicknessRatio 0.5; // Reduce layer growth where ratio thickness to medial // distance is large maxThicknessToMedialRatio 0.3; // Angle used to pick up medial axis points // Note: changed(corrected) w.r.t 1.7.x! 90 degrees corresponds to 130 // in 1.7.x. minMedialAxisAngle 90; // Create buffer region for new layer terminations nBufferCellsNoExtrude 0; // Overall max number of layer addition iterations. The mesher will exit // if it reaches this number of iterations; possibly with an illegal // mesh. nLayerIter 300; } // Generic mesh quality settings. At any undoable phase these determine // where to undo. meshQualityControls { #include "meshQualityDict" // Advanced //- Number of error distribution iterations nSmoothScale 4; //- Amount to scale back displacement at error points errorReduction 0.75; } // Advanced // Write flags writeFlags ( scalarLevels layerSets layerFields // write volScalarField for layer coverage ); // Merge tolerance. Is fraction of overall bounding box of initial mesh. // Note: the write tolerance needs to be higher than this. mergeTolerance 1e-6; // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 4.1.0 | | \\ / 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. // 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; // Patches to create. patches ( { // Name of new patch name fan_in; // Dictionary to construct new patch from patchInfo { type cyclic; neighbourPatch fan_out; // Optional: explicitly set transformation tensor. // Used when matching and synchronising points. //transform rotational; //rotationAxis (1 0 0); //rotationCentre (0 0 0); // transform translational; // separationVector (1 0 0); // Optional non-default tolerance to be able to define cyclics // on bad meshes //matchTolerance 0.000000000001; } // How to construct: either from 'patches' or 'set' constructFrom patches; // If constructFrom = patches : names of patches. Wildcards allowed. patches (fan); // If constructFrom = set : name of faceSet //set fan; } { // Name of new patch name fan_out; // Dictionary to construct new patch from patchInfo { type cyclic; neighbourPatch fan_in; // Optional: explicitly set transformation tensor. // Used when matching and synchronising points. //transform rotational; //rotationAxis ( 0 0 1 ); //rotationCentre ( 0.3 0 0 ); } // How to construct: either from 'patches' or 'set' constructFrom patches; // If constructFrom = patches : names of patches. Wildcards allowed. patches (fan_slave); // If constructFrom = set : name of faceSet //set fan_slave; } ); Many thanks, Max |
|
Tags |
baffle-snappyhexmesh, createpatch, cyclic, fan bc, snappyhexmesh |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] Help with Snappy: no layers growing | GianF | OpenFOAM Meshing & Mesh Conversion | 2 | September 23, 2020 09:26 |
[snappyHexMesh] Triangular elements in boundary layers generated by snappyHexMesh | mike.franky | OpenFOAM Meshing & Mesh Conversion | 0 | June 3, 2018 10:46 |
[snappyHexMesh] snappyHexMesh problem | shengqiming | OpenFOAM Meshing & Mesh Conversion | 0 | December 15, 2016 09:35 |
[snappyHexMesh] SnappyHexMesh segmentation Fault | nithishgupta | OpenFOAM Meshing & Mesh Conversion | 1 | December 18, 2014 05:03 |
[snappyHexMesh] Boundary layer generation problems | ivan_cozza | OpenFOAM Meshing & Mesh Conversion | 0 | October 6, 2010 14:47 |