From f20e19e58fc98aa1b4e0d46a24124a89e4920bf1 Mon Sep 17 00:00:00 2001 From: LasNikas Date: Wed, 23 Oct 2024 14:15:30 +0200 Subject: [PATCH 1/2] add set operations for geometries --- examples/preprocessing/data/cube.stl | Bin 0 -> 684 bytes examples/preprocessing/data/polyhedron.stl | Bin 0 -> 38484 bytes examples/preprocessing/data/sphere.stl | Bin 9684 -> 153684 bytes src/general/initial_condition.jl | 48 ++++++++++++++++++ .../point_in_poly/winding_number_jacobson.jl | 2 +- src/setups/complex_shape.jl | 2 +- 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 examples/preprocessing/data/cube.stl create mode 100644 examples/preprocessing/data/polyhedron.stl diff --git a/examples/preprocessing/data/cube.stl b/examples/preprocessing/data/cube.stl new file mode 100644 index 0000000000000000000000000000000000000000..84b3e2a483bcb0b11beec95b2a9a8d1c03d14604 GIT binary patch literal 684 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 Pcb}ocZ4X;Hc2WF4yVkm6 literal 9684 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 G#Qy+zK7lI$ diff --git a/src/general/initial_condition.jl b/src/general/initial_condition.jl index 817ee4517..e6db0ef78 100644 --- a/src/general/initial_condition.jl +++ b/src/general/initial_condition.jl @@ -259,6 +259,30 @@ function Base.setdiff(initial_condition::InitialCondition, initial_conditions... return setdiff(result, Base.tail(initial_conditions)...) end +function Base.setdiff(initial_condition::InitialCondition, + geometries::Union{Polygon, TriangleMesh}...) + geometry = first(geometries) + + if ndims(geometry) != ndims(initial_condition) + throw(ArgumentError("all passed geometries must have the same dimensionality as the intitial condition")) + end + + delete_indices, _ = WindingNumberJacobson(; geometry)(geometry, + initial_condition.coordinates) + + coordinates = initial_condition.coordinates[:, .!delete_indices] + velocity = initial_condition.velocity[:, .!delete_indices] + mass = initial_condition.mass[.!delete_indices] + density = initial_condition.density[.!delete_indices] + pressure = initial_condition.pressure[.!delete_indices] + + result = InitialCondition{ndims(initial_condition)}(coordinates, velocity, mass, + density, pressure, + initial_condition.particle_spacing) + + return setdiff(result, Base.tail(geometries)...) +end + Base.setdiff(initial_condition::InitialCondition) = initial_condition function Base.intersect(initial_condition::InitialCondition, initial_conditions...) @@ -288,6 +312,30 @@ function Base.intersect(initial_condition::InitialCondition, initial_conditions. return intersect(result, Base.tail(initial_conditions)...) end +function Base.intersect(initial_condition::InitialCondition, + geometries::Union{Polygon, TriangleMesh}...) + geometry = first(geometries) + + if ndims(geometry) != ndims(initial_condition) + throw(ArgumentError("all passed geometries must have the same dimensionality as the intitial condition")) + end + + keep_indices, _ = WindingNumberJacobson(; geometry)(geometry, + initial_condition.coordinates) + + coordinates = initial_condition.coordinates[:, keep_indices] + velocity = initial_condition.velocity[:, keep_indices] + mass = initial_condition.mass[keep_indices] + density = initial_condition.density[keep_indices] + pressure = initial_condition.pressure[keep_indices] + + result = InitialCondition{ndims(initial_condition)}(coordinates, velocity, mass, + density, pressure, + initial_condition.particle_spacing) + + return intersect(result, Base.tail(geometries)...) +end + Base.intersect(initial_condition::InitialCondition) = initial_condition # Find particles in `coords1` that are closer than `max_distance` to any particle in `coords2` diff --git a/src/preprocessing/point_in_poly/winding_number_jacobson.jl b/src/preprocessing/point_in_poly/winding_number_jacobson.jl index 630da58db..63666b4b2 100644 --- a/src/preprocessing/point_in_poly/winding_number_jacobson.jl +++ b/src/preprocessing/point_in_poly/winding_number_jacobson.jl @@ -69,7 +69,7 @@ struct WindingNumberJacobson{ELTYPE, W} winding :: W function WindingNumberJacobson(; geometry=nothing, winding_number_factor=sqrt(eps()), - hierarchical_winding=false) + hierarchical_winding=true) if hierarchical_winding && geometry isa Nothing throw(ArgumentError("`geometry` must be of type `Polygon` (2D) or `TriangleMesh` (3D) when using hierarchical winding")) end diff --git a/src/setups/complex_shape.jl b/src/setups/complex_shape.jl index 4b1592ce6..db8eca2c6 100644 --- a/src/setups/complex_shape.jl +++ b/src/setups/complex_shape.jl @@ -44,7 +44,7 @@ For more information about the method see [`WindingNumberJacobson`](@ref) or [`W function ComplexShape(geometry::Union{TriangleMesh, Polygon}; particle_spacing, density, pressure=0.0, mass=nothing, velocity=zeros(ndims(geometry)), point_in_geometry_algorithm=WindingNumberJacobson(; geometry, - hierarchical_winding=false, + hierarchical_winding=true, winding_number_factor=sqrt(eps())), store_winding_number=false, grid_offset::Real=0.0, max_nparticles=10^7, pad_initial_particle_grid=2particle_spacing) From a8f7d441a340de4485be83d00e619ae3fb225581 Mon Sep 17 00:00:00 2001 From: LasNikas Date: Wed, 23 Oct 2024 14:17:54 +0200 Subject: [PATCH 2/2] fix typo --- src/general/initial_condition.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/general/initial_condition.jl b/src/general/initial_condition.jl index e6db0ef78..df02f1d47 100644 --- a/src/general/initial_condition.jl +++ b/src/general/initial_condition.jl @@ -264,7 +264,7 @@ function Base.setdiff(initial_condition::InitialCondition, geometry = first(geometries) if ndims(geometry) != ndims(initial_condition) - throw(ArgumentError("all passed geometries must have the same dimensionality as the intitial condition")) + throw(ArgumentError("all passed geometries must have the same dimensionality as the initial condition")) end delete_indices, _ = WindingNumberJacobson(; geometry)(geometry, @@ -317,7 +317,7 @@ function Base.intersect(initial_condition::InitialCondition, geometry = first(geometries) if ndims(geometry) != ndims(initial_condition) - throw(ArgumentError("all passed geometries must have the same dimensionality as the intitial condition")) + throw(ArgumentError("all passed geometries must have the same dimensionality as the initial condition")) end keep_indices, _ = WindingNumberJacobson(; geometry)(geometry,