1 Introduction

Large deformation and failure of materials are common natural phenomena and important to many industrial applications. Numerical simulation of them is challenging for many computational mechanics methods, especially when history-dependent material models are involved. The material point method (MPM) [1], as a child of the particle-in-cell method [2, 3] in continuum mechanics, has been shown [4] to have unique advantages in this regard and has been used to investigate a variety of solid mechanics problems including high strain rate [5], brittle and ductile damage [6,7,8,9,10], material shock [11, 12], explosive materials [13, 14], soft tissue failure [15], multicellular constructs [16], landslides [17], levee failure [18], and sea-ice dynamics [19]. MPM can also be used to simulate fluid dynamics problems involving multiphase flows [20], granular flows [21, 22], and fluid–solid interactions [23].

MPM is a hybrid Lagrangian–Eulerian method where Lagrangian material points that can carry history-dependent quantities move over an Eulerian background mesh. The Eulerian mesh is often static and therefore avoids the tangling issues of Lagrangian finite element methods (FEM). It has been identified [24] that numerical noise occurs when material points cross a cell boundary. To avoid this noise and to build a numerical tool capable of simulating large deformation and failure of a history-dependent material involving complex geometry, we choose to implement the dual domain material point method (DDMP) [25] for its unique advantages, namely that it exactly satisfies the partition of unity, and it exactly calculates the gradients of constant and linear fields. These properties ensure conservation of mass and momentum and second-order accuracy in energy conservation [25]. The DDMP method is also easy to implement with an original MPM code without the need to track the shape of a material point. Furthermore, DDMP can be implemented with an unstructured mesh, which brings in many practical advantages for problems with complex geometry.

There are other methods to address the cell crossing noise. The generalized interpolation material point method (GIMP) is first introduced in the work [24] that identified the cell crossing noise problem. In the GIMP method, a material point is not a geometric point but is a finite domain with a definite shape. A perfect GIMP method requires that the material point domains cover the entire computational domain without any overlap or gaps in order for momentum to be conserved. This is straightforward to ensure for one-dimensional problems but can become difficult to satisfy for higher-dimensional problems. For small deformations, an approximation of GIMP, known as uGIMP or cpGIMP [24], can be used. However, for large deformation GIMP requires that the shape (or geometry) of the material point domain be tracked [24, 26], which reintroduced mesh tangling problem of a mesh-based Lagrangian method. To alleviate this problem, the convected particle domain interpolation (CPDI) methods [27, 28] were introduced, which uses parallelepipeds as the material point domains. These parallelepipeds can move, deform, and rotate as material deforms in the calculation to provide an approximate coverage of the computational domain. In this way, the material point domains do not tangle, but gaps or overlaps can still occur. Another method of avoiding the cell crossing noise is to use B-splines as the basis functions in MPM [29, 30]. While B-spline MPM can provide higher-order accuracy, it is limited to structured meshes with difficulties in application to engineering problems with complex geometries.

In the search for a numerical method to implement in a code applicable to a broad range of thermal and mechanical interactions, including large material deformation, fluid–structure interaction, energy and species convection and diffusion, one of the selection criteria is the mesh dependency of the solution. For many mesh-based methods, including MPM and DDMP, mesh dependency not only implies the convergence of the results as the mesh is refined, but also includes invariance of the results obtained with different mesh orientations. The main goal of this work is to quantitatively assess and identify needed improvements of the DDMP method to be a candidate that can be implemented in such a code. The main objective of this work is not to propose a new numerical method, although we extend the sub-point method [11] to three-dimensional cases. For this purpose, we choose to test a dynamics problem with large deformation and a quasi-static problem with brittle failure. They are chosen because they are numerically challenging, while the physical constitutive relations are relatively simple. In this way, the numerical issues can be identified easily without being entangled with complicated physics.

Any use of mesh in a numerical calculation introduces an artificial anisotropy. Complete mesh independence is not possible, therefore the methods are to be evaluated relatively. For this reason, we compare the results from DDMP and the original MPM, because the latter has been well studied and broadly used. The outline of the remainder of this work is as follows: Sect. 2 gives a brief overview of MPM and DDMP, Sect. 3 discusses simulations with large deformations using the method of manufactured solution, Sect. 4 discusses simulations of brittle failure, and finally Sect. 5 presents a summary of the work.

2 MPM and its DDMP improvement

In this section, we briefly introduce MPM and then outline the key steps to improve the method to DDMP. For a more complete discussion on MPM or DDMP, the reader is directed to the following references [25, 31].

MPM and DDMP are numerical methods that solve continuum mechanics equations such as the momentum equation given by,

$$\begin{aligned} \rho \frac{d\varvec{v}}{dt} = \rho \left( \frac{\partial \varvec{v}}{\partial t} + \varvec{v} \cdot \nabla \varvec{v} \right) = \nabla \cdot \varvec{\sigma } + \varvec{b}, \end{aligned}$$
(1)

where \(\rho \) is the material density, \(\varvec{v}\) is velocity, t is time, \(\varvec{\sigma }\) is the material stress tensor, and \(\varvec{b}\) is the body force density. For a prescribed mesh, similar to the finite element method, one can introduce a shape function \(S_i(\varvec{x})\) for each mesh node i. MPM seeks the best approximation to the solution of Eq. 1 in the linear space spanned by the shape functions and equipped with an \(L_2\) norm. The acceleration of the solution on mesh node i can be expressed as

$$\begin{aligned} m_{i} \frac{d\varvec{v}_i}{dt} = \varvec{f}^{\text {int}}_{i} +\varvec{f}^{\text {ext}}_{i}, \end{aligned}$$
(2)

where

$$\begin{aligned} \varvec{f}^{\text {int}}_{i} = -\int _\varOmega \varvec{\sigma } \nabla S_i(\varvec{x}_p) \mathrm{{d}} V \approx - \sum _{p=1}^{N_p}V_p \varvec{\sigma }_p \nabla S_i(\varvec{x}_p) \end{aligned}$$
(3)

