Skip to content

Commit dfb69f8

Browse files
authored
Merge pull request #29 from ZenanH/main
🎉 Release new version 0.4.0
2 parents 7022855 + 7c2059b commit dfb69f8

15 files changed

Lines changed: 910 additions & 1297 deletions

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "MaterialPointSolver"
22
uuid = "dc4aa359-7d89-437d-91bb-f4b330c522c1"
33
authors = ["Zenan Huo <zenan.huo@outlook.com>"]
4-
version = "0.3.12"
4+
version = "0.4.0"
55

66
[deps]
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![CI](https://github.com/LandslideSIM/MaterialPointSolver.jl/actions/workflows/ci.yml/badge.svg)](https://github.com/LandslideSIM/MaterialPointSolver.jl/actions/workflows/ci.yml)
44
[![](https://img.shields.io/badge/docs-stable-blue.svg?logo=quicklook)](https://landslidesim.github.io/MaterialPointSolver.jl/stable/)
5-
[![](https://img.shields.io/badge/version-v0.3.12-pink)]()
5+
[![](https://img.shields.io/badge/version-v0.4.0-pink)]()
66

77
[![](https://img.shields.io/badge/NVIDIA-CUDA-green.svg?logo=nvidia)](https://developer.nvidia.com/cuda-toolkit)
88
[![](https://img.shields.io/badge/AMD-ROCm-red.svg?logo=amd)](https://www.amd.com/en/products/software/rocm.html)
@@ -66,7 +66,7 @@ julia> ]
6666

6767
## Citation ❤
6868

69-
If you use `MaterialPointSolver.jl` in your research, please consider to cite this paper:
69+
If you find `MaterialPointSolver.jl` useful or have used it in your research, please cite it as follows:
7070

7171
```bib
7272
@article{index,

src/solvers/OS_MUSL.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ function procedure!(
2424
dev = getBackend(Val(args.device))
2525
# MPM procedure
2626
resetgridstatus_OS!(dev)(ndrange=grid.ni, grid)
27-
args.device == :CUDA && args.basis == :uGIMP ?
28-
resetmpstatus_OS_CUDA!(dev)(ndrange=mp.np, grid, mp, Val(args.basis)) :
29-
resetmpstatus_OS!(dev)(ndrange=mp.np, grid, mp, Val(args.basis))
27+
resetmpstatus_OS!(dev)(ndrange=mp.np, grid, mp, Val(args.basis))
3028
P2G_OS!(dev)(ndrange=mp.np, grid, mp, G)
3129
solvegrid_OS!(dev)(ndrange=grid.ni, grid, bc, ΔT, args.ζs)
3230
doublemapping1_OS!(dev)(ndrange=mp.np, grid, mp, attr, ΔT, args.FLIP, args.PIC)

src/solvers/OS_USF.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,9 @@ function procedure!(
4747
end
4848
# MPM procedure
4949
resetgridstatus_OS!(dev)(ndrange=grid.ni, grid)
50-
args.device == :CUDA && args.basis == :uGIMP ?
51-
resetmpstatus_OS_CUDA!(dev)(ndrange=mp.np, grid, mp, Val(args.basis)) :
52-
resetmpstatus_OS!(dev)(ndrange=mp.np, grid, mp, Val(args.basis))
50+
resetmpstatus_OS!(dev)(ndrange=mp.np, grid, mp, Val(args.basis))
5351
P2G_OS!(dev)(ndrange=mp.np, grid, mp, G)
5452
solvegrid_USL_OS!(dev)(ndrange=grid.ni, grid, bc, ΔT, args.ζs)
55-
doublemapping1_OS!(dev)(ndrange=mp.np, grid, mp, attr, ΔT, args.FLIP, args.PIC)
53+
doublemapping1_OS!(dev)(ndrange=mp.np, grid, mp, attr, ΔT, args.FLIP, args.PIC)
5654
return nothing
5755
end

src/solvers/OS_USL.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,7 @@ function procedure!(
117117
dev = getBackend(Val(args.device))
118118
# MPM procedure
119119
resetgridstatus_OS!(dev)(ndrange=grid.ni, grid)
120-
args.device == :CUDA && args.basis == :uGIMP ?
121-
resetmpstatus_OS_CUDA!(dev)(ndrange=mp.np, grid, mp, Val(args.basis)) :
122-
resetmpstatus_OS!(dev)(ndrange=mp.np, grid, mp, Val(args.basis))
120+
resetmpstatus_OS!(dev)(ndrange=mp.np, grid, mp, Val(args.basis))
123121
P2G_OS!(dev)(ndrange=mp.np, grid, mp, G)
124122
solvegrid_USL_OS!(dev)(ndrange=grid.ni, grid, bc, ΔT, args.ζs)
125123
doublemapping1_OS!(dev)(ndrange=mp.np, grid, mp, attr, ΔT, args.FLIP, args.PIC)

src/solvers/affine/OS_affine.jl

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -142,29 +142,28 @@ aP2G procedure for scattering the mass, momentum, and forces from particles to g
142142
) where {T1, T2}
143143
ix = @index(Global)
144144
if ix mp.np
145+
vol = mp.Ω[ix]
146+
mps = mp.ms[ix]
147+
mppsx, mppsy = mp.ps[ix, 1], mp.ps[ix, 2]
148+
σxx, σyy, σxy = mp.σij[ix, 1], mp.σij[ix, 2], mp.σij[ix, 4]
149+
mξx, mξy = mp.ξ[ix, 1], mp.ξ[ix, 2]
150+
aC1, aC2, aC3, aC4 = mp.aC[ix, 1], mp.aC[ix, 2], mp.aC[ix, 3], mp.aC[ix, 4]
145151
@KAunroll for iy in Int32(1):Int32(mp.NIC)
146152
Ni = mp.Nij[ix, iy]
147153
if Ni T2(0.0)
148154
∂Nx = mp.∂Nx[ix, iy]
149155
∂Ny = mp.∂Ny[ix, iy]
150156
p2n = mp.p2n[ix, iy]
151-
vol = mp.Ω[ix]
152-
NiM = mp.ms[ix] * Ni
153-
gx, gy = grid.ξ[p2n, 1], grid.ξ[p2n, 2]
154-
mx, my = mp.ξ[ix, 1], mp.ξ[ix, 2]
155-
dx, dy = gx - mx, gy - my
157+
dx, dy = grid.ξ[p2n, 1] - mξx, grid.ξ[p2n, 2] - mξy
156158
# compute nodal mass
157-
@KAatomic grid.ms[p2n] += NiM
159+
@KAatomic grid.ms[p2n] += mps * Ni
158160
# compute nodal momentum
159-
@KAatomic grid.ps[p2n, 1] += Ni * (mp.ps[ix, 1] + mp.ms[ix] *
160-
(mp.aC[ix, 1] * dx + mp.aC[ix, 2] * dy))
161-
@KAatomic grid.ps[p2n, 2] += Ni * (mp.ps[ix, 2] + mp.ms[ix] *
162-
(mp.aC[ix, 3] * dx + mp.aC[ix, 4] * dy))
161+
@KAatomic grid.ps[p2n, 1] += Ni * (mppsx + mps * (aC1 * dx + aC2 * dy))
162+
@KAatomic grid.ps[p2n, 2] += Ni * (mppsy + mps * (aC3 * dx + aC4 * dy))
163163
# compute nodal total force for solid
164-
@KAatomic grid.fs[p2n, 1] += -vol * (∂Nx * mp.σij[ix, 1] +
165-
∂Ny * mp.σij[ix, 4])
166-
@KAatomic grid.fs[p2n, 2] += -vol * (∂Ny * mp.σij[ix, 2] +
167-
∂Nx * mp.σij[ix, 4]) + NiM * gravity
164+
@KAatomic grid.fs[p2n, 1] += -vol * (∂Nx * σxx + ∂Ny * σxy)
165+
@KAatomic grid.fs[p2n, 2] += -vol * (∂Ny * σyy + ∂Nx * σxy) +
166+
Ni * mps * gravity
168167
end
169168
end
170169
end
@@ -177,37 +176,35 @@ end
177176
) where {T1, T2}
178177
ix = @index(Global)
179178
if ix mp.np
179+
mps, mx, my, mz, vol = mp.ms[ix], mp.ξ[ix, 1], mp.ξ[ix, 2], mp.ξ[ix, 3], mp.Ω[ix]
180+
mppx, mppy, mppz = mp.ps[ix, 1], mp.ps[ix, 2], mp.ps[ix, 3]
181+
aC1, aC2, aC3 = mp.aC[ix, 1], mp.aC[ix, 2], mp.aC[ix, 3]
182+
aC4, aC5, aC6 = mp.aC[ix, 4], mp.aC[ix, 5], mp.aC[ix, 6]
183+
aC7, aC8, aC9 = mp.aC[ix, 7], mp.aC[ix, 8], mp.aC[ix, 9]
184+
σxx, σyy, σzz = mp.σij[ix, 1], mp.σij[ix, 2], mp.σij[ix, 3]
185+
σxy, σyz, σzx = mp.σij[ix, 4], mp.σij[ix, 5], mp.σij[ix, 6]
180186
@KAunroll for iy in Int32(1):Int32(mp.NIC)
181187
Ni = mp.Nij[ix, iy]
182188
if Ni T2(0.0)
183189
∂Nx = mp.∂Nx[ix, iy]
184190
∂Ny = mp.∂Ny[ix, iy]
185191
∂Nz = mp.∂Nz[ix, iy]
186192
p2n = mp.p2n[ix, iy]
187-
vol = mp.Ω[ix]
188-
NiM = mp.ms[ix] * Ni
189-
gx, gy, gz = grid.ξ[p2n, 1], grid.ξ[p2n, 2], grid.ξ[p2n, 3]
190-
mx, my, mz = mp.ξ[ix, 1], mp.ξ[ix, 2], mp.ξ[ix, 3]
191-
dx, dy, dz = gx - mx, gy - my, gz - mz
193+
dx, dy, dz = grid.ξ[p2n, 1] - mx, grid.ξ[p2n, 2] - my, grid.ξ[p2n, 3] - mz
192194
# compute nodal mass
193-
@KAatomic grid.ms[p2n] += NiM
195+
@KAatomic grid.ms[p2n] += Ni * mps
194196
# compute nodal momentum
195-
@KAatomic grid.ps[p2n, 1] += Ni * (mp.ps[ix, 1] + mp.ms[ix] *
196-
(mp.aC[ix, 1] * dx + mp.aC[ix, 2] * dy + mp.aC[ix, 3] * dz))
197-
@KAatomic grid.ps[p2n, 2] += Ni * (mp.ps[ix, 2] + mp.ms[ix] *
198-
(mp.aC[ix, 4] * dx + mp.aC[ix, 5] * dy + mp.aC[ix, 6] * dz))
199-
@KAatomic grid.ps[p2n, 3] += Ni * (mp.ps[ix, 3] + mp.ms[ix] *
200-
(mp.aC[ix, 7] * dx + mp.aC[ix, 8] * dy + mp.aC[ix, 9] * dz))
197+
@KAatomic grid.ps[p2n, 1] += Ni * (mppx + mps *
198+
(aC1 * dx + aC2 * dy + aC3 * dz))
199+
@KAatomic grid.ps[p2n, 2] += Ni * (mppy + mps *
200+
(aC4 * dx + aC5 * dy + aC6 * dz))
201+
@KAatomic grid.ps[p2n, 3] += Ni * (mppz + mps *
202+
(aC7 * dx + aC8 * dy + aC9 * dz))
201203
# compute nodal total force for solid
202-
@KAatomic grid.fs[p2n, 1] += -vol * (∂Nx * mp.σij[ix, 1] +
203-
∂Ny * mp.σij[ix, 4] +
204-
∂Nz * mp.σij[ix, 6])
205-
@KAatomic grid.fs[p2n, 2] += -vol * (∂Ny * mp.σij[ix, 2] +
206-
∂Nx * mp.σij[ix, 4] +
207-
∂Nz * mp.σij[ix, 5])
208-
@KAatomic grid.fs[p2n, 3] += -vol * (∂Nz * mp.σij[ix, 3] +
209-
∂Nx * mp.σij[ix, 6] +
210-
∂Ny * mp.σij[ix, 5]) + NiM * gravity
204+
@KAatomic grid.fs[p2n, 1] += -vol * (∂Nx * σxx + ∂Ny * σxy + ∂Nz * σzx)
205+
@KAatomic grid.fs[p2n, 2] += -vol * (∂Ny * σyy + ∂Nx * σxy + ∂Nz * σyz)
206+
@KAatomic grid.fs[p2n, 3] += -vol * (∂Nz * σzz + ∂Nx * σzx + ∂Ny * σyz) +
207+
Ni * mps * gravity
211208
end
212209
end
213210
end

0 commit comments

Comments
 (0)