Mercurial > repos > public > sbplib_julia
comparison Notes.md @ 1610:bb4c119e91fa
Add note about idea for how to handle dispatch and continuous operators
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Sun, 09 Jun 2024 23:27:11 +0200 |
parents | 8b9cdadb845a |
children | 8141c184cc2f |
comparison
equal
deleted
inserted
replaced
1575:efe1fc4cb6b0 | 1610:bb4c119e91fa |
---|---|
1 # Notes | 1 # Notes |
2 | |
3 ## How to dispatch for different operators | |
4 We have a problem in how dispatch for different operators work. | |
5 * We want to keep the types simple and flat (Awkward to forward `apply`) | |
6 * We want to dispatch SATs on the parameters of the continuous operator. (a * div for example) | |
7 * We want to allow keeping the same stencil_set across different calls. (maybe not so bad for the user to be responsible) | |
8 | |
9 Could remove the current opset idea and introduce a description of continuous operators | |
10 ```julia | |
11 abstract type DifferentialOperator end | |
12 | |
13 struct Laplace <: DifferentialOperator end | |
14 struct Advection <: DifferentialOperator | |
15 v | |
16 end | |
17 | |
18 difference_operator(::Laplace, grid, stencil_set) = ... # Returns a plain LazyTensor. Replaces the current `laplace()` function. | |
19 sat_tensors(::Laplace, grid, stencil_set, bc) = ... | |
20 | |
21 sat(::DifferentialOperator, grid, stencil_set, bc) = ... | |
22 ``` | |
2 | 23 |
3 ## Reading operators | 24 ## Reading operators |
4 | 25 |
5 Jonatan's suggestion is to add methods to `Laplace`, `SecondDerivative` and | 26 Jonatan's suggestion is to add methods to `Laplace`, `SecondDerivative` and |
6 similar functions that take in a filename from which to read stencils. These | 27 similar functions that take in a filename from which to read stencils. These |