2024
2024-12-17
-
Added
- Add Composition support.
2024-12-12
-
Add
- Add Composition sheet in BioModel input xlsx file.
2024-10-04
-
Improved
- All the "True"/"False" in DataSet.Tank and Solution.Variable/Activator will be changed to boolean.
2024-09-28
-
Improved
- Read input to DataFrame directly (not to json str anymore).
2024-09-22
-
Add
- NEGATIVE ERROR and IMPROVED WARNING will send to dash frontend.
-
Improved
- Change a lot of module to async.
- Async write report file.
- Async write biomatrix, kernel, input fortran files.
-
Fixed
- Fixed some known bugs.
2024-08-11
- Trying dataclass.
2024-08-09
-
Improved
- Change
Pandas
loc
/iloc
toat
/iat
. - Change all fortran writter to f-string.
- Imporved matplotlib plotting.
- Change scatter plot to line plot, cause line plot is quicker.
- solution._build_dataset._get_MergedTime can be async.
- Trying dataclass.
- Change
-
Changed
- Seperate class to pieces.
2024-08-04
-
Improved
- Upgrade the
Python
version to3.12
. - Change logger to
Loguru
. - Add more multiprocessing async pool in parsing input BioModel and DataSet, fortran file writting, and plotting.
- Add color to SludgeError.
- Upgrade the
-
Changed
- DataSet will be built partly in Solution.Build() to decouple with BioModel, in order to make use of multiprocessing async pool.
2024-07-28
- Improved
- Add color to logger.
2024-05-23
-
Changed
- Empty lines are not allowed in Solution.Convention.
-
Improved
- The range of Forward Euler step tolerance change to 0.01%~20%.
- Empty lines are not allowed in Solution.Convention.
- Forward/Improved Euler won't cutted to 0 when a Component is less than
1e-30
, now it will step into 0 to keep mass balance. - If a Rate expression doesn't contain a Component, it can be negative.
- If a Rate expression does contain a Component, and it become negative, the calculation will be stopped.
- If a Rate expression's denominator is 0, the calculation will be stopped.
2024-05-16
-
Improved
- '1 - SettlingFactor' will be calculated in python (not in fortran any more) to improve the speed.
-
Fixed
- Activator will get correct true_end in biomatrix.get_BioRate().
- Remove kernel.py steady end point judger (goto 100).
fixed kernel
2024-05-15
-
Fixed
- Activator will get correct true_end in biomatrix.get_BioRate().
- Remove kernel.py steady end point judger (goto 100).
- fixed kernel
2024-05-14
-
Fixed
- Add 'D0' post fix to BioMatrix.f90 and Hydraulics number.
2024-05-11
-
Add
- Add wait in get_fortran_runfile to make sure complied file will be generated before open client urlProtocol.
2024-05-08
-
Add
- Add check.PoolExceptions to catch the pool.apply_async() exception.
-
Changed
- Changed all logger.debug() to logger.error().
- Remove '.done_plotting' marker file.
- Set pool in the right place in project.process_save_plot_simulation().
-
Fixed
- Fixed some known bugs.
2024-05-07
-
Add
- Add '.done_plotting' marker file to indicate whether finish the plotting task.
-
Fixed
- Fixed some known bugs.
2024-05-05
-
Add
- Add Inflow plotting.
-
Changed
- Change 'BioTarget' to 'Converison' in biomatrix.f90 and Kernel.f90.
- Change 'biomatrix.f90' to 'BioMatrix.f90'.
- Change 'main_Simulation.f90' to 'MainSimulation.f90'.
- Change 'main_Evaluation_OAT.f90' to 'MainEvaluationOAT.f90'.
- Change 'main_Evaluation_LHS.f90' to 'MainEvaluationLHS.f90'.
- Change 'main_Evaluation_GA.f90' to 'MainEvaluationGA.f90'.
-
Fixed
- Fixed some known bugs.
2024-05-04
-
Add
- Add time index resolution rate to compress raw Measured/Inflow/Flow data. If you set the resolution rate to 10%, it will only calculation the raw 10% data.
-
Fixed
- Fixed some known bugs.
2024-05-03
- Improved
- Change Project.Build_frontend() in Create/Edit/Save Project to Solution.parse_Solution(), and remove Project.Build_frontend().
2024-05-02
-
Add
- Add Build_frontend() to fit the frontend Create/Edit/Save Project check.
-
Fixed
- DataSet._get_Inflow_MergedTime() will check whether all the inflow names are in Variable Tank column.
- DataSet input excel Point Settling Tank BioCalculated must be 'False'.
2024-04-30
- Fixed
- If flow is a single number, if can be parsed to Tank.Hydraulics.
2024-04-28
- Changed
- Changed 'is True'/'is False' to '== True'/'== False' to avoid pd.DataFrame problem.
- Fixed
- Calculation.Predicted default vaule from np.empty((0, 0)) to pd.DataFrame().
2024-04-16
- Changed
- Target/Tank/Inflow/Flow name cannot be the same.
- DataSet Connection change the unique index from 'From -> Flow -> Into' to 'From -> Into', so each 'From -> Into' pair is unique.
- DataSet.Connection 'From' cannot be the same as 'Into' in the same row.
2024-04-08
-
Added
- Add Chinese support, the Chinese wion't change to ascii.
2024-04-07
-
Added
- Add Activator sheet in Solution input and Solution._get_Activator() function. The Activator matrix can be used to control the on/off switching of a Tank for a Reaction, e.g. to make sure that the Aeration Reaction only takes place in the Aeration Tank.
- Point Settling Tank will got a fixed volume fraction, i.e. Outlet / Blanket will always be 8 / 2. Since the BioCalculated of a Point Settling Tank is usually 'False', which means it will not be involved in the reaction. So the concentration in the Point Settling Tank is only determined by the effluent flow. Therefore, the volume is not relevant for the calculation. If detailed calculations are required, other settling tanks should be used, e.g. Double Exponential Settling Tank.
- A check for the conflict of derived DataSet.Inflow Component's values in dataset._get_Inflow_MergedTime():
If DataSet.Inflow only specifies a Target's values (not a Component's), the Solution.Conversion and Solution.Variable will be used to derive the corresponding Component's values (e.g. in Solution.Conversion we find 'TN=NH4+NO3', the value in Solution.Variable for 'NH4' is 10 and 'NO3' is 1, the 'TN' in DataSet.Inflow is '30', then the derived Inflow 'NH4' is 30*10/(10+1)=27.27 and 'NO3' is 2.73). And you have to make all the DataSet.Inflow values meet the conditions in Solution.Conversion, so these might lead to conflicts. The quickest way to solve this problem is leave the DataSet.Inflow Target's values all empty, or you would have to specify each Component's values in the DataSet.Inflow
- DataSet.Connection.Flow now supports the number (0~9) and multiplication (*) and division (/).
- DataSet.Connection add Section column.
-
Changed
- Solution._get_Variable(): The order of index in solution_input.Variable does not matter, it will reorder follow thevariable_index_theoretical later.
- DataSet._get_weight(): The order of index((Target) and columns (Tank) in solution_input.Weight does not matter, it will reorder follow the target_namelist and tank_namelist later.
- Solution._get_Conversion(): The order of columns (Component) in solution_input.Conversion does not matter, it will reorder follow the component_namelist.
- DataSet.Inflow can leave a column all empty, or the 1st row cannot be empty.
- DataSet Tank's name cannot contain '_Outlet'/'_Blanket'.
-
Improved
- If Solution.Conversion is identity, fortran will skip BioTarget calculation.
- If BioStoichoimetric_compression is empty, fortran will skip BioStoichoimetric_compression calculation.
-
Fixed
- GA Evaluation (
get_Kernel_Evaluation()
) will not change the Volume any more (intent(inout)::Volume -> intent(in)::Volume_in
), so it won't change the PARALLELTrace_BioTarget_Chrom
result. - In Calculation.get_fortran_runfile(), '-Ofast' will be used in LHS/GA engine, and '-O3' will be used in SIM/Sens engine to avoid the gfortran isnan always False problem.
- GA Evaluation (