Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reopen #351: Complex shapes #439

Merged
merged 136 commits into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from 131 commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
0edce50
winding number proof of concept 2D
LasNikas Jul 20, 2023
957dd25
faces and edges with `NTuples`
LasNikas Jul 22, 2023
3bf316f
change directory
LasNikas Jul 24, 2023
95a9d18
Merge branch 'main' into proof-of-concept
LasNikas Jul 28, 2023
bce8a50
Merge branch 'main' into proof-of-concept
LasNikas Sep 4, 2023
6628593
remove `@unpack`
LasNikas Sep 4, 2023
3de16ba
Merge branch 'main' into proof-of-concept
LasNikas Oct 30, 2023
5da9f29
modify
LasNikas Oct 30, 2023
fa37e22
Merge branch 'main' into proof-of-concept
LasNikas Jan 22, 2024
0461645
return `InitialCondition`
LasNikas Jan 22, 2024
ceac8d9
add examples
LasNikas Jan 23, 2024
e459754
first working API
LasNikas Jan 24, 2024
195aa65
add complex tank example
LasNikas Jan 24, 2024
ee83165
fix typos
LasNikas Jan 24, 2024
49a98b6
thread parallel
LasNikas Jan 25, 2024
53ba366
optional winding number range
LasNikas Jan 25, 2024
ad78833
Merge branch 'main' into readin-complex-shapes
LasNikas Jan 25, 2024
0755c31
Merge branch 'main' into readin-complex-shapes
LasNikas Jan 29, 2024
38902d9
add `UpdateCallback`
LasNikas Feb 22, 2024
cc3477c
fix typo
LasNikas Feb 22, 2024
daa7a0e
Merge branch 'main' into readin-complex-shapes
LasNikas Mar 5, 2024
77b120b
Merge branch 'main' into update-callback
LasNikas Mar 5, 2024
983080a
Merge branch 'main' into update-callback
LasNikas Mar 5, 2024
c6c0b11
apply formatter
LasNikas Mar 5, 2024
e3d72a9
Merge branch 'main' into update-callback
LasNikas Mar 16, 2024
f1a7758
Merge branch 'main' into update-callback
LasNikas Apr 2, 2024
b73b5a4
Merge branch 'main' into update-callback
LasNikas Apr 5, 2024
f4611a3
Merge branch 'main' into readin-complex-shapes
LasNikas Apr 11, 2024
f8ded26
simplify triangle mesh
LasNikas Apr 12, 2024
942772c
Merge branch 'update-callback' into readin-complex-shapes
LasNikas Apr 15, 2024
d4dfa0a
rework data types
LasNikas Apr 15, 2024
38c4138
Merge branch 'main' into readin-complex-shapes
LasNikas Apr 26, 2024
27338d5
restructure
LasNikas Apr 26, 2024
044bf16
SVector min-max-box
LasNikas Apr 26, 2024
56fe3fb
make `TriangleMesh` faster
LasNikas Apr 29, 2024
37134f7
fix vertex normal
LasNikas Apr 29, 2024
b301367
add IO
LasNikas May 15, 2024
58b17a6
Merge branch 'main' into readin-complex-shapes
LasNikas May 15, 2024
12d4257
add hierarchical winding
LasNikas May 15, 2024
8b1f8e1
store winding number
LasNikas May 22, 2024
fd0bc67
Merge branch 'main' into readin-complex-shapes
LasNikas May 24, 2024
a8fa94c
clean up TriangleMesh
LasNikas May 26, 2024
ba404e6
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 17, 2024
36817d0
modify shapes
LasNikas Jun 17, 2024
8aaac64
change ELTYPE in IO
LasNikas Jun 17, 2024
2e359a3
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 18, 2024
00a1f5d
add files and remove `scale_factor`
LasNikas Jun 18, 2024
f27370c
add shape and `complexShape` tests
LasNikas Jun 18, 2024
29492bd
remove complex tank example
LasNikas Jun 19, 2024
6e9f4f3
add docs for `complexShapes`
LasNikas Jun 19, 2024
044ba29
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 19, 2024
71bd58c
add docs for the algorithms
LasNikas Jun 19, 2024
8879a76
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 19, 2024
b61302b
add test data
LasNikas Jun 20, 2024
4db3a15
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 20, 2024
2d26204
add tests for sampled shapes
LasNikas Jun 20, 2024
a82bc45
data path relative to module
LasNikas Jun 21, 2024
40e6ea9
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 21, 2024
bea77a2
use `Threads.@threads` instead of `threaded`
LasNikas Jun 21, 2024
d2237de
fix @threaded
LasNikas Jun 21, 2024
53d95e5
fix tests
LasNikas Jun 21, 2024
abb74fa
fix wrong directory
LasNikas Jun 21, 2024
e30625f
use `@threaded` again
LasNikas Jun 21, 2024
c8fb3a8
change winding number factor for julia 1.9
LasNikas Jun 21, 2024
9c4f42c
fix tests
LasNikas Jun 21, 2024
c44a297
add stl files
LasNikas Jun 28, 2024
f78ab21
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 28, 2024
0d6e8be
Merge branch 'main' into readin-complex-shapes
LasNikas Jun 30, 2024
3176287
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 11, 2024
60f62d3
implement suggestions
LasNikas Jul 11, 2024
9958734
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 11, 2024
5ea6fcf
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 15, 2024
e5604e5
rename kwargs
LasNikas Jul 15, 2024
d90ad55
add comments
LasNikas Jul 15, 2024
6ac6301
apply formatter
LasNikas Jul 15, 2024
68fa382
implement suggestion
LasNikas Jul 15, 2024
8cf5dc0
fix tests
LasNikas Jul 15, 2024
0ae45b4
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 15, 2024
dda2202
remove abstract type `Shapes`
LasNikas Jul 16, 2024
e8cba1e
fix tests
LasNikas Jul 16, 2024
46e4647
make type stable
LasNikas Jul 16, 2024
eeec66a
implement suggestions
LasNikas Jul 16, 2024
44ce444
add `unique_soted`
LasNikas Jul 17, 2024
a97b210
add comment
LasNikas Jul 17, 2024
09c6462
implement suggestions
LasNikas Jul 18, 2024
6d61e91
RADME and NEWS entry
LasNikas Jul 18, 2024
24af5f8
adapt docs
LasNikas Jul 18, 2024
2c767de
`for` instead of `while`
LasNikas Jul 19, 2024
73485b9
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 23, 2024
f8c9e20
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 23, 2024
86f65c5
rename `shape` to `geometry`
LasNikas Jul 23, 2024
41ebe70
rename again
LasNikas Jul 23, 2024
608a699
implement suggestions
LasNikas Jul 23, 2024
22438e7
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 23, 2024
13e9f26
fix typo
LasNikas Jul 23, 2024
7c1db9b
implement suggestions
LasNikas Jul 24, 2024
7784bbc
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 24, 2024
36076f9
adapt example files
LasNikas Jul 24, 2024
f97e9d9
sum-init with `zero(eltype))`
LasNikas Jul 24, 2024
dd6fd9b
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 24, 2024
b6d7bb0
Merge branch 'main' into readin-complex-shapes
LasNikas Jul 25, 2024
50b8592
implement suggestions
LasNikas Jul 27, 2024
71eb74e
construct hierarchy in constructor
LasNikas Jul 27, 2024
93b8444
use ASCII characters
LasNikas Jul 27, 2024
0809869
minor changes
LasNikas Jul 29, 2024
a936ef9
add 2d hierarchical winding
LasNikas Jul 29, 2024
8a334ac
minor changes
LasNikas Jul 29, 2024
2a4b91c
change function name
LasNikas Jul 29, 2024
ed6e043
fix
LasNikas Jul 29, 2024
9ebce06
Merge branch 'hierarchical-winding-2d' into readin-complex-shapes
LasNikas Jul 29, 2024
5390b26
implement suggestions
LasNikas Jul 29, 2024
031bbb7
fix typo
LasNikas Jul 29, 2024
bd34134
apply formatter
LasNikas Jul 29, 2024
20b724f
fix typo
LasNikas Jul 29, 2024
bee9a26
add `deleteat!`
LasNikas Jul 30, 2024
0c6f974
circle example eps() -> 0
LasNikas Jul 31, 2024
4b76fbc
start docs
LasNikas Jul 31, 2024
b8c9ba0
Merge branch 'main' into readin-complex-shapes
LasNikas Aug 1, 2024
826f036
simplify
LasNikas Aug 1, 2024
19b2c6c
implement suggestions
LasNikas Aug 1, 2024
ac029ef
fix docs
LasNikas Aug 1, 2024
6cab982
fix tests
LasNikas Aug 1, 2024
32b392b
fix tests
LasNikas Aug 1, 2024
a142f10
minor changes
LasNikas Aug 1, 2024
dff23e2
typo
LasNikas Aug 1, 2024
e130849
fix
LasNikas Aug 1, 2024
206a9d6
fix again
LasNikas Aug 1, 2024
a581b32
fx
LasNikas Aug 1, 2024
2789b21
fix tests
LasNikas Aug 2, 2024
7a87141
fix again
LasNikas Aug 2, 2024
eb4edbd
implement suggestions
LasNikas Aug 2, 2024
80aff81
modify NEWS.md
LasNikas Aug 2, 2024
2d34d3a
modify again
LasNikas Aug 2, 2024
3ebddfe
implement suggestions
LasNikas Aug 5, 2024
be404fa
add sentence to docs
LasNikas Aug 5, 2024
4ccf4c6
typo
LasNikas Aug 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,9 @@ run
*.vtu
*.pvd
*.mp4
*.csv