is the internal force over the computational domain \(\varOmega \). In this relation, \(m_i\) and \(\varvec{v}_i\) are the mass and velocity of node i, \(V_p\) and \(\varvec{\sigma }_p\) are the volume and stress of material point p, \(N_p\) is the number of material points, \(\varvec{x}_p\) is the position of material point p, and \(\varvec{f}^{\text {ext}}_i\) is the total force on node i due to external fields and/or surface traction. Once the acceleration in Eq. 2 has been calculated, it is advanced to the Lagrangian nodal velocity as

$$\begin{aligned} \varvec{v}^L_i = \varvec{v}^n_i + \frac{d\varvec{v}_i}{dt} \varDelta t. \end{aligned}$$
(4)

The velocity \(\varvec{v}_p\) and position \(\varvec{x}_p\) of material point p are updated from step n to step \(n+1\) using

$$\begin{aligned} \varvec{v}^{n+1}_p = \varvec{v}^n_p + \sum _{i=1}^N \left( \varvec{v}^L_i - \varvec{v}^n_i\right) S_i(\varvec{x}^n_p) \end{aligned}$$
(5)

and

$$\begin{aligned} \varvec{x}^{n+1}_p = \varvec{x}^n_p + \frac{\varDelta t}{2} \sum _{i=1}^N \left( \varvec{v}^L_i + \varvec{v}^n_i\right) S_i(\varvec{x}^n_p), \end{aligned}$$
(6)

where N is the number of nodes in the system. To prevent numerical diffusion, only the velocity difference is interpolated to the material points, and the positions are updated with the average of the nodal velocity and Lagrangian nodal velocity. Alternative methods to update material point positions and velocities exist with one example being the affine-particle-in-cell method [32]. After advancing particle locations, the particle quantities are mapped on to the nodes using

$$\begin{aligned} \varvec{v}_i^{n+1}= \frac{\sum _p m_p \varvec{v}_p S_i(\varvec{x}_p^{n+1})}{m_i^{n+1}}, \end{aligned}$$
(7)

and

$$\begin{aligned} m_i^{n+1} =\sum _p m_p S_i(\varvec{x}_p^{n+1}), \end{aligned}$$
(8)

where \(m_p\) and \(m_i\) are mass on material point p and mass on node i.

Fig. 1
figure 1

Gradient of the one-dimensional shape function

In the calculation of the internal force in Eq. 3, the gradient of the shape function \(\nabla S_i\) is discontinuous, as illustrated by the dashed line in Fig. 1 for a one-dimensional case. When a material point moves across cells, the gradient suddenly changes its sign causing significant numerical noise in the calculation [24]. To avoid the noise, DDMP uses a hybrid MPM and FLIP method [33] to calculate the internal force. On each cell, a weight function is introduced

$$\begin{aligned} \alpha (\varvec{x}) = \frac{1}{2}\left[ \prod _{k=1}^{N_c} N_c S_k(\varvec{x}) \right] ^\frac{3}{2(N_c-1)d}, \end{aligned}$$
(9)

where \(N_c\) is the number of nodes in the cell and d is the dimensionality. Using this weight, part of the stress of the material points, as calculated by factor \(1-\alpha (\varvec{x}_p)\), is mapped to the nodes as

$$\begin{aligned} \varvec{\sigma }_i = \frac{\sum _p V_p \varvec{\sigma }_p [1-\alpha (\varvec{x}_p)]S_i(\varvec{x}_p)}{V_i}, \quad \end{aligned}$$
(10)

where

$$\begin{aligned} V_i =\int S_i(\varvec{x}) dV \approx \sum _p V_p S_i(\varvec{x}_p), \end{aligned}$$
(11)

is the volume of the material at the node. The internal force from this part of the stress can be calculated by interpolating the nodal stress inside a cell and then using the integral in Eq. 3 to find

$$\begin{aligned}{} & {} -\sum _j \varvec{\sigma }_j \int _\varOmega S_j(\varvec{x}) \nabla S_i(\varvec{x}) d v \nonumber \\{} & {} \quad = - \sum _p V_p \varvec{\sigma }_p [1-\alpha (\varvec{x}_p)]\widetilde{\nabla S_i}(\varvec{x}), \end{aligned}$$
(12)

with

$$\begin{aligned} \widetilde{\nabla S_i}(\varvec{x}) = \sum _{j=1}^N \frac{S_j(\varvec{x})}{V_j} \int _{\varOmega } S_j \nabla S_i dV. \end{aligned}$$
(13)

The internal force from the remaining part of the stress \( \alpha (\varvec{x}_p) \varvec{\sigma }_p\) is calculated as in original MPM,

$$\begin{aligned} - \sum _{p=1}^{N_p}V_p \alpha (\varvec{x}_p) \varvec{\sigma }_p \nabla S_i(\varvec{x}_p). \end{aligned}$$
(14)

The total internal force on node i is the sum from these two contributions. This way of calculating the internal force is equivalent to modifying the gradient of the shape function in Eq. 3 by

$$\begin{aligned} \overline{\nabla S_i}(\varvec{x}) = \alpha (\varvec{x})\nabla S_i(\varvec{x}) + \left[ 1-\alpha (\varvec{x})\right] \widetilde{\nabla S_i}(\varvec{x}). \end{aligned}$$
(15)

Since \(\widetilde{\nabla S_i}(\varvec{x})\) is continuous across a cell boundary, and \( \alpha (\varvec{x})\) is zero on a cell boundary, this modified shape function gradient is continuous across cell boundaries, and therefore eliminates cell crossing noise. For one-dimensional cases, this modified shape function gradient \(\overline{\nabla S_i}(\varvec{x})\) is illustrated in Fig. 1 by the solid line.

