This routine loop over all nodes are flood non-interesting leaf node with wet face and inherit the wetness of the virtual node to the eligble childrens
The algorithm works by flooding the domain, starting from the seed points up to boundary elements. This approach is quite robust to broken STL definitions, as any cracks below the resolution are automatically healed and there is no dependece on the orientation of the surfaces. To avoid unintended leaking, the flooding takes only the 6 side neighbors into account, that is the computational domain will always be connected by faces, there will be no parts of the domain which are only connected by edges or corners.
Seeds are already marked as flooded during the previous leaf identification, also the neighboring sides have already been marked as wet. Note, that seeds in nodes with boundaries are ignored and not flooded.
Several iterations are done, referred to as waves and within each the following algorithm is used:
Iterate over all nodes. - If node is a leaf + If not intersecting boundaries: * Check if any side is wet, and if so, flood yourself. If flooded, mark all neighboring sides as wet. + If intersecting boundaries: nothing to do!
The procedure is finished, if no property changed during a wave. (Flooded status and wet faces are encoded in the PropertyBits field.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(sdr_protoTree_type), | intent(inout) | :: | proto |
The proto tree description with all the data enabling the flooding. |
||
| type(sdr_confHead_type), | intent(in), | optional | :: | header |
some global information on solver name and version |
|
| type(sdr_geometry_type), | intent(in) | :: | geometry |