CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Running, Solving & CFD

DPMFoam solver inadequacy

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

Like Tree3Likes
  • 3 Post By ansubru

Reply
 
LinkBack Thread Tools Display Modes
Old   March 7, 2014, 10:16
Default DPMFoam solver inadequacy
  #1
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Hey foamers!!

I am a fledgling in this new community. However, thanks to this forum I have been able to pick up the basics of openfoam rather quickly.

I have been trying to simulate "Specific gravity aided separation of grains" on a vibrating table. I have just began my work and started with setting up a very simple case of a fluidized system i.e a rectangular box being filled with spherical grains from the top and fluidized slightly from the bottom (quite similar to the Goldschmidt tutorial case).

I am encountering this very persistent issue. When i inject about 500 particles into the domain, the simulation proceeds flawlessly towards completion. However, when i decide to inject 5000 particles (not parcels) into the same system (no changes in the set up) the simulation crashes after the first time step.. with the following error ..

Code:
 Solving 3-D cloud kinematicCloud
    509 move-collide subCycles
[2] #0  Foam::error::printStack(Foam::Ostream&) at ~/OpenFOAM/OpenFOAM-2.3.0/src/OSspecific/POSIX/printStack.C:221
[2] #1  Foam::sigFpe::sigHandler(int) at ~/OpenFOAM/OpenFOAM-2.3.0/src/OSspecific/POSIX/signals/sigFpe.C:108
[2] #2   in "/lib/x86_64-linux-gnu/libc.so.6"
[2] #3  Foam::divideOp3<double, double, double>::operator()(double const&, double const&) const at ~/OpenFOAM/OpenFOAM-2.3.0/src/OpenFOAM/lnInclude/ops.H:167
[2] #4  void VectorSpaceOps<3, 0>::opVS<Foam::Vector<double>, Foam::VectorSpace<Foam::Vector<double>, double, 3>, double, Foam::divideOp3<double, double, double> >(Foam::Vector<double>&, Foam::VectorSpace<Foam::Vector<double>, double, 3> const&, double const&, Foam::divideOp3<double, double, double>) at ~/OpenFOAM/OpenFOAM-2.3.0/src/OpenFOAM/lnInclude/VectorSpaceM.H:34
[2] #5  Foam::Vector<double> Foam::operator/<Foam::Vector<double>, double, 3>(Foam::VectorSpace<Foam::Vector<double>, double, 3> const&, double) at ~/OpenFOAM/OpenFOAM-2.3.0/src/OpenFOAM/lnInclude/VectorSpaceI.H:587
[2] #6  Foam::PairCollision<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > >::wallInteraction() at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/PairCollision.C:249
[2] #7  Foam::PairCollision<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > >::collide() at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/PairCollision.C:671
[2] #8  
[2]  at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/CollidingCloud.C:66
[2] #9  
[2]  at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/CollidingCloud.C:224
[2] #10  
[2]  at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/KinematicCloud.C:204
[2] #11  
[2]  at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/KinematicCloud.C:112
[2] #12  
[2]  at ~/OpenFOAM/OpenFOAM-2.3.0/src/lagrangian/intermediate/lnInclude/CollidingCloud.C:197
[2] #13  
[2]  at ~/OpenFOAM/ask-2.3.0/Solvers/DPMFoam_mod/DPMFoam_mod.C:85
[2] #14  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[2] #15  
[2]  in "/home/ask/OpenFOAM/ask-2.3.0/platforms/linux64GccDPDebug/bin/DPMFoam_mod"
[ask-HP-Z230-Tower-Workstation:19297] *** Process received signal ***
[ask-HP-Z230-Tower-Workstation:19297] Signal: Floating point exception (8)
[ask-HP-Z230-Tower-Workstation:19297] Signal code:  (-6)
[ask-HP-Z230-Tower-Workstation:19297] Failing at address: 0x3e800004b61
[ask-HP-Z230-Tower-Workstation:19297] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x364a0) [0x7f38a88d94a0]
[ask-HP-Z230-Tower-Workstation:19297] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f38a88d9425]
[ask-HP-Z230-Tower-Workstation:19297] [ 2] /home/ask/OpenFOAM/OpenFOAM-2.3.0/platforms/linux64GccDPDebug/lib/libOpenFOAM.so(_ZN4Foam6sigFpe10sigHandlerEi+0xbc) [0x7f38a9d9f7d0]
[ask-HP-Z230-Tower-Workstation:19297] [ 3] /lib/x86_64-linux-gnu/libc.so.6(+0x364a0) [0x7f38a88d94a0]
[ask-HP-Z230-Tower-Workstation:19297] [ 4] DPMFoam_mod(_ZNK4Foam9divideOp3IdddEclERKdS3_+0x20) [0x4c25d4]
[ask-HP-Z230-Tower-Workstation:19297] [ 5] DPMFoam_mod(_ZN14VectorSpaceOpsILi3ELi0EE4opVSIN4Foam6VectorIdEENS2_11VectorSpaceIS4_dLi3EEEdNS2_9divideOp3IdddEEEEvRT_RKT0_RKT1_T2_+0x29) [0x4aba77]
[ask-HP-Z230-Tower-Workstation:19297] [ 6] DPMFoam_mod(_ZN4FoamdvINS_6VectorIdEEdLi3EEET_RKNS_11VectorSpaceIS3_T0_XT1_EEEd+0x3c) [0x49cc25]
[ask-HP-Z230-Tower-Workstation:19297] [ 7] /home/ask/OpenFOAM/OpenFOAM-2.3.0/platforms/linux64GccDPDebug/lib/liblagrangianIntermediate.so(_ZN4Foam13PairCollisionINS_14CollidingCloudINS_14KinematicCloudINS_5CloudINS_15CollidingParcelINS_15KinematicParcelINS_8particleEEEEEEEEEEEE15wallInteractionEv+0x3f6) [0x7f38ace7bea4]
[ask-HP-Z230-Tower-Workstation:19297] [ 8] /home/ask/OpenFOAM/OpenFOAM-2.3.0/platforms/linux64GccDPDebug/lib/liblagrangianIntermediate.so(_ZN4Foam13PairCollisionINS_14CollidingCloudINS_14KinematicCloudINS_5CloudINS_15CollidingParcelINS_15KinematicParcelINS_8particleEEEEEEEEEEEE7collideEv+0x30) [0x7f38ace6b44a]
[ask-HP-Z230-Tower-Workstation:19297] [ 9] DPMFoam_mod() [0x4f6996]
[ask-HP-Z230-Tower-Workstation:19297] [10] DPMFoam_mod() [0x4e1b31]
[ask-HP-Z230-Tower-Workstation:19297] [11] DPMFoam_mod() [0x4cc6b1]
[ask-HP-Z230-Tower-Workstation:19297] [12] DPMFoam_mod() [0x4b6d84]
[ask-HP-Z230-Tower-Workstation:19297] [13] DPMFoam_mod() [0x4a383e]
[ask-HP-Z230-Tower-Workstation:19297] [14] DPMFoam_mod() [0x493a3d]
[ask-HP-Z230-Tower-Workstation:19297] [15] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f38a88c476d]
[ask-HP-Z230-Tower-Workstation:19297] [16] DPMFoam_mod() [0x4921e9]
[ask-HP-Z230-Tower-Workstation:19297] *** End of error message ***
--------------------------------------------------------------------------
mpirun noticed that process rank 2 with PID 19297 on node ask-HP-Z230-Tower-Workstation exited on signal 8 (Floating point exception).
You can notice that I have parallelized my simulation. I can clearly see that the crash is because DPMFoam is not able to handle this load of particles in my specified geometry.

