@@ -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