With the internal force such calculated, to ensure energy conservation, the velocity gradient also needs to be calculated using the same modified gradient of the shape function above [25, 34]. This modified gradient of the shape function at a node involves two layers of elements around the node. To avoid a non-local operation, similar to the internal force calculation above, it is often more convenient to split the velocity gradient calculation into two parts denoted as \((\nabla \varvec{v})^{mpm}\) and \((\nabla \varvec{v})^{flip}\) given by

$$\begin{aligned} (\nabla \varvec{v})^{flip} (\varvec{x}_p) = \sum _i \widetilde{(\nabla \varvec{v})}_i S_i(\varvec{x}_p), \end{aligned}$$
(16)

with

$$\begin{aligned} \widetilde{(\nabla \varvec{v})}_i = \frac{1}{V_i} \sum _j \varvec{v}_j \int _\varOmega S_i(\varvec{x}) \nabla S_j(\varvec{x}) dv \end{aligned}$$
(17)

and

$$\begin{aligned} (\nabla \varvec{v})^{mpm} (\varvec{x}_p) = \sum _i \varvec{v}_i \nabla S_i(\varvec{x}_p). \end{aligned}$$
(18)

The velocity gradient used in the constitutive relation to calculate the stress is the \(\alpha \)-function weighted average of these two,

$$\begin{aligned} \overline{(\nabla \varvec{v})} (\varvec{x}_p)= & {} \alpha (\varvec{x}_p) (\nabla \varvec{v})^{mpm} (\varvec{x}_p) \nonumber \\{} & {} + [1-\alpha (\varvec{x}_p)](\nabla \varvec{v})^{flip} (\varvec{x}_p). \end{aligned}$$
(19)

It is shown [25] that the modified gradient of the shape function satisfies

$$\begin{aligned} \sum _i \overline{\nabla S_i}(\varvec{x}) = 0, \quad \text{ and } \sum _i \varvec{x}_i \overline{\nabla S_i}(\varvec{x}) = \varvec{I}. \end{aligned}$$
(20)

These two relations ensure momentum conservation and second-order accuracy in energy conservation [25]. Compared to original MPM, DDMP requires additional operations to map quantities, such as \(\varvec{\sigma }_i\) and \(\widetilde{(\nabla \varvec{v})}_i \) onto the nodes. With an MPM code, these mappings are not difficult to implement. The most difficult part of implementing DDMP is the calculation of the integral in Eq. 13. Since the mesh does not change during the calculation, the integrals only need to be calculated once during the entire calculation.

3 Large deformation test for MPM and DDMP

The method of manufactured solution (MMS) [35,36,37] is used to verify the numerical accuracy of a particular code or algorithm, and it is a purely mathematical check on the numerical implementation. The steps of MMS are as follows: (i) choose a desired functional form for a physical quantity, such as velocity or displacement, (ii) use the governing equations to analytically solve for an external force field needed for the desired quantity to be obtained, (iii) use the analytical force field as an input to the simulation, and finally (iv) compare the simulated values with the original desired quantity.

The momentum equation (Eq. 1) is used for MMS using a constitutive relation of a purely viscous material with no bulk viscosity,

$$\begin{aligned} \varvec{\sigma } = \mu \left( \nabla \varvec{v} + \nabla \varvec{v}^T \right) - \frac{2\mu }{3} \text{ tr }(\nabla \varvec{v})\varvec{I}. \end{aligned}$$
(21)

Here \(\mu \) is the shear viscosity of the material, and \(\varvec{I}\) is the identity tensor. The MMS simulations are run in dimensionless units. The domain size is a unit cube with \(x,y,z=[0,1]\), the density \(\rho \) and viscosity \(\mu \) are both set to unity, and the velocity \(\varvec{v}\) is used as the physical quantity investigated for MMS. The desired or expected velocity is

$$\begin{aligned} \varvec{v}_{exp} = A \sin \left( \frac{\pi t}{2}\right) \left[ \begin{matrix} \sin (\pi x)\sin (\pi y)\sin (\pi z) \\ \sin (\pi x)\sin (\pi y)\sin (\pi z) \\ \sin (\pi x)\sin (\pi y)\sin (\pi z) \end{matrix} \right] \end{aligned}$$
(22)

where \(A=\{\frac{1}{20},\frac{1}{10},\frac{1}{5}\}\), resulting in corresponding displacements of about 0.06, 0.12 and 0.21 along each axis direction for the material point that is initially closest to the center of the unit cube. In Eq. 22x, y, and z denote Eulerian coordinates. Equations 21 and 22 are substituted into Eq. 1, and solved to find the external force necessary to obtain the desired velocity field. With the domain size and expected velocity, the boundary conditions for the simulations are \(\varvec{v}=0\) if \(x,y,z=0\) or \(x,y,z=1\).

Fig. 2
figure 2

a-c Normalized velocity in the \(\{1,1,1\}\) direction versus time with \(n_c=8\) (\(\times \)) and \(n_c=32\) (\(+\)) with \(n_{mp}=2^3\) compared with the expected value (solid line) at various values of A. d-f Normalized velocity displacement trajectory for the material point originally at \(x_0=y_0=z_0=\frac{15}{32}\) with \(n_c=8\) (dashed line) and \(x_0=y_0=z_0=\frac{63}{128}\) with \(n_c=32\) (solid line) at various values of A

The initial background mesh used has a uniform cubic structure. The number of grid points per spatial direction was varied from \(n_n = \{5,9,17,33,65\}\) resulting in a number of cells per direction of \(n_c = \{4,8,16,32,64\}\) and a cell size of \(\varDelta x = \frac{1}{n_c}\). The initial number of material points per cell is varied, \(n_{mp} = \{1^3,2^3,3^3,4^3\}\) for all cases, except for the \(n_c=64\) case where \(n_{mp} = \{1^3,2^3,3^3\}\). Due to the large deformation of the system, the number of material points in a given cell varies with time. For the case with \(A = \frac{1}{5}\), the material points near the cube center travel through more than 12 cells in the calculation when \(\varDelta x = 1/64\).

