|
|
# The User Solver API
|
|
|
|
|
|
## A short history (still in german)
|
|
|
|
|
|
> 1) Vasco und Tobias führen
|
|
|
>
|
|
|
> kernels::aderdg::generic::c::irgendwas<Funktionspointer1,Funktionspointer2>(alle,parameter,inkl,constanten)
|
|
|
> ein, mit Funktionspointern direkt in statische Usersolvermethoden.
|
|
|
>
|
|
|
> 2) Sven will auf Usersolverattribute zugreifen, also Methoden statt
|
|
|
> statische Pointer. Führe Syntax
|
|
|
> kernels::aderdg::generic::c::irgendwas<UserSolverKlasse>(refUserSolver,parameter)
|
|
|
>
|
|
|
> ein. Netterweise können wir uns so die ständige Übergabe von
|
|
|
> Konstanten sparen.
|
|
|
>
|
|
|
> 3) Jean-Matthieu, Dominic und Tobias führen die Guards ein, und zwar
|
|
|
> als Templateparameter. Neue Syntax
|
|
|
> kernels::aderdg::generic::c::irgendwas<UserSolverKlasse,boolGuard1,boolGuard2>(refUserSolver,parameter)
|
|
|
>
|
|
|
> und eine Menge generierter Boilerplate-Code damit die boolGuards
|
|
|
> Kompiletimekonstanten sind. Dadurch
|
|
|
> wird jede Kernelmethode typischerweise 2^1 bis 2^3 mal gebaut (für
|
|
|
> alle boolGuardN Permutationen).
|
|
|
>
|
|
|
> Ganz ohne Templates kamen wir ja nie aus. Dabei könnten wir es
|
|
|
> eigentlich, jetzt wo wir uns zu virtuellen Funktionen bekennen.
|
|
|
> Möglich wäre eine
|
|
|
>
|
|
|
> 4) komplett neue Signatur
|
|
|
> kernels::aderdg::generic::c::irgendwas(ADERDGSolver* ref, parameter)
|
|
|
> Da ja der Solver selbst mittlerweile alle virt. Methoden vorrätig hat.
|
|
|
> Selbst die NumberOfVariables... könnten wir in virtuelle Funktionen
|
|
|
> kapseln.
|
|
|
>
|
|
|
|
|
|
Cf. #143 |
|
|
\ No newline at end of file |