Hello,
When you determine the volume of the settled particles, make sure that the top of the surface of the settled particles is flat. When I run the code, the particles appear to stick to the side of the wall, since GetMaxParticleZ() is used to determine the top of the particles, there would be extra space on top. See the figure attached.
Since you've implemented your own cohesion/surface tension model, this might result in more particles sticking to the wall, and a larger void ratio.
Here are what you can do to get a better approximation of the void ratio:
- Rest a weighted plate on top (see a direct shear example here, this script has void ratio computation as well)
- Push a boundary plane (BCPlane) downward (see demo_GPU_movingBoundary)
- Remove the particles on top that's not even, you can use SetParticlePosition(int sphereID, const ChVector<double> pos) to move them somewhere.
- If
you don't want to change the surface profile, you can find a cubic domain
(like 16*16*5 cm) of particles within the settled ones, and use those for
void ratio calculations. You can write a subroutine to count the
number of particles in that domain.
I approximated the top surface as a flat one, I got a void ratio of 0.67. If you want smaller void ratio, you can add different weight on top or turn off friction.
Thank you,
Luning