Multiple boundary conditions in one block
Hi everyone!
I am new to OpenFOAM and also I just started using this platform. My question is that I want to use just one block with six faces, (a cube). So if I want to put a boundary condition to a face such that the boundary condition applies at certain region of the face and not all over it. For example if I want some Heat flux at the centre of a face in a circular region. Do I need to create blocks and faces whenever I need to put a boundary condition ? Simply putting , I want to know how can I put multiple boundary conditions at the same face such that certain regions of the face have different boundary conditions and certain regions have other boundary conditions. I will be very thankful for the help :) |
Hi EOC,
the utility you are looking for is named setFields With a setFieldsDict stored in the system folder you can specify the patch/Region which you want to be changed. The damBreak tutorial gives you an example of the usage with a region in the domain specified other than its surroundings by using the parameter alpha1 which is needed for multiphase flow. However this should also work with patches according to the manual and other fields than alpha1. I hope that helps regards |
setFields
Thank you so much for the help.
I started learning how to use setFields. Just one more thing. Which option should I use (from boxtocell to surfacetoface) The condition is I have a wall and some portion of it is heated. The heated portion can be defined by some co-ordinates and it will be a closed surface. I would have used boxtocell but it only performs the function for a square shaped heated region in my case. I shall be very thankful for the help. :) |
Hi
I have no idea how it works in particular with faces, since I only use the boxToCell option for my cases and just read in the description that it is also possible to use this tool for faces as well. But using some common sense I would say boxToFace is your option. To figure out how it works you might want to have a look here: Code:
/opt/openfoam220/application/utilities/preProcessing/setFields regards |
Check the wigley hull tutorial in multiphase/LTSInterFoam where the inlet patch has a calculated BC and some of it is set as water (alpha1 field = 1) and some of it as air (alpha1 filed = 0).
I think it should work the same way for you judging from the description you've given. |
hi,
can some one tell me where i have do an error in this blockMesh /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1; vertices ( (-1 -1 0) (1 -1 0) (1 1 0) (-1 1 0) (-1 -1 0.1) (1 -1 0.1) (1 1 0.1) (-1 1 0.1) (0.4 -0.1 0) (0.6 -0.1 0) (0.6 0.1 0) (0.4 0.1 0) (0.4 -0.1 0.1) (0.6 -0.1 0.1) (0.6 0.1 0.1) (0.4 0.1 0.1) (-1 -0.1 0) (1 -0.1 0) (1 0.1 0) (-1 0.1 0) (-1 -0.1 0.1) (1 -0.1 0.1) (1 0.1 0.1) (-1 0.1 0.1) //add (0.4 -1 0) (0.6 -1 0) (0.6 1 0) (0.4 1 0) (0.4 -1 0.1) (0.6 -1 0.1) (0.6 1 0.1) (0.4 1 0.1) ); blocks ( // hex (0 1 2 3 4 5 6 7) (100 100 1) simpleGrading (1 1 1) hex (0 24 8 16 4 28 12 20) (50 50 1) simpleGrading (1 1 1) hex (24 25 9 8 28 29 13 12) (20 30 1) simpleGrading (1 1 1) hex (25 1 17 9 29 5 21 13) (15 30 1) simpleGrading (1 1 1) hex (16 8 11 19 20 12 15 23) (70 20 1) simpleGrading (1 1 1) hex (9 17 18 10 13 21 22 14) (20 20 1) simpleGrading (1 1 1) hex (19 11 27 3 23 15 31 7) (50 50 1) simpleGrading (1 1 1) hex (11 10 26 27 15 14 30 31) (20 30 1) simpleGrading (1 1 1) hex (10 18 2 26 14 22 6 30) (15 30 1) simpleGrading (1 1 1) ); edges ( ); boundary ( innerwall { type wall; faces ( (11 15 12 8) (10 14 13 9) //(11 10 14 15) (11 15 14 10) (8 12 13 9) ); } outerwall { type wall; faces ( (3 7 23 19) (19 23 20 16) (16 20 4 0) (2 6 22 18) (18 22 21 17) (17 21 5 1) (0 4 28 24) (24 28 29 25) (25 29 5 1) (3 7 31 27) (27 31 30 26) (26 30 6 2) ); } frontAndBack { type empty; faces ( (0 24 8 16) (24 25 9 8) (25 1 17 9) (16 8 11 19) (9 17 18 10) (19 11 27 3) (11 10 26 27) (10 18 2 26) (4 28 12 20) (28 29 13 12) (29 5 21 13) (20 12 15 23) (13 21 22 14) (23 15 31 7) (15 14 30 31) (14 22 6 30) //(0 3 2 1) //(4 5 6 7) ); } ); mergePatchPairs ( ); // ************************************************** ******** i have this error : Create time Creating block mesh from "/home/linda/Simulations/caseFI/partie_11/Noconforming_Mesh/P11_move_SRFP/constant/polyMesh/blockMeshDict" Creating curved edges Creating topology blocks Creating topology patches Creating block mesh topology Check topology Basic statistics Number of internal faces : 8 Number of boundary faces : 32 Number of defined boundary faces : 32 Number of undefined boundary faces : 0 Checking patch -> block consistency Creating block offsets Creating merge list --> FOAM FATAL ERROR: Inconsistent number of faces between block pair 0 and 1 From function blockMesh::calcMergeInfo() in file blockMesh/blockMeshMerge.C at line 221. thank you for answers |
Hello,
I think you should have posted a new thread. I do not see the ling between your error and the usage of setFields. Your error says there is a problem between your two first blocks: Code:
hex (0 24 8 16 4 28 12 20) (50 50 1) simpleGrading (1 1 1) This mean that blockMesh cannot connect perfectly theses blocks. |
Quote:
thank you for your answer. |
Quote:
Thanks in advance! |
Quote:
Are you trying to simulate 3 phases? Two liquids and air? interFoam (as far as I am aware) only supports two phases. The parts of the geometry that are not filled with one phase is assumed to be filled with the other phase. Of course, a cell can have both phases, and alpha shows what proportion of the cell is filled with each phase. |
set boundary condition on partial area of a face
OpenFOAM sets one boundary condition for one patch. On one patch, one can not specify two boundary conditions.
In the case of the cube example, the face needs to be split to 2 in order to accept two boundary conditions. This can be done with a combination of topoSet and createPatch. In the first step, one need to use topoSet to create faceZone. In topoSetDict, shape of the patch, i.e. circular or rectangular, needs to be defined. Likely one need to create a cellZone first, and then faceZone. In the second step, using command createPatch to create patches from the faceZone. With the patches created, to set boundary condition is the same as one did for openFOAM in 0 folder. setFields can work for some cases. Though it can not change boundary type but only with boundary value. For example, it cannot work if part of the cube face is wall and the rest is inlet. But a combination of topoSet and createPatch can make it. |
Quote:
Rosivaldo |
Quote:
|
|
All times are GMT -4. The time now is 02:48. |