Is there any manner in which I could get this simulation up and running. Have I missed something critical in my initial set up that leads to the solvers inadequacy to handle 5000 particles (which is not a large number by any means)???

Any help would be greatly appreciated.

Regards

ansubru

Last edited by wyldckat; March 11, 2014 at 15:35. Reason: Added [CODE][/CODE]
ansubru is offline   Reply With Quote

Old   March 7, 2014, 11:11
Default
  #2
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Well.. I have solved the issue myself.. I guess.. I realized that some of the model parameters I employed.. modulus of elasticity etc were wrongly defined (wrong values).. hence some of the intermediate parameters estimated were wrongly estimated close to a null value leading to the crash.. Phew!! I think I solved that one....

I am still open for ideas.. If someone feels my deduction is wrong..
ansubru is offline   Reply With Quote

Old   July 3, 2014, 11:35
Exclamation Q
  #3
Senior Member
 
maysmech's Avatar
 
Join Date: Jan 2010
Posts: 347
Blog Entries: 2
Rep Power: 8
maysmech is on a distinguished road
Hi all,

I have two questions about DPMFoam:

1- Where is the tangential restitution coefficient? I didn't find it in case/constant/kinematicCloudProperties.

2- Is it possible to define two type particles with different density and/or diameter?

Regards,
maysmech is offline   Reply With Quote

