Change Log¶
This document records notable changes to QSDsan. We aim to follow Semantic Versioning.
1.5.0¶
All LCA registry types (
ImpactIndicator,ImpactItem,Construction,Transportation) are now isolated per flowsheet. Switching between systems viaset_flowsheet()atomically swaps all four registries, so no manualclear_lca_registries()calls are needed between systems.clear_lca_registries()is deprecated.Added
SanUnit._construction_specs— a class-level tuple of dicts for declaring default construction materials. Specs are resolved lazily byLCAat creation time, soImpactItemobjects do not need to exist when the unit is instantiated.Reorganized unit operations and process models into clearer namespaces.
qsdsan.sanunitsis renamed toqsdsan.unit_operationsand reorganized into three behavior-based sub-namespaces:qsdsan.unit_operations.bst— BioSTEAM-inherited unit operations (mixers, splitters, pumps, heat exchangers, distillation columns, tanks, etc.)qsdsan.unit_operations.static— steady-state QSDsan unit operations (sanitation fixtures, treatment beds, clarifiers, sludge handling, hydrothermal/hydroprocessing units, etc.)qsdsan.unit_operations.dynamic— unit operations with explicit dynamic-state behavior (bioreactors, dynamic influent, junctions, membrane bioreactors, etc.)
qsdsan.processesis renamed toqsdsan.process_models.All existing imports via
qsdsan.sanunitsandqsdsan.processesremain valid for backward compatibility.
Restructured API documentation to mirror the new package layout, with dedicated pages for each sub-namespace.
1.4.0¶
A lot of the updates have been focused on the dynamic simulation, now the open-loop Benchmark Simulation Model No. 2 (BSM2) configuration has been implemented with new process models and unit operation including
qsdsan.processes.ADM1pqsdsan.processes.ADM1_p_extensionqsdsan.processes.ModifiedADM1qsdsan.processes.mASM2dqsdsan.sanunits.IdealClarifierqsdsan.sanunits.PrimaryClarifierqsdsan.sanunits.PrimaryClarifierBSM2qsdsan.sanunits.GasExtractionMembraneqsdsan.sanunits.Thickenerqsdsan.sanunits.Centrifugeqsdsan.sanunits.Incineratorqsdsan.sanunits.BatchExperimentqsdsan.sanunits.PFRqsdsan.sanunits.BeltThickenerqsdsan.sanunits.SludgeCentrifugeqsdsan.sanunits.SludgeThickener
New publications
Feng et al., Environmental Science & Technology, on the sustainability of hydrothermal liquefaction (HTL) for resource recovery from a range of wet organic wastes.
1.3.0¶
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.processes.KineticReaction
QSDsannow 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.ASMtoADMand 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.
1.2.0¶
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.CH4Eqsdsan.sanunits.H2E
1.1.0¶
Fully tested dynamic simulation capacity, refer to the BSM1 system in EXPOsan for an example implementation.
Added many new
qsdsan.SanUnitand reorganized package/documentation structure, new unit operations include:qsdsan.sanunits.AnMBRqsdsan.sanunits.CHPqsdsan.sanunits.InternalCirculationRxqsdsan.sanunits.SludgeHandlingqsdsan.sanunits.BeltThickenerqsdsan.sanunits.SludgeCentrifuge
qsdsan.sanunits.PolishingFilterqsdsan.sanunits.WWTpump
Continue to enhance documentation (e.g.,
qsdsan.Process, qsdsan.stats, util functions).
1.0.0¶
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).
0.3.0¶
Now LCA data can be imported from external databases using the newly made BW2QSD package.
New subclasses of
qsdsan.SanUnit:qsdsan.sanunits.Clarifierqsdsan.sanunits.CSTRqsdsan.sanunits.ElectrochemicalCellusing the followingqsdsan.Equipment:
New subclasses of
qsdsan.Process:qsdsan.processes.DiffusedAerationqsdsan.processes.ASM1qsdsan.processes.ASM2d
Updated
qsdsan.SanUnitso that it can be initialized with any ofthermosteam.Stream,qsdsan.SanStream, orqsdsan.WasteStream.These three classes can now be mixed.
Added
qsdsan.SanStreamfor non-waste streams (e.g., gases).Updated the
add_OPEXattribute ofqsdsan.SanUnitandsystem_add_OPEXattribute ofqsdsan.SimpleTEAso that they takedictas the default to allow display of multiple additional operating expenses.Split the
systemsmodule into an individual package EXPOsan.Now using
thermosteam.utils.Registryto manageqsdsan.ImpactIndicatorandqsdsan.ImpactItem.Added AppVeyor CI.
Renamed the
masterbranch tomain.
0.2.0¶
Added
qsdsan.Process,qsdsan.Processes, andqsdsan.CompiledProcessesclasses for stoichiometric process and its kinetics.Added an
qsdsan.Equipmentclass for design and costing of unit equipment.For the
statsmodule:More statistical tests:
qsdsan.stats.fast_analysis()for (extended) Fourier amplitude sensitivity test (FAST) and random balance design (RBD) FAST.qsdsan.stats.morris_till_convergence()to run Morris analysis until the results converge.Added Kendall’s tau and Kolmogorov–Smirnov test to
qsdsan.stats.get_correlations().
Plotting functions to visualize all test results:
qsdsan.stats.plot_uncertainties()for results from uncertainty analysis as different 1D or 2D plots.qsdsan.stats.plot_correlations()for results fromqsdsan.stats.get_correlation().Bar plot option for
qsdsan.stats.plot_morris_results().qsdsan.stats.plot_morris_convergence()to plot \({\mu^*}\) against the number of trajectories.qsdsan.stats.plot_fast_results()for results from FAST and/or RBD-FAST analyses.qsdsan.stats.plot_sobol_results()for results from Sobol analysis.
Changed all .csv data files to .tsv so that they can be viewed on GitHub.
Added more clear guidelines on contribution and a author list in the document.
0.1.0¶
Added a
statsmodule including:Pearson and Spearman correlations:
qsdsan.stats.get_correlations().Morris One-at-A-Time (OAT) screening method:
qsdsan.stats.morris_analysis().Also added a function for plotting:
qsdsan.stats.plot_morris_results().
Sobol sensitivity analysis:
qsdsan.stats.sobol_analysis().
Added all uncertainty parameters for all of the scenarios in the bwaise system, also added demonstrative Morris and Sobol analysis.
LCA.get_normalized_impacts()was replaced byqsdsan.LCA.get_allocated_impacts()forqsdsan.LCAto enable flexible allocation options.Reformatted all documents, added instructions on documentation.
Added brief instructions on contributing and code of conduct.
Updated UML diagram.
0.0.3¶
More flexible setting of
qsdsan.ImpactItemforqsdsan.WasteStream.Add status badge to README.rst
Add CHANGELOG.rst
Tutorial updates:
- New:
qsdsan.TEAandqsdsan.LCA
- Updated:
qsdsan.SanUnitandqsdsan.System
0.0.2¶
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.WasteStreamproperties.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, andqsdsan.utils.getters.FuncGetterfor batch-setting of uncertainty analysis parameters.
Added
save_report()function toqsdsan.LCAfor report exporting.
0.0.1¶
First public release.