Multi-vector-simulator

Latest version: v1.1.1

Safety actively analyzes 688238 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

1.1.1

Added

- Introduce reducable demand. It should be listed within sinks, and provided an efficiency (number between 0 and 1). This efficiency correspond to the percent of the demand which must be provided (critical demand). The oemof-solph sinks which models the non-critical part of the demand has very small variable_costs such that it should not influence the costs calculations but should be fulfilled rather than dumping energy into excess sinks. Developed for the server version. (969)
- Possibility to set min and or max for the load of a transformer and solve for a non-convex optimization. The simulation time can be quite long with cbc solver! Developed for the server version. (969)

Changed

- Add costs to excess sinks of busses. If the dictionary containing the information about the bus contains a key "price", its value will be applied to the variable costs of the sink (unit of the price is currency/energy unit, default currency/kWh). Developed for the server version. (969)

- black version was bumped to 24.3.0 (971)

1.1.0

Added
- Benchmark test (`tests/benchmark_test_inputs/objective_value_exception_equal_annuity`) for in `F0_output.parse_simulation_log` and data stored to `SIMULATION_RESULTS` as well as `OBJECTIVE_VALUE` (901)
- Constants `BENCHMARK_TEST_INPUT_FOLDER` and `BENCHMARK_TEST_OUTPUT_FOLDER` in `tests/_constants.py` (901)
- Tests `E3.test_add_total_consumption_from_provider_electricity_equivalent_two_providers_one_energy_carrier` and `E3.test_add_total_feedin_electricity_equivalent_two_providers_one_energy_carrier`(932)
- Add the argument `return_les` to the function `D0.run_oemof` to return the energy system if set to `True` (923)
- Save the content of the lp file into a string in the `dict_values` under `SIMULATION_SETTINGS->OUTPUT_LP_FILE` in server mode (923)
- Set `OUTPUT_LP_FILE` value to be by default `False` when coming from EPA in server mode (923)
- Function `server.run_sensitivity_analysis_step` to perform one step of a sensitivity analysis (936)
- Function `utils.nested_dict_crawler` to return mapping of path within a nested dict to the keys at the lowest nested level (936)
- Test `test_utils.TestAccessKPIs` to test the nested dict utils functions (936)
- `sankey` method to the `ESGraphRenderer` class to return a sankey diagram (935)
- `plot_sankey_diagramm` function in `D0_modelling_and_optimization.py` to add the dict of the sankey diagram (935)
- `ready_sankey_diagram` in `F2_autoreport.py` to add sankey diagram to output and report (935)
- "maximum_add_cap" to the keys returned to EPA after simulating got production assets (939)
- `PARAMETER_DOC` in `utils` can be used to get information about a parameter directly from the csv file `docs/MVS_parameters_list.csv` (956)
- Now oemof-solph ExtractionTurbine CHP component can be simulated (only tested from the json input) (952)
- The heat pump and chp components can now be simulated with MVS although no explicit support/documentation is present for running from the command line (954)
- Saving the raw oemof result in a pandas Dataframe with multi index (958)
- Raise error for wrongly formatted emission factor (965)

Changed
- `F0_output.parse_simulation_log`, so that `SIMULATION_RESULTS` are not overwritten anymore (901)
- `input_template/csv_elements`: Added missing parameters and generalized units (904)
- `CONTRIBUTING.md` according to last lessons learnt (904)
- Set numpy version to lower or equal than `1.19.4` (924)
- `F2.create_app()` to specify tab name of Dash report to `scenario_name` (`scenario_id`) instead of `Dash` (934)
- Bugfix in functions `test_add_total_consumption_from_provider_electricity_equivalent` and `E3.test_add_total_feedin_electricity_equivalent` (932)
- `version.py`: Version number increased to 1.0.2dev, so simulations run before and after this fix can easily be identified (in the autoreport) (932)
- Enable capacity optimization for storage assets in the epa (936)
- Make the `utils` function `get_nested_value`and `set_nested_value` raise a Key error with a traceback indicating where in the nested dict this key was missing to help debugging (936)
- When the user ask for images to be produced (`-pdf` or `-png` options) a sankey diagram is added to the report and to the `dict_values` under `[PATH_TO_PLOTS][PLOT_SANKEY]` (935)
- Update requirements for numpy (v 1.21.0 or greater) and for dash (v 2.3.1 or greater) (938)
- `OPTIMIZED_ADD_CAP` replaced by "optimized_add_cap" in the assets keys returned to EPA after simulating (939)
- The if statement for adapting `MAXIMUM_CAP` for non-dispatchable production assets is now based on the value of `DISPATCHABILITY` and not on the existence of the key `FILENAME` in the `asset_dict` (939)
- The default values for the constraints are now located in `src/constants.py` under the variable `DEFAULT_CONSTRAINT_VALUES` (953)
- When a required parameter is missing its default value, defined in `docs/MVS_parameters_list.csv`, is used instead of raising an error (956)
- If an asset has 2 output busses, the output flow of only one of the busses is provided using its name `asset[FLOW][bus_name]` (952)
- The user can choose on which bus the investment will take place (useful for transformers with 2 inputs and 1 outputs or 1 input and 2 outputs) (954)
- energy_price and feedin of DSO (providers) can be provided as timeseries (954)
- The peak-demand pricing cost is applied to the consumption of DSO only (before was split between consumption and feedin) (958)
- Upgrade to `oemof-solph==0.5.1` (965)

