Checklist before release of new versions:
- Run tests in
sfeprapy.test. - Version is up to date in
sfeprapy.__init__:__version__.
- Log normal distribution in
sfeprapy.func.mcs_genneeds to be validated. sfeprapy.mcs0currently does capture column element.- (WIP)
sfeprapy.mcs2, similar tosfeprapy.mcs0but does not solve structural protection thickness for a predefined failure temperature, i.e. structural protection thickness is predefined.
- Added: 1D heat transfer module.
- Improved:
climcs0 template save as.xlsx. - Fixed:
climcs0 template blank lines when saved as.csv.
- New: GUI added to
sfeprapy.mcs0, can be summoned in CLI bysfeprapy mcs0 gui. - Improved: various improvements see repository commits.
- New: repository feature, codecov integration.
- New: repository feature, travis integration.
- Improved: CLI commands simplified and updated.
- Improved: updated and some new test functions in \test directory.
- New: use
sfeprapyto trigger recently refreshed CLI. Previously this ispython -m sfeprapy.mcs0. - Improved: CLI, added figure and save template input file features. Use
sfeprapy -hto find more information. - Depreciated:
sfeprapy.mcs0module can no longer be triggered directly aspython -m sfeprapy.mcs0(i.e. codes are removed afterif __name__ == '__main__'. - Depreciated:
sfeprapy.mcs0GUI to select input file, use CLI instead.
- New:
sfeprapy.mcs0added exposure time dependent timber charring rate. - New:
sfeprapy.func.mcs_genaddedrampinput variable type for time dependent variables. the fill value should be csv formatted string without headers, consists of two columns, 1st column is the time and 2nd column is the value at the specific time. - New:
sfeprapy.mcs0added plotting feature, to activatepython -m sfeprapy.mcs0 {fp} mp2 fig - Depreciated:
sfeprapy.mc0. This module is imported/combined intosfeprapy.mcs0at version 0.6. - Depreciated:
sfeprapy.mcs2. This module is imported/combined intosfeprapy.mcs0at version 0.6.5.
- New: system arguments added to
python -m sfeprapy.mcs0command line call. For example, callingpython -m sfeprapy.mcs0 example_input.csv mp4will run the problem definition fileexample_input.csvwith 4 processes.
- New:
phi_teqis added insfeprapy.mcs0to include Model Uncertainty factor, see README for details. - New:
sfeprapy.mcs0implemented timber fuel contribution. - New:
timber_exposed_areais added insfeprapy.mcs0, see README for details. - New:
timber_charring_rateis added insfeprapy.mcs0, see README for details. - New:
timber_densityis added insfeprapy.mcs0, see README for details. - New:
timber_hcis added insfeprapy.mcs0, see README for details. - New:
timber_solver_ilimis added insfeprapy.mcs0, see README for details. - New:
timber_solver_tolis added insfeprapy.mcs0, see README for details. - New:
sfeprapy.mcs0.testautomated tests forsfeprapy.mcs0. - Improved:
sfeprapy.mcs0changed criteria for parametric fire whenfire_modeis set to 3.opening_factorshould be within 0.01 and 0.2 (instead 0.02 and 0.2) to compliant to UK NA to Eurocode 1991-1-2.
- Fixed:
window_open_fraction_permanentinsfeprapy.mcs0. - Fixed: added
long_description_content_typeto setup.py to change description type to markdown. - Improved: README.md updated to reflect the new
sfeprapy.mcs0.
- New:
sfeprapy.func.mcs_gengeneral purpose stochastic variable generator. - New:
sfeprapy.func_mcs_objgeneral purpose Monte Carlo Simulation object. - New:
sfeprapy.mcs0to implementmcs_genandmcs_objinto the time equivalence calculation. - New:
sfeprapy.mcs0whenbeam_locis removed, the most onerous location will be calculated and used based on specific fire curve. - Improved:
sfeprapy.mc1MCS routine is converted to an object, MonteCarloCase and MonteCarlo classes are provided to substitute existing factions. - Fixed:
sfeprapy.mc1convergence of protection thickness maybe failed to find. - Fixed:
sfeprapy.dat.ec_3_1_2kyTunits fixed, used degree K but should be degree C.
- New:
sfeprapy.pd6688.annex_b_equivalent_time_of_fire_exposurePD 6688 equivalent time exposure calculation. Manual can be found in its docstringannex_b_equivalent_time_of_fire_exposure.__doc__. - New: (WIP)
sfeprapy.mc1new equivalent time exposure procedure. - Improved:
sfeprapy.mcoptimised temperature dependent steel heat capacity routine, resulted in 65% less simulation time. Tested case shows 32.8 seconds reduced to 16.7 seconds for 1000 simulations on i7-7660U with 2 threads. - Fixed:
sfeprapy.mc.mc_inputs_generator.py:mc_inputs_generatoreliminated nan values in sampled stochastic variables - it is discovered negative or positive values are sampled even with predefined boundary limits, these extreme values (i.e. ±inf) are replaced with prescribed (user defined) limits (i.e. lbound and ubound).
- New:
sfeprapy.mcfigure size is customisable in config.json file. - New:
sfeprapy.mcfigure x-axis limits (i.e. t_eq) is customisable in config.json file. - Fixed:
sfeprapy.mcfinal time equivalence 'stepping' issue due to tolerance of the solver is now fixed by replacing existing bisection by a secant. - Improved:
sfeprapy.mcinput parameter (in master .csv file)fire_modeis added, replacingfire_type_enforced. - Improved:
sfeprapy.mcsimulation time improved. Tested case shows 256 seconds reduced to 26 seconds for 1000 simulations on i7-3770k with 6 threads. - Improved:
sfeprapy.mcrefreshed data flow - master .csv input file -> individual case *.json file -> individual case MC *_in.csv file -> individual case result *_out.csv file -> *.png files.
- Improved: Updated the decision making for choosing between travelling fire and parametric fire, introduced q_td limit criteria, i.e. 50 <= q_td <= 1000.
- SfePrapy is now in beta testing phase;
- New: Eurocode DIN Annex parametric fire curve is now available, force simulations to use only this fire curve by set
fire_type_enforcedto 2 (see new input file template); and - New: Feature to find best fit distribution function - fire this tool by
python -m sfeprapy.dist_fit.
- Improved: Able to combine individual time equivalence curves into one with corresponding
probability_weight(see new input file template).
- New: Additional figure named
t_eq_merged.pngis produced to show merged time equivalency of all cases.
- Fixed: Final time equivalence plot legend text is set to case name. Previously '_out' was included.
- Improved: Final time equivalence plot will be produced without running any simulation, e.g. all
is_liveis set to 0.
- New: More configuration parameters can be defined in 'config.json' file located in the same folder as the selected input file;
- New: Optional MC simulation calculation for each case (as in the input *.csv file);
- New: beam_loc_z (beam element height), room_opening_permanent_ratio (permanent free window opening area);
- Improved: Plot background transparent.
- Additional returned results from the Monte Carlo simulation tool
sfeprapy.time_equivalence_core.grouped_a_b. Window opening factoropening_factoris added to be returned from the function. sfeprapy.time_equivalence.appis now able to main_args a single simulation. When 'simulations=1' is defined, all distributed variables are disabled and mean or mean(upper, lower) is used for stochastic parameters.- New testing input file 'benchmark_file_1' is added for single simulation testing, all other parameters are identical to 'benchmark_file_0'. Benchmark files are moved to validation folder, contained in root directory.
- Updated code relating simulation output result *.p and *res.csv files. This is to fix an issue which output fires do not align with input / output index numbering. The new *.p and *res.csv files are sorted by time equivalence. The new output files are significantly larger than previous versions due to more variables are being passed in and out from the grouped_a_b calculation function
sfeprapy.time_equivalence_core.grouped_a_b(). - Fire duration
fire_durationis checked and reassigned if necessary so that the slowest travelling fire is able to travel the entire roomroom_depth.fire_durationdefined in the input file will be the minimum fire duration. - Verification procedures are added for part of the project, including parametric fire testing, travelling fire testing and Eurocode protected steel heat transfer.
- Graphical folder select dialog is available;
- Fixed an issue associated with
sfeprapy.time_equivalence.main_args()where would not ask for new input folder directory when main_args more than once without re-import the module; - Fixed window opening fraction factor distribution. Previously the mean
$\mu$ and standard deviation$\sigma$ are adopted based on$x$ , however, thescipy.stats.lognormmodule takes$\mu$ and$\sigma$ based on$ln(x)$ . This has been corrected;
- Renamed the packaged from
sfepytosfeprapy(Structural Fire Engineering Probabilistic Risk Assessment Python); - Github repository created;
- Updated progress bar appearance in
sfeprapy.time_equivalence.main_args(); - Implemented new window opening fraction distribution
window_open_fraction, linear distribution is now replaced by inverse truncated log normal distribution; - Updated plot appearance; and
- Project now can be installed through
pip install sfeprapy.
- Implemented Latin hypercube sampling function,
pyDOEexternal library is no longer required; - Boundary for
q_fd, defined asq_fd_uboundandq_fd_lbound(upper and lower limit); - Now output plot for peak steel temperature according to input 'protection_thickness';
- Inputs arguments are packed in a pandas
DataFrameobject instead of a list; - Automatically generate fires inline with selected percentile
select_fires_teq±toleranceselect_fires_teq_toland save as .png and .csv.