Hello everyone,
I just found a problem when I tried to run following input file. It showed an error as below.
The strange thing is that the code works fine when I change the particle radius into 0.00036.
I'm not sure why increasing the particle size can solve this problem, and why the number of bins is related to the particle radius.
I'm very grateful if anyone can give me some comments or advice.
Thank you very much!
Jason
#--------------------------------------------------Error message-------------------------------------------------------------------
fix ctg all check/timestep/gran 1 0.1 0.1
run 1
Setting up run ...
INFO: Resetting random generator for region factory
INFO: Particle insertion ins: inserting every 0 steps
Memory usage per processor = 5.08311 Mbytes
Step Atoms KinEng CPU
0 0 -0 0
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.
NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
ERROR: too many bins for this domain
insertion: proc 1 at 0 %
ERROR on proc 1: assertion failed (../region_neighbor_list_I.h:191)
ERROR: too many bins for this domain
insertion: proc 3 at 0 %
ERROR on proc 3: assertion failed (../region_neighbor_list_I.h:191)
ERROR: too many bins for this domain
insertion: proc 2 at 0 %
ERROR on proc 2: assertion failed (../region_neighbor_list_I.h:191)
--------------------------------------------------------------------------
mpirun has exited due to process rank 3 with PID 23832 on
node ceeyang-HP-EliteDesk-800-G1-SFF exiting improperly. There are two reasons this could occur:
1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.
2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"
This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
#--------------------------------------------------Error message-------------------------------------------------------------------
#=============================Input file===========================================
#Particle packing
atom_style granular
atom_modify map array
boundary p f p
newton off
echo both
log log.liggghts
thermo_log post/thermo.txt
communicate single vel yes
units si
processors 2 2 1
region domain block 0.0 0.5 -0.1 0.4 -0.000675 0.000675 units box
create_box 2 domain
neighbor 0.003 bin
neigh_modify delay 0 every 1 check no
#Material properties required for new pair styles
fix m1 all property/global youngsModulus peratomtype 5.0e6 5.0e6
fix m2 all property/global poissonsRatio peratomtype 0.45 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 2 0.9 0.9 0.9 0.9
fix m4 all property/global coefficientFriction peratomtypepair 2 0.3 0.3 0.3 0.3
#Plane walls
fix ywalls1 all wall/gran model hertz tangential history primitive type 2 yplane 0.0 limitForce on
fix ywalls2 all wall/gran model hertz tangential history primitive type 2 yplane 0.3 limitForce on
#distributions for insertion
fix pts1 all particletemplate/sphere 1 atom_type 1 density constant 2500 radius constant 0.00018
fix pdd1 all particledistribution/discrete 1. 1 pts1 1.0
region factory block 0.0 0.5 0.0 0.3 -0.000675 0.000675 units box
#New pair style
pair_style gran model hertz tangential history limitForce on #avoid attractive force
pair_coeff * *
#particle insertion
fix ins all insert/pack seed 5330 distributiontemplate pdd1 &
maxattempt 100000 vel constant 0.0 0.0 0.0 &
insert_every once overlapcheck yes all_in yes &
region factory particles_in_region 1000
#apply nve integration to all particles that are inserted as single particles
fix integrate all nve/sphere
# Gravity
fix grav all gravity 9.81 vector 0.0 -1.0 0.0
timestep 0.000002
#output settings, include total thermal energy
compute 1 all erotate/sphere
thermo_style custom step atoms ke cpu
thermo 5000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
fix ctg all check/timestep/gran 1 0.1 0.1
run 1
unfix ctg
dump dmp all custom 5000 post/dump*.packing id type x y z vx vy vz fx fy fz radius
run 49999
write_restart *.save
#=============================Input file===========================================
Daniel Queteschiner | Thu, 09/08/2016 - 16:43
Bin size depends on particle radius
The optimal bin size for neighbor list generation is defined as 4 times the maximum particle radius in the simulation. In your case this would mean about 350 bins in the x direction for r = 0.00018 and about 175 bins for r = 0.00036. In the current version of LIGGGHTS the maximum number of bins in any direction is limited to 200. This limit seems to have changed (for whatever reason) in LIGGGHTS 3.4.0. In the original implementation of the code in question the limit was at least 32767 (INT_MAX).
You may try altering the limit in the following line
https://github.com/CFDEMproject/LIGGGHTS-PUBLIC/blob/3.5.0/src/region_ne...
llib11ik | Fri, 09/09/2016 - 09:04
Thank you Daniel
Thanks for the clear and helpful explanation!
BTW, after I change the .H file, do I need to rebuild the LIGGGHTS, i.e. run cfdemCompLIG ? (never changed it before)
Cheers!
Daniel Queteschiner | Fri, 09/09/2016 - 12:36
Rebuild
Yes, any change to a source file requires you to recompile the program.