Skip to content

[MPM] Incorrect predicted velocity fieldΒ #14034

@andimkatili

Description

@andimkatili

Current implementation of predict in mpm bossak scheme yields incorrect predicted velocity field in the background grid.
Consider the following example:

A solid block of steel (2D) with prescribed velocity to the material point as follow:
MP_VELOCITY_X = MP_COORDINATE X
MP_VELOCITY_Y = 0.0
gravity is not considered, therefore MP_ACCELERATION is zero
Image
Particle to grid mapping is performed, yielding the following velocity field (v t) at the nodes
Image
Finally predict is called, calculating the first guess of the current velocity field (v t+1) for the nonlinear iteration. However, as seen below, v t+1 = - (v t) instead of the expected value v t+1 = v t

Image

Below is a snippet of current implementation (04.12.2025). For every DOF that is not fixed, the predicted displacement is set to zero (u t+1 = 0.0). When update is called, this leads to:

v t+1 = c 1 * du - c 4 * v t - c 5 * a t

v t+1 = c 1 * 0.0 - c 4 * v t - c 5 * 0.0

with newmark scheme, c 1 = 2/dt and c 4 = 1.0
v t+1 = 2/dt * 0.0 - 1.0 * v t
v t+1 = -v t
which is the result obtained in the picture above

Image

Changing line 232 into:
u t+1 = dt * v t
and doing the update:
v t+1 = 2/dt * dt * v t - 1.0 * v t
v t+1 = 2v t - v t
v t+1 = v t

Should give a more reasonable prediction result than the current implementation.

Note that the behavior explained above applies not only in the first time step, but also all subsequent time step. It also indirectly affect acceleration update in a more general cases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions