PeePyPoo¶
PeePyPoo is a package providing a modeling framework designed for modeling water systems, with the option of using hybrid models in mind. However it can as well be used for arbitrary other systems. It has the basic functionality included for solving the models in python, but can as well automatically translate the given systems to the Julia ModelingToolkit.jl, which can be used for significantly improved simulation performance.
Note
This package is still under development, so if you find any bugs or have any suggestions, please post an issue report or even better start a pull request. See Contributing
Feature Summary¶
PeePyPoo is a modeling package intended for modeling water systems. It thus mainly provides a framework for creating reactors and combining them arbitrarily. The reactors can simulate arbitrary reactions, provided as stoichiometric matrices in a tabular file (e.g. .odf, .csv or .xslx formats amongst others). These reactors can then be combined with other reactors as well as settlers and flow components.
With this, models of full water resource recovery facilities can be created by simply combining the corresponding reactors and other flow elements.
There is already a library containing some reactors, settlers etc., however it can be extended if necessary and, if done, every contribution of new systems is welcome and can be incorporated by pull-requests.
Feature List¶
- Reactors
- Stoichiometries
ozonation: Disinfection with Ozon
ASM1: Activated Sludge Model Nr. 1
ASM1_constO: Activated Sludge Model Nr. 1, where the dissolved oxygen is kept constant at the initial value
ASM3: Activated Sludge Model Nr. 3
ASM3_constO: Activated Sludge Model Nr. 3, where the dissolved oxygen is kept constant at the initial value
ASM3_BioP: Activated Sludge Model Nr. 3 with the Bio-P Module
- Settlers
- Flow Elements
- General systems
Constant
: Simply outputting a given constantPiecewiseLinearInterpolation
: Outputting a piecwise linear interpolation of given valuesGain
: Multiplying the input by a given gainCast
: Casting the input signal to a new typeContinuous Integrator
: Integrating the input in continuous timeDiscrete Integrator
: Integrating the input in discrete time
- Helper Systems
Signal Logger
: Logs signals when simulating using Python
- Analysis
Block Diagram Wrapper
: Wraps a number of systems to a block diagram and allows for analysis of the whole diagram and simulation of it in Julia for better performance.
Contributing¶
Pull requests are welcome in general. Further, everyone adding a new system is highly encouraged to provide it using a pull request for adding it to the model library.
For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.