CFD Online Logo CFD Online URL
Home > Forums > OpenFOAM

Accessing a vector in a volVectorField by cell label

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree10Likes
  • 9 Post By ngj
  • 1 Post By ICL

LinkBack Thread Tools Display Modes
Old   March 12, 2011, 16:50
Default Accessing a vector in a volVectorField by cell label
Andrew Ryan
Join Date: Mar 2009
Posts: 47
Rep Power: 8
andrewryan is on a distinguished road
Given a volVectorField how can I access the vector corresponding to a given cell label? Simple question, but I couldn't figure it out so far. For example I want to access the value of U at a boundary as defined in 0/U how can I do that?

Also as far as I can see the underlying data structure of volVectorField is a linked list, is that correct? I don't understand how the mapping of the cell labels to the physical data such as U and V works.

thx for any help!
andrewryan is offline   Reply With Quote

Old   March 12, 2011, 17:43
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Deltares, Delft, The Netherlands
Posts: 1,660
Rep Power: 25
ngj will become famous soon enoughngj will become famous soon enough
Good evening

Let me try answering you questions, as I understand them. Accessing an internal value is done as:

label celli(100);
vector uCell = U[celli];
This is the easy part. Knowing the cell label you can directly get the data, as it is always internal.

To access the values on a boundary, you need to get a reference to the boundary field. This is done in the following way:

label patchID = mesh.boundaryMesh().whichPatchID("myBoundaryName");
vectorField & Uw = U.boundaryField()[patchID];
In the above, Uw is a list of velocities which has the same length as the number of faces on that specific boundary. To access the velocity component you can do it in two ways. The first only works on cell level:

scalar u = U[celli].x();
scalar v = U[celli].y();
scalar w = U[celli].z();
and the other method allows you to access the entire field

scalarField u = U.component(0);
scalarField v = U.component(1);
scalarField w = U.component(2);
The latter method does only return the velocity components of the internal values, thus if you need the boundary values merely replace U with Uw in the last expression.

Best regards

ngj is offline   Reply With Quote

Old   March 13, 2011, 05:53
Andrew Ryan
Join Date: Mar 2009
Posts: 47
Rep Power: 8
andrewryan is on a distinguished road
thx a lot for you quick answer
andrewryan is offline   Reply With Quote

Old   January 15, 2012, 06:48
Default Accessing vector components
New Member
Ali Sh
Join Date: Jun 2009
Location: London
Posts: 28
Rep Power: 8
ICL is on a distinguished road
Hi guys,

I am wondering if you can help me on the following problem:

The velocity vector components can be accessed using U.componet(0), U.componet(1), U.componet(2). I intend to add a constant to velocity Y component during the iteration. Initially I tried:

U.component(1) += constant;

The outcome shows that (Obviously) U has not been changed. Is it possible to define constant as a vector and add it to the velocity vector? how should it be written?
codder likes this.
ICL is offline   Reply With Quote


datastructures, fields

Thread Tools
Display Modes

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 On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
FvMatrix coefficients shrina OpenFOAM Running, Solving & CFD 10 October 3, 2013 14:38
Cells with t below lower limit Purushothama CD-adapco 2 May 31, 2010 21:58
accessing upstream cell - UDF bohis FLUENT 0 April 7, 2008 05:12
Trimmed cell and embedded refinement mesh conversion issues michele OpenFOAM Other Meshers: ICEM, Star, Ansys, Pointwise, GridPro, Ansa, ... 2 July 15, 2005 04:15
Warning 097- AB CD-adapco 6 November 15, 2004 05:41

All times are GMT -4. The time now is 18:30.