CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [blockMesh] Multiple boundary conditions in one block (https://www.cfd-online.com/Forums/openfoam-meshing/119475-multiple-boundary-conditions-one-block.html)

EOC June 18, 2013 05:54

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 :)

colinB June 18, 2013 09:14

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

EOC June 19, 2013 14:45

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. :)

colinB June 21, 2013 06:12

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
this is all I know about it

regards

Artur July 10, 2013 05:22

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.

didamiamia July 15, 2013 10:36

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

Yosmcer July 20, 2013 05:42

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)
 hex (24 25 9 8 28 29 13 12) (20 30 1) simpleGrading (1 1 1)

You defined 50 meshing blocks in y direction for the first block, and 30 for the second one.
This mean that blockMesh cannot connect perfectly theses blocks.

didamiamia July 22, 2013 12:18

Quote:

Originally Posted by Yosmcer (Post 440934)
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)
 hex (24 25 9 8 28 29 13 12) (20 30 1) simpleGrading (1 1 1)

You defined 50 meshing blocks in y direction for the first block, and 30 for the second one.
This mean that blockMesh cannot connect perfectly theses blocks.

you're right I'll post again a new thread for a new topic :)
thank you for your answer.

chymalaia October 30, 2020 08:23

Quote:

Originally Posted by EOC (Post 434886)
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.

Has anyone found a solution for this? I have a similar problem, where only a portion of one of my patches should be introducing water into the flow, whereas the surface above introduces another liquid (I'm using interFoam).

Thanks in advance!

RGS November 1, 2020 09:25

Quote:

Originally Posted by chymalaia (Post 786368)
Has anyone found a solution for this? I have a similar problem, where only a portion of one of my patches should be introducing water into the flow, whereas the surface above introduces another liquid (I'm using interFoam).

Thanks in advance!


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.

Marpole November 1, 2020 23:22

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.

chymalaia November 2, 2020 18:54

Quote:

Originally Posted by Marpole (Post 786503)
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.

Thanks for your answer! Very well explained.


Rosivaldo

chymalaia November 2, 2020 18:58

Quote:

Originally Posted by RGS (Post 786483)
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.

No, only 2 phases (2 liquids). The problem was that one of the geometry boundaries had 2 different conditions, and i did not know how to divide the path. But our friend Marpole explained a good way out.

linnemann November 3, 2020 01:26

This method also works.

https://www.cfd-online.com/Forums/op...oundaries.html


All times are GMT -4. The time now is 02:48.