Simulation of the column collapse

Hello

I tried to re-produce the analysis in this article: Fern et al, The role of constitutive models in MPM simulations of granular column collapses. The 1x1m column is simulated and the material is Mohr-Coulomb with softening. During the simulation, there is one particle just flies out of the mesh (see pic), subsequently the simulation stopped. Are there tips and tricks to avoid such behaviour? Any help is appreciated.

The source files for the simulation:
column_collapse.zip (21.8 KB)

Hi @vryy

The 1 thing I noticed:

Boundary Conditions

Matching the boundary condition in the Fern et al paper is a bit tricky. In the paper, they are preemptively placing material points along the entire base of the model:

The columns rested on a thin layer called the base layer which provided the friction necessary for the deposition. It is modelled as a stiff elastic body. According to the experimental data, the friction of the base layer plays a small role in the column collapse [18] and was confirmed numerically when some realistic friction angles were applied [3].

I notice you are imposing a zero-velocity constraint in the x-dir along the model base. I don’t think a frictional layer and zero-velocity condition are equivalent in this case. It might be tough to replicate results with this approach.

Improvements

Time Step

Without changing any boundary conditions, I reduced the time step to dt=1e-5 which appears to improve stability. Even if dt is below something like the CFL condition, in my experience “shooting material points” often means dt is still too big. With the smaller dt, I can run your model until around t=1.0s when material points begin to reach the right mesh boundary and displace upwards due to the nodal velocity constraints.

Time Step + Friction Constraint

Next, I changed the bottom boundary condition to be a friction constraint and kept the reduced time step of dt=1e-5. I could get this to run until t=2.5s. Changing the friction coef. along the base might help make this one look a bit more like the paper.

1 Like

Thanks @jgiven100 for pointing out the problem with the BC and suggestion for dt. I modified the BC as below:

"boundary_conditions": {
  "velocity_constraints": [
    {
      "nset_id": 0,
      "dir": 0,
      "velocity": 0.00
    },
    {
      "nset_id": 1,
      "dir": 1,
      "velocity": 0.00
    },
    {
      "nset_id": 2,
      "dir": 0,
      "velocity": 0.00
    }
  ],
  "friction_constraints": [
    {
      "nset_id": 1,
      "dir": 1,
      "sign_n": 1.0,
      "friction": 0.6494076
    }
  ]
}

With a quite large friction coefficient (=tan(33)), I obtained a result which slides larger than expected. This is captured at T=1.17s. Could you please confirm if my setting for friction constraint is correct?

column_collapse_rev1.zip (21.8 KB)

Try updating "sign_n" such that

      "friction_constraints": [
        {
          "nset_id": 1,
          "dir": 1,
          "sign_n": -1.0,    
          "friction": 0.6494076
        }
      ]

I tend to forget the convention for "dir" and "sign_n", so I always check this part of the 2d sliding block benchmark which I know has the friction constraint is correctly implemented.

Using the updated inputs you shared after switching the sign of "sign_n" is producing the following for me:

Thanks @jgiven100 , I could obtain the same. This is really cool :sunny: