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

Wall bounded values and streamlines

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

Reply
 
LinkBack Thread Tools Display Modes
Old   January 18, 2014, 06:56
Default Wall bounded values and streamlines
  #1
Member
 
Julian Langowski
Join Date: May 2011
Location: Bremen, Germany
Posts: 91
Rep Power: 7
Ruli is on a distinguished road
Dear Foamers,
does anyone have experience in using wallBoundedStreamLine?
What do the entries exactly mean? I commented, what I do understand or think I understand and which questions I have:

Code:
wallBoundedStreamLines
{
    functionObjectLibs ("libfieldFunctionObjects.so");
    type wallBoundedStreamLine;
    outputControl outputTime;
    setFormat vtk;
    UName UNear;  //calculation of near wall velocity field for later streamline calculation
    trackForward true;
    interpolationScheme cellPoint;
    fields (p U k UNear);  //necessary fields for streamline calculation
    lifeTime 100; //life time of generated particles? life time in time steps?
    cloudName wallBoundedParticleTracks;
    seedSampleSet patchSeed; //whats the difference between the coeffs types?
    uniformCoeffs
    {
        type uniform;
        distance 0.00051;
        nPoints 20;
    }

    cloudCoeffs
    {
        type cloud;
        distance 0.00051;
    }

    patchSeedCoeffs
    {
        type patchSeed;
        patches (rotor_OBJECT); //patch to calculate streamlines on
            axis        x;  //distance; //what does the axis mean?
            maxPoints   2000; //no. of particles or streamlines?
    }
}
Thanks for any tips.

Moreover: I run a simulation (MRFSimpleFoam, wind turbine rotor blade 120° wedge) with cyclic patches in parallel. If I activate wallBoundStreamLines (WBSL) OF gives me an error (problem with cyclic and parallel ...). So I reconstruct the latest time step, and run one more step with WBSL, which OF does. It calculates UNear, U, p and so on, but afterwards I get the following message for a lot of cells:

Code:
--> FOAM Warning : 
    From function Foam::List<Foam::tetIndices> Foam::polyMeshTetDecomposition::faceTetIndices(const polyMesh&, label, label)
    in file meshes/polyMesh/polyMeshTetDecomposition/polyMeshTetDecomposition.C at line 570
    No base point for face 3348692, 5(1402997 1323072 1353391 1309945 1345687), produces a valid tet decomposition.

--> FOAM Warning : Suppressing any further warnings.
I am not sure if simpleFoam is still running (top says so). Did anyone have this error, too? With or without WBSL?

What I actually would like to get are the close wall values of U and p and the resulting streamlines.

Thanks and best regards
Julian
Ruli is offline   Reply With Quote

Old   January 18, 2014, 08:44
Default
  #2
Member
 
Julian Langowski
Join Date: May 2011
Location: Bremen, Germany
Posts: 91
Rep Power: 7
Ruli is on a distinguished road
P.S.:
This is the error I get, when I run my simulation with wallBoundedStreamLines in parallel:

