Skip to content

Draft: Add material point split feature

Sacha Duverger requested to merge add/mp_split into custom_cbgeo

This MR adds the split feature to CB-Geo MPM, very much like what is done in FEMLIP [Moresi et al 2003].

What's new

Update the "size" attribute of each material point

The length attributed in each direction to each material point is now updated as follows: l_i^{n+1} = l_i^{n}(1+\Delta\epsilon_{ii}), with l_i^{n} the length of the material point in the i^{th} direction and \Delta\epsilon_{ii} the strain increment in that same direction. The columns "nsize_x", "nsize_y" and "nsize_z" in the resulting CSV files have been renamed "size_x", "size_y" and "size_z", and can now be used to plot the domain that each material point represent (see gifs below).

Split the material point

If the length of the domain represented by a material point reaches 3 times its initial length, 2 new particles are created on each side of the initial particle. This process thus adds 2 "children" particles and keeps the "parent" one. The resulting 3 particles share equally the mass, volume and length of the parent before the split; however, all 3 have the same mass density, velocity, stress, strain and initial size as the parent. For sure this preserves the mass and the linear momentum, but I think it adds an error on the angular momentum (new particles have the same velocity but are located elsewhere).

Test case

I tested it in the simple 1D case of a purely elastic material fixed on one end and with an initial velocity on the other. More precisely:

  • all nodes have their vertical velocity imposed to 0
  • the 2 nodes at x=0 m have their horizontal velocity imposed to 0
  • the 8 particles the most at the right have a positive initial horizontal velocity

The object is expected to stretch until all kinetic energy is transformed into elastic potential energy, then compress, then stretch, etc ...

Without particle splitting

no_mp_splitting

Some material points get so much elongated that they get separated from the other, resulting in an unexpected (and theoretically impossible) separation of the object.

With particle splitting

mp_splitting

Here several splits occur at different times, when the object is extensively stretched. Thanks to the new material points, the ones on the right "keep in touch" with the others and do not get separated at any point (there is never a totally empty cell between 2 material points)

@jduriez This feature is a great addition right ? I still have to plot the energies and other stuff though. Also, I should try to do an AFLIP GCC with this feature, and the batch where the number of material point per cell increases.

Edited by Sacha Duverger

Merge request reports