Old   July 3, 2014, 12:24
Default
  #4
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Hi Maysam!!

Its nice to see another person working with DPMFoam, this solver has a very poor user base.

To answer your questions,

Quote:
1- Where is the tangential restitution coefficient? I didn't find it in case/constant/kinematicCloudProperties.
From my understanding, the DPMFoam solver uses only one friction factor and that is what you could call as "standard surface friction factor or normal friction factor'. The tangential friction factor is mainly used to simulate cases of rolling which i believe the DPMFoam solver does not do. The primary assumption on the particles is 'no rolling' and the particle positions are estimated wrt to sticking and sliding conditions alone. In most applications this assumptions is quite valid and the results are not that heavily impacted if you include rolling. Nevertheless ,if you want to do cases with rolling, i would recommend you to use LIGGGHTS, its another opensource software only for DEM cases, quite easy to install and it is coupled with openfoam.
http://www.cfdem.com/liggghts-open-s...imulation-code

Quote:
2- Is it possible to define two type particles with different density and/or diameter?
Yes it is possible. I use particles with different sizes in my cases. You need to initialize them in your case/constant/kinematicCloudProperties. I use the following initialization to have a random sampling of 2 particle sizes (50% of each size in the total number injected) with an error of 0.00015 m.

Code:
model1
        {
            type            patchInjection;
            parcelBasisType fixed;
            patchName       inlet;
            U0              (0 0 -1.5);
            nParticle       1;
            parcelsPerSecond  20000000;
            
            sizeDistribution
	    {
	    
            type        multiNormal;
                multiNormalDistribution
                {
                    minValue 0.0005 ;
		    maxValue 0.00255 ;
		    expectation  
                     
                       (0.001 0.0025)
                     ;

                   variance 
                     
                       (0.0001 0.0001)
                     ;

		  strength 
                     
                       (0.5 0.5)
                     ;
                  
                }
	}

            flowRateProfile constant 1;
            massTotal       2000000;
            SOI             0;
            duration        0.00001;  
            
        }
    }
I am working on modifying the DPMFoam solver so that it can handle dynamic meshes. I am not too adept at programming but I have generated some scripts. If you have any ideas on the same could you share them with me??

Regards
ansubru
maysmech, Mojtaba.a and adambarfi like this.
ansubru is offline   Reply With Quote

Old   July 3, 2014, 14:24
Default
  #5
Senior Member
 
maysmech's Avatar
 
Join Date: Jan 2010
Posts: 347
Blog Entries: 2
Rep Power: 8
maysmech is on a distinguished road
Thanks a lot Ananda,
I am happy too seeing a person working on DPM. I am almost new with Lagrangian in OpenFOAM. I worked with pisoFoam solver before. Because I didn't need moving Mesh in my previous works I don't have any idea about coupling dynamic mesh and DPM now.
I want use DPMFoam in simulating dense fluidized beds and spouted beds. Now I want see if it is validated or not. Did you have any validation for assurance results of DPMFoam in fluidized beds test cases? Do you think it is a good choice?
About two particle types: How can I have it in Godschemidt test case? I mean I want use case/constant/kinematicCloudPositions file and positioning two type particles in desired coordinates, not injecting them?
Regards,
maysmech is offline   Reply With Quote

Old   July 4, 2014, 03:23
Default
  #6
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Hi again!!

Quote:
Now I want see if it is validated or not. Did you have any validation for assurance results of DPMFoam in fluidized beds test cases?
I am not very aware of many validation cases, but I believe that it has been validated for the goldschmidt fuidized bed cases. This is something I am looking into as well. I am trying to validate the solver (more a qualitative assessment) for my application which is not so much a ' fluidized bed' but a vibrating table with air inlet (its for an industrial application in grain sorting).. At least by looking at my simulations I can see that most of the general trends are being captured (which is very good).. i am going to do a full scale validation quite soon.. But in my opinion it looks to be a very promising solver..

Quote:
I want use case/constant/kinematicCloudPositions file and positioning two type particles in desired coordinates, not injecting them
The method is the same only 'patch injection' in my code will be replaced by the bit for injections using 'kinematicCloudPositions' (from the tutorial)

