Hi Gunjan @chz238191
Thanks for the report and your files. This case reveals several problems with the SQP and DMP code.
The first thing I’d like you to do is upgrade to the latest release (26.1.2). In this version, the PARCROSS error is gone, but there’s a new problem - when I ran your case I got
Error from check_convergence.f:266
Error 1000: NaN detected in residual:Energy equation, phase (0)
Tracking this down I found the following:
The parallel error message is a symptom. In serial the same case stops with NaN detected in residual: Energy equation. A particle temperature becomes NaN, and in a DMP run that surfaces as particles that cannot be matched across processor boundaries.
Cause. Your case sets e_young_actual, v_poisson_actual, ew_young_actual and vw_poisson_actual. These turn on the contact-area correction for particle-particle and particle-wall conduction. With the Hertzian collision model that correction is computed incorrectly: it inflates the overlap by a factor of 5 to 7 for particles of your size, even when the “actual” values equal the simulation values, as they do in your file. For SQP particles the conduction model also works on the bounding sphere (12.5 mm for your rods) rather than the particle surface. Together, the inflated overlap can exceed the sphere diameter, and the contact radius becomes the square root of a negative number.
There are also some bookkeeping issues with the DMP code (neighbor list and tangential history).
Fix. The attached patches are against the current (26.1) source. So upgrade to 26.1.2 before you do anything else. Then download the tarball, then do
$ mv ~/Downloads/patches.tgz /tmp
$ cd /tmp
$ tar xfz patches.tgz
$ cd $CONDA_PREFIX/share/mfix/src
$ for p in /tmp/patches/000*.patch; do patch -p1 < $p; done
If you have trouble applying the patches, let me know.
After doing this you can rebuild the default solvers:
$ cd $CONDA_PREFIX/bin
$ build_mfixsolver -j; build_mfixsolver -j --dmp; build_mfixsolver -j --smp
Alternately you can build a custom solver in the project dir, but you will have to do this for each project
Here’s a breakdown of the patches:
0001, 0002: the area correction and the invalid contact radius. These two stop the crash.
0003, 0004, 0009: heat transfer for non-spherical SQP particles. Conduction now uses the contact geometry instead of the bounding sphere. Convection and radiation use the particle surface area, which is 127 mm² for your rods; the bounding sphere gave 492 mm².
0007, 0008: contact forces and contact history for particles that cross a processor or periodic boundary. These affect any DMP run.
0005, 0006: SQP with the linear spring-dashpot model, and GSP convection. Your case does not use either.
Workaround without patching. Delete the four *_actual keywords. Since they match your simulation values, the correction should have had no effect anyway. The run will then complete, but particle heating and cooling rates will be too high, because heat transfer is still based on the bounding sphere.
Please let us know how it goes with this!
– Charles
patches.tgz (23.1 KB)