Code:
[3] --> FOAM FATAL ERROR: 
[3] Particle tracking across AMI patches is only currently supported for cases where the AMI patches reside on a single processor
[3] 
[3]     From function void Foam::Cloud<ParticleType>::initCloud(const bool)
[3]     in file lnInclude/Cloud.C at line 59.
[3] 
FOAM parallel run aborting
[3] 
[3] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
[3] #1  Foam::error::abort()[1] 
[1] 
[1] --> FOAM FATAL ERROR: 
[1] Particle tracking across AMI patches is only currently supported for cases where the AMI patches reside on a single processor
[1] 
[1]     From function void Foam::Cloud<ParticleType>::initCloud(const bool)
[1]     in file lnInclude/Cloud.C at line 59.
[1] 
FOAM parallel run aborting
[1] 
[1] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
[1] #1  Foam::error::abort()[0] 
[0] 
[0] --> FOAM FATAL ERROR: 
[0] Particle tracking across AMI patches is only currently supported for cases where the AMI patches reside on a single processor
[0] 
[0]     From function void Foam::Cloud<ParticleType>::initCloud(const bool)
[0]     in file lnInclude/Cloud.C at line 59.
[0] 
FOAM parallel run aborting
[0] 
[0] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
[3] #2  Foam::passiveParticleCloud::passiveParticleCloud(Foam::polyMesh const&, Foam::word const&, bool) at ??:?
[0] #1  Foam::error::abort() at ??:?
[3] #3  Foam::uniformSet::trackToBoundary(Foam::passiveParticle&, Foam::Vector<double>&, int&, Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[1] #2  Foam::passiveParticleCloud::passiveParticleCloud(Foam::polyMesh const&, Foam::word const&, bool) at ??:?
[0] #2  Foam::passiveParticleCloud::passiveParticleCloud(Foam::polyMesh const&, Foam::word const&, bool) at ??:?
[3] #4  Foam::uniformSet::calcSamples(Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[1] #3  Foam::uniformSet::trackToBoundary(Foam::passiveParticle&, Foam::Vector<double>&, int&, Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[0] #3  Foam::uniformSet::trackToBoundary(Foam::passiveParticle&, Foam::Vector<double>&, int&, Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[1] #4  Foam::uniformSet::calcSamples(Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const[2] 
[2] 
[2] --> FOAM FATAL ERROR: 
[2] Particle tracking across AMI patches is only currently supported for cases where the AMI patches reside on a single processor
[2] 
[2]     From function void Foam::Cloud<ParticleType>::initCloud(const bool)
[2]     in file lnInclude/Cloud.C at line 59.
[2] 
FOAM parallel run aborting
[2] 
[2] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
[3] #5  Foam::uniformSet::genSamples() at ??:?
[0] #4  Foam::uniformSet::calcSamples(Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[2] #1  Foam::error::abort() at ??:?
[1] #5  Foam::uniformSet::genSamples() at ??:?
[3] #6  Foam::uniformSet::uniformSet(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[0] #5  Foam::uniformSet::genSamples() at ??:?
[2] #2  Foam::passiveParticleCloud::passiveParticleCloud(Foam::polyMesh const&, Foam::word const&, bool) at ??:?
[0] #6  Foam::uniformSet::uniformSet(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[3] #7  Foam::sampledSet::addwordConstructorToTable<Foam::uniformSet>::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[2] #3  Foam::uniformSet::trackToBoundary(Foam::passiveParticle&, Foam::Vector<double>&, int&, Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[1] #6  Foam::uniformSet::uniformSet(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[0] #7  Foam::sampledSet::addwordConstructorToTable<Foam::uniformSet>::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[3] #8  Foam::sampledSet::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[2] #4  Foam::uniformSet::calcSamples(Foam::DynamicList<Foam::Vector<double>, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<int, 0u, 2u, 1u>&, Foam::DynamicList<double, 0u, 2u, 1u>&) const at ??:?
[1] #7  Foam::sampledSet::addwordConstructorToTable<Foam::uniformSet>::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[0] #8  Foam::sampledSet::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[3] #9  Foam::wallBoundedStreamLine::read(Foam::dictionary const&) at ??:?
[2] #5  Foam::uniformSet::genSamples() at ??:?
[1] #8  Foam::sampledSet::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[0] #9  Foam::wallBoundedStreamLine::read(Foam::dictionary const&) at ??:?
[3] #10  Foam::wallBoundedStreamLine::wallBoundedStreamLine(Foam::word const&, Foam::objectRegistry const&, Foam::dictionary const&, bool) at ??:?
[0] #10  Foam::wallBoundedStreamLine::wallBoundedStreamLine(Foam::word const&, Foam::objectRegistry const&, Foam::dictionary const&, bool) at ??:?
[2] #6  Foam::uniformSet::uniformSet(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[1] #9  Foam::wallBoundedStreamLine::read(Foam::dictionary const&) at ??:?
[3] #11  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::allocateFilter() at ??:?
[0] #11  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::allocateFilter() at ??:?
[2] #7  Foam::sampledSet::addwordConstructorToTable<Foam::uniformSet>::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[1] #10  Foam::wallBoundedStreamLine::wallBoundedStreamLine(Foam::word const&, Foam::objectRegistry const&, Foam::dictionary const&, bool) at ??:?
[3] #12  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::start() at ??:?
[0] #12  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::start() at ??:?
[2] #8  Foam::sampledSet::New(Foam::word const&, Foam::polyMesh const&, Foam::meshSearch const&, Foam::dictionary const&) at ??:?
[3] #13  Foam::functionObjectList::read() at ??:?
[1] #11  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::allocateFilter() at ??:?
[0] #13  Foam::functionObjectList::read() at ??:?
[2] #9  Foam::wallBoundedStreamLine::read(Foam::dictionary const&) at ??:?
[3] #14  Foam::Time::run() const at ??:?
[1] #12  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::start() at ??:?
[0] #14  Foam::Time::run() const at ??:?
[2] #10  Foam::wallBoundedStreamLine::wallBoundedStreamLine(Foam::word const&, Foam::objectRegistry const&, Foam::dictionary const&, bool) at ??:?
[3] #15  Foam::Time::loop() at ??:?
[1] #13  Foam::functionObjectList::read() at ??:?
[0] #15  Foam::Time::loop() at ??:?
[2] #11  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::allocateFilter() at ??:?
[3] #16  Foam::simpleControl::loop() at ??:?
[1] #14  Foam::Time::run() const at ??:?
[0] #16  Foam::simpleControl::loop() at ??:?
[3] #17   at ??:?
[2] #12  Foam::OutputFilterFunctionObject<Foam::wallBoundedStreamLine>::start() at ??:?
[1] #15  Foam::Time::loop() at ??:?
[0] #17  
 at ??:?