The maximum expected simulation velocity is A, and therefore the Courant–Friedrichs–Lewy (CFL) number [38] is given by

$$\begin{aligned} CFL = \frac{A \varDelta t}{\varDelta x} \end{aligned}$$
(23)

where \(\varDelta t\) is the simulation time step. The ratio of \(\frac{\varDelta t}{\varDelta x}\) was kept constant at 0.0032 resulting in a maximum expected \(CFL=\{4,8,16,32,64\}\cdot 10^{-5}\). Simulations were run using both MPM and DDMP. Several of the coarse meshes were run at a finer time step and showed negligible changes in the simulations’ results which lends confidence that the CFL number is sufficiently stable.

Figure 2a–c shows the velocity at the center node of the domain (\(x=y=z=\frac{1}{2}\)) for five periods with \(n_{c}=\{8,32\}\) and \(n_{mp}=2^3\) for all values of A using DDMP. The numerical results show good agreement with the expected values. To further study the methods, we use this example to study the history preservation property. This property is especially important for materials under cyclic loading. Often materials behave differently in different cycles because of accumulated damages. Therefore, it is important to distinguish the differences caused by physical reasons from those caused by the accumulation of numerical errors in the simulation. We quantify this property by plotting the displacement-velocity trajectory. If there were no numerical error, the trajectory of a material point would form a closed loop every cycle and return to its starting location every period due to the periodic nature of Eq. 22. Figure 2d–f shows a material point displacement-velocity trajectory at two spatial resolutions for five cycles with different oscillation amplitude A. At the lower resolution, the trajectories form bands. With the finer resolution, the trajectories become a tight loop indicating good history preservation.

Fig. 3
figure 3

Method of manufactured solution velocity error \(L_v^2\) as a function of cell size using a MPM and b-d DDMP with a-b \(A=\frac{1}{20}\), c \(A=\frac{1}{10}\), and d \(A=\frac{1}{5}\) with various number of initial material points per cell \(n_{mp}\). Solid lines are proportional to \((\varDelta x)^2\)

Figure 2 shows qualitatively that the error decreases as the mesh resolution increases. For a quantitative measure of error, the normalized \(L^2\) velocity error is defined as

$$\begin{aligned} L^2_v = \left( \frac{1}{Q_v}\int _{V}\big [\varvec{v}(\varvec{x})-\varvec{v}_{exp}(\varvec{x})\big ]^2dV \right) ^{\frac{1}{2}} \end{aligned}$$
(24)

and is approximated by

$$\begin{aligned} L^2_v \approx \left( \frac{1}{Q_v} \sum _{i} V_i \left[ \varvec{v}_i-\varvec{v}_{exp}(\varvec{x}_i)\right] ^2 \right) ^{\frac{1}{2}}. \end{aligned}$$
(25)

Here \(\varvec{v}_i\), \(\varvec{x}_i\), and \(V_i\) are the position, velocity, and volume of node i and the sum is performed over all nodes, V is the volume of the domain, and \(Q_v=\int \varvec{v}^2_{exp}(\varvec{x})dV=3A^2/8\) is used as the normalizing factor.

Figure 3a–b shows the velocity error defined in Eq. 25 for various \(n_{c}\) and \(n_{mp}\) at \(t=1\) for MPM and DDMP with \(A = \frac{1}{20}\). For cases where the cell sizes are \(\frac{1}{4}\) and \(\frac{1}{8}\) of the unit cube computational domain, MPM has a smaller error than DDMP. In these cases, the spatial resolutions are barely sufficient for the problem, the enlarged domain for the modified shape function gradient in DDMP reduces effective spatial resolution in exchange for a smooth stress field. However, when sufficient mesh resolution is used (e.g., \(\varDelta x \le \frac{1}{16}\)), DDMP starts to be more accurate than MPM. The reduction of cell size increases instances of material points crossing cell boundaries, causing difficulties for MPM and eventually resulting in instability and termination of the calculation. This is reason for absence of data from \(\varDelta x=\frac{1}{64}\) in Fig. 3a for MPM. On the other hand, cell crossing by material points does no harm to DDMP results. The results from \(\varDelta x=\frac{1}{64}\) are presented in Fig. 3b for DDMP. For the calculations with \(A = \frac{1}{5}\), MPM method is only stable in the mesh with four cells per spacial direction. As a reference, with this amplitude, a Lagrangian point initially at the center of the computational domain moves a displacement of approximately 0.36 in the computational domain of a unit cube. For such a coarse mesh, it is not meaningful to compare the results with the expected value. For this reason, we only plot MPM results for the smallest amplitude (\(A = \frac{1}{20}\)) in the figure.

Figure 3b–d shows the velocity error of DDMP for amplitude \(A=\frac{1}{20}, \frac{1}{10}\), and \(\frac{1}{5}\). While DDMP calculations with all the meshes and material point specifications described above are stable, the figure shows for a fixed initial number of material points per cell, refining mesh alone does not necessarily lead to improved accuracy. Figure 3b–d shows such examples if only one material point per cell is used. In these cases, the error is mostly caused by insufficient numerical integrations of Eqs. 11 and  14 [11]. More material points or the sub-point method [11] are needed to accurately capture the deformation. Since in this example, the constitutive relation (Eq. 21) is easy to evaluate, we use more material points. As long as a sufficient number of material points are used, the error decreases as \((\varDelta x)^2\) as shown in Fig. 3b–d.

