We introduce two additional stack systems for adaptivity. The first one accounts for the current adaptivity state in each cell, the second one for the adaptivity communication information to create a conforming grid, a grid without hanging nodes, by inserting additional edges.
Stack or stream S | Comment |
SlradaptiveEdgeComm | Left and right stack for edge communication information to transfer the three different adaptivity markers M |
SadaptiveState | Adaptivity state for each cell, see Fig. 4.8 |
The stacks SlradaptiveEdgeComm are then used to forward three different adaptivity markers
We store the adaptivity state on a separate stack SadaptiveState. This allows for the computation of the conforming transitions without touching the simulation cell data stack in the middle traversals to reduce memory bandwidth requirements during the adaptivity traversals.
The adaptivity process (for optimizations, see Sections 4.10.3 and 5.8.2) is then given with a three-pass system which we can execute iteratively:
A single forward or backward traversal does not propagate information to all adjacent cells. This is due to edge communication information only propagated to cells which are traversed in the direction of the SFC.
Hence, additional forward and backward traversals are required. The determination of the conforming transition is thus similar to an iterative method: As many iterative smoother steps are done until the residual, in our case the conforming state, is reached.
Considering all possible refinement states required to create a conforming grid, additional split states for a refinement triggered via e3, e2 and via both edges are required (See Fig. 4.8 for refinement states (4) to (7)).
Using the knowledge on spacetrees and with the constraint of no hanging nodes, a coarsening operation is only permitted under particular circumstances. Figure 4.10 gives a sketch of a coarsening operation. Two constraints have to be fulfilled for a valid, conforming grid generating coarsening operation:
The requirements driven by both constraints lead to a “diamond”-like shape [HDJ04] of triangles involved in coarsening as depicted in Fig. 4.10. Note, that the diamond is created by the touching triangle legs of the four triangles. In case of a coarsening request, a conforming grid can only be obtained if all four involved triangles agree to the coarsening and thus forward coarsening markers MC along all triangle leg edges. Using the cell traversal order induced by the Sierpiński SFC, a forward followed by a backward traversal is sufficient to propagate the coarsening information: during the first forward traversal, the coarsening request markers MC are propagated via the triangle legs to the adjacent cells accounting for the diamond like shape. As soon as one cell does not request a coarsening, the marker is not forwarded anymore. In case of the coarsening information not being fully propagated to the last cell in the diamond, the coarsening requests are all invalidated during the backward traversal by the same approach.
In case of a refinement marker forwarded via an edge to a cell that requests a coarsening, this coarsening becomes invalid and the state is transferred to one of the corresponding refinement states (3)-(7).
Hence, the computational grid can be a superset of the required mesh.
One approach for testing for a transition state resulting in a conforming grid was suggested in [BBSV10]. With this approach, the traversal is stopped if no change of state is determined (cf. Fig. 4.9).
This number of conforming grid traversals is limited even with the cascade of edge insertions to avoid hanging nodes. We consider the two possible reasons for cascades.
The adaptivity traversals can be combined with the simulation traversals. Since its feasibility was already shown in [Nec09,Wei09], this was not further considered in this work.