[2] #13  Foam::functionObjectList::read() at ??:?
[1] #16  Foam::simpleControl::loop()
[3]  at ??:?
[3] #18  __libc_start_main at ??:?
[1] #17   at ??:?
[2] #14  Foam::Time::run() const[0]  at ??:?
[0] #18  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[3] #19  
 in "/lib/x86_64-linux-gnu/libc.so.6"
[0] #19   at ??:?
[2] #15  Foam::Time::loop()
[1]  at ??:?
[1] #18  __libc_start_main
 at ??:?
[2] #16  Foam::simpleControl::loop()--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 3 in communicator MPI_COMM_WORLD 
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
Any hints? I donīt understand the error, as the cyclicAMI patches are on the same processor (I used preservePatches). By the way, I use OF 2.2.2.
Ruli is offline   Reply With Quote

Old   January 24, 2014, 16:06
Default
  #3
Member
 
Julian Langowski
Join Date: May 2011
Location: Bremen, Germany
Posts: 91
Rep Power: 7
Ruli is on a distinguished road
Hi,

help is still very much appreciated
In serial the calculation is running, but during writing the output it seems to crash

Code:
Create time

Create mesh for time = 1000

Reading field p

Reading field U

Reading/calculating face flux field phi

AMI: Creating addressing and weights between 48621 source faces and 71280 target faces
AMI: Patch source weights min/max/average = 0.9997723, 1.000002, 0.9999998
AMI: Patch target weights min/max/average = 0.9997389, 1.000002, 0.9999998
Selecting incompressible transport model Newtonian
Selecting RAS turbulence model kOmegaSST
kOmegaSSTCoeffs
{
    alphaK1         0.85034;
    alphaK2         1;
    alphaOmega1     0.5;
    alphaOmega2     0.85616;
    gamma1          0.5532;
    gamma2          0.4403;
    beta1           0.075;
    beta2           0.0828;
    betaStar        0.09;
    a1              0.31;
    b1              1;
    c1              10;
    F3              false;
}

