Thank you Stephane,
This is very helpful information. I have been tasked with implementing "tree-of-tree" in basilisk ( as soon as possible). I would much rather be able to do it in a way that works for the needs of the current project and the larger basilisk community. You and the community know much more than me, and I would like opportunity to contribute and work together.
Given your limited time availability, is there a path forward that would provide mutual benefit? I would be happy to write up something with words and pictures for your review, or if you have some design outline put together?
Do you know of other people who would be interested in the topic and would be interested in supporting?
More details:
Currently I am targeting, for every grid cell in the physical space grid be able to instantiate a new tree grid. This would include functionality to manage calls to creation, modification and deletion and use a physical space scalar to hold a pointer to the tree grids
For example on each tree linked to a physical space grid cell provide:
- grid + (scalar) variables init
- grid refine
- grid wavelet adapt on selected variables
- grid vtk output
- selected variable advection (advection.h)
- grid clean up
From what I have read in the source code, it appears the physical space grid is created statically, meaning there is only one grid (which is 100% good).
The part that I am working on right now is being able to manage a new tree grid separate from the static one for physical space.
Currently the functions I am working through are:
ext_init_grid: which returns a pointer to a newly allocated grid/tree
ext_refine_level: takes and tree and depth
ext_update_cache_f: updates cache on tree pointer input
ext_free_grid: frees the memory on a provided grid
These are essentially using what is in the tree but passes around pointers instead of of using the static grid instance.
Regards,
~Kurt