sHM layer reduction towards outlet
1 Attachment(s)
Hello Foamers,
I have a question regarding layer insertion in sHM: I have a surface in my model which should be layered (e.g. wall) and an adjacent surface that should have no layer (e.g. an outlet), its 3dimensional, look at the picture below (outlet is at the bottom) sHM is decreasing my layers towards the surface that has no layers - why? I already played with some parameters like nGrow or featureAngle, but with no success. Maybe some of you have a hint. cheers |
no ideas? :(
|
Can you post your snappy dictionary? I'll bet it has to do with the angles in the prism layer setup.
|
4 Attachment(s)
Code:
/*--------------------------------*- C++ -*----------------------------------*\ Reuslting from this sHM dict: Picture #1 shows the transition of the BL from "rohre" to "symm" and pic #2 shows transition from "rohre" to "outlets". In both cases the BL should have been projected onto the face which should have no BL (i.e. symm and outlets respectively). In my sHM dict I tried to either comment out BL for symm or say "zero layers" for "outlets", both don't work. When you talk about the feature angle.. I also attached 2 pictures that show a parametric study of this angle starting at 90° at the left going to 180° to the right (for the first picture) and a detailed study from 150° t165° to 180°. You can see that none of the cases is satisfying, since the BL either won't go around the corner or is not projected on the left wall where I don't want to have a BL. |
Hi Hugo,
I think the answer to your question is in the code. Have a look to src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C In the method Foam::autoLayerDriver::doLayers you can find: // Per patch the number of layers (-1 or 0 if no layer) const labelList& numLayers = layerParams.numLayers(); layerParams is an object containing what is read from sHMDict. The difference between -1 or 0 can be seen in // Construct pointVectorField with correct boundary conditions for adding // layers Foam::tmp<Foam:: pointVectorField> Foam::autoLayerDriver::makeLayerDisplacementField There, all the patches are set to slip: wordList patchFieldTypes ( pointPatches.size(), slipPointPatchVectorField::typeName ); Apart from the patches where numLayers is 0 or >0: forAll(numLayers, patchI) { // 0 layers: do not allow slip so fixedValue 0 // >0 layers: fixedValue which gets adapted if (numLayers[patchI] == 0) { patchFieldTypes[patchI] = zeroFixedValuePointPatchVectorField::typeName; } else if (numLayers[patchI] > 0) { patchFieldTypes[patchI] = fixedValuePointPatchVectorField::typeName; } } So, if you set nSurfaceLayers to -1 for the patches symm and outlets, they will be set to slip and the points should slide to accommodate the prisms grown on the adjacent patches. Hope it helps, Francesco |
Hello Francesco,
thank you for your suggestion, I set nSurfaceLayers -1 for symm, inlet and outlets as you wrote, but it does´t work :( Have you tried it? regards |
pls find the download link of a minimum example: https://we.tl/kjyiZhC6ZX
|
No, I haven't tried it recently and I don't know when I can try it again. What I am sure is that I had prisms doing what you want on a patch coming from blockMesh. In this case the patch is defined as symmetryPlane in blockMeshDict and it is not specified at all in the snappyHexMeshDict.
I don't know how much this could help you. I'll let you know if I manage to try your test case. Francesco |
still andybody has no ideas? :eek:
|
All times are GMT -4. The time now is 14:30. |