|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Synchronous update over rotating sub-blocks. More...
#include <tpl_ca_update_scheme.H>
Public Member Functions | |
| template<typename Engine , typename Rule > | |
| void | apply (Engine &e, Rule &r) const |
| Execute one block-synchronous step. | |
Static Public Attributes | |
| static constexpr bool | requires_double_buffer = true |
| static constexpr bool | requires_block_rule = false |
| static constexpr std::size_t | block_size = BlockSize |
Synchronous update over rotating sub-blocks.
The lattice is split into non-overlapping blocks of side BlockSize. Each step() updates all cells inside the active block index using the canonical synchronous rule (read from cur, write to nxt, swap), then advances the active block index. Cells outside the active block carry over unchanged.
After (n_blocks) steps every cell has been updated exactly once.
| BlockSize | side of the square (or cubic) block in cells. |
| Order | intra-block iteration order. |
Definition at line 459 of file tpl_ca_update_scheme.H.
|
inline |
Execute one block-synchronous step.
| Engine | engine type providing current_buffer(), next_buffer(), swap_buffers(), neighborhood() and step_count(). |
| Rule | cell rule satisfying RuleLike<Rule, Lattice>. |
| [in,out] | e | engine reference. |
| [in] | r | rule reference. |
| Any | exception propagated by the rule or the lattice. |
Definition at line 479 of file tpl_ca_update_scheme.H.
References Aleph::CA::apply_rule(), Aleph::blossom_maximum_cardinality_matching(), Aleph::CA::gather_neighbors(), j0(), k, r, and Aleph::CA::Lattice< Storage, Boundary >::rank.
|
staticconstexpr |
Definition at line 466 of file tpl_ca_update_scheme.H.
|
staticconstexpr |
Definition at line 464 of file tpl_ca_update_scheme.H.
|
staticconstexpr |
Definition at line 463 of file tpl_ca_update_scheme.H.