Modules Except for the Accumulator and the Communicator, all Modules share the same structure. For initialization, each Module needs a parameter handle, an std::vector of Saves for their input, an std::vector of Saves for their output and an std::vector of IndicesStructs to know which output Saves require which output. During initialization a worker thread is spawned that tries to receive input from all input Saves. Once one ChunkPtrStruct from each input Save was obtained, functions are called that perform the respective jobs of the module. For each output Save, based on the respective IndicesStruct, the data obtained from these functions is copied and a ChunkPtrStruct that holds a pointer to that data is pushed in the output Save.Module: Preprocessor The Preprocessor band-pass filters each data chunk using a bidirectional elliptic filter.