You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: paper/paper.bib
+17-4Lines changed: 17 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ @article{copa:2021
9
9
doi = {10.1177/10943420211022829}
10
10
}
11
11
12
-
@article{Slattery2022,
12
+
@article{Slattery2022,
13
13
doi = {10.21105/joss.04115},
14
14
url = {https://doi.org/10.21105/joss.04115},
15
15
year = {2022},
@@ -19,7 +19,7 @@ @article{Slattery2022
19
19
pages = {4115},
20
20
author = {Stuart Slattery and Samuel Temple Reeve and Christoph Junghans and Damien Lebrun-Grandié and Robert Bird and Guangye Chen and Shane Fogerty and Yuxing Qiu and Stephan Schulz and Aaron Scheinberg and Austin Isner and Kwitae Chong and Stan Moore and Timothy Germann and James Belak and Susan Mniszewski},
21
21
title = {Cabana: A Performance Portable Library for Particle-Based Simulations},
22
-
journal = {Journal of Open Source Software} }
22
+
journal = {Journal of Open Source Software} }
23
23
24
24
@article{kokkos:2022,
25
25
title = {Kokkos 3: {Programming} {Model} {Extensions} for the {Exascale} {Era}},
@@ -98,8 +98,8 @@ @inproceedings{ippl
98
98
99
99
@ARTICLE{vpic,
100
100
author={Bird, Robert and Tan, Nigel and Luedtke, Scott V. and Harrell, Stephen Lien and Taufer, Michela and Albright, Brian},
101
-
journal={IEEE Transactions on Parallel and Distributed Systems},
102
-
title={VPIC 2.0: Next Generation Particle-in-Cell Simulations},
101
+
journal={IEEE Transactions on Parallel and Distributed Systems},
102
+
title={VPIC 2.0: Next Generation Particle-in-Cell Simulations},
103
103
year={2022},
104
104
volume={33},
105
105
number={4},
@@ -140,3 +140,16 @@ @inproceedings{ipic
140
140
year={2024},
141
141
organization={Wiley Online Library}
142
142
}
143
+
144
+
@article{Royston:2018,
145
+
author = {Michael Royston and Andre Pradhana and Byungjoon Lee and Yat Tin Chow and Wotao Yin and Joseph Teran and Stanley Osher},
146
+
doi = {https://doi.org/10.1016/j.jcp.2018.01.035},
147
+
issn = {0021-9991},
148
+
journal = {Journal of Computational Physics},
149
+
keywords = {Level set methods, Eikonal equation, Hamilton Jacobi, Hopf--Lax},
150
+
pages = {7-17},
151
+
title = {Parallel redistancing using the {Hopf--Lax} formula},
Copy file name to clipboardExpand all lines: paper/paper.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -70,7 +70,7 @@ The order of the dependency templates (if there are any dependencies) is defined
70
70
`Picasso` provides two modes for initializing particles on a background grid: `InitUniform` and `InitRandom`. In addition to requiring parameters (particles per dimension for `InitUniform` or particles per cell for `InitRandom`), a user-defined predicate functor must also be provided that returns true or false based on certain criteria of the candidate particle, such as position. The design for a custom user-hook during the creation phase allows for flexible and arbitrary particle initialization.
71
71
72
72
### Batched Linear Algebra
73
-
Matrix-vector and matrix-matrix operations are nearly ubiquitous in particle-to-grid and grid-to-particle mappings, function space projections, and other common operations wherein support for writing concise vectorial expressions is benefitial for both code readability, as well as exposing algorithmic parallelism. The `Picasso` library also implements kernel-level dense linear algebra operations in a corresponding `LinearAlgebra` namespace using a combination of expression templates for lazy evaluation and data structures to hold intermediates for eager evaluations when necessary. The general concept in the `Picasso` implementation for lazy vs. eager evaluations disencumbers the algorithm author from considering additional performance factors such as overhead incurred from excessive copies or total operation counts in otherwise unoptimized code. Using built-in operator overloading with support for expression templates, users can build complex nested tensorial expressions that are a mixture of both eager and lazy evaluations. For example, if `A` and `B` are NxN and `x` is length N:
73
+
Matrix-vector and matrix-matrix operations are nearly ubiquitous in particle-to-grid and grid-to-particle mappings, function space projections, and other common operations wherein support for writing concise vectorial expressions is benefitial for both code readability, as well as exposing algorithmic parallelism. The `Picasso` library also implements kernel-level dense linear algebra operations in a corresponding `LinearAlgebra` namespace using a combination of expression templates for lazy evaluation and data structures to hold intermediates for eager evaluations when necessary. The general concept in the `Picasso` implementation for lazy vs. eager evaluations alleviates the consideration of additional performance factors such as overhead incurred from excessive copies or total operation counts in otherwise unoptimized code. Using built-in operator overloading with support for expression templates, users can build complex nested tensorial expressions that are a mixture of both eager and lazy evaluations. For example, if `A` and `B` are NxN and `x` is length N:
74
74
```cpp
75
75
auto C = 0.5 * (A + ~A) * B + (x * ~x);
76
76
```
@@ -79,10 +79,10 @@ where the returned `C` is an NxN matrix, `~` is the transpose operator, and the
79
79
`Picasso` provides an interface for various supported linear algebra types defined in `FieldTypes`: `Scalar`, `Vector`, `Matrix`, as well as specialized support for higher-rank `Tensor3`, `Tensor4`, and `Quaternion` types. Field tags need only derive from these types in order to make use of `Picasso` linear algebra features. Although all basic operations on vectors and matrices are implemented, several specialized operations are also available, including matrix determinant, inverse, exponential, LU, and SVD decompositions, higher-order tensor contractions, and quaternion-matrix conjugation.
80
80
81
81
## Interpolation
82
+
The core facility of the `Picasso` library lies in
82
83
83
-
84
-
## Free surfaces
85
-
84
+
## Level Sets and Boundaries
85
+
The `Picasso::LevelSet` and `Picasso::ParticleLevelSet` are fast parallel implementations of grid-based signed distance fields (SDF), which are relevant to level-set based approaches in interface reconstruction and boundary tracking. In particular, the `ParticleLevelSet` class relies on functionality from [ArborX::BVH](https://github.com/arborx/ArborX) (bounding volume hiererarchy) for nearest point queries to compute a level set signed distance estimate, $\phi_i^{0}$, on the mesh using analytic spherical particle level sets $\phi_p$ as proxy. A parallel Hopf-Lax redistancing algorithm is also implemented that properly reinitializes the level set estimate $\phi$ into a final SDF ($|\nabla\phi_i|=1$). Additionally, the `Picasso::MarchingCubes` namespace provides methods and data structures for triangulating the resulting SDF. The computed mesh facets may be serialized to disk in STL format or used for further processing, for instance in convex hull initialization or embedded free surface tracking algorithms.
0 commit comments