first_test_2024-11-07T234150.793728.zip (170.6 KB)
I want to simulate the 2D pyrolysis in the project using DEM instead of TFM.
However, there are no errors or warnings, but it seems that the simulation is not working.
I’m wondering if the method I’m using is correct, and whether it’s not possible to use DEM instead of TFM.
I have uploaded the file, so I would appreciate it if you could check it.
Thank you.
Hi @ymy2312003 , welcome to the MFiX forum.
I see that you have some usr*.f
files in the project, so I assume you have built the custom solver for this case.
I also see that you are running on Windows. I tried your case on Linux since we often get better debug/error messages. I got an error popup but unfortunately the message is blank:
While there are no other warnings or errors, there are 15 messages, which you should look at.
If you click through the messages (you can use right-arrow or click the arrow icon) you will find:
We got a “Successful seeding” messages for regions 1 and 2 but not 3 so it looks like something failed during the seeding for IC 3. Also note that the number of particles (2982379) is very large and does not match the “Estimated particles” in the GUI:
It appears that for an initial condition composed of multiple regions, only the first region is included in the estimate - I will fix this.
Running the solver from the command line I get a message that says “Killed”, which means that the operating system killed the process. Monitoring the memory usage, I see that it goes over 6GB before the process is killed. Trying on another system with more RAM, I get a “Successful seeding” message for IC’s number 3 and 4,
Message from des/generate_particles_mod.f:1151
Initial condition 4, Phase 1: Successful seeding
Total number of particles in the system: 4655919
Beginning DEM settling period: 0 steps.
DEM settling period complete.
and the job runs.
So it seems that you are simply running out of memory. Try on a system with more RAM or setup a paging file (which will work but might be slow). Or reduce the number of particles, or perhaps try the coarse-grain approach.
– Charles
Thanks for your response.
I was trying to reduce the number of particles.
But the simulation isn’t working because a solver crash occurs. Would I rebuilding the solver to fix this issue?
Probably not.
This is the offending line of code:
177 K_Gas = 6.02D-5*SQRT(0.5d0*(DES_T_S(I)+DES_T_S(J))/300.D0) ! cal/(s.cm.K)
It’s likely that the value in the SQRT expression is negative, due to a negative temperature (which should not occur).
Can you please upload the current version of your project files?
first_test_2024-11-18T024511.725372.zip (284.1 KB)
Sorry, I did build solver.
It will be different from the situation where the solver crash occurred.
There are a few issues:
- There is a bug when defining BC boxes (your side walls), where the BC ID is not assigned to the STL facets. This will be addressed in the next release, but you can use the attached. Copy the file in your project directory and rebuild the solver.
stl_preproc_des_mod.f (43.4 KB)
- You are using conduction correction but the inputs are not reasonable for the Young’s modulus and Poisson ratio (both set at 1E-8). You can leave them blank to turn off the correction:
- After fixing 1) and 2) above I still got large velocities that make the simulation diverge. I did not investigate but it could be due to reaction rates being too large.
first_test_2024-11-20T231149.634103.zip (276.8 KB)
I tried the first and second methods.
However, an unexpected error occurred.
Could you check it for me?
We get better debug messages on Linux.
Backtrace for this error:
#0 check_solids_dem_mod_MOD_check_solids_dem_energy
at check_data/check_solids_dem.f:243
Looking in the debugger:
241 E_EFF = E_YOUNG_ACTUAL(M)*E_YOUNG_ACTUAL(L) / &
242 & (E_YOUNG_ACTUAL(M)*(1.d0 - V_POISSON_ACTUAL(L)**2) + &
243 & E_YOUNG_ACTUAL(L)*(1.d0 - V_POISSON_ACTUAL(M)**2))
You’ve put in 0 for the Young’s modulus and this is resulting in division-by-zero error. You need to enter a reasonable value.
(gdb) p E_YOUNG_ACTUAL(L)
0
(gdb) p E_YOUNG_ACTUAL(M)
0