Just replace this bit in the tutorial 'sizeDistribution' initialization ..

Code:
 sizeDistribution
	    {
	    
            type        multiNormal;
                multiNormalDistribution
                {
                    minValue 0.0005 ;
		    maxValue 0.00255 ;
		    expectation  
                     
                       (0.001 0.0025)
                     ;

                   variance 
                     
                       (0.0001 0.0001)
                     ;

		  strength 
                     
                       (0.5 0.5)
                     ;
                  
                }
A general suggestion, if you want a solver validated with several benchmark studies for DEM applications; you should look at LIGGGHTS.. I am currently looking into it as well..

BR

ansubru
ansubru is offline   Reply With Quote

Old   July 4, 2014, 03:53
Default
  #7
Senior Member
 
maysmech's Avatar
 
Join Date: Jan 2010
Posts: 347
Blog Entries: 2
Rep Power: 8
maysmech is on a distinguished road
Thanks.
I am trying to do validation with other test cases. As you know, the Goldschemidt tutorial is qualitative, not quantitative.
I worked with LIGGGTS and CFDEM which seems good solver from JKU, but because of my previous knowledge about OpenFoam, I prefer it, yet.
about multi type particle: I want to have two type particles with fixed value of size, not with wide size distribution. for example 20,000 particles with diameter of 2 mm and 5,000 particles with diameter of 4 mm. I think your commands are related to size distribution, isn't it? for fixed value of one type the below command is good, Can it be revised for two particles with two fixed value size?
Quote:
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.0025;
}
}
maysmech is offline   Reply With Quote

Old   July 4, 2014, 04:33
Default
  #8
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Hi again!!

Quote:
I want to have two type particles with fixed value of size, not with wide size distribution. for example 20,000 particles with diameter of 2 mm and 5,000 particles with diameter of 4 mm.
Its size distribution with very minimal variation.. In my case I have two particular sizes of particles 1 mm and 2.5 mm with a variation of 0.0001 m.. Its almost a fixed distribution (almost 1 mm and 2.5 mm as my expectation initialization) with a very narrow size range.. You should give it try.. if you want the strength (i.e 5000 and 20000) need to tweak it a bit...This works for me though.. ..

Do let me know about ur validation cases...

BR

ansubru
ansubru is offline   Reply With Quote

Old   July 4, 2014, 05:36
Lightbulb
  #9
Senior Member
 
maysmech's Avatar
 
Join Date: Jan 2010
Posts: 347
Blog Entries: 2
Rep Power: 8
maysmech is on a distinguished road
It works but some questions arise:
1- TypeID and nParticle is 1 in parafoam postprocessing. Showing contour of "d" leads to mixture of two diameters in whole of the domain, randomly or one by one. How can we arrange desired configuration?, for example large particle in the bottom and small particles on the top of the bed, initially. For this purpose, I think we should revise the particleClousPositions by separating positions of each type. I don't know how is possible for desired initial mixture configuration. Do you know?

2- For binary particles differing in density I think we can define another TypeId like below but don't know how to define diameter of each type in sizeDistribution section, also in the kinematicCloudPositions file.

Code:
constantProperties
{
    parcelTypeId 1;

    rhoMin          1e-15;
    minParticleMass 1e-15;

    rho0            2526;
    youngsModulus   1e8;
    poissonsRatio   0.35;

    constantVolume  false;

    alphaMax        0.99;
}
maysmech is offline   Reply With Quote

Old   July 4, 2014, 05:46
Default
  #10
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Well, I did not have the need to have fixed positions for a particular size so I have not investigated it.. Moreover, if you have to change how the kinematiccloud positions injects/places the particles you might have to tweak the code as you rightly pointed out.. i am sorry... I can be of very little assistance on this regard ... one suggestion could be (may work for you).. use two injections instead of one.. In that way define two kinematic position files (one for the top section and the other for the bottom one).. then use the fixed distribution for each.. you can have two type ID's and two different densities.. I think this could be a way forward??

BR

ansubru
ansubru is offline   Reply With Quote

Old   July 4, 2014, 06:05
Default
  #11
Senior Member
 
maysmech's Avatar
 
Join Date: Jan 2010
Posts: 347
Blog Entries: 2
Rep Power: 8
maysmech is on a distinguished road
It was only for curiosity and I don't need it yet. I will work on it in my leisure time.
What is strength definition? I changed it from (0.5 0.5) to (1.5 0.5) and it worked without error, So it couldn't be volume fraction of two particles. Do you know if it is based on number, mass, volume, ...?
Regards,
maysmech is offline   Reply With Quote