Removed
- Input timeseries is now not returned to epa in `utils.data_parser.py` (936)

Fixed
- `OBJECTIVE_VALUE`, `SIMULTATION_TIME`, `MODELLING_TIME` now included in the `json_with_results.json` (901)
- Missing parameters in `input_template/csv_elements` (904)
- Confusing Dash report tab names (933)
- Calculation of `total_feedin` and `total_consumption_from_providers`, where multiple providers of one energy carrier were not aggregated correctly (931)
- Used `pandas.concat` instead of `DataFrame.append` to add rows to a `pandas.DataFrame` instance to suppress UserWarning (937)
- Add missing file for test `test_F0_output.TestLogCreation.test_parse_simulation_log` (937)
- Transformers can have multiple input or output busses (tested in `tests/test_D1_model_components` by `test_transformer_optimize_cap_multiple_output_busses_multiple_inst_cap`, `test_transformer_optimize_cap_multiple_output_busses_multiple_max_add_cap`, `test_transformer_fix_cap_multiple_output_busses_multiple_inst_cap` and in `tests/test_benchmark_special_features` by `test_benchmark_feature_parameters_as_timeseries_multiple_inputs`)(949)
- The constraints are not all set to default values if only one constraint is missing, only the missing constraint is set to default value (953)
- If the age of an asset is such that it should be replaced on the project's last year, we do not take it into account as the resell price would be deduced anyway (965)
- The test `test_c2_economic_functions.py::test_get_replacement_costs_one_reinvestment_age_asset_equal_asset_lifetime` was added to account for a field usecase and a solution was provided (966)

1.0.0