The results of shear stress (\(\sigma _{yx}\)) are also compared with the analytical solution in Fig. 4 for the three amplitudes calculated with \(\varDelta x = \frac{1}{32}\) with initially \(n_{mp}=4^3\) material points per cell. From the figure, it is clear that DDMP outperforms MPM and has lower error in the stress field. It should also be noted that the errors form an oscillating pattern where MPM and to a much less extent DDMP overestimates and then underestimates the stress compared with the analytical result. When averaging over a field these oscillations will cancel out, but they can lead to unwanted artifacts when the stress at a given location is important as will be shown in the next section.

Fig. 4
figure 4

Shear stress \(\sigma _{yx}\) and its error for amplitude \(A = \frac{1}{20}\) (top), \(A = \frac{1}{10}\) (middle), and \(A = \frac{1}{5}\) (bottom). Here the shear stress error is defined as \(\sigma ^{err}_{yx}=\sigma ^{num}_{yx}-\sigma ^{soln}_{yx}\) where \(\sigma ^{num}_{yx}\) and \(\sigma ^{soln}_{yx}\) are the numerical and analytical solutions, respectively. The left column shows analytical stress fields for the corresponding amplitudes. The middle column shows the shear stress error from MPM, and the right column shows the error from DDMP. For the amplitude \(A = \frac{1}{5}\), the MPM calculation crashes in this mesh and material point resolution. The error color range for the numerical results is \(10\%\) of the color range shown in the analytical result with the corresponding amplitude A

Fig. 5
figure 5

Method of manufactured solution stress error \(L_\sigma ^2\) as a function of cell size using a MPM and b-d DDMP with a-b \(A=\frac{1}{20}\), c \(A=\frac{1}{10}\), and d \(A=\frac{1}{5}\) with various number of initial material points per cell \(n_{mp}\). Solid lines are proportional to \(\varDelta x\)

Similar to the velocity error, a normalized \(L^2\) stress error is defined to quantitatively evaluate the accuracy in the stress field. The error is defined as

$$\begin{aligned} L^2_\sigma = \left( \frac{1}{Q_\sigma } \int _{V} \big [\varvec{\sigma }(\varvec{x})-\varvec{\sigma }_{exp}(\varvec{x})\big ]^2 dV \right) ^{\frac{1}{2}} \end{aligned}$$
(26)

and is approximated by

$$\begin{aligned} L^2_\sigma \approx \left( \frac{1}{Q_\sigma } \sum _p V_p \left[ \varvec{\sigma }_p-\varvec{\sigma }_{exp}(\varvec{x}_p)\right] ^2 \right) ^{\frac{1}{2}}, \end{aligned}$$
(27)

where \(Q_\sigma = \int \varvec{\sigma }^2_{exp}(\varvec{x})dV=5(\pi A \mu )^2/2\) and the sum is performed over all material points. Figure 5 shows \(L^2_\sigma \) for MPM and DDMP. There are several interesting observations that can be made from the figure. Firstly, even for the smallest amplitude DDMP has a significantly decreased error on stress compared with MPM. Secondly, for DDMP the stress error decreases with cell size if there are a sufficient number of material points; however, the required number of material points could be large, such as 64 or more per cell initially. Thirdly, for both MPM and DDMP with a given initial number of material points per cell, mesh refinement does not necessarily lead to increased accuracy in the stress. This is related to the error in the nodal force calculation. It is well known that a constant stress should yield zero internal force on a node. This exactly holds when the force is calculated using the integral in Eq. 3, but not so when the integration is approximated by the summation over material points, especially when the distribution of the material points are not uniform. This is also true for the nodal force calculated in DDMP.

The numerical error in the nodal force calculation is not directly related to the large deformation of the material. Suppose in a one-dimensional calculation using linear shape functions, a node has more material points on the positive side of the node than on the negative side of the node. This non-uniformity results in an error due to the summation approximation in Eq. 3, which is amplified by the magnitude of the material point stress. If further deformation results in the negative side of the node gaining material points (or alternatively the positive side of the node losing material points), local uniformity could be restored, and the nodal force error could be the reduced. This error caused by a nonuniform distribution of material points is alleviated in DDMP because of the mapping from particle stress to nodal stress, but it is not completely eliminated. This observation suggests better nodal force calculation methods need to be studied to improve both MPM and DDMP calculations.

4 Mesh dependence of the methods

Both MPM and DDMP use Eulerian meshes. Knowing how the results depend on the mesh is important when using MPM or DDMP to investigate real-world problems. Many studies have been conducted to investigate convergence of the numerical results as the mesh is refined. However, the mesh dependency also includes results affected by mesh orientations, because any use of a mesh introduces artificial anisotropy. In this section, we first use examples to investigate the effects of the mesh introduced anisotropy and then study the well-known non-local issues related to strain-weakening and localization of the material. We assume the material is linear elastic until failure. The failure is determined by a brittle Griffith model [39]. We choose this model not only because it is simple and easy to reveal numerical properties of a method, but also because it is applicable to many common materials such a glass, concrete, rock, and ice.

4.1 Simulation details

A tapered cylindrical geometry is placed under tension, and the simulations are run in dimensionless units. The cylinder tapers from a diameter of \(D=6.5\) at the top and bottom to a diameter of \(d=4\) at the center of the cylinder, while the height of the cylinder is \(H=10\). The geometry is shown in Fig. 6a. To test the sensitivity on mesh orientation, two different meshes are run. The first mesh aligns with the tension direction as shown in Fig. 6b, and this mesh is referred as AM (aligned mesh). The second mesh is rotated \(45^\circ \) from AM about the z-axis, which is equivalent to rotating the particles \(-45^\circ \) as shown in Fig. 6c, and this mesh is referred to as RM (rotated mesh). All simulation run in this section are three-dimensional.

Fig. 6
figure 6

a Geometry for the failure simulations, and mesh orientations for the b aligned and c rotated meshes. Force versus displacement for a cylinder with no tapering (\(D=d\)) in tension using d MPM and e DDMP for both aligned and rotated meshes with various cell sizes (\(\varDelta x\))

