Hello,
I’m dusting off an old model to tackle a new problem within a different parameter space. Similarly, I am re-familiarizing myself with LAMMPS after a several year break and have some broad questions. In particular, I’m looking for new and/or useful knobs to turn that I am not aware of to optimize my computations. If this is not the correct venue, I apologize in advance as this is partly a research question.
Full disclosure, I’m developing this code while using 2-4 processors on a laptop and plan to scale it to more processors to generate production data.
I am simulating ~600 colloids in external fields that cause colloids to accumulate at a wall. I use the DLVO potential (e.g. pair_styles colloid, yukawa/colloid, lubricate, and Brownian) and fixes to account for the external driving forces (e.g. addforce and wall/colloid). At the beginning of the simulation, particles are evenly distributed at low volume fraction within a high aspect ratio box (very tall, very thin). Towards the middle and end of the simulation, particles concentrate at the wall at moderate volume fractions.
I ran a series of simulations at ridiculously high driving forces to determine a suitable timestep. I then plan to use the largest allowable timestep in these physically difficult trial simulations when simulating the actual more gentle driving forces of interest.
At ridiculously high driving forces, I settled on a timestep of dt = 1e-13 seconds. However, these simulations appear to slow down considerably as the simulation progresses. For instance, the CPU time averages to (~300 seconds/1e6 steps) from 0-10e6 steps and averages to (~5000 seconds/1e6 steps) from 20-28e6 steps. For these conditions, ~30% of particles are at the wall (70% are suspended) at later times, compared to all particles being evenly suspended at beginning of simulation. Restarting the simulation (i.e. rebalancing) doesn’t help. Also, the slowdown is considerably worse if I attempt larger timesteps, which I don’t understand.
Definitely CPU time/step will decrease with more processors and better computer, but I feel there’s other optimization tricks I can implement with the modest computational resources I am using at the moment. I’d appreciate any input on the following: