CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Probe for X or Y velocity (https://www.cfd-online.com/Forums/openfoam-solving/59523-probe-x-y-velocity.html)

msrinath80 May 10, 2006 04:30

Can someone please share with
 
Can someone please share with me the code to monitor velocity (either U or V) as the solution progresses. I know this is done using the probe utility. However, I would prefer if someone can show me the code. I'm using the incompressible icoFoam solver.

Thanks a lot!

eugene May 10, 2006 06:02

That depends on whether you wa
 
That depends on whether you want the data to be written to screen or to a file. If you want it written to file, check the implementation in oodles. If you want it written to the standard out, see below.

Put this before your time loop:

/******************************************/
IOdictionary pLocs
(
IOobject
(
"probeLocations",
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
const pointField& probeLocations(pLocs.lookup("probeLocations"));

labelList probeCells(probeLocations.size(), -1);

forAll(probeLocations, pI)
{
probeCells[pI] = mesh.findCell(probeLocations[pI]);
}
/******************************************/

And then put the following at the end inside your time loop:

/*******************************************/
forAll(probeCells, pI)
{
if(probeCells[pI] != -1)
{
label cellNo = probeCells[pI];
Pout << pI << ". Location: "
<< probeLocations[pI]
<< ", cell no.: " << cellNo
<< ", U: " << U[cellNo]
<< ", p: " << p[cellNo]
//add any other fields here
<< endl;
}
}

/*******************************************/

Put the probe locations in the constant/probeLocations dictionary as per usual.

Note the code hasn't been tested so there might be bugs.

msrinath80 May 10, 2006 06:09

Thanks very much Eugene. I fee
 
Thanks very much Eugene. I feel ashamed. I just went and included Probe.H and createProbes.H in my icoFoam.C followed by a reference to writeprobes.H after the runTime.write(); (i.e. # include "writeProbes.H"). Then I created a probeLocations inside the constant sub-directory. That was all. Follow that with a wclean && wmake to rebuild icoFoam and when I run my case, it neatly creates a probes subdirectory with velocity and pressure data at my selected point.

I thank you guys a lot for being so patient with n00bs. Thanks and keep up the good work!

qtian August 2, 2007 23:05

Eugene, Many thanks for your
 
Eugene,
Many thanks for your code. I have successfully compiled my code. For some reason, I got this error while I tried to run the application.


--> FOAM FATAL IO ERROR : problem while reading header for object probeLocations

file: /home/qtian/OpenFOAM/qtian-1.4/run/tutorials/simpleFoam/bumpkom2/constant/probeL ocations at line 1.

From function regIOobject::readStream(const word&)
in file db/regIOobject/regIOobjectRead.C at line 75.

FOAM exiting

I know it must be something wrong with the probeLocations file format.

Here is probeLocations file format.

(
0.01 0.10 0.000
0.01 0.15 0.000
0.01 0.2 0.000
)

Is there any other way to read the probe points location? Thanks for your help.
Best

QT

msrinath80 August 3, 2007 11:53

OpenFOAM 1.4 has probe functio
 
OpenFOAM 1.4 has probe functionality inbuilt. Define your probe points in controlDict.

flavio_galeazzo August 6, 2007 11:05

Dear Srinath, Could you tel
 
Dear Srinath,

Could you tell what are the keywords one have to write to the controlDict to activate the inbuilt probe functionality?

Thanks

msrinath80 August 6, 2007 11:19

Please use the 'Search' option
 
Please use the 'Search' option in future. Thanks!

Quoting Eugene from an eariler post:

Activate probes by adding the following to the end of your controlDict:

functions
(
probes1
{
type probes;

functionObjectLibs ("libsampling.so");

//dictionary probesDict;

region region0;

probeLocations
(
(0.710 -0.730 0.829)
(0.710 -0.757 0.763)
(0.855 -0.714 0.881)
(0.855 -0.748 0.805)
(0.855 -0.774 0.735)
(1.000 -0.695 0.932)
(1.000 -0.754 0.805)
(1.000 -0.779 0.735)
(1.350 -0.651 1.030)
(1.350 -0.740 0.862)
);

fields
(
p
U
);
}
)

Reference: http://www.cfd-online.com/OpenFOAM_D...es/1/4350.html

flavio_galeazzo August 7, 2007 11:45

Dear Srinath, Thank you for
 
Dear Srinath,

Thank you for the prompt reply.

Just a correction. The last parenthesis have to be followed by a ";", or the function doesn't work.

flga

santoo_cfd May 22, 2009 00:51

surface patch instead of probelocations
 
Hi,

Can we use any surface patch instead of writing probeLocation explicitly. I need this to calculate surface averaged quantity(vertex averaged) at the outlet patch in case of RTD calculations.

The following is not working.

functions
(
RTD
{
type probes;
functionObjectLibs ("libsampling.so");
setFormat gnuplot;
surfaceFormat raw;

probeLocations
(
patches (outflow)
);
fields (T);
}
);

Thanks
Santhosh..

santoo_cfd August 17, 2009 05:40

patchAverage
 
I started again looking at the answer for the above problem.

Finally I could find that patchAverage utility can do the required operation.

Now the problem is patchAverage cannot be used for runTime calucation, i.e., patchAverage cannot write the output at each time step similar to probes utility. I am trying to modify it so that it will output average of a patch at each time step.

If anybody already done that please reply.

Regards
santhosh

gschaider August 17, 2009 11:22

Quote:

Originally Posted by santoo_cfd (Post 226556)
I started again looking at the answer for the above problem.

Finally I could find that patchAverage utility can do the required operation.

Now the problem is patchAverage cannot be used for runTime calucation, i.e., patchAverage cannot write the output at each time step similar to probes utility. I am trying to modify it so that it will output average of a patch at each time step.

If anybody already done that please reply.

Yes. It has been done. Have a look at http://openfoamwiki.net/index.php/Co...unctionObjects and the (note the original name) patchAverage-functionObject

Bernhard

santoo_cfd August 18, 2009 01:17

Thanks Bernhard,

That is exactly what I want. Actually I was able to change the solver to do the required operation. But this utility is much more robust and generic.

Thanks a lot

--santoo..

santoo_cfd August 18, 2009 01:52

Bernhard

Little help, May be I am doing simple mistake.

I successfully compiled simpleFunctionObject and could able to see it in USER_LIBBIN.

But, when I included function object in system dictionary as following,

functions
(
RTD
{
type patchAverage ;
functionObjectsLibs ("libsimpleFunctionObjects.so");
verbose true;
patches
(
outflow
);
factor 1;
}
);



I got following error,

Unknown function type patchAverage

Table of functionObjects is empty


From function functionObject::New(const word& name, const Time&, const dictionary&)
in file db/functionObjects/functionObject/functionObject.C at line 74.

FOAM exiting


--santosh

santoo_cfd August 18, 2009 02:12

It is working now,

I added following in controlDict (change is addition of fields to it)

functions
(
RTD
{
type patchAverage;
functionObjectLibs ("libsimpleFunctionObjects.so");
fields ( T );
patches ( outflow );
verbose true;
factor 1;
}
);

-santhosh

gschaider August 18, 2009 03:59

Quote:

Originally Posted by santoo_cfd (Post 226643)
It is working now,

I added following in controlDict (change is addition of fields to it)

Strange. Your previous example should have failed with an error about that missing (not with an empty table)

santoo_cfd August 18, 2009 06:21

I too felt the same.

I came to know about adding field after running in openFOAM 1.5 version. I feel the problem is with 1.6 version. It may be printing wrong error messages/Error messages are misplaced in code.

-santhosh

sandy August 18, 2009 08:46

Confused...
 
:o:D There is always different response ...

gschaider August 18, 2009 08:47

Quote:

Originally Posted by santoo_cfd (Post 226669)
I too felt the same.

I came to know about adding field after running in openFOAM 1.5 version. I feel the problem is with 1.6 version. It may be printing wrong error messages/Error messages are misplaced in code.

Question: You used different sources for 1.5 and 1.6 (the 1.5 version of the simpleFunctionObjects will not compile on 1.6 so this leads me to the suspicion that they were not there at all)

Bernhard

santoo_cfd August 18, 2009 09:50

I have two machines one with 1.5 version and another 1.6 version..

I have compiled respective simpleObjects on different machines as given at
http://openfoamwiki.net/index.php/Co...unctionObjects.

(there both simpleObject utility for 1.5 and 1.6 versions are available)

The error I got in 1.6 machine is regarding "Table Empty"
The error I got in 1.5 machine is regarding "missing field"

hope I am clean now.

--santoo..



gschaider August 19, 2009 04:04

Quote:

Originally Posted by santoo_cfd (Post 226700)
I have two machines one with 1.5 version and another 1.6 version..

I have compiled respective simpleObjects on different machines as given at
http://openfoamwiki.net/index.php/Co...unctionObjects.

(there both simpleObject utility for 1.5 and 1.6 versions are available)

The error I got in 1.6 machine is regarding "Table Empty"
The error I got in 1.5 machine is regarding "missing field"

hope I am clean now.

--santoo..



If it is not in the table, then the problem is that OpenFOAM can't find it. So do a wclean on the 1.6-version of the sources (I can't stress enough that the 1.5-version won't compile on 1.6) and make a "wmake libso" on them again. Lookout for an error. If there is
- no error
- it still doesn't work
- the library is found in $FOAM_USER_LIBBIN
try using another functionObject (probe for instance) with that case (because I only take responsibility after the simpleFunctionObjects are loaded into the runtime-selection-table ;) )

Bernhard

santoo_cfd September 11, 2009 04:52

Thanks for constant help, I could able to use in OF 1.6 as well now.

nishant_hull September 30, 2009 17:37

someone used the probes in OF 1.6. An example can be found in
\incompressible\pimpleFoam\t-junction\system

// Write at same frequency as fields
outputControl outputTime;
outputInterval 1;

there is new keyword word for the output control.

nishant

alfa_8C September 28, 2011 10:30

Hello,

does anybody know, how I can redirect the data from a probe also directly to the screen, so that I can plot them with the pyFoam utility? Is there any option to be switched on like "log = true" or something like that?

For any help thank you in advance

Kind regards,
Toni

gschaider September 29, 2011 12:24

Quote:

Originally Posted by alfa_8C (Post 325939)
Hello,

does anybody know, how I can redirect the data from a probe also directly to the screen, so that I can plot them with the pyFoam utility? Is there any option to be switched on like "log = true" or something like that?

For any help thank you in advance

Kind regards,
Toni

What you want is the value at one place on the standard-output so that a customRegexp can pick it up and plot it, right?

I'm afraid the probe-functionObject doesn't offer this (but I didn't research it too much)

What would be possible is to use (sorry) swak4Foam: generate a sampledSet of type cloud with one point. Use a functionObject swakExpression on it, set that to verbose and get that value. Maybe there is a simpler way.

To see how sampledSets are used in swak4Foam browse through the Examples that come with swak4Foam or look at my presentation from this years workshop

Bernhard

sita April 14, 2014 03:40

Problem using multiple probe locations
 
Hi all,

When I use multiple probe locations, only the data from the first location makes any sense, the rest gives values like -1e300. Does anyone have any experience with this? Ever seen this before?

My code looks like this:

functions
{
probes1
{
type probes;

functionObjectLibs ("libsampling.so");

region region0;

probeLocations
(
(1.3e-2 -2e-4 0)
(1.3e-2 0 0)
(1.3e-2 2e-4 0)
);

fields
(
U
);

outputControl timeStep;
outputInterval 100;
}
}


And I run the solver in parallel, on 4 cores (1 machine).

Thanks in advance for any help,

Sita

Additional info:
OpenFOAM gives warnings about these probe locations, it cannot find them:

--> FOAM Warning :
From function probes::read()
in file probes/probes.C at line 72
Did not find location (0.013 0 0) in any cell. Skipping location.
--> FOAM Warning :
From function probes::read()
in file probes/probes.C at line 72
Did not find location (0.013 0.0002 0) in any cell. Skipping location.

Strange, because both points are really present in my mesh...

gschaider April 14, 2014 19:34

Quote:

Originally Posted by sita (Post 485958)
Hi all,

When I use multiple probe locations, only the data from the first location makes any sense, the rest gives values like -1e300. Does anyone have any experience with this? Ever seen this before?

<snip>


Additional info:
OpenFOAM gives warnings about these probe locations, it cannot find them:

--> FOAM Warning :
From function probes::read()
in file probes/probes.C at line 72
Did not find location (0.013 0 0) in any cell. Skipping location.
--> FOAM Warning :
From function probes::read()
in file probes/probes.C at line 72
Did not find location (0.013 0.0002 0) in any cell. Skipping location.

Strange, because both points are really present in my mesh...

-1e300 is the usual response if the probe is outside the mesh .... which OF very clearly points out to you in the warnings you quoted ("did not find in any cell")

sita April 15, 2014 00:51

Yeah, I know, that's pretty clear indeed. The only problem is, as I pointed out, that these points are really present in my mesh. In fact, they are in the list of vertices in blockMeshDict.

So maybe I should rephrase my question: why is OF unable to find these points? Is there something wrong with my syntax? Or does it have to do with the parallel solving? Or…?

gschaider April 15, 2014 11:50

Quote:

Originally Posted by sita (Post 486160)
Yeah, I know, that's pretty clear indeed. The only problem is, as I pointed out, that these points are really present in my mesh. In fact, they are in the list of vertices in blockMeshDict.

So maybe I should rephrase my question: why is OF unable to find these points? Is there something wrong with my syntax? Or does it have to do with the parallel solving? Or…?

Edges and corners are not a good idea. Testing for them is like dropping a ball onto a fence: you never know on which side it will fall (in your case: outside). Put the probe points SLIGHTLY inside (instead of 3 use 2.99999 for instance).

sita April 23, 2014 02:04

Thanks, that works!

Antoniorp July 22, 2015 17:46

Hello everyone,

I have a question regarding the probes function.

I'm modelling a wave flume with monochormatic waves propagating over it and i have applied the probes function to a series of points in the mesh to calculate velocity.

My question is: when i get the results ate the end of the run, those values of velocity are instantaneous velocity or are they phase averaged values?

I've been strugling with this for some time and maybe someone has the answer,

Thanks!

António


All times are GMT -4. The time now is 01:21.