Before material failure, the constitutive model for these simulations is linear elasticity where the stress is given by

$$\begin{aligned} \varvec{\sigma } = \frac{E}{1+\nu } \varvec{\epsilon } + \frac{E\nu }{(1+\nu )(1-2\nu )} \text{ tr }(\varvec{\epsilon }) \varvec{I}, \end{aligned}$$
(28)

where \(E=1000\) is the Young’s modulus, \(\nu =0.2\) is the Poisson ratio, \(\varvec{\epsilon }\) is the strain, and \(\varvec{I}\) is the identity tensor. The initial density of the material is set to \(\rho =1\). In these simulations, the mesh cells are cubes, with cell size \(\varDelta x =\varDelta y =\varDelta z = \{\frac{5}{8}, \frac{1}{2}, \frac{1}{3}, \frac{1}{4} \}\). The initial number of material points per cell is \(n_{mp}=2^3\) for the cells that are completely filled with the material. A flexible time step was used with a maximum allowable CFL value of \(\frac{1}{2}\).

In order to apply tension to the cylinder shown in Fig. 6a, a layer of material points are placed at both the ends of the cylinder mimicking two plates attached to the ends of the cylinder. These two layers of material points are referred to as plate material points. The plate material points are assigned a constant velocity of magnitude \(v_{bc}=10^{-3}\), but with opposite directions along the axis of the cylinder. These plates pull along the cylinder creating tension and causing the material to eventually fail.

During each time step, the momentum change on a plate material point is \(m_p(\varvec{v}^{n+1}_p-\varvec{v}^{n}_p)\). This change in momentum is due to the resistant force from the specimen material. The total resistant force from the specimen is then

$$\begin{aligned} \varvec{f}_{\text {plate}} = - \frac{1}{\varDelta t} \sum _{p=1}^{N_{\text {plate}}} m_p \left( \varvec{v}^{n+1}_p-\varvec{v}^{n}_p\right) \end{aligned}$$
(29)

which using Eq. 5 can be rearranged to

$$\begin{aligned} \varvec{f}_{plate} = - \frac{1}{\varDelta t} \sum _{i=1}^{N} \sum _{p=1}^{N_{plate}} m_p \left( \varvec{v}^{L}_{i}-\varvec{v}^{n}_i\right) S_i(\varvec{x}_p). \end{aligned}$$
(30)

After calculation of this force, the velocity of plate material points are set back to the original velocity to maintain the constant velocity for the plates. This is equivalent to the application of an external body force on the plates to maintain their pulling motion. Since the plates move at constant velocities, the total displacement of the cylinder can be readily calculated.

Figure 6d–e compares results from Eq. 30 against the analytical solution for a cylindrical beam with no tapering (\(D=d=6.5\)). For both AM and RM, there is good agreement between Eq. 30 and the analytical solution. These results show for this simple problem with a small deformation, both DDMP and MPM yield reasonable results and are insensitive to the mesh orientation. This orientation insensitivity of MPM in a linear elastic problem has also been demonstrated previously [40].

4.2 Local failure

To further study the methods, we now introduce brittle failure to the material. A brittle failure model is combined with the constitutive model, Eq. 28. If any principal stress (\(s_{pj}, j = 1, 2, 3\)) of material point p is greater than the failure strength \(\sigma _f=0.01E=10\) of the material, that material point becomes damaged (\(D_p=1\)) for the remainder of the simulation. Damaged material points can no longer have a positive principal stress and can only support compressive loads (\(s_{pj} \le 0\)). All material points start in the undamaged state (\(D_p=0\)). The following is the outline for computing the stress \(\varvec{\sigma }^{n+1}_p\) and damage \(D^{n+1}_p\) at step \(n+1\) given \(\varvec{\sigma }^{n}_p\), \(D^{n}_p\), and time step \(\varDelta t\):

  • Calculate prospective stress \(\varvec{\sigma }^*_p=\varvec{f}(\varvec{\sigma }_p^{n},D_p^n \varDelta t)\) using the constitutive model and then prospective principal stresses \(s^*_{pj}\), (\(j = 1, 2, 3\)).

  • Update damage: if \(\max (s^*_{p1}, s^*_{p2}, s^*_{p3}) > \sigma _f\) then \(D^{N+1}_p=1\); otherwise \(D^{n+1}_p = D^{n}_p\).

  • Update stress: if \(D^{n+1}_p = 1\) then \(\varvec{\sigma }^{n+1}_p=\varvec{R}^T \varvec{\sigma }^{-} \varvec{R}\) where \(\varvec{\sigma }^{-}\) is a diagonal matrix with values \(\sigma ^{-}_{jj} = \min (0,s^*_{pj})\) and \(\varvec{R}\) is the rotation matrix filled with the eigenvectors of \(\varvec{\sigma }^{*}_p\); otherwise \(\varvec{\sigma }^{N+1}_p = \varvec{\sigma }^*_p\). In this way, the damaged material cannot sustain a tension, while compression is allowed.

For this model, once the principal stress of a material point is larger than failure strength that material point fails and can no longer sustain tensile principal stresses. This brittle failure model was chosen because its simplicity lends itself to readily reveal numerical properties and because it is applicable to brittle materials.

Fig. 7
figure 7

Failed material points at the end of the simulation for (top) MPM and (bottom) DDMP with various cell spacing (\(\varDelta x\)) with aligned (left three) and rotated (right three) meshes using the local failure model

