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_gen
needs to be validated. sfeprapy.mcs0
currently does capture column element.- (WIP)
sfeprapy.mcs2
, similar tosfeprapy.mcs0
but does not solve structural protection thickness for a predefined failure temperature, i.e. structural protection thickness is predefined.
- Added: 1D heat transfer module.
- Improved:
cli
mcs0 template save as.xlsx
. - Fixed:
cli
mcs0 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
sfeprapy
to trigger recently refreshed CLI. Previously this ispython -m sfeprapy.mcs0
. - Improved: CLI, added figure and save template input file features. Use
sfeprapy -h
to find more information. - Depreciated:
sfeprapy.mcs0
module can no longer be triggered directly aspython -m sfeprapy.mcs0
(i.e. codes are removed afterif __name__ == '__main__'
. - Depreciated:
sfeprapy.mcs0
GUI to select input file, use CLI instead.
- New:
sfeprapy.mcs0
added exposure time dependent timber charring rate. - New:
sfeprapy.func.mcs_gen
addedramp
input 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.mcs0
added plotting feature, to activatepython -m sfeprapy.mcs0 {fp} mp2 fig
- Depreciated:
sfeprapy.mc0
. This module is imported/combined intosfeprapy.mcs0
at version 0.6. - Depreciated:
sfeprapy.mcs2
. This module is imported/combined intosfeprapy.mcs0
at version 0.6.5.
- New: system arguments added to
python -m sfeprapy.mcs0
command line call. For example, callingpython -m sfeprapy.mcs0 example_input.csv mp4
will run the problem definition fileexample_input.csv
with 4 processes.
- New:
phi_teq
is added insfeprapy.mcs0
to include Model Uncertainty factor, see README for details. - New:
sfeprapy.mcs0
implemented timber fuel contribution. - New:
timber_exposed_area
is added insfeprapy.mcs0
, see README for details. - New:
timber_charring_rate
is added insfeprapy.mcs0
, see README for details. - New:
timber_density
is added insfeprapy.mcs0
, see README for details. - New:
timber_hc
is added insfeprapy.mcs0
, see README for details. - New:
timber_solver_ilim
is added insfeprapy.mcs0
, see README for details. - New:
timber_solver_tol
is added insfeprapy.mcs0
, see README for details. - New:
sfeprapy.mcs0.test
automated tests forsfeprapy.mcs0
. - Improved:
sfeprapy.mcs0
changed criteria for parametric fire whenfire_mode
is set to 3.opening_factor
should 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_permanent
insfeprapy.mcs0
. - Fixed: added
long_description_content_type
to setup.py to change description type to markdown. - Improved: README.md updated to reflect the new
sfeprapy.mcs0
.
- New:
sfeprapy.func.mcs_gen
general purpose stochastic variable generator. - New:
sfeprapy.func_mcs_obj
general purpose Monte Carlo Simulation object. - New:
sfeprapy.mcs0
to implementmcs_gen
andmcs_obj
into the time equivalence calculation. - New:
sfeprapy.mcs0
whenbeam_loc
is removed, the most onerous location will be calculated and used based on specific fire curve. - Improved:
sfeprapy.mc1
MCS routine is converted to an object, MonteCarloCase and MonteCarlo classes are provided to substitute existing factions. - Fixed:
sfeprapy.mc1
convergence of protection thickness maybe failed to find. - Fixed:
sfeprapy.dat.ec_3_1_2kyT
units fixed, used degree K but should be degree C.
- New:
sfeprapy.pd6688.annex_b_equivalent_time_of_fire_exposure
PD 6688 equivalent time exposure calculation. Manual can be found in its docstringannex_b_equivalent_time_of_fire_exposure.__doc__
. - New: (WIP)
sfeprapy.mc1
new equivalent time exposure procedure. - Improved:
sfeprapy.mc
optimised 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_generator
eliminated 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.mc
figure size is customisable in config.json file. - New:
sfeprapy.mc
figure x-axis limits (i.e. t_eq) is customisable in config.json file. - Fixed:
sfeprapy.mc
final time equivalence 'stepping' issue due to tolerance of the solver is now fixed by replacing existing bisection by a secant. - Improved:
sfeprapy.mc
input parameter (in master .csv file)fire_mode
is added, replacingfire_type_enforced
. - Improved:
sfeprapy.mc
simulation time improved. Tested case shows 256 seconds reduced to 26 seconds for 1000 simulations on i7-3770k with 6 threads. - Improved:
sfeprapy.mc
refreshed 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_enforced
to 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.png
is 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_live
is 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_factor
is added to be returned from the function. sfeprapy.time_equivalence.app
is 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_duration
is checked and reassigned if necessary so that the slowest travelling fire is able to travel the entire roomroom_depth
.fire_duration
defined 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.lognorm
module takes$\mu$ and$\sigma$ based on$ln(x)$ . This has been corrected;
- Renamed the packaged from
sfepy
tosfeprapy
(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,
pyDOE
external library is no longer required; - Boundary for
q_fd
, defined asq_fd_ubound
andq_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
DataFrame
object instead of a list; - Automatically generate fires inline with selected percentile
select_fires_teq
±toleranceselect_fires_teq_tol
and save as .png and .csv.