Added
- Check for correct `installedcap` processing to `AB_grid_pv` benchmark test (831)
- Check to `AB_grid_pv` benchmark test: total pv generation is used to cover demand (831)
- Section on energy consumption assets in `Model_Assumptions.rst` and `MVS_Outputs.rst` (817)
- Constant variables: `MODELLING_TIME`, `LP_FILE` (839), `MAXIMUM_ADD_CAP` (848), `TIMESERIES_SOC`, `AVERAGE_SOC` (859), `INSTALLED_CAP_NORMALIZED` (835)
- Requirement of plotly in `requirements/default.txt` (840)
- Pytests for `C1.check_for_sufficient_assets_on_busses()` (837)
- Lookup table for parameters in RTD (842)
- Column `category` in the file `docs/MVS_parameters_categories.csv` to know in which csv file(s) the parameter is used (842)
- Define `OEMOF_SOLPH_OBJECT_ASSET`, `WEIGHTING_FACTOR_ENERGY_CARRIER`, `RENEWABLE_SHARE_ASSET_FLOW`, `OEMOF_SOLPH_OBJECT_BUS` as constants in `D2` module (834)
- Import and use constants from `D2` module in `test_D2_model_constraints.py` (834)
- Check for the capability of asset capacities in an energy system to fulfill the maximum demand in `C1.check_energy_system_can_fulfill_max_demand()` (824)
- Tests for `C1.check_energy_system_can_fulfill_max_demand()`, including pseudo-benchmark test in `test_C1` (824, 896)
- Zenodo badge on README (850)
- `VERSION_NUM` to simulation settings, added with `C0.add_version_number_used()` (855)
- Generation of pdf version of the readthedocs (853)
- `sphinxcontrib-svg2pdfconverter` in `docs/conf.py` for `svg` images into `pdf` (also added in `requirements/docs.txt`(853)
- Function `generate_kpi_description` in `docs/conf.py` module to generate documentation of kpi parameters listed in `docs/MVS_kpis_list.csv`(863)
- Badges for pypi, black linter and license in `docs/index.rst` and `README.rst` (865)
- `--version` option for the command line `mvs_tool` (866)
- `sphinx.ext.imgconverter` in `docs/conf.py` for svg images into pdf (853)
- Parameter `maximumAddCap` where `maximumAddCap=maximumCap-installedCap` in `C0.process_maximum_cap_constraint()`, ie. make the coupling of the two parameters `installedCap` with `maximumCap` explicit (848)
- Check that storage file name defined with ending `.csv` with new `A1.check_storage_file_is_csv()` in `A1.create_json_from_csv()` (859)
- Class in `exceptions.py`: `MissingCsvEndingError` (859)
- Constant variables in `E1` for accessing oemof-solph results: `OEMOF_FLOW`, `OEMOF_SEQUENCES`, `OEMOF_INVEST`, `OEMOF_SCALARS` (859)
- Constant variables in `E1`: `THRESHOLD` for central definition of precision limit (859)
- `docs/MVS_kpi_categories.csv` and `conf.generate_kpi_categories()` to list KPI under in the RTD (869)
- Descriptions of all output files to RTD (874)
- Benchmark test for `maximumCap` constraint in `test_benchmark_constraints.py` (835)
- Functions `C0.process_normalized_installed_cap()` to process the normalized installed capacity value as well as its pytests (835)
- Test for `C0.process_normalized_installed_cap()` (835)
- Tips and Tricks in the RTD (876)
- Logging option for server (895)

Changed
- Release protocol in `CONTRIBUTING.md` (821)
- Status messages of requirements in `E-Land_Requirements.rst` (817)
- `Model_Assumptions.rst` and `MVS_Outputs.rst`, mainly adding labels (817)
- Pytests for `D0` to let them pass on Windows (839)
- Dependencies of pyomo and pandas (840, 896)
- Validate of peak demand pricing bus in `C1.check_for_sufficient_assets_on_busses()` (837)
- Refactored `EXCESS` to `EXCESS_SINK` as this is more intuitive (837)
- Order of `maximumCap` check and adaption in `C0.process_maximum_cap_constraint()` (833)
- Adapt parameters in `test/inputs` to make simulation run without errors after correcting processing of `maximumCap`: set constraints `minimal_renewable_factor` and `minimal_degree_of_autonomy` to `0.01`, `maximumCap` of pv plant to `10000` and `feedin_tariff` to `0.05` (833)
- Generate the parameters categories in RTD lookup table automatically from `docs/MVS_parameters_categories.csv` (842)
- `DISPATCHABILITY` of energyConsumption assets now set to `FALSE` by default (824)
- Function `C0.define_sink()` now defines `DISPATCHABILITY=TRUE` for the created sink (824)
- Only implement the constraints defined by the user explicitly: move accessing the constraint key in `dict_value` in the respective constraint preparation functions (845)
- Restructure chapters of Readthedocs (853, 860)
- Turn Readthedocs build warnings into errors in CI (863)
- Pytest triggers the kpi benchmark tests (which was not the case before) (864)
- Deactivate optimization when `maximumCap<=installedCap and maximumCap!=0` in `C0.process_maximum_cap_constraint()` (848)
- Replace usage of `maximumCap` in `D1` with `maximumAddCap` calculated in `C0` (848)
- Adjust `tests/test_benchmark_feedin.test_benchmark_feedin_tariff_optimize_positive_value()` and `tests/benchmark_test_inputs/Feedin_optimize/csv_elements/energyProduction.csv` to fit new `maximumCap` and `maximumAddCap` definitions (848)
- Include new parameter `maximumAddCap` in `tests/test_data/inputs_for_D0/mvs_config.json` and `tests/test_data/inputs_for_D1/mvs_config.json` (848)
- Explicitely include badges only for the html version of the RTD and not the pdf (870)
- Change `E1.get_timeseries_per_bus()` and `E1.get_flows` and utilize `E1.cut_below_micro` to apply precision limit (859)
- Separate calculation of SOC into own function: `E1.get_state_of_charge_info` (859)
- Change `E1.add_info_flows()` so that storage peculiarities for the information is considered (859)
- Benchmark tests for `AE-Grid-Battery`: Input files and pytests (859)
- `E1.lcoe_assets` to calculate LCOE of storage capacity throughput based on input flow. Required change of `test_benchmark_KPI` (storage not used, `LCOE=0`) (589)
- Modified github action workflow so that it is not triggered when one modifies the README, CHANGELOG or the docs (872)
- Proofread RTD for the release of the ELAND report (871, 878, 884, 885, 886, 887, 897)
- Prepared `docs/MVS_kpis_list.csv` summarizing all simulation outputs (869)
- Decapitalizing and removing spaces of all variable values in `constants_json_strings.py` (869)
- Reformatting code snippets in RTD to `:code:` (880)
- `E3.add_levelized_cost_of_energy_carriers` to fix wrong variable definition, extend pytest (890)
- `E2.convert_components_to_dataframe()` to correctly display when an asset is optimized, add pytests (875)
- If the `TIMESERIES` key is in the `dict_values` and the file under `FILENAME` key cannot be found, the timeseries is loaded from `TIMESERIES` (881)
- updated the SOC defintions in RTD (876)
- Corrected faulty weighting factors (`DEFAULT_WEIGHTS_ENERGY_CARRIERS` in `utils/constants.py`, `docs/model/assumptions.rst`) (894)
- MVS-EPA parser to work with current EPA as of 2021-05-28, commit 5e7c4c39b2564c569c31907cbcb3cb07b92ebd2f: `utils.data_parser.convert_epa_params_to_mvs()` (895)

Removed
- `AUTO_SOURCE` and `AUTO_SINK` as this overcomplicated the labelling process (837)
- `AUTO_SINK` suffix in `utils.data_parser.convert_mvs_params_to_epa()` (837)
- `EXCESS_SINK_POSTFIX` and only use `EXCESS` (837)
- Quotes for command line instruction in `README.rst` (850)
- Superfluous `docs/readthedocs.yml` file (853)
- Broken links in readthedocs (861)
- Calculation of `LCOE_Asset` for energy storage capacity are not calculated anymore in `E2.lcoe_assets` (589)

Fixed
- Skip `test_benchmark_KPI` as it was seen to be consuming the whole test time leading to timeout on github action (826)
- Reduce `simulation_settings.evaluated_period` to one day for the tests where simulation results are not important (for `E0` and `D2` test modules setup) (826)
- Fix formula of degree of NZE in RTD and in docstring of `E3.equation_degree_of_net_zero_energy()` (832)
- Tests failing on windows with `FileExistsError` (839, 854)
- No excess error message regarding the auto-generated peak demand pricing bus (837)
- `C0.prepare_demand_assets()` did not explicitly exclude feedin sinks (837)
- Hotfix: `C0.define_sinks()` now works for scalar feed-in prices, but not for lists of timeseries (837)
- Address issue 825 by changing order of `maximumCap` check and adaption in `C0.process_maximum_cap_constraint()` (833)
- Bugfix in `C0.process_maximum_cap_constraint()`: Always set `maximumCap` to `None` in case its value is 0 (833)
- Solved ReadTheDocs warnings (863)
- Re-enable the coverage tests on github actions (864)
- Adjust definition for `maximumCap` in `docs/MVS_parameters_list.csv`: Total maximum installable capacity (848)
- Negative values within the precision limit in `timeseries.xlsx` (859)
- Introduce new standard for cites (885)
- Faulty calculation of attributed costs (890)
- Show actual setting of `OPTIMIZE_CAP` in autoreport for storages and energy production fuel sources (875)
- Faulty weighting factors, now energy carrier weights mostly in the range of lower heating value (894)

0.5.5

Added
- Verification of the SoC values after simulation for any physically infeasible values with `E4.verify_state_of_charge` and added tests for this function (739)
- Explanation in `MVS_parameters_list.csv` on how to deactivate the RES constraint (752)
- Add the new parameter `scenario_description` to input files and docs and a section in autoreport describing the scenario being simulated (722)
- Add a new sub-section in RTD describing the suite of post-simulation tests carried out through functions in `E4_verification.py` (753)
- Add KPI individual sectors as an own table to the report (757)
- Add pytests for the minimal renewable share constraint of function `D2.add_constraints()` (742)
- Throw an explanatory warning in `A1` module when csv file cannot be parsed (675)
- Add `-d` option to `mvs_report` command to use hotreload of dash app for devs (770)
- Add `utils.analysis` module for overall analysis functions (679)
- Added pre-processing step with `C0.replace_nans_in_timeseries_with_0` to set NaNs occurring in provided timeseries to zero (746)
- KPI processing function `E3.add_total_consumption_from_provider_electricity_equivalent()` incl. pytest (726)
- Subsection `Minimal degree of autonomy constraint` for RTD, added parameter in `MVS_parameters_list.csv` (730, 726)
- Minimal degree of autonomy constraint including pytest and benchmark test (726)
- Add benchmark test for json benchmark file (`tests/benchmark_test_inputs/epa_benchmark.json`) from EPA (EPA-MVS compatibility) (781)
- Add a try-except code block to catch fatal errors in `DO.simulating()` that cause simulation to terminate unsuccessfully (754)
- It is now possible to model a stratified thermal energy storage. In this context, the two optional parameters `fixed_losses_relative` and `fixed_losses_absolute` were added and can be set in the `storage_*.csv` file. The usage of this new component was tested in `test_A1_csv_to_json.py`, `test_D1_model_components.py` and `test_benchmark_stratified_thermal_storage.py`. A documentation was added in the chapter `Model_Assumptions.rst` (718)
- Allow to run workflow manually from the GitHub Actions tab by adding `workflow_dispatch` to `main.yml` (793)
- Added a note in energy excess section in RTD (component models, `Model_Assumptions.rst`) saying that excess sinks are added automatically (792)
- Added net zero energy KPI `degree of NZE` with `E3.equation_degree_of_net_zero_energy()` and `E3.add_degree_of_net_zero_energy()` (776)
- Added tests for `E3.equation_degree_of_net_zero_energy()` and `E3.add_degree_of_net_zero_energy()` (776)
- Added information about degree of NZE to RTD (`Model_Assumptions.rst`) (776)
- Function `E1.cut_below_micro` to round decision variables (capacities, flows) below threshold of plus/minus 10^-6 (1e-6) to 0, add warnings if negative value larger then threshold (invalid result). Includes pytests (791)
- Update `component models` (`Model_Assumptions.rst`) section in RTD with information on energy storages, heat pumps and HVAC (794)
- Section `Cost Assumptions` to `Model_Assumptions.rst` (795)
- Pre- and post-processing of `fixcost.csv` entries, so that they also appear in economic evaluation, including pytests (795)
- Update `component models` section in RTD with information on H2 storage, dispatchable and non-dispatchable sources, electrolyzers, CHP, other fuel powered plants and electric transformers. (804)
- Added net zero energy (NZE) constraint with `D2.constraint_net_zero_energy()` and `D2.prepare_energy_provider_feedin_sinks()` (796)
- Added test for `D2.prepare_energy_provider_feedin_sinks()` (796)
- Added benchmark test for NZE constraint (796)
- Added information about NZE constraint to RTD (796)
- Added `net_zero_energy` parameter to all `constraints.csv` files and all json files (796)
- Added `net_zero_energy` parameter to `MVS_parameters.rst` and `MVS_parameters_list.csv` (796)
- Added verification of NZE constraint in `E4.net_zero_energy_constraint_test()`, added tests for this function (796)
- Added test for `D2.add_constraints()` with activated NZE constraint (796)

Changed
- Fix xlrd to xlrd==1.2.0 in `requirements/default.txt` (716)
- Format `KPI_UNCOUPLED_DICT` to a `pd.DataFrame` (757)
- Rename variable `EXTRA_CSV_PARAMETERS` to `KNOWN_CSV_PARAMETERS` (761)
- If a required parameter is missing but is in the `KNOWN_EXTRA_PARAMETERS` dict in `constants.py`: do not flag it as missing and set its default value (761)
- Gather all missing MVS parameters and raise a single error listing all of them (`src/multi_vector_simulator/utils/__init__.py`) (761)
- Add `set_default_values` argument to the `B0.load_json` function to set default values of missing parameter which is listed in `KNOWN_EXTRA_PARAMETERS`(761)
- Add `flag_missing_values` argument to the `B0_load_json` function to allow switching between `MissingParameterWarning` and `MissingParameterError`(761)
- Write lp file only when executing `cli.py` (675)
- Change `C0.change_sign_of_feedin_tariff()` - `logging.info` message if `feedin==0` (675)
- Update RTD instruction for instructions for the `mvs_tool` command (770)
- Change `test_benchmark_special_features.py` (746)
- Update "Input verification" section in `Model_Assmptions.rst` for NaNs (746)
- (!) Major change: Definition of Degree of Autonomy (DA) updated in the RTD, also changed calculation of that KPI (730, 726)
- Updated all input files to also include `minimal_degree_of_autonomy`, including `input_template`, `tests/inputs`, `tests/benchmark_test_inputs` (726, 783)
- `E4.minimal_renewable_share_test()` into generic `E4.minimal_constraint_test()` so that it can be applied both to minimal renewable share and minimal degree of autonomy (726)
- `C1.check_non_dispatchable_source_time_series()`, now verification not only applied to renewable assets, but all non-dispatchable assets (726)
- Add `MINIMAL_DEGREE_OF_AUTONOMY` to EPA-MVS parser (`utils.data_parser.convert_epa_params_to_mvs()`)(726)
- Provide the modeler with helpful messages enabling simpler identification and rectification of problems in their input files (`D0.simulating()`) (754)
- In `test_A1_csv_to_json.py` tests were added that check whether default values of `0` are set for `fixed_losses_relative` and `fixed_losses_absolute` in case the user does not pass these two parameters (718)
- In `test_D1_model_components.py` tests were added that check whether the `GenericStorage` parameter `investment.minimum` is set to `0` in case `fixed_losses_relative` and `fixed_losses_absolute` are not passed and to `1` in case they are passed as times series or floats. At this time it is not possible to do an investment optimization of a stratified thermal energy storage without a non-zero `investment.minimum` (see this [issue](https://github.com/oemof/oemof-thermal/issues/174)) (#718)
- The two optional parameters `fixed_losses_relative` and `fixed_losses_absolute` were added in `tests/inputs/mvs_config.json` (718)
- Adapted structure of component models in RTD (`Model_Assumptions.rst`) to mirror EPA and MVS input data (792)
- Refactor module imports in `cli.py` and `server.py` (783)
- Limit index of availability timeseries to simulation timeindex (`C0.define_availability_of_peak_demand_pricing_assets`) (783)
- Call `E1.cut_below_micro` in `E1.get_flows`, `E1.get_optimal_cap` and `E1.get_storage_results` (791)
- Split preprocessing function `D2.prepare_constraint_minimal_degree_of_autonomy()` into two functions that can be used by multiple constraints: `D2.prepare_demand_assets()` and `D2.prepare_energy_provider_consumption_sources()`, also adapted tests (796)
- Edited epa parser so that net zero energy constraint is added in `utils.data_parser.convert_epa_params_to_mvs()` (796)
- Update definition of degree of net zero energy in `docs/MVS_Outputs.rst`, `src/multi_vector_simulator/E3_indicator_calculation.py ` and `tests/test_E3_indicator_calculation.py` (797)
- Changed `utis.data_parser.convert_epa_params_to_mvs()` to fix EPA-MVS parsing bugs, now also prints extra parameters, improved comments (810)
- Edited error message when a parameter is missing to make it easier to track (`A1.conversion()`) (795)
- Improved warning message when a unknown parameter is added (`A1.create_json_from_csv`) (795)
- Changed `REQUIRED_CSV_PARAMETERS` of `FIX_COSTS`: Removed `LABEL` and `DISPATCH_PRICE` and removed those parameters from all `fixcost.csv` (795)
- Added exception to `E0.store_result_matrix` for `fixcost.csv` entries (795)
- Moved parts of `E0.evaluate_dict` into a subfunction `E0.initialize_kpi` (795)
- Exchanged all demand profiles in `tests` with standardized ones (818)

Removed
- Remove `MissingParameterWarning` and use `logging.warning` instead (761)
- Remove redundant function `A1.check_for_official_extra_parameters` as `utils.compare_input_parameters_with_reference` works for both csv and json and will therefore be preferred (761)
- Remove `STORE_OEMOF_RESULTS` variable (675)
- Remove `F0.select_essential_results()` (675)
- Removed `DSM` and `TYPE_ASSET` from `input_template/energyConsumption.csv`, also in `constants.py` (726)
- Removed warning message about excess energy calculation that is outdated as 559 is solved (777)
- Remove `test_C1_verification.get_json()` as now not used (783)
- Removed instances of `WrongParameterWarning` and replaced it with `logging.warning` in `A1` (795)

Fixed
- Minor typos in D0, E4 and test_E4 files (739)
- `utils.data_parser.convert_epa_params_to_mvs()` and `utils.data_parser.convert_mvs_params_to_epa()` now parse succesfully input files generated from EPA (675)
- Fix issue (763): Avoid displaying an energy sector demand table in report if it is empty (770)
- Fix issue (769): Fix argument parsing and error messages of `mvs_report` command (770)
- Fix issue (756): Avoid crashing report generation when internet not available (770)
- Fixed display of math equations in RTD (730)
- Fix `numpy.int32` error in `B0` (778)
- `mvs_config.json` is generated again, now from `cli.py` (783)
- Fix pytest `C1.test_check_non_dispatchable_source_time_series_passes` and `C1.test_check_non_dispatchable_source_time_series_results_in_error_msg` (783)
- Fix typo in `utils.data_parser` `logging.INFO` was used instead of `logging.info` (809)
- Fix: Asset groups that are empty are not provided by EPA, adapted parser (810)
- Fix: `ENERGY_PROVIDER` assets are missing parameter `DISPATCHABILITY` when parsed from EPA to MVS (810)
- Fix: No `DISPATCHABILITY` parameter for `ENERGY_PRODUCTION` assets in EPA (810)
- Fix: Default value of `MAXIMUM_EMISSIONS` when parsing from EPA (810)
- Move `process_fixcost` from `E1` to `E0` to avoid circular imports (820)

0.5.4

Added
- Updated release protocol with info on credentials for test.pypi.org (step 9) and added "Fixed" to unreleased section of changelog.md in release protocol (695)
- Added information about the API to the docs (701)
- Added CO2 emission factors in the section `Model_Assumption.rst` (697, 735)
- Added `energyBusses.csv` in RTD (678)
- Add and link `rewableAsset` as parameter in RTD, specifically `MVS_parameters.rst` and `MVS_parameters_list.csv` (710)
- Parameter `emission_factor` to `energyProduction` and `energyProviders` and to rtd (`MVS_parameters.rst` and `MVS_parameters_list.csv`) (706)
- Parameter `total_emissions` in kgCO2eq/a to `constraints.csv` (706)
- Constant variables `TOTAL_EMISSIONS` and `SPECIFIC_EMISSIONS_ELEQ` for emission KPIs, `MAXIMUM_EMISSIONS` for emission constraint and `UNIT_EMISSIONS` and `UNIT_SPECIFIC_EMISSIONS` for unit definitions (706)
- Calculation of total emissions per production asset in `E3.calculate_emissions_from_flow()`, which are added to `KPI_SCALARS_DICT` (706)
- KPI "Total emissions" in kgCO2eq/a per production asset (`E3.add_total_emissions()`) and KPI "Specific emissions per electricity equivalent" in kgCO2eq/kWheleq (`E3.add_specific_emissions_per_electricity_equivalent()`) (706)
- Tests for functions `E3.calculate_emissions_from_flow()`, `E3.add_specific_emissions_per_electricity_equivalent()`) and `E3.add_total_emissions()` (706)
- Added `emisson_factor` of providers to automatic source for providers in `C0.define_source()` and adapted tests (706)
- Added information on calculation of total emissions in RTD in Simulation Outputs section (706)
- Parameter `maximum_emissions` (`MAXIMUM_EMISSIONS`) to `constraints.csv`, unit: kgCO2eq/a (706)
- Maximum emission constraint by `D2.constraint_maximum_emissions()` to `D2.add_constraints()` using `oemof.solph.constraints.emission_limit()`, also added tests (714, 706)
- Benchmark test for maximum emission constraint in `test_benchmark_constraints.py` (714, 706)
- Information on maximum emissions constraint to RTD, including help for the end-user to define the value for this constraint (714, 706)
- A logging.warning (`C1.check_feasibility_of_maximum_emissions_constraint()`) if `maximum_emissions` constraint is used but no asset with zero emissions is optimized without maximum capacity constraint, also added tests (714, 706)
- A logging.warning (`C1.check_emission_factor_of_providers()`) in case any of the providers has a renewable share of 100 % but an emission factor > 0, also added tests (714, 706)
- Info on maximum emissions constraint benchmark test to RTD (714, 706)
- Verification for maximum emissions contraint in `E4.maximum_emissions_test()`, also added tests (714, 706)
- Added pytests for the function 'C0.compute_timeseries_properties()' (705)

Changed
- Benchmark test for investment model (`Test_Economic_KPI.test_benchmark_Economic_KPI_C2_E2`): Expand test to LCOE as well as all all other system-wide economic parameters, transpose `test_data_economic_expected_values.csv`, change `test_data_economic_expected_values.xls` (613)
- Adapt pre-processing for investment benchmark tests into a seperate function (613)
- `COST_REPLACEMENT` is now a parameter that is included in output cost matrix (613)
- Improved `Code.rst` for RTD code documentation (704)
- All `.py` files to add a module description for RTD on top (704)
- Converted `README` from `.md` to` .rst` format and updated `Installation.rst` file (646)
- Updated `setup.py` to use the rst formatted README file
- Changed `C0.energyStorage()` for timeseries in storage parameters (hotfix) (720)
- Input files and benchmark test `test_benchmark_special_features.Test_Parameter_Parsing()`: Now also including timeseries in a storage component (723)
- Adapted `E0` tests to new parameter `emission_factor` (706)
- Adapted all test inputs and json files and the input template, adding `emission_factor` (`energyProduction`, `energyProviders`) and `maximum_emissions` (`constraints.csv`) (706)

Removed
- Removed `README.md` in favour of `README.rst` (646)

Fixed
- Decreased warnings of RTD compilation drastically (693)
- Use current version number as defined in `version.py` for RTD (693)
- Added storage to the table in autoreport listing the energy system components (686)
- Add assertion `sum(attributed_costs)==cost_total` (for single-vector system) (613)
- Benchmark test for renewable share (`TestTechnicalKPI.test_renewable_factor_and_renewable_share_of_local_generation()`) (613)
- Github actions workflow: update apt-get before installing pre-dependencies (729)
- Got rid of logging messages of imported libraries in the log file (725)
- Fix RTD for emissions (735)
- Hot fix: Parameters to be defined as timeseries in `storage_*.csv` (720)
- Tests for `E4.minimal_renewable_share_test` (714, 706)

0.5.3

Added
- Warning for missing parameter when parsing inputs from epa to mvs (656)
- New module `exceptions.py` in `multi_vector_simulator.utils` to gather custom MVS exceptions (656)
- New argument for functions `E1.convert_demand_to_dataframe`, `F1.plot_timeseries`, `F2.ready_timeseries_plots` (665)
- File .github/workflow/main.yml for github actions (668)
- `energyBusses` now have to be defined by the user via `energyBusses.csv` (649)
- Input validation test `C1.check_for_label_duplicates` (649)
- Constant variables: `JSON_PROCESSED`, `JSON_WITH_RESULTS`, `JSON_FILE_EXTENSION` (649)
- Comment in the RTD concerning the logical equivalence of `energyCarrier` and `energyVector` in the MVS (649)
- Comment how fuels can either be attributed to the fuel energy vactor or another vector (649)
- Labels for tables in `Model_assumptions.rst` (649)
- New in `utils`: `helpers.py` with `find_valvue_by_key()`: Finds value of a key in a nested dictionary (649)
- New exception `DuplicateLabels` (649)
- Plot showing state of charge (SOC) of storages of each bus separately, as it is provided in %, also added to automatic report (666)
- "SOC" as string representative in `utils/constants.py`, used in `F1` and `E0` (666)
- SOC plot of storages is added to the autoreport (666)
- Test for correct storage labelling in `A1.add_storage_components()` (666)
- Test for getting two time series with `E1.get_timeseries_per_bus()` for storage (input and output power) if storage is directly connected to bus (666)
- Function `C1.check_efficiency_of_storage_capacity` that raises error message if the `efficiency` of `storage capacity` of any storage is 0 and a logging.warning if the efficiency is < 0.2, to help users to spot major change when using old files (676)
- Function `C0.change_sign_of_feedin_tariff()` for changing the sign of the `feedin_tariff`, added tests as well (685)
- Benchmark tests in `test_benchmark_feedin.py` to check the feed-in behaviour and feed-in revenues in dispatch and invest optimization (685)
- Pytests for `C0.add_a_transformer_for_each_peak_demand_pricing_period()`, `C0.define_dso_sinks_and_sources`/`C0.define_auxiliary_assets_of_energy_providers`, `C0.define_source` (685)
- Basic structure for pytest of `C0.define_sink` (685)
- Add verification test `C1.check_feedin_tariff_vs_levelized_cost_of_generation_of_production()` (685)

Changed
- Function `utils.compare_input_parameters_with_reference` accepts parameters as dict for json comparison (656)
- Move A1 and C0 custom exceptions into `multi_vector_simulator.utils.exceptions.py` (656)
- Adapt `E1.convert_demand_to_dataframe` for multiple sectors (656)
- Improve the demands section of the autoreport: Divide the demand tables and plots sector-wise (665)
- All tests and benchmark tests are adapted to `energyBusses` being defined manually (649)
- Input for for `tests\test_F1_plotting.py` changed from `tests/test_data/inputs_F1_plot_es_graph` to default input folder `tests/inputs` (649)
- `tests/inputs`, `input_template` and the inputs of the benchmark as well as pytests adapted to `energyBusses` defined via `csv` (649)
- Refactored and changed `C0.update_bus()` to `C0.add_asset_to_dict_of_bus` (649)
- Refactored and changed `C0.define_busses()` as it now only defines the energy assets connected to the defined busses (649)
- Changed `C0.define_sink()` and `C0.define_source()` so that it fits with externally defined `ENERGY_BUSSES` (649)
- Adapt pytests of `D1` and `D0` (649)
- Changed `C1.identify_energy_vectors` to be a test `C1.check_if_energy_vector_of_an_asset_is_valid` (649)
- Input folder for the `F1` tests now `tests/inputs` (649)
- Refactored parameters: `DSO_PEAK_DEMAND_BUS_NAME` to `DSO_PEAK_DEMAND_SUFFIX`, `SECTORS` to `LES_ENERGY_VECTORS` (649)
- Update `MVS_parameter_list.csv`: Added information to `energyVector` (649)
- Modify `E1.get_timeseries_per_bus()` to add `INPUT_POWER` and respectively `OUTPUT_POWER` to a storage component directly connected to the a bus to fix 444 and add logging.debug(666)
- Changed label of storage in `timeseries_all_busses.xlsx` to be defined by `installedCap` + `optimizedAddCap` to prevent confusion (666)
- Make use of constant variables (684)
- `tests/inputs` adapted so that storage is used (684)
- Significant change(!): `loss_rate` of storages in `D1` defined as `1-efficiency` instead of as `efficiency` of the storage capacity (see `storage_*.csv` files) (676)
- `efficiency` of `storage capacity` in `storage_*.csv` now actually displays the storages' efficiency/ability to hold charge over time (676)
- Adapted `efficiency` of `storage capacity` in all provided benchmark tests and inputs (676)
- Documented the change of `efficiency` of `storage capacity` as actual efficiency/ability to hold charge over time in RTD (676)
- Significant change(!): `feedin_tariff` in `energyProviders.csv` should now be provided as positive value to earn money with feed-in and to a negative value to pay for feed-in (685)
- Simplified `C0.define_source()` (685)
- Refactored `C0.define_dso_sinks_and_sources` to `C0.define_auxiliary_assets_of_energy_providers` (685)
- Refactored `C0.check_feedin_tariff()` to `C0.check_feedin_tariff_vs_energy_price()` to specify test (685)
- Changed `tests/inputs` so that feed-in tariff checks pass (685)
- Adapted check in `C0.check_feedin_tariff_vs_levelized_cost_of_generation_of_production()`: if `maximumCap` is not None only a warning is logged as this wouldn't result in an unbound problem. In case of an investment optimization of the asset a logging.debug is shown. (690)

Removed
- File .travis.yml (668)
- Folder `tests/test_data/inputs_F1_plot_es_graph`, now using default input folder `tests/inputs` as input for `tests\test_F1_plotting.py` (649)
- Mention of `LABEL` in the RTD description of the `csv` files (649)
- `C0.bus_suffix()`, `C0.remove_bus_suffix()` and `C0.get_name_or_names_of_in_or_output_bus()`, as this overcomplicated the issue and the end user now can define their own bus labels (649)
- Parameters `INPUT_BUS_NAME` and `INPUT_BUS_NAME`, as they are now equivalent to `INFLOW_DIRECTION` and `OUTFLOW_DIRECTION` (649)
- Removed SOC from storages from busses' plots (in `F1.plot_instant_power()`) but not from `OPTIMZIED_FLOWS` so that it is still printed into `timeseries.xlsx` (666)

Fixed
- Storage label definition (remove filename) and use `LABEL` instead (666)
- Make deep copy of data frame in `F1.plot_optimized_capacities()` to prevent errors (666)
- Benchmark test for minimal renewable share constraint (685)

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.