Due to the tapered geometry, the cylinder should fail along the center plane. Figure 7 shows the material points that failed for MPM and DDMP with AM and RM obtained using different cell sizes. For the AM cases, both MPM and DDMP show failure patterns that agree well with the expected failure location and pattern. However for the RM cases, the MPM results show that the mesh has a clear impact on how the cylinder fails. The predicted failure surface prefers to be on planes parallel to either the x- or y-axis. For the AM cases, the preferred failure direction happened to correspond to the expected failure direction. However for more complex geometries, it will be challenging (or impossible) to know a priori the systems expected failure direction. The preferred failure mode also changes significantly between meshes sizes as the final failure pattern for \(\varDelta x=\frac{1}{3}\) is drastically different from the failure pattern for \(\varDelta x = \frac{1}{4}\).

Fig. 8
figure 8

Stress in the tension direction for material points along a center cut plane of the cylinder at a displacement of 0.03 for (top) MPM and (bottom) DDMP with various cell spacing (\(\varDelta x\)) with aligned (left three) and rotated (right three) meshes using the local failure model

Compared to MPM, DDMP results have a much reduced mesh dependency which leads to a clean break along the center of the cylinder as seen in Fig. 7. It is interesting to note that DDMP was developed to address the noise caused by cell-crossing of the material points. However, in this example, the deformation is small and no particle has moved across a cell. To understand this benefit of DDMP, we plot the stress field in Fig. 8. For AM cases, there is no surprise that all methods yield expected results. For the RM cases, there are structures in the stress field associated with the mesh orientation in the MPM results. As the mesh refines, these structures also refine. As for DDMP, the stress field is not completely independent of mesh orientation, but the dependency is greatly reduced. This is caused by the use of the modified gradient of the shape function. The enlarged support of the gradient provides a smoothing effect to the strain and then the stress fields.

Fig. 9
figure 9

Force versus displacement using the local failure model for DDMP using a aligned and b rotated meshes at various cell spacing \(\varDelta x\)

Figure 9a–b shows the tensile force as a function of displacement using DDMP for AM and RM. Although the failure patterns for DDMP are not sensitive to the mesh resolution or orientation, the failure force and displacement is mesh dependent. In our calculation, the stress at a material point can be thought as an average over the stress in the volume represented by the material point. As the mesh is refined, the averaging volume is reduced leading to a higher stress for the material points near the narrow portion of the cylinder. This causes the material to fail sooner as seen in Fig. 9 because the stress is concentrated on the cylinder notch. The mesh orientation, AM compared with RM, also plays a role in determining when the material fails, but in general as the mesh is refined the system fails earlier. This is actually a well-known issue for local failure models and can be addressed by the introduction of a failure length scale [41,42,43].

4.3 Non-local failure model

The physical length scale associated with material failure and crack growth is often many orders of magnitude smaller than the finest meshes used in an engineering calculation. It is impractical to resolve this scale in a continuum scale simulation. To satisfy the practical need to have mesh insensitive results in engineering calculations, a numerical length \(L_f\) is introduced into the failure calculation [41, 42, 44, 45]. Instead of using pointwise stress in the failure model, the stress is averaged over a domain of length scale \(L_f\) before its use in the model. This method is aptly called a non-local failure model and has been implemented and used in many engineering applications [43, 46, 47]. Recently, phase field approaches [48,49,50,51,52] have also been studied and explored. The length scale is represented by the diffusion coefficient for the phase field. Since the main purpose of this work is not to study crack or failure representation, but to study numerical properties of material point methods, we choose to use the more classical non-local failure model to address the mesh sensitivity issue.

To consider this length scale in this work, the constitutive equation (Eq. 28) is combined with a non-local model where the material fails only if the average stress within a spherical volume \(V_f=\frac{4}{3}\pi L_f^3\) is greater than the failure strength \(\sigma _f\). Implementation of non-local model with MPM has been studied [53, 54]. In this work, the sub-point method [11] is used to implement the non-local model in our calculations. The average stress \(\overline{\varvec{\sigma }}\) is given by

$$\begin{aligned} \overline{\varvec{\sigma }} = \frac{1}{V_u} \int _{V_f} H(1-D(\varvec{x}))\varvec{\sigma (x)} dV, \end{aligned}$$
(31)

with

$$\begin{aligned} \quad V_u = \int _{V_f} H(1-D(\varvec{x})) dV \end{aligned}$$
(32)

where D is the damage, and H(a) is the Heaviside function (\(H(a)=1\) when \(a>0\), and \(H(a)=0\) otherwise) to ensure the average stress does not include damaged material.

Fig. 10
figure 10

Failed material points at the end of the simulation for (top) MPM and (bottom) DDMP with various cell spacing (\(\varDelta x\)) with aligned (left three) and rotated (right three) meshes using the non-local failure model with a failure length \(L_f=1\)

Fig. 11
figure 11

Average stress in the tension direction for material points along a center cut plane of the cylinder at a displacement of 0.066 for (top) MPM and (bottom) DDMP with various cell spacing (\(\varDelta x\)) with aligned (left three) and rotated (right three) meshes using the non-local failure model

