theme: gaia paginate: true marp: true author: Pere Antoni Martorell backgroundColor: white title: STLCutters.jl backgroundPosition: center footer: P. A. Martorell | STLCutters.jl | 01-08-2024 style: | .columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .image-row { display: flex; justify-content: space-between; /* this will add equal space between each image */ } .outline { padding-top:50px; padding-left:100px; font-size:40px; }
<style> section { padding-top: 10px; } </style>
<!– _paginate: skip–> <!– _footer: "" –> <!– _backgroundColor: #f2f4f4 –>
<div style="text-align:center;padding-top:70px">
Pere Antoni Martorell
1 Aug 2024
</div>
<div style="position:absolute;top:150px;left:25px"> <img src="figures/arctriomphelasticity.png" height=350> </div>
<div style="position:absolute;top:100px;right:25px"> <img src="figures/arctrimphlic_flow.png" height=400> </div>
<div style="position:relative;bottom:-250px;width:1000px;left:70px;background-color:white">
<div class="image-row">
<img src="logos/cimne-so.png" alt="CIMNE" height=70 >
<img src="logos/upc-complet.png" alt="UPC" height=80>
<img src="logos/Monash-logo.png" alt="UPC" height=80>
<img src="logos/gridap.png" alt="Gridap" height=80>
</div> </div>
<div style="position:absolute;bottom:20px;right:10px">
</div>
<!– backgroundColor: white –> <!– _backgroundColor: white –>
<div class="outline">
- Why STLCutters.jl
- What is STLCutters.jl
- How to use and contribute
- Future Work
- Hands-on & Questions
</div>
<div class="outline">
- Why STLCutters.jl
- What is STLCutters.jl
- How to use and contribute
- Future Work
- Hands-on & Questions
</div>
<div style="text-align:center">
</div>
<div style="text-align:center;vertical-align:center">
</div>
<div style="font-size:15px">
S. Badia, P. A. Martorell, F. Verdugo. Geometrical discretisations for unfitted finite elements on explicit boundary representations. J. Comput. Phys. 460 (2022): 111162.
</div>
<div style="border: 10px solid #b7950b;border-radius: 20px; ;padding-left:50px;padding-top:0px;padding-bottom:0px;font-size:25px;background-color:#fcf3cf">
Fluid-structure interaction (FSI) on unfitted FEM
- Discretizations for real STL and CAD geometries
- FSI solvers for unfitted FE
- Large-scale computations
</div>
My PhD Thesis:
<div class="columns" style="font-size:25px"> <div>
✅ Discretization on STL geometries ✅ High-order discretizations for CAD geometries (private repo) ✅ Space-time transient unfitted FE (private repo) ✅ Distributed memory parallelism
</div> <div>
❌ Fluid-structure interaction (FSI) and multiphysics ❌ Adaptive mesh refinement (AMR) ❌ Large-scale computations
</div> </div>
<!– TODO: focus on FSI and large-scale –>
<div class="outline">
- Why STLCutters.jl
- What is STLCutters.jl
- How to use and contribute
- Future Work
- Hands-on & Questions
</div>
<small>
\[\epsilon _v = | V_\mathrm{in} + V_\mathrm{out} - V_\mathrm{box} | / V_\mathrm{box} < 10^{-10}\]
for 100% of 4726 STLs in Thingi10K
</small>
<div style="text-align:center">
</div>
<div style="text-align:center">
</div>
<div style="text-align:center; font-weight:bold "> <small> ⚠️ Unpublished results! </small> </div>
<div class="outline">
- Why STLCutters.jl
- What is STLCutters.jl
- How to use and contribute
- Future Work
- Hands-on & Questions
</div>
<div class="columns"> <div>
] add STLCutters
git clone https://github.com/gridap/STLCutters.jl.git
</div> <div>
</div> </div>
<div class="columns"> <div>
mpiexec -np 8 julia example.jl
</div> <div>
] add GridapP4est
</div> </div>
<div style="padding-top:70px">
</div>
<div class="columns"> <div>
2:1 $k$-balanced in p4est
flags = adapt_cut_cells(parts,cutgeo)
model, = Gridap.Adaptivity.adapt(model,flags)
cutgeo = cut(model,geo)
</div> <div>
</div> </div>
Gridap-like coding style
Semantic Versioning: Julia registry, registered dependencies
GitHub Utilities: Issues, PRs, CI
Documentation: docstrings, documentation pages
<div style="vertical-align:center;padding-top:20px">
</div>
<div style="vertical-align:center;padding-top:20px">
</div>
src/: 5k code lines ├── STLCutters.jl: Main module with imports and exports ├── SubTriangulations.jl: Core of the package with main algorithms ├── STLs.jl: Load, clean and manage STL geometries ├── Polyhedra.jl: General polytope operations ├── SimplexFaces.jl: Geometrical operations on simplicies ├── Embedded.jl: Extending GridapEmbedded API └── Distributed.jl: Extending distributed functions and algorithms
<div class="columns"> <div>
function subtriangulate(stl,bgmodel)
c_to_f = compute_cell_to_facets(bgmodel,stl)
@@ -26,4 +26,4 @@
end
</div> </div>
ℹ️ Some functions have been simplified for demonstration purposes
<div class="outline">
- Why STLCutters.jl
- What is STLCutters.jl
- How to use and contribute
- Future Work
- Hands-on & Questions
</div>
Visit the GitHub page: https://github.com/gridap/STLCutters.jl
Check the documentation: https://gridap.github.io/STLCutters.jl
Locally navigate the repository & run examples:
git clone https://github.com/gridap/STLCutters.jl.git
code STLCutters.jl
julia> include("examples/LinearElasticity.jl")
julia> filename = "test/data/550964.stl"
-julia> LinearElasticity.main(filename,n=50,force=(tand(5),0,-1),output="example4")