# Peridynamics PMB and LPS source

Hello Users,

I’m looking over the PMB and LPS peridynamics source and noticed that the PMB (pair_peri_pmb.cpp) spring force is calculated:

line 243, pair_peri_pmb.cpp

“”"
rk = (kspring[itype][jtype] * vfrac[j]) * vfrac_scale * stretch;
“”"

So the spring force depends on the spring constant between bonds i-j, however, in the LPS source, the spring force is calculated as:

line 289, pair_peri_lps.cpp

“”"
rk = ( (3.0 * bulkmodulus[itype][itype]) -
(5.0 * shearmodulus[itype][itype]) ) * vfrac[j] * vfrac_scale *
( (omega_plus * theta[i] / wvolume[i]) +
( omega_minus * theta[j] / wvolume[j] ) ) * r0[i][jj];
rk += 15.0 * ( shearmodulus[itype][itype] * vfrac[j] * vfrac_scale ) *
( (omega_plus / wvolume[i]) + (omega_minus / wvolume[j]) ) * dr;
“”"

the bulk modulus and shear modulus is just of the “itype”. Shouldn’t the LPS modulus values depend on the i-j bond type, so "bulkmodulus[itype][jtype] and shearmodulus[itype][jtype]?

Thanks for the input!

Hello Users,

I'm looking over the PMB and LPS peridynamics source and noticed that the
PMB (pair_peri_pmb.cpp) spring force is calculated:

line 243, pair_peri_pmb.cpp
"""
rk = (kspring[itype][jtype] * vfrac[j]) * vfrac_scale * stretch;
"""

So the spring force depends on the spring constant between bonds i-j,
however, in the LPS source, the spring force is calculated as:

line 289, pair_peri_lps.cpp
"""
rk = ( (3.0 * bulkmodulus[itype][itype]) -
(5.0 * shearmodulus[itype][itype]) ) * vfrac[j] * vfrac_scale *
( (omega_plus * theta[i] / wvolume[i]) +
( omega_minus * theta[j] / wvolume[j] ) ) * r0[i][jj];
rk += 15.0 * ( shearmodulus[itype][itype] * vfrac[j] * vfrac_scale )
*
( (omega_plus / wvolume[i]) + (omega_minus / wvolume[j]) ) * dr;
"""

the bulk modulus and shear modulus is just of the "itype". Shouldn't the
LPS modulus values depend on the i-j bond type, so
"bulkmodulus[itype][jtype] and shearmodulus[itype][jtype]?

it looks like it, but if you look around some more, there are parts
where it seems, that it is more-or-less assumed, that there is only
one type of atom.
all the peridynamics inputs that i have come across so far (which is
not exhaustive), had only one kind of material, i.e. used a statement
pair_coeff * * [...]
and in that case, these mixups wouldn't matter. there are also some
confusing statements for energy contributions.

changing this would require either a) that it is done by a
peridynamics expert or b) that it is done based on suitable example
inputs where it would be easy to verify individual component
contributions.

for the time being, i would recommend to assume, that only one kind of
material at a time can be modeled with the peridynamics pair styles.

axel.

Hi Axel,

Thanks for the reply. The points you bring up are good and I’ve also considered them. Unfortunately, I haven’t had much luck in replies from the peridynamics folks. I am pretty positive that the PMB model is correct but the other is not.