The average stress \(\overline{\varvec{\sigma }}\) is computed on the nodes by averaging over a sphere of radius \(L_f (=1)\) centered at the node. Since this sphere boundary does not coincide with cells surfaces, the sub-point method [11] is used to perform the numerical integration defined by Eq. 31. The sub-points are distributed evenly through each cells with a total \(4^3\) sub-points in each cell. The following outlines the steps for computing the stress \(\varvec{\sigma }^{n+1}_p\) and damage \(D^{n+1}_p\) at step \(n+1\) for material point p given \(\varvec{\sigma }^{n}_p,\) \(D^{n}_p\) and time step \(\varDelta t\) for the non-local failure model.

  • Calculate prospective stress \(\varvec{\sigma }^*_p=\varvec{f}(\varvec{\sigma }_p,D_p,\varDelta t)\) using the constitutive model.

  • Calculate local nodal stress and damage for all nodes i

    $$\begin{aligned} \varvec{\sigma }_i= & {} \frac{\sum _p S_i(\varvec{x}_p) V_p H(1-D_p) \varvec{\sigma }^*_p}{\sum _p S_i(\varvec{x}_p) V_p H(1-D_p)}\end{aligned}$$
    (33)
    $$\begin{aligned} D_i= & {} \frac{\sum _p S_i(\varvec{x}_p) V_p D_p}{\sum _p S_i(\varvec{x}_p) V_p}. \end{aligned}$$
    (34)
  • Interpolate stress and damage for each sub-point s at position \(\varvec{x}_s\) using

    $$\begin{aligned} \varvec{\sigma }_{s} = \sum _{i=1}^{N} S_i(\varvec{x}_s) \varvec{\sigma }_{i} \quad D_s = \sum _{i=1}^{N} S_i(\varvec{x}_s) D_{i}. \end{aligned}$$
    (35)
  • Calculate the average nodal stress using

    $$\begin{aligned} \overline{\varvec{\sigma }}_i \approx \frac{\sum _s V_s H(1-D_s) \varvec{\sigma }_s}{\sum _s V_s H(1-D_s)}, \end{aligned}$$
    (36)

    where \(V_s\) is the volume of the sub-point, and the summation is over all the sub-points inside the sphere of radius \(L_f\) centered at the node.

  • Interpolate the average stress onto the material point,

    $$\begin{aligned} \overline{\varvec{\sigma }}_{p} = \sum _{i=1}^N S_i(\varvec{x}_p) \overline{\varvec{\sigma }}_{i}. \end{aligned}$$
    (37)
  • Calculate the maximum principal average stress \({\overline{s}}_{p}\) on the material points.

  • Update particle damage \(D^{n+1}_{p} = \max (D_p^n, \frac{{\overline{s}}_{p}}{ \sigma _f})\).

  • Update particle stress: If \(D_p^{n+1} \le 1\) then \(\varvec{\sigma }^{n+1}_p = \varvec{\sigma }^*_p\). If \(D^{n+1} \ge 1\), the material has failed and we calculate the principal stress and eigen-vectors from the prospective stress \(\varvec{\sigma }^*_p\), construct a diagonal stress tensor \(\varvec{\sigma }^{-}\) consisting of the principal stresses, but with the positive components replaced by zero. In this way, the damaged material cannot sustain a tension, while compression is allowed. The final stress matrix on a failed material point is stress \(\varvec{\sigma }^{-}\) transformed back to the original coordinate system as \(\varvec{\sigma }^{n+1}_p=\varvec{R}^T \varvec{\sigma }^{-} \varvec{R}\), where \(\varvec{R}\) is the rotation matrix filled with the eigenvectors of \(\varvec{\sigma }^{*}_p\).

Fig. 12
figure 12

Force versus displacement using the non-local failure model for a-b MPM and c-d DDMPusing a,c aligned and b,d rotated meshes at various cell spacing \(\varDelta x\)

Figure 10 shows the failed material point using the non-local failure model for both aligned and rotated meshes using MPM and DDMP. With the non-local model, both MPM and DDMP have realistic failure surfaces for the aligned and rotated meshes. MPM no longer has mesh artifacts for the rotated cases as seen in the local failure model (Fig. 7). Figure 11 shows the average stress, \(\overline{\varvec{\sigma }}\), before failure. This average stress smooths out the checkerboarding artifact of the local stress and allows for MPM’s failure mode to no longer depend on mesh orientation. It should be noted that the checkboarding of the local stress for MPM is still present since the average stress is only used to calculate failure and not to drive the motion of the material; therefore, if the local stress before failure is important, DDMP is the preferred method.

Figure 12 shows the force as a function of displacement using the non-local failure model. MPM and DDMP with both the aligned and rotated cases show mesh convergence with the system failing around a displacement of \(\sim 0.07\). Therefore, with a non-local failure model both MPM and DDMP provide a converged result for the failure force. If local stresses are not important and only the failure force is desired, MPM is the preferred method as it is computationally less expensive than DDMP.

5 Conclusions

Simulations with large deformation have been performed using MPM and DDMP and compared to the manufactured solutions to study the accuracy of the simulation results. Under small deformations where there was minimal or no material points that cross cell boundaries, MPM slightly outperforms DDMP. However, for larger deformations or for simulations where there are many material points which cross cell boundaries, the DDMP results are significantly more accurate compared with standard MPM results. To ensure accurate results with DDMP with large deformations, there still must be a sufficient number of material points within a stretched region to ensure that all cells have at least one and ideally a few material points per cell. We also found that a nonuniform distribution of material points can lead to numerical error for both MPM and DDMP, especially in the stress. One way to reduce the error is to use many material points in DDMP calculations, but considering the associated numerical cost, this approach may not always be practical. Better nodal force calculation methods need to be explored.

Simulations where a brittle tapered cylinder under tension were also performed with MPM and DDMP to explore mesh sensitivity of the stress field and failure mode. The MPM stress fields showed significant dependence on mesh orientation as checkerboarding artifacts of the local stress were observed in the simulations with the rotated mesh. These artifacts caused the local failure model to have mesh-dependent failure modes with MPM. DDMP does not suffer from local stress checkerboarding, and therefore the local failure results have failure modes that are not dependent on mesh orientation. Although DDMP’s failure modes are physically reasonable, the failure displacement is dependent on mesh size as seen previously for many other numerical methods in the literature. Similar to the solution used by those methods, introducing a failure length scale, which results in a non-local failure model, both MPM and DDMP achieve convergent results for the failure mode and failure displacement as a mesh refines and shows little dependence on mesh orientation when the cell size is small compared to the introduced length scale of the non-local failure model. The non-local failure model alleviated MPM’s artifacts by smoothing the stress field used to determine failure allowing for MPM to have converged results. The non-local model does not alter the local stress field, so if the local stress before failure is important, DDMP is the preferred method. Although more tests are needed, this work shows DDMP has the basic ingredients needed for simulating complex objects undergoing history-dependent large deformation and failure.