Allow for specification of multiple (two) particle generation models
This eliminates the necessity of creating an auxiliary model for each combination of existing models. Particle generation models must support cooperative inheritance for that purpose (see output recorder for which this has been realized already). Also each model should implement the standard interface def generate_positions(self, count, progress)
and def generate_momenta(self, count, progress)
Like this one can specify one model for the position generation and another model for the momentum generation while keeping the option that position and momentum generation is coupled and needs to be performed by a single model (specifying multiple models is optional). A complete separation of position and momentum generation would prevent a coupling of the components.
Because no more than two models will be required, the GUI should provide two selection widgets (or a button to add the second one). Hence the user can specify either one or two particle generation models. Each particle generation model will be classified as one of Positions
, Momenta
or PositionsAndMomenta
. In the end, the user needs to specify a combination or model such that both, positions and momenta are covered.
It's important to think about how this should appear in the GUI. Perhaps two separate tabs? Or a +
button to create a second model if required? Or auto-detection if a second model is required? Or just require a position model and assume zero momenta if no other is specified? All these options need to be considered. The GUI & configuration implementation might be tricky but @Dominik1123 can help here.