Holding granular molecules at a constant confining pressure

Hello all,

I am simulating granular “molecules” made up of multiple spheres fixed rigidly together. I pour them into a cylindrical container made with fix wall/gran, and then I would like to push on them from the top.

Is there a way to allow the cylindrical side walls to fluctuate in diameter to preserve a constant lateral pressure on the granular particles within? Or is there a way to maintain a constant lateral pressure on these granular molecules without walls?

My input script is copied below for reference. I would really appreciate any input or help!

Many thanks,
Leah Roth

atom_style sphere
atom_modify map array
boundary fm fm fm
newton off
communicate single vel yes

fix prop all property/atom mol

region reg block -20 20 -20 20 0 50 units box
create_box 1 reg

neighbor 0.3 nsq

pair_style gran/hertz/history 4000.0 NULL 100.0 NULL 0.5 0
pair_coeff * *

timestep 0.01

fix 2 all gravity 1.0 vector 0 0 -1
fix zlower all wall/gran 2000.0 NULL 50.0 NULL 0.5 0 &
zplane 0.0 1.0
fix walls all wall/gran 2000.0 NULL 50.0 NULL 0.5 0 &
zcylinder 10

molecule object molecule.cube
fix 3 all rigid/small molecule mol object

region slab block -4 4 -4 4 40.0 50.0 units box
fix ins all pour 700 0 4767548 vol 0.13 50 &
region slab mol object rigid 3

compute 1 all erotate/sphere
thermo_style custom step atoms ke c_1 vol
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes

dump id all cfg 100 cyl/tmp_*.cfg mass type xs ys zs vx vy vz diameter

run 20000

The simplest way to accomplish this that I can think of would be to form a wall of granular particles at the top, and invoke fix addforce on those particles.

Of course LIGGGHTS (built on LAMMPS) is always another option, but I am not sure if it will allow you to do what you want. It appears that you can move the wall in its outward normal direction for compression but only at a prescribed velocity. You could of course presumably link the compute pressure and velocity command to produce the desired effect.