Old   July 4, 2014, 06:08
Default
  #12
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
From my understanding, strength is based on number ..
ansubru is offline   Reply With Quote

Old   June 9, 2015, 06:09
Default
  #13
New Member
 
mehdi
Join Date: Nov 2010
Location: Tehran
Posts: 13
Rep Power: 6
mehdi kamyabi is on a distinguished road
Dear All
I'm new in applying CFD in coupling with DEM. So far I find three fine soft-wares for CFD-DEM applications and have some experiences with them: CFD-DEM coupling , DPMfoam in OpenFoam and Mfix. Now my question is what's the difference among them and which one is more powerful and valid? Specially which one has the tools for handling electrostatic forces and other non-contacting forces between particles?

Best Regards
mehdi kamyabi is offline   Reply With Quote

Old   June 9, 2015, 06:19
Default
  #14
Member
 
Ananda Kannan
Join Date: Feb 2014
Location: Horsholm, Denmark
Posts: 44
Rep Power: 3
ansubru is on a distinguished road
Hi mehdi!!
The softwares you have mentioned are all widely used for simulating several applications of granular and other dense multiphase flow. Each code has its own merits and de-merits and additionally ease of use as well. For instance, the OF code is not very straight forward to use, and will need a little acclimating time. Mfix and CFD-DEM coupling are a little more straight forward to use. The choice of course depends on the user, and the level of proficiency with CFD tools. If you are interested in including your own models then OF is definitely the most customizable, however mfix is not that far behind. The choice is of course entirely urs to make, remember your application and the degree of customizability you desire. If its a straight forward case study, where you need results quickly I would suggest CFD-DEm coupling and mfix.. If you want complete control of every relevant physics, then I would definitely recommend OF.

Hope this would help you

Regards

Ansubru
ansubru is offline   Reply With Quote

Old   June 10, 2015, 07:51
Default
  #15
New Member
 
mehdi
Join Date: Nov 2010
Location: Tehran
Posts: 13
Rep Power: 6
mehdi kamyabi is on a distinguished road
Hi Ananda,

I appreciate your valuable comments on my post. It was completely useful.
mehdi kamyabi is offline   Reply With Quote

Old   July 1, 2015, 08:30
Default
  #16
New Member
 
Nan
Join Date: Feb 2015
Posts: 3
Rep Power: 2
vinayvm is on a distinguished road
Quote:
Originally Posted by ansubru View Post
Hi mehdi!!
The softwares you have mentioned are all widely used for simulating several applications of granular and other dense multiphase flow. Each code has its own merits and de-merits and additionally ease of use as well. For instance, the OF code is not very straight forward to use, and will need a little acclimating time. Mfix and CFD-DEM coupling are a little more straight forward to use. The choice of course depends on the user, and the level of proficiency with CFD tools. If you are interested in including your own models then OF is definitely the most customizable, however mfix is not that far behind. The choice is of course entirely urs to make, remember your application and the degree of customizability you desire. If its a straight forward case study, where you need results quickly I would suggest CFD-DEm coupling and mfix.. If you want complete control of every relevant physics, then I would definitely recommend OF.

Hope this would help you

Regards

Ansubru

I agree with Ansubru. I think what is also important to mention, when you talk of which is more powerful, is the programming language used and your proficiency with them. All of these are great packages to start with. If your work involves substantial development, I will ask you to be careful. Be sure what suits you. MFIX uses FORTRAN while OF and CFDEM uses C++.

From my experience in using all three packages I found MFIX most easy to use. The code is very easy to read. While OF was most difficult to read. It makes heavy use of templates and has several layers of coding. For an inexperienced C++ user this can be very frustrating.

However, if you are not going to make heavy changes and just make use of features as is than you may choose only based on their resp features.

Hope that helps!

Vinay
vinayvm is offline   Reply With Quote

Reply

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
Fluent Adjoint Solver? ex10148 FLUENT 15 July 21, 2015 01:13
thobois class engineTopoChangerMesh error Peter_600 OpenFOAM 4 August 2, 2014 09:52
Divergence problem Smaras FLUENT 13 February 21, 2013 06:03
3d vof Smaras FLUENT 2 February 19, 2013 07:58
why the solver reject it? Anyone with experience? bearcat CFX 6 April 28, 2008 14:08


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