Change Log

This document records notable changes to QSDsan. We aim to follow Semantic Versioning.


  • Enhance and use QSDsan’s capacity for dynamic simulation for emerging technologies and benchmark configurations (see EXPOsan METAB and PM2 (on the algae branch, still under development) modules).

  • New publications

    • The paper introducing DMsan, the package developed for decision-making of sanitation and resource recovery technologies, is published in ACS Environmental Au!

    • QSDsan was used to evaluate the sustainability of the NEWgenerator system as in this paper on ACS Environmental Au!

  • New modules

  • QSDsan now has a website to host all of the resources!

  • QSDsan’s documentation is getting a new look!

  • Add new units to enable dynamic simulation of systems with multiple process models. Check out qsdsan.sanunits.Junction, qsdsan.sanunits.ADMtoASM, qsdsan.sanunits.ASMtoADM and their use in the interface system demo.

  • In online testing, we dropped the test for Python 3.8 and added Python 3.10. The main developing environment for QSDsan is 3.9.


  • The QSDsan paper is accepted by Environmental Science: Water Research & Technology!

  • The first paper using QSDsan for the design of sanitation is accepted by ACS Environmental Au! Read the Biogenic Refinery paper and check out the system module in QSDsan/EXPOsan.

  • Added multiple systems (including their unit operations), check out the details on the Developed System page!

    • Biogenic Refinery

    • Eco-San

    • Reclaimer

  • Added the anaerobic digestion model no. 1 (ADM1) process model and the unit qsdsan.sanunits.AnaerobicCSTR, the corresponding system can be found in EXPOsan.

  • Other new unit operations:

    • Encapsulation Bioreactors:

      • qsdsan.sanunits.CH4E

      • qsdsan.sanunits.H2E


  • Fully tested dynamic simulation capacity, refer to the BSM1 system in EXPOsan for an example implementation.

  • Added many new qsdsan.SanUnit and reorganized package/documentation structure, new unit operations include:

    • qsdsan.sanunits.AnMBR

    • qsdsan.sanunits.CHP

    • qsdsan.sanunits.InternalCirculationRx

    • qsdsan.sanunits.SludgeHandling

      • qsdsan.sanunits.BeltThickener

      • qsdsan.sanunits.SludgeCentrifuge

    • qsdsan.sanunits.PolishingFilter

    • qsdsan.sanunits.WWTpump

  • Continue to enhance documentation (e.g., qsdsan.Process, qsdsan.stats, util functions).


Official release of QSDsan v1.0.0!

  • Added system-wise dynamic simulation capacity. To use the dynamic simulation function, a unit needs to have several supporting methods to initialize its state and compile ordinary differential equations (ODEs), refer to the units included in the BSM1 system below for usage, documentation and tutorial will be coming soon!

  • Developed the benchmark simulation system no.1 (BSM1) model on EXPOsan with comparison against the MATLAB/Simulink model developed by the International Water Association (IWA) Task Group on Benchmarking of Control Strategies. See the README for details

  • Significantly expanded the tutorials with demo videos on YouTube. Now tutorials cover all non-dynamic major classes (tutorials on dynamic classes will be included in the next major release).






  • Added the all three sanitation scenarios as described in Trimmer et al., including uncertainty/sensitivity analyses with tutorial.

  • Inclusion of GPX models for estimation of qsdsan.WasteStream properties.

  • Live documentation for the latest and beta version.

  • New classes:

    • All units in Trimmer et al.

    • Added descriptors (qsdsan.utils.descriptors) and decorators (qsdsan.utils.checkers) to check user-input values.

    • qsdsan.utils.setters.AttrSetter, qsdsan.utils.setters.DictAttrSetter, and qsdsan.utils.getters.FuncGetter for batch-setting of uncertainty analysis parameters.

  • Added save_report() function to qsdsan.LCA for report exporting.


  • First public release.