Quote:
There are actually a few things in your code that dont look ok. First of all, it looks like you have tetFac eI instead of tetFaceI. The error shown by openFoam is letting you know that solidParticle needs a mesh, so instead of Code:
solidParticle* pPtr2=new solidParticle(*this,td.cloud().posP2_,cellI,tetFaceI, tetPtI,td.cloud().dP2_,td.cloud().UP2_); Code:
solidParticle* pPtr2=new solidParticle(mesh_,td.cloud().posP2_,cellI,tetFaceI,tetPtI,td.cloud().dP1_,td.cloud().UP2_); Regards, Alex |
Quote:
Thank you very much! It works. :) |
Seeding the Domain with Particles - Corrupt double-linked list error
Hi,
Can anyone help me to understand why this following does not work. We essentially followed the instructions in http://www.tfd.chalmers.se/~hani/kur...LPT_120911.pdf except that we want to initiate the domain with a cloud of points evenly space throughout a chosen part. We've added to solidParticleCloud.C the following: Code:
void Foam::solidParticleCloud::seed(const dimensionedVector& g) Code:
solidParticleCloud particles(mesh); Code:
*** glibc detected *** waveFoamLPT: corrupted double-linked list: 0x0000000000c02a50 *** Any thoughts greatly appreciated. Will |
interFoam: lagrangian particle tracking method by swak4Foam
Quote:
Hi Sebastian, did that work well? Could you share some experience about coupling lagrangian particle tracking using swak4Foam? I used to run coupling via CFDEM to LIGGGHTS, but now I want to model a tracer injected to my turbulent interFoam simulation, and therefore I need only a one-way coupling and thaught, swak4Foam would be the solution. I tried aswell interMixingFoam but thats not a good solution for many reasons... |
Quote:
yes the solid particle tracking worked really good with interFoam. At first I encountered a problem however: the particle wasn't affected by gravity in swak4Foam 0.2.4 but there's a fix for that (see the other threats about LPT on my page). What you need is a swak4Foam installation and a modified controlDict where you add these following lines: Code:
libs Code:
./constant/ParticleCloudProperties Code:
solution Regards, Sebastian |
That is really quick and precise help, thank you!
It really helps because I can get things started so fast I can present them on the startup-meeting this week! |
Hello,
I'm working on the coupling of interFoam and solidParticle as well. The solver works well in serial. It runs in parallel as well, and the fluid phase behaves, however, the results of the solid phase are not reasonable, let alone resemble those produced in serial run. So there must be something wrong with the parallelisation of solidParticle, it runs without error message though. I checked the output, origId of the particles are all -1 at every time step. I suspect this might be the reason, however I didn't manage to get origId right, let alone to know whether this is the reason to the problem. Could you shed some light on this please? Any thoughts would be much appreciated! Thanks in advance. Sophie |
hello, sebastian,
what is the sequence of running command? is it that first run the simulation with interFoam then modify the file and go on performing the simulation after some time to add the particles or just perform the simulation with the new controldict file to add the particles at the start? Thanks |
Quote:
you just run interFoam like always, just make sure you have a working swak4Foam installation. The coupled lagrangian particle libraries will do the rest. Depending on your injection model, the particles will be injected through the inlet or will be inserted into the field manually (automatic injection by the libraries) after some time. You will see that in the solver log, which will differ from a normal interFoam run. Depending on the coupling (1-way, 2-way) the velocity field will be calculated by interFoam and then the particle path will be estimated through the libraries. After this step the new velocity field will be calculated (1-way) or the last fluid velocity field will be recalculated (2-way). Regards, Sebastian |
hello, sebastian,
I have successfully performed the simulation with particles, but the result looks unreasonable, I set the wall as "stick" boundary, but the from the result, the particle will not stick to the wall and it will flow in the domain. Do you have the problem? Besides, I found the gravity seems didn't act on the particles. what about your result? |
Quote:
maybe your particle is not really at the wall for the boundary condition to apply. Since the LPT model treats every particle as "mass point", forces only act on the center of the particle. If the particle center is away from the wall, and only the virtual particle surface touches the wall, the stick boundary condition won't apply. So, you really have to be at the wall with the center point of your particle. Hope this helps. Regards, Sebastian |
hi,sebastian,
Thanks for your reply. Then what can I do to solve the problem? Besides, I think the gravity seems doesn't act on the particles. For understanding the problem better, I will introduce the problem and post my initial file. For the test simulation, I took state solver simpleFoam and introduce the liquid particles after 50 iterations. The particlecloudpropeties as follows: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object ParticleCloudProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solution { active yes; transient no; // yes; calcFrequency 50; maxTrackTime 3600; // maxCo 0.3; coupled false; cellValueSourceCorrection off; sourceTerms { schemes { rho semiImplicit 1; U semiImplicit 1; } } interpolationSchemes { rho cell; U cellPoint; mu cell; } integrationSchemes { U Euler; } } constantProperties { rho0 735; mu0 0.000774; constantVolume true; } subModels { particleForces { sphereDrag; gravity; } injectionModels { model1 { type patchInjection; massFlowRate 0.8e-03; parcelBasisType mass; patchName InletN1B; parcelsPerSecond 100; duration 1; // NOTE: set to 1 for steady state U0 (0 0 -22.99); flowRateProfile constant 1; sizeDistribution { type fixedValue; fixedValueDistribution { value 0.0001; } } } } dispersionModel none; // patchInteractionModel standardWallInteraction; patchInteractionModel localInteraction; heatTransferModel RanzMarshall; compositionModel none; phaseChangeModel none; devolatilisationModel none; surfaceReactionModel none; stochasticCollisionModel none; surfaceFilmModel none; radiation off; // standardWallInteractionCoeffs // { // type rebound; // } localInteractionCoeffs { patches ( InletN1B { type rebound; // e 0.97; // mu 0.09; } InletN1Bwall { type rebound; // e 0.97; // mu 0.09; } Walls { type stick; } Outlet { type escape; } ); } RanzMarshallCoeffs { BirdCorrection off; } } cloudFunctions { patchPostProcessing1 { type patchPostProcessing; maxStoredParcels 100; patches ( Outlet ); } particleTracks1 { type particleTracks; trackInterval 5; maxSamples 1000000; resetOnWrite yes; } } // ************************************************** *********************** // The controlDict as follows: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application simpleFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 1000; deltaT 1; writeControl timeStep; writeInterval 500; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; functions { InletN1B { type faceSource; functionObjectLibs ("libfieldFunctionObjects.so"); enabled true; outputControl timeStep; outputInterval 1; log true; valueOutput false; source patch; sourceName InletN1B; operation sum; // weightField alpha.air; fields ( phi ); } Outletair { type faceSource; functionObjectLibs ("libfieldFunctionObjects.so"); enabled true; outputControl timeStep; outputInterval 1; log true; valueOutput false; source patch; sourceName Outlet; operation sum; // weightField alpha.air; fields ( phi ); } } libs ( "libsimpleFunctionObjects.so" "libsimpleLagrangianFunctionObjects.so" "libswakLagrangianCloudSourcesFunctionPlugin.s o" "libswakFunctionObjects.so" ); functions { rho { type expressionField; dimension [1 -3 0 0 0 0 0]; expression "735"; fieldName rho; autowrite true; } mu { type expressionField; dimension [1 -3 0 0 0 0 0]; expression "0.000774"; fieldName mu; autowrite true; } Particle { type evolveKinematicCloud; cloudName ParticleCloud; //only necessary if solver doesn't consider gravity g "down" [0 1 -2 0 0 0 0] (0 0 -9.81); rhoName rho; muName mu; UName U; } } // ************************************************** *********************** // so, I found all the particles will be introduced into the domain, and they seems don't have gravity and they will not stick to the wall. Do you konw the reason? and how can I solve the problem. Thanks |
hello, sebasetian,
do you know the different of the evolvesolidparticleCloud and evolveKinematicCloud in swak4foam? I think they have differet constantproperties in the partilesproperties file. |
Quote:
I suggest you compare the appropriate files in Code:
./swak4Foam/Libraries/simpleLagrangianFunctionObjects/ Regards, Sebastian |
OK, to have more possibilities to control the IO of the particles (write out particle positions in higher frequency than the fluid Fields) I implemented kinematicCloud and particleCloud in pimpleFoam based on icoUncoupledKinematicParcelFoam and checked with swack4foam that it gives the same results in parallel.
However, now trying the two-way coupling with interFoam according to http://www.tfd.chalmers.se/~hani/kur...LPT_120911.pdf I run into the same troubles. Is there someone still working with interFoam & solidParticles willing to help? |
What exactly is your problem while coupling interFoam and solidParticles?
|
Dear Mahdi,
when I include the line +particles.momentumSource() in the UEqn.H, for example in the momentum predictor, it causes either overflow in solidParticleCloudI.H in solidParticleCloud::momentumSource() at: tsource().internalField() = -smom_/(mesh_.time().deltaT().value()*mesh_.V()); or if I limit that with min() and max() functions, I still get an Foam::sigSegv::sigHandler(int) error in UEqn.H Whithout two-way coupling it looks OK but that I can do better with particleCloud or kinematicCloud anyway. I am happy for any hint... |
Quote:
I guess it might be due to very small dt times dx in the denominator of momentum source resulting very large values. |
OK I am one step further:
The overflow was caused by competing names for rhoInf and rho, changing volScalarField rhoInf ( IOobject ( "rho", to IOobject ( "rhoInf", solved that. But now I have a temporary deallocation error solving UEqn.H, which seems to raise from a difference in treating boundary conditions in OF2.3 |
I hope this thread is still under active visiting and guess many of you have successfully coupled particle flow in interFoam. However, I am interested in coupling of the solidParticle, as described by the tutorial by Ms. Vallier (here and here), using icoFoam for cases of incompressible laminar flow. When I try to compile I get :
Code:
icoFoam.C: In function ‘int main(int, char**)’: Thank you |
All times are GMT -4. The time now is 02:10. |