# ParaView states
*.pvsm

# FreeCAD models
*.FCStd
6 changes: 5 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@ We aim at 3 to 4 month between major release versions and about 2 weeks between
### Highlights

### Added
Particle sampling for complex geometries from `.stl` and `.asc` files.
LasNikas marked this conversation as resolved.
Show resolved Hide resolved

### Removed

LasNikas marked this conversation as resolved.
Show resolved Hide resolved
### Deprecated

## Version 0.2.0
## Version 0.2.1

### Highlights
Particle sampling for complex geometries from `.stl` and `.asc` files.
LasNikas marked this conversation as resolved.
Show resolved Hide resolved

LasNikas marked this conversation as resolved.
Show resolved Hide resolved
### Removed
- Use of the internal neighborhood search has been removed and replaced with PointNeighbors.jl.
Expand Down
2 changes: 2 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def"
FastPow = "c0e83750-1142-43a8-81cf-6c956b72b4d1"
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ Its features include:
- Solid-body mechanics
- Methods: Total Lagrangian SPH (TLSPH), Discrete Element Method (DEM)
- Fluid-Structure Interaction
- Preprocess complex shapes
LasNikas marked this conversation as resolved.
Show resolved Hide resolved
- support for STL geometries
- Output formats:
- VTK

LasNikas marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
3 changes: 3 additions & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ makedocs(sitename="TrixiParticles.jl",
"Tutorial" => "tutorial.md",
"Examples" => "examples.md",
"Visualization" => "visualization.md",
"preprocessing" => [
"Sample Geometries" => joinpath("preprocessing", "preprocessing.md"),
],
"Components" => [
"Overview" => "overview.md",
"General" => [
Expand Down
27 changes: 27 additions & 0 deletions docs/src/preprocessing/preprocessing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

TODO


```@autodocs
Modules = [TrixiParticles]
Pages = [joinpath("preprocessing", "point_in_poly", "winding_number_horman.jl")]
```

```@autodocs
Modules = [TrixiParticles]
Pages = [joinpath("preprocessing", "point_in_poly", "winding_number_jacobson.jl")]
```

```@autodocs
Modules = [TrixiParticles]
Pages = [joinpath("preprocessing", "geometries", "io.jl")]
```


### [References](@id references_complex_shape)
- Alec Jacobson, Ladislav Kavan, and Olga Sorkine-Hornung "Robust inside-outside segmentation using generalized winding numbers".
In: ACM Transactions on Graphics, 32.4 (2013), pages 1--12.
[doi: 10.1145/2461912.2461916](https://igl.ethz.ch/projects/winding-number/robust-inside-outside-segmentation-using-generalized-winding-numbers-siggraph-2013-jacobson-et-al.pdf)
- Kai Horman, Alexander Agathos "The point in polygon problem for arbitrary polygons".
In: Computational Geometry, 20.3 (2001), pages 131--144.
[doi: 10.1016/s0925-7721(01)00012-8](https://doi.org/10.1016/S0925-7721(01)00012-8)
28 changes: 28 additions & 0 deletions examples/preprocessing/complex_shape_2d.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using TrixiParticles
using Plots

particle_spacing = 0.05

filename = "inverted_open_curve"
file = joinpath("examples", "preprocessing", "data", filename * ".asc")

geometry = load_geometry(file)

trixi2vtk(geometry)

point_in_geometry_algorithm = WindingNumberJacobson(; geometry,
winding_number_factor=0.4,
hierarchical_winding=true)

# Returns `InitialCondition`
shape_sampled = ComplexShape(geometry; particle_spacing, density=1.0,
store_winding_number=true,
point_in_geometry_algorithm)

trixi2vtk(shape_sampled.initial_condition)

# Plot the winding number field
plot(InitialCondition(; coordinates=shape_sampled.grid, density=1.0, particle_spacing),
zcolor=shape_sampled.winding_numbers)

# trixi2vtk(shape_sampled.grid, w=shape_sampled.winding_numbers)
LasNikas marked this conversation as resolved.
Show resolved Hide resolved
18 changes: 18 additions & 0 deletions examples/preprocessing/complex_shape_3d.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using TrixiParticles

particle_spacing = 0.05

filename = "sphere"
file = joinpath("examples", "preprocessing", "data", filename * ".stl")

geometry = load_geometry(file)

point_in_geometry_algorithm = WindingNumberJacobson(; geometry,
# winding_number_factor=0.4,
hierarchical_winding=true)

# Returns `InitialCondition`
shape_sampled = ComplexShape(geometry; particle_spacing, density=1.0,
point_in_geometry_algorithm)

trixi2vtk(shape_sampled)
Binary file added examples/preprocessing/data/bar.stl
Binary file not shown.
65 changes: 65 additions & 0 deletions examples/preprocessing/data/circle.asc
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# ASCII
1 0 0
0.995004 0.0998334 0
0.980067 0.198669 0
0.955337 0.29552 0
0.921061 0.389418 0
0.877583 0.479426 0
0.825336 0.564642 0
0.764842 0.644218 0
0.696707 0.717356 0
0.62161 0.783327 0
0.540302 0.841471 0
0.453596 0.891207 0
0.362358 0.932039 0
0.267499 0.963558 0
0.169967 0.98545 0
0.0707372 0.997495 0
-0.0291995 0.999574 0
-0.128845 0.991665 0
-0.227202 0.973848 0
-0.32329 0.9463 0
-0.416147 0.909297 0
-0.504846 0.863209 0
-0.588501 0.808496 0
-0.666276 0.745705 0
-0.737394 0.675463 0
-0.801144 0.598472 0
-0.856889 0.515501 0
-0.904072 0.42738 0
-0.942222 0.334988 0
-0.970958 0.239249 0
-0.989992 0.14112 0
-0.999135 0.0415806 0
-0.998295 -0.0583742 0
-0.98748 -0.157746 0
-0.966798 -0.255541 0
-0.936457 -0.350783 0
-0.896758 -0.44252 0
-0.8481 -0.529836 0
-0.790968 -0.611858 0
-0.725932 -0.687766 0
-0.653644 -0.756803 0
-0.574824 -0.818277 0
-0.490261 -0.871576 0
-0.400799 -0.916166 0
-0.307333 -0.951602 0
-0.210796 -0.97753 0
-0.112152 -0.993691 0
-0.0123886 -0.999923 0
0.0874991 -0.996165 0
0.186512 -0.982453 0
0.283662 -0.958924 0
0.377978 -0.925815 0
0.468517 -0.883455 0
0.554374 -0.832267 0
0.634693 -0.772764 0
0.70867 -0.70554 0
0.775566 -0.631267 0
0.834713 -0.550685 0
0.88552 -0.464602 0
0.927478 -0.373877 0
0.96017 -0.279415 0
0.983268 -0.182162 0
0.996542 -0.0830893 0
1 0 0
Binary file added examples/preprocessing/data/gear.stl
Binary file not shown.
8 changes: 8 additions & 0 deletions examples/preprocessing/data/hexagon.asc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# ASCII
0.866025 0.5 0
0 1 0
-0.866025 0.5 0
-0.866025 -0.5 0
-1.11022e-16 -1 0
0.866025 -0.5 0
0.866025 0.5 0
Loading
Loading