CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   boundary cells (https://www.cfd-online.com/Forums/openfoam-programming-development/80538-boundary-cells.html)

Martin80 September 29, 2010 04:36

boundary cells
 
Hi,

I have given a volVectorField U. U contains a boundaryField.

I want to set the values of U at the cellcenter of the cells next to the boundary eqal to the values of U on the boundaryField.

U.internalField()[?]=U.boundaryField()[wall][i]

Illustration:

1 0 | 0 | 0 --> 1 1 | 0 | 0
2 0 | 0 | 0 --> 2 2 | 0 | 0
3 0 | 0 | 0 --> 3 3 | 0 | 0

Maybe someone has a useful hint,
thanks, Martin.

herbert September 29, 2010 07:13

Hi Martin,

you get the adjacent cell of a boundary face by using mesh.owner(). Take care, that owner is not defined for local face numbers inside a patch but for global face numbers.

Example that should do your job:
Code:

forAll(U.boundaryField()[wall], iFaceLocal)
{
    label iFaceGlobal = iFaceLocal + mesh.boundaryMesh()[wall].start();
    label adjacentCell = mesh.owner()[iFaceGlobal];
    U[adjacentCell] = U.boundaryField()[wall][iFace];
}

Regards,
Stefan

Martin80 September 29, 2010 09:13

Hi Stefan,

great, this is exactly what I was seeking for. Thanks a lot!
(Just in case someone else also uses it: the last iFace is a iFaceLocal, of course).

Best wishes,
Martin.

heavy_user January 5, 2012 10:43

boundary face owning cell
 
Hey Foamers,

im am a little stuck here..
I am looping over faces in my boundary patch.
I need to check for a property in the cell belonging to the face.

So I do something like:

Code:

In the loop:
forAll(boundaryPatchI, faceI)
.....
Info << "###jet- ownercell:"<< mesh_.owner()[faceI] << " ,face: "  << faceI  << " ,current population:" <<  cellOccupancy_[mesh_.owner()[faceI]].size() << endl;
....

The result is e.g.:

Code:

###jet- ownercell:37 ,face: 129 ,current population:5
###jet- ownercell:37 ,face: 130 ,current population:5
###jet- ownercell:37 ,face: 131 ,current population:5

So one cell is the owner for three faces.
The number of faces for the patch is correct (145) but i have way less owners (and dividing 145 by three does not give me an integer anyways).

The manual says:

Code:

In the case of boundaries, the connected cell is the owner and the neighbour is assigned the label ‘-1’. With this in mind, the I/O specification consists of the following files
In the case of faces in my boundary patch I have a hard time imagining three different faces being connected to one cell.
So why do three faces belong to one cell? And how do I adress the 145 cells above my 145 boundary faces?

Thanks a bunch!


All times are GMT -4. The time now is 10:44.