[WIP] Adaptive multilevel splitting #806
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This will add a
PathSimulatorfor adaptive multilevel splitting (AMS), as well as tools for setting up and analyzing an AMS simulation.Adaptive Multilevel Splitting
AMS uses a move that is a lot like interface-constrained TIS (#788), so now that we have that shooting point selector, it is relatively straightforward to implement AMS. The difference is that AMS isn't a Monte Carlo in path space, so we need a different simulator object. In addition, the way AMS selects which trajectory to change differs from path sampling, so we need a new path mover object.
Of course, AMS will also need analysis. Some parts of that will be implemented in this PR, but I'll probably do more in later PRs.
Parametrized Volumes
Aside from AMS itself, one of the things that this will introduce is a
ParametrizedVolume, which allows its volume to be changed by setting parameters. Setting these parameters is part of the AMS simulation process. The idea here is that we need a new volume for every step in AMS. One implementation would be to create a new volume, a new ensemble using that volume, a new shooting point selector using that volume, and a new path mover using the ensemble and shooting point selector at every AMS step, leading to 1000s of each of these simulation objects.The approach I'm using instead is to make a changeable volume, which is used in both the ensemble and the shooting point selector. Only one of each object needs to be saved, and they don't work at all unless you set the parameters before using them.
There's significant overlap between the parametrized volume and the volume interface set. I'm going to look into seeing if a volume interface set can contain a parametrized volume (without breaking backward compatibility). If so, I think that will be a cleaner approach. For now, I've implemented a
ParametrizedVolumethat wraps aVolumeInterfaceSetin order to get some of the functionality.To-Do:
ParametrizedVolumewith volume interface set variantParametrizedVolumesAMSInitializationandDynamicsAMSInitializationto get initial trajectories