Hello, researchers! I am simulating the particle fall process (pure granular flow), but the following error occurs, what causes this? How can I fix this?
1.zip (3.9 MB)
Hello, researchers! I am simulating the particle fall process (pure granular flow), but the following error occurs, what causes this? How can I fix this?
I tried again, and when the particle collision model is Hertzian, I get a floating-point exception error (see the figure below for the relevant settings). However, when the collision model is Linear spring-dashpot, the model can be computed normally(see the figure below for the relevant settings). What is the reason for this?
The FPE is happening at line 104 of des_time_march.f
in the function des_time_init
87 ! JFD: Update DTSOLID
88 CALL UPDATE_DTSOLID
89
90 DTSOLID_TMP = DTSOLID
91 TMP_WALL = WALL_TIME()
92
93 ! Initialize time stepping variables for coupled gas/solids simulations.
94 IF(DES_CONTINUUM_COUPLED) THEN
95 IF(DT.GE.DTSOLID) THEN
96 FACTOR = CEILING(real(DT/DTSOLID))
97 ELSE
98 FACTOR = 1
99 DTSOLID = DT
100 ENDIF
101
102 ! Initialize time stepping variable for pure granular simulations.
103 ELSE
104 FACTOR = CEILING(real((TSTOP-TIME)/DTSOLID))
105 DT = DTSOLID
106 CALL OUTPUT_MANAGER(.FALSE., .FALSE.)
107 ENDIF ! end if/else (des_continuum_coupled)
the variable DTSOLID
is not initialized correctly in this case and is leading to a zero-division error. @jeff.dietiker any comment?
The issue is the solids time step is very small (DTSOLID= 3.7643107441497341E-008) and you are solving for 100 seconds, so the number of DEM iterations turns out to be FACTOR = 2,656,528,825
, which is larger that the max integer we can store.
It is also unlikely you will finish the simulation if you had a decent amount of particles in the system.
You can decrease the Young’s modulus, this will also decrease the solids time step. However, you should test with a final simulation time of say 1 second with particles in the system to see if this is even doable with DEM.
I tried as you said, it is worked. Thank you!