Creating fintite volume options from fvOptions

Selecting finite volume options model type MRFSource
    Source: rotatingVolume
    - applying source for all time
    - selecting cells using cellZone rotor_cells_zone
    - selected 10941018 cell(s) with volume 287.696


SIMPLE: convergence criteria
    field p     tolerance 1e-10
    field U     tolerance 1e-09
    field k     tolerance 1e-08


Starting time loop

forces forces:

forceCoeffs forceCoeffs:

nearWallFields nearWallFields: Creating 2 fields
    created pNear to sample p
    created UNear to sample U

wallBoundedStreamLine : fixed track length specified : 0.0064

Time = 1001

DILUPBiCG:  Solving for Ux, Initial residual = 2.821475e-05, Final residual = 2.151082e-09, No Iterations 7
DILUPBiCG:  Solving for Uy, Initial residual = 0.000104667, Final residual = 5.230414e-08, No Iterations 5
DILUPBiCG:  Solving for Uz, Initial residual = 3.168403e-05, Final residual = 9.593234e-09, No Iterations 6
GAMG:  Solving for p, Initial residual = 0.03821306, Final residual = 0.0003685356, No Iterations 26
GAMG:  Solving for p, Initial residual = 0.01049193, Final residual = 9.309729e-05, No Iterations 16
GAMG:  Solving for p, Initial residual = 0.002297191, Final residual = 2.072066e-05, No Iterations 23
GAMG:  Solving for p, Initial residual = 0.001000528, Final residual = 9.442547e-06, No Iterations 19
GAMG:  Solving for p, Initial residual = 0.0004666346, Final residual = 4.53107e-06, No Iterations 15
GAMG:  Solving for p, Initial residual = 0.0002317556, Final residual = 2.234682e-06, No Iterations 16
GAMG:  Solving for p, Initial residual = 0.0001345208, Final residual = 1.170508e-06, No Iterations 12
GAMG:  Solving for p, Initial residual = 7.3326e-05, Final residual = 6.203478e-07, No Iterations 13
GAMG:  Solving for p, Initial residual = 4.606675e-05, Final residual = 3.245047e-07, No Iterations 11
time step continuity errors : sum local = 1.427492e-09, global = 1.643401e-10, cumulative = 1.643401e-10
DILUPBiCG:  Solving for omega, Initial residual = 3.306011e-05, Final residual = 7.599807e-09, No Iterations 1
DILUPBiCG:  Solving for k, Initial residual = 1.774335e-05, Final residual = 2.623527e-09, No Iterations 1
ExecutionTime = 438.76 s  ClockTime = 439 s

forces forces output:
    forces(pressure,viscous,porous) = ((0.1925579 0.01165662 0.04023865),(0.0004173754 9.395157e-05 -0.001121611),(0 0 0))
    moment(pressure,viscous,porous) = ((0.02154812 0.00185286 -0.123217),(-0.000778934 -5.635177e-06 -0.0002338782),(0 0 0))

forceCoeffs forceCoeffs output:
    Cm    = 0.8881965
    Cd    = 8.252606
    Cl    = 0.5025144
    Cl(f) = 1.139454
    Cl(r) = -0.6369393

nearWallFields nearWallFields output:
    Writing sampled fields to 1001  HERE IT SIMPLY STOPS AND DOES NOT GO ON...
Any idea what to do? Is it just this slow, because I am calculating on 1 core?
Thanks
__________________
πάντα ῥεῖ - Heraclitus
Ruli is offline   Reply With Quote

Old   January 28, 2014, 17:55
Default
  #4
Member
 
