Skip to content

Commit eb5707b

Browse files
LasNikasLasNikas
andauthored
fix von mises stress and particle spacing (#886)
Co-authored-by: LasNikas <niklas.nehe@web.de>
1 parent a724d36 commit eb5707b

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

src/general/initial_condition.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,11 @@ function Base.union(initial_condition::InitialCondition, initial_conditions...)
239239
particle_spacing = initial_condition.particle_spacing
240240
ic = first(initial_conditions)
241241

242+
if initial_condition.particle_spacing isa Vector || ic.particle_spacing isa Vector
243+
throw(ArgumentError("`union` operation does not support non-uniform particle spacings. " *
244+
"Please ensure all `InitialCondition`s use a scalar particle spacing."))
245+
end
246+
242247
if ndims(ic) != ndims(initial_condition)
243248
throw(ArgumentError("all passed initial conditions must have the same dimensionality"))
244249
end
@@ -272,6 +277,11 @@ Base.union(initial_condition::InitialCondition) = initial_condition
272277
function Base.setdiff(initial_condition::InitialCondition, initial_conditions...)
273278
ic = first(initial_conditions)
274279

280+
if initial_condition.particle_spacing isa Vector || ic.particle_spacing isa Vector
281+
throw(ArgumentError("`setdiff` operation does not support non-uniform particle spacings. " *
282+
"Please ensure all `InitialCondition`s use a scalar particle spacing."))
283+
end
284+
275285
if ndims(ic) != ndims(initial_condition)
276286
throw(ArgumentError("all passed initial conditions must have the same dimensionality"))
277287
end
@@ -302,6 +312,11 @@ Base.setdiff(initial_condition::InitialCondition) = initial_condition
302312
function Base.intersect(initial_condition::InitialCondition, initial_conditions...)
303313
ic = first(initial_conditions)
304314

315+
if initial_condition.particle_spacing isa Vector || ic.particle_spacing isa Vector
316+
throw(ArgumentError("`intersect` operation does not support non-uniform particle spacings. " *
317+
"Please ensure all `InitialCondition`s use a scalar particle spacing."))
318+
end
319+
305320
if ndims(ic) != ndims(initial_condition)
306321
throw(ArgumentError("all passed initial conditions must have the same dimensionality"))
307322
end

src/general/interpolation.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ end
655655
end
656656

657657
cache.jacobian[point] += det(deformation_gradient(system, neighbor)) * volume_b * W_ab
658-
cache.von_mises_stress[point] += von_mises_stress(system) * volume_b * W_ab
658+
cache.von_mises_stress[point] += von_mises_stress(system, neighbor) * volume_b * W_ab
659659

660660
sigma = cauchy_stress(system)
661661
for j in axes(cache.cauchy_stress, 2), i in axes(cache.cauchy_stress, 1)

src/io/read_vtk.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ function vtk2trixi(file)
5757
@info "No '$field' field found in VTK file. Will be set to zero."
5858
end
5959
end
60-
return InitialCondition(; coordinates, particle_spacing=results["particle_spacing"],
60+
61+
particle_spacing = allequal(results["particle_spacing"]) ?
62+
first(results["particle_spacing"]) :
63+
results["particle_spacing"]
64+
65+
return InitialCondition(; coordinates, particle_spacing=particle_spacing,
6166
velocity=results["velocity"],
6267
mass=results["mass"],
6368
density=results["density"],

0 commit comments

Comments
 (0)