-
Notifications
You must be signed in to change notification settings - Fork 5
Asymmetrical Filter Junctions
In general, Filter Junctions are used when multiple input cell data sets are required at once, e.g. when both unfiltered and smoothed MD data is used by a single filter. In most cases, these input sets are of identical shape and can be handled using identical indexing.
For filtering efforts where a Junctor, i.e. a filter that takes more than one input set, asks for input sets of differing shapes, we can thus not store them in a FilterJunction
.
One quick note on terminology: The terms "partition" and "(cell) data set" are interchangeable in this context, as they were for regular Junctions as well.
We thus introduced a novel type of Junction omitting the restriction mentioned above. Such Junctions are restricted to two input partitions unlike a regular FilterJunction
, which can any number of them.
The following distinction is made between the two input partitions:
- Primary: The first set of cell data provided as input is chosen as primary. This means that its output will be used as the Junctions output.
- Secondary: The other input set is marked as secondary, meaning that it will not contribute to the Junction's output. It is only used in computations within this Junction, i.e. during the application of the Junction's asymmetrical Junctors. It is constant in the sense that such Junctors do not only return filtered versions of the primary input, meaning all Junctors in an asymmetrical Junction receive the same secondary input per coupling cycle.
It is important to separate these two cell data sets with caution at all times, as their mismatch in size can easily cause memory corruption and other severe errors when accidentally interchanged.
Asymmetrical Junctors are to a AsymmetricalFilterJunction
are what filters are to a FilterSequence
. This means they are simply a special kind of filter: While filters in ordinary sequences only take one (primary) input partition, asymmetrical Junctors get their asymmetrical Junction's secondary partition as input as well.
They then apply some procedure utilizing both partitions, while only producing a filtered output version of their primary cell data set.
A list of all available asymmetrical Junctors can be found here.
Currently, this feature was designed for one specific use case: Using MD-To-Macro as primary input while sampling macro solver data from the outer rest of the coupled MD domain. Similar to how the input identifier md
corresponds to unfiltered MD data when initializing a sequence, outer
is interpreted as referring to this outer MD domain. Further details on input identifiers and more can be found here.
In analogy to how the filtering system automatically deducts from its config whether to create a standard FilterSequence
or a FilterJunction
, explicit configuration is not required for asymmetrical Junctions and their Junctors either.
Instead, the underlying FilterPipeline
will look for the following:
- If the XML tag contains
outer
and exactly one other valid input identifer, it will construct anAsymmetricalFilterSequence
. - If the XML tag contains contains
outer
but no other valid input identifer, a runtime error is thrown. - If the XML tag contains contains
outer
and two or more other valid input identifiers, a runtime error is thrown.
TODO: Visualisation
Supporting more than two input sets would be a possible future expansion of this concept. As there is currently no demand for this feature , this is however not planned to be implemented in the near future.