You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce a module/type to manage the particle release schedule. This uses the time and time step selection (#1923) types recently added, allowing cleaner release logic in the PRP package. Make some quality of life improvements to the time selection type for easier usage. Add utilities arange and linspace to the math utility module, modeled after the eponymous NumPy functions. Use these in the PRP package to support regularly spaced release times via a new RELEASE_TIME_FREQUENCY option.
This includes a few breaking changes, which address correctness and/or do not involve a loss of functionality.
1. Remove the FRACTION period-block release setting option. The RELEASETIMES block (#1989) can achieve the same explicitly. This brings period-block settings to equivalence with (and shares the implementation of) OC settings:
- ALL
- FIRST
- LAST
- STEPS
- FREQUENCY
If FRACTION is provided, the simulation will now fail. Add a removal notice to the DFN which will get picked up at release time by the automation and an entry will be inserted into the deprecations/removals table in the release notes.
2. Clarify the conceptual model for release points and fix some potential issues with the release mechanism. Previously a release was made for the union of explicit release times and period-block settings, even if an explicitly provided release time happened to coincide with a period block release setting's time. This could introduce duplicate particles, which is a bug given that we describe particles as uniquely identifiable via composite key consisting of model ID, PRP ID, release point ID, and release time. Only allow one release from each point at a time — by default within machine tolerance * 10^9, configurable via new RELEASE_TIME_TOLERANCE option. The release schedule is now the union of times explicitly provided in the RELEASETIMES block, regularly spaced times configured via RELEASE_TIME_FREQUENCY, and period-block time settings, where times within the configured tolerance of one another are merged into a single release time.
0 commit comments