From e33013da7674a862bb5f820a92f928b5028bac89 Mon Sep 17 00:00:00 2001 From: Florian Atteneder <florian.atteneder@uni-jena.de> Date: Mon, 20 Nov 2023 23:36:31 +0100 Subject: [PATCH] wip --- src/amr.jl | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/amr.jl diff --git a/src/amr.jl b/src/amr.jl new file mode 100644 index 00000000..81bcb5c0 --- /dev/null +++ b/src/amr.jl @@ -0,0 +1,46 @@ +struct AdaptiveMesh{TMesh<:Mesh} <: AbstractMesh + mesh::TMesh +end + + +const AMesh{T} where T = AdaptiveMesh{T} + + +regrid!(mesh, cache, evolution) = nothing + + +function regrid!(amesh::AMesh{Mesh1d}, cache, evolution::Evolution) + # compute new tree layout + newtree = compute_tree_layout(amesh.mesh, cache, evolution) + # legalize new tree layout + # set up new mesh for new tree layout + # resize evolution.stages and use them as caches for interpolation (could also use any + # of the static variables from the cache) + # interpolate data from old mesh to new mesh + # resize all caches +end + + +function compute_tree_layout(mesh::Mesh1d, cache, evolution) + # dummy method + nc = n_cells(mesh.tree) + flags = rand((-1,0,1), nc) + legalize!(flags, mesh.tree.cells) + # setup refined tree?? +end + + +function legalize!(flags, cells) + # search all -1s and check their neighbors + for (i,f) in zip(flags) + f == -1 || continue + c = cells[i] + il, ir = c.neighbors + if has_neighbor(c, Cart1d.Xmin) && flags[il] == 1 + flags[il] = 0 + end + if has_neighbor(c, Cart1d.Xmax) && flags[ir] == 1 + flags[il] = 0 + end + end +end -- GitLab