CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Post-Processing

Sum over non-boundary cells

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   June 6, 2012, 09:11
Default Sum over non-boundary cells
  #1
New Member
 
Martin Söder
Join Date: Jun 2011
Posts: 8
Rep Power: 14
Soder is on a distinguished road
Hi,
I would like to make a post-process skript where I sum only non-boundary cell values. Does anyone know how this can be done?


Example mass (pseudo-code)

forAll(mesh.V(), celli)
{
if cell != boundaryCell
{
mass = (mesh.V()[celli]*rho[celli]);forAll(mesh.V(), celli)
massSum += mass;
}
}

best regards
Martin Soder
Soder is offline   Reply With Quote

Old   June 8, 2012, 08:03
Default
  #2
Senior Member
 
Mark Olesen
Join Date: Mar 2009
Location: https://olesenm.github.io/
Posts: 1,684
Rep Power: 40
olesen has a spectacular aura aboutolesen has a spectacular aura about
Quote:
Originally Posted by Soder View Post
Hi,
I would like to make a post-process skript where I sum only non-boundary cell values. Does anyone know how this can be done?


Example mass (pseudo-code)

forAll(mesh.V(), celli)
{
if cell != boundaryCell
{
mass = (mesh.V()[celli]*rho[celli]);forAll(mesh.V(), celli)
massSum += mass;
}
}

best regards
Martin Soder
Just an idea (no code):

Create a list of bools for each cell of your mesh and mark each with "true", for example,
Code:
 
PackedBoolList isInterior(mesh.nCells(), true);

Loop over the boundary faces, marking the cell owner (which is a boundary cell) as being non-interior:
Code:
const labelUList& owner = mesh.faceOwner();
for (label faceI=mesh.nInternalFaces(); faceI < mesh.nFaces(); ++faceI)
{
     isInterior.unset(owner[faceI]);
     //OR isInterior.set(owner[faceI], false);
}
The cells in isInterior that are still 'true' must be your interior cells.
The easiest is probably to use this as a mask when iterating over all cells:
Code:
forAll(mesh.V(), cellI)
{
    if (isInterior[cellI])
    {
    ...
    }
}
There may be a more elegant way, but this should at least get you going.
olesen is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[snappyHexMesh] SnappyHexMesh for internal Flow vishwa OpenFOAM Meshing & Mesh Conversion 24 June 27, 2016 08:54
How to write k and epsilon before the abnormal end xiuying OpenFOAM Running, Solving & CFD 8 August 27, 2013 15:33
Automobile aero ground boundary layer OR simpleFoam/GAMG and high aspect ratio cells kyle OpenFOAM Running, Solving & CFD 4 January 4, 2011 11:17
help:uds source added to boundary cells FredPacheo FLUENT 5 September 5, 2008 05:45
Convective Heat Transfer - Heat Exchanger Mark CFX 6 November 15, 2004 15:55


All times are GMT -4. The time now is 22:42.