Commits

Jozsef Bakosi authored 87a1179c8b1
Add partition deactivation to ZalCG Appears to work, tested with Sedov, starting from an initially deactivated state dynamically reactivating partitions during time stepping. Gives about 2x speedup when u=0 compared to u=0.7-0.8 with GreedyRefineLB on N=1 and N=6 compute nodes. Algorithm ingredients, details: * Deactivation is based on checking all edges of a chare based on tolerance, see ZalCG::dea(). * Reactivation is based on checking chare-boundary edges based on tolerance, see ZalCG::rea(), chare-boundary edges: edges of all tetrahedra surrounding all tetrahedra with at least one point on the chare-boundary, see ZalCG::m_chbndedge. * Deactivation tolerance can be defined in various ways; currently used is the max of the normalized absolute difference of a set of scalar, that can be user-specified, e.g., for Sedov: density, see ZalCG::activate(). * Chare node volume contributions must be adjusted for solution, see Discretization::m_cvolc. * Extra mass diffusion is added to all scalar components on edges of the active hull to avoid mass unable to leave towards inactive chares, see ZalCG::huldif(). The active hull is the edges in ZalCG::m_chbndedge interfacing inactive chares. Next: * Deactivation is currently only done in the first iteration and ignored afterwards. * Currently reactivation overrides deactivation. This will likely have to be modified if/when deactivation is enabled during time stepping. * A potential way to modify the deactivation/reactivation logic to enable deactivation during time stepping is to override (1) deactivation with reactivation only if the chare-boundary is outflow, and (2) reactivation with deactivation only if the chare-boundary is inflow.