Julian Langowski
Join Date: May 2011
Location: Bremen, Germany
Posts: 91
Rep Power: 7
Ruli is on a distinguished road
Dear Foamers, did anybody successfully use the wall bounded streamlines utility (besides the motor bike tutorial)?
Are there any things in particular, I have to take care of? I just don`t understand why it is not working in my case

Thanks Julian
__________________
πάντα ῥεῖ - Heraclitus
Ruli is offline   Reply With Quote

Old   February 2, 2014, 16:49
Default
  #5
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 9,747
Blog Entries: 39
Rep Power: 103
wyldckat is a glorious beacon of lightwyldckat is a glorious beacon of lightwyldckat is a glorious beacon of lightwyldckat is a glorious beacon of lightwyldckat is a glorious beacon of light
Greetings Julian,

Let's see... regarding the first post, you can find more information if you follow these steps:
  1. Go to the modules page on the Code Documentation web-page: http://foam.sourceforge.net/docs/cpp/modules.html
  2. Look for the link "Function Objects" and then below it is "Field functions objects". Click on it.
  3. On that page find "wallBoundedStreamLine". Click on the link.
  4. Scroll down to the section "Detailed Description" and there you'll find most of the information you were asking about.
As for the problem with MRFSimpleFoam, it would seem like the mesh has some critical flaw, which leads to the function object to be unable to process properly. Run checkMesh with all of the checks:
Code:
checkMesh -allGeometry -allTopology -constant
As for the problem with the AMI patches... there is an option named "preservePatches" in "decomposeParDict" which should enforce one or more patches to remain in a single processor. Have a look here: Cyclic patches and parallel postprocessing problems post #8


As for using function objects after the simulation is finished, have a look here: execFunctionObjects: Minimalistic variant of execFlowFunctionObjects utility


Beyond this, I have never user this function object, so I don't have experience with it.

Best regards,
Bruno
__________________
wyldckat is offline   Reply With Quote

Old   February 2, 2014, 17:45
Default
  #6
Member
 
Julian Langowski
Join Date: May 2011
Location: Bremen, Germany
Posts: 91
Rep Power: 7
Ruli is on a distinguished road
Dear Bruno,
thanks for your answer.

Quote:
Originally Posted by wyldckat View Post
Go to the modules page on the Code Documentation web-page: http://foam.sourceforge.net/docs/cpp/modules.html
  1. Look for the link "Function Objects" and then below it is "Field functions objects". Click on it.
  2. On that page find "wallBoundedStreamLine". Click on the link.
  3. Scroll down to the section "Detailed Description" and there you'll find most of the information you were asking about.
Did that, was really helpful.


Quote:
Originally Posted by wyldckat View Post
As for the problem with MRFSimpleFoam, it would seem like the mesh has some critical flaw, which leads to the function object to be unable to process properly. Run checkMesh with all of the checks:

Code:
checkMesh -allGeometry -allTopology -constant
As for the problem with the AMI patches... there is an option named

This error is already outdated and no problem anymore.



Quote:
Originally Posted by wyldckat View Post
preservePatches" in "decomposeParDict" which should enforce one or more patches to remain in a single processor
I already did that and still get the error...

Thanks anyway for your reply. Seems, as if the wallBoundedStreamlinesFunction is quite unkown to the OF community.

Best regards
Julian
__________________
πάντα ῥεῖ - Heraclitus
Ruli is offline   Reply With Quote

Reply

Tags
near wall fields, post processing, wall bounded streamlines

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
opening sims as a wall. Curran919 CFX 8 March 19, 2012 22:31
Airfoil simulation using moving wall Alejandro NUMECA 9 November 4, 2008 03:00
RELATIVE STREAMLINES ozgur FLUENT 0 September 30, 2004 08:15
help :streamlines bumping head-on into wall Subhra Datta Main CFD Forum 6 November 25, 2003 19:26
streamlines problem newbie FLUENT 0 January 17, 2002 13:06


All times are GMT -4. The time now is 17:24.