ChaProEV 1.2.6__tar.gz → 1.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. {chaproev-1.2.6 → chaproev-1.2.8}/.gitignore +4 -1
  2. chaproev-1.2.8/ChaProEV_test_case_configuration_files.zip +0 -0
  3. {chaproev-1.2.6/src/ChaProEV.egg-info → chaproev-1.2.8}/PKG-INFO +13 -2
  4. chaproev-1.2.8/README-PC-28624.md +161 -0
  5. {chaproev-1.2.6 → chaproev-1.2.8}/README.md +12 -1
  6. chaproev-1.2.8/docs/consumption-PC-28624.md +5 -0
  7. chaproev-1.2.8/docs/define-PC-28624.md +191 -0
  8. chaproev-1.2.8/docs/general_parameters-PC-28624.md +243 -0
  9. chaproev-1.2.8/docs/general_parameters.md +153 -0
  10. chaproev-1.2.8/docs/index-PC-28624.md +9 -0
  11. chaproev-1.2.8/docs/input.md +5 -0
  12. chaproev-1.2.8/docs/mobility-PC-28624.md +19 -0
  13. chaproev-1.2.8/docs/multiprocessing.md +22 -0
  14. chaproev-1.2.8/docs/profiles.md +10 -0
  15. chaproev-1.2.8/docs/scenario-PC-28624.md +529 -0
  16. chaproev-1.2.8/docs/scenario.md +280 -0
  17. chaproev-1.2.8/docs/scenarios_module.md +5 -0
  18. chaproev-1.2.8/docs/using-PC-28624.md +22 -0
  19. chaproev-1.2.8/docs/using.md +32 -0
  20. chaproev-1.2.8/docs/variants-PC-28624.md +20 -0
  21. chaproev-1.2.8/docs/variants.md +4 -0
  22. chaproev-1.2.8/docs/weather-PC-28624.md +7 -0
  23. chaproev-1.2.8/docs/writing.md +0 -0
  24. chaproev-1.2.8/input/Mopo/car_own_driveway_percentage.csv +7 -0
  25. chaproev-1.2.8/input/Mopo/fleets.csv +46 -0
  26. chaproev-1.2.8/mkdocs-PC-28624.yml +29 -0
  27. chaproev-1.2.8/mkdocs.yml +27 -0
  28. chaproev-1.2.8/non-road/Mopo/NL_domestic-aviation_2040_Aviation gasoline.toml +20 -0
  29. chaproev-1.2.8/non-road/Mopo/NL_domestic-aviation_2050_Aviation gasoline.toml +20 -0
  30. chaproev-1.2.8/non-road/Mopo/scenario_demands.csv +7 -0
  31. chaproev-1.2.8/non-road.toml +128 -0
  32. {chaproev-1.2.6 → chaproev-1.2.8}/pyproject.toml +2 -2
  33. chaproev-1.2.8/requirements_obsolete.txt +0 -0
  34. chaproev-1.2.8/scenarios/Mopo/XX_bus-PC-28624.toml +572 -0
  35. chaproev-1.2.8/scenarios/Mopo/XX_car-PC-28624.toml +756 -0
  36. chaproev-1.2.8/scenarios/Mopo/XX_truck-PC-28624.toml +437 -0
  37. chaproev-1.2.8/scenarios/Mopo/XX_van-PC-28624.toml +452 -0
  38. chaproev-1.2.8/siec.csv +286 -0
  39. chaproev-1.2.8/src/ChaProEV/__init__.py +0 -0
  40. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/charging.py +5 -5
  41. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/consumption.py +2 -2
  42. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/define.py +323 -336
  43. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/make_variants.py +13 -14
  44. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/mobility.py +2 -2
  45. chaproev-1.2.8/src/ChaProEV/non_road.py +432 -0
  46. chaproev-1.2.8/src/ChaProEV/py.typed +0 -0
  47. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/run_time.py +2 -2
  48. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/scenarios_module.py +1 -1
  49. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/weather.py +157 -155
  50. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/writing.py +2 -2
  51. {chaproev-1.2.6 → chaproev-1.2.8/src/ChaProEV.egg-info}/PKG-INFO +13 -2
  52. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/SOURCES.txt +35 -2
  53. chaproev-1.2.6/docs/README.md +0 -138
  54. chaproev-1.2.6/docs/scenario.md +0 -94
  55. chaproev-1.2.6/docs/using.md +0 -4
  56. chaproev-1.2.6/mkdocs.yml +0 -16
  57. {chaproev-1.2.6 → chaproev-1.2.8}/.flake8 +0 -0
  58. {chaproev-1.2.6 → chaproev-1.2.8}/.vscode/ltex.dictionary.en-US.txt +0 -0
  59. {chaproev-1.2.6 → chaproev-1.2.8}/.vscode/settings.json +0 -0
  60. {chaproev-1.2.6 → chaproev-1.2.8}/ChaProEV.pptx +0 -0
  61. {chaproev-1.2.6 → chaproev-1.2.8}/ChaProEV.toml +0 -0
  62. {chaproev-1.2.6 → chaproev-1.2.8}/Gemfile +0 -0
  63. {chaproev-1.2.6 → chaproev-1.2.8}/LICENCE +0 -0
  64. {chaproev-1.2.6 → chaproev-1.2.8}/MOPO_logo_chaproev on wht.svg +0 -0
  65. {chaproev-1.2.6 → chaproev-1.2.8}/MOPO_logo_chaproev.png +0 -0
  66. {chaproev-1.2.6 → chaproev-1.2.8}/MOPO_logo_chaproev.svg +0 -0
  67. {chaproev-1.2.6 → chaproev-1.2.8}/MOPO_logo_main.svg +0 -0
  68. {chaproev-1.2.6 → chaproev-1.2.8}/MOPO_logo_main_onwhite.svg +0 -0
  69. {chaproev-1.2.6 → chaproev-1.2.8}/comparisons/comparison_template.toml +0 -0
  70. {chaproev-1.2.6 → chaproev-1.2.8}/docs/ChaProEV_workflow.png +0 -0
  71. {chaproev-1.2.6 → chaproev-1.2.8}/docs/Legs.png +0 -0
  72. {chaproev-1.2.6 → chaproev-1.2.8}/docs/Locations.png +0 -0
  73. {chaproev-1.2.6 → chaproev-1.2.8}/docs/Makefile +0 -0
  74. {chaproev-1.2.6 → chaproev-1.2.8}/docs/Trips.png +0 -0
  75. {chaproev-1.2.6 → chaproev-1.2.8}/docs/Vehicle_Temperature_correction_factor.svg +0 -0
  76. {chaproev-1.2.6 → chaproev-1.2.8}/docs/_config.yml +0 -0
  77. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/doctrees/environment.pickle +0 -0
  78. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/doctrees/index.doctree +0 -0
  79. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/.buildinfo +0 -0
  80. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_sources/index.rst.txt +0 -0
  81. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/alabaster.css +0 -0
  82. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/basic.css +0 -0
  83. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/custom.css +0 -0
  84. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/doctools.js +0 -0
  85. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/documentation_options.js +0 -0
  86. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/file.png +0 -0
  87. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/language_data.js +0 -0
  88. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/minus.png +0 -0
  89. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/plus.png +0 -0
  90. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/pygments.css +0 -0
  91. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/searchtools.js +0 -0
  92. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/_static/sphinx_highlight.js +0 -0
  93. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/genindex.html +0 -0
  94. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/index.html +0 -0
  95. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/objects.inv +0 -0
  96. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/search.html +0 -0
  97. {chaproev-1.2.6 → chaproev-1.2.8}/docs/build/html/searchindex.js +0 -0
  98. {chaproev-1.2.6 → chaproev-1.2.8}/docs/charging.md +0 -0
  99. {chaproev-1.2.6 → chaproev-1.2.8}/docs/consumption.md +0 -0
  100. {chaproev-1.2.6 → chaproev-1.2.8}/docs/define.md +0 -0
  101. {chaproev-1.2.6 → chaproev-1.2.8}/docs/index.md +0 -0
  102. {chaproev-1.2.6 → chaproev-1.2.8}/docs/make.bat +0 -0
  103. /chaproev-1.2.6/docs/weather.md → /chaproev-1.2.8/docs/make_variants.md +0 -0
  104. {chaproev-1.2.6 → chaproev-1.2.8}/docs/mobility.md +0 -0
  105. /chaproev-1.2.6/requirements_obsolete.txt → /chaproev-1.2.8/docs/outputs.md +0 -0
  106. /chaproev-1.2.6/src/ChaProEV/__init__.py → /chaproev-1.2.8/docs/run_time.md +0 -0
  107. /chaproev-1.2.6/docs/running_model,md → /chaproev-1.2.8/docs/running_model.md +0 -0
  108. {chaproev-1.2.6 → chaproev-1.2.8}/docs/source/index.rst +0 -0
  109. /chaproev-1.2.6/src/ChaProEV/py.typed → /chaproev-1.2.8/docs/weather.md +0 -0
  110. {chaproev-1.2.6 → chaproev-1.2.8}/eu-emblem-low-res.jpg +0 -0
  111. {chaproev-1.2.6 → chaproev-1.2.8}/requirements.txt +0 -0
  112. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/Mopo/Latvia_car_own_driveway_2050.toml +0 -0
  113. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/Mopo/Switzerland_car_own_driveway_2050.toml +0 -0
  114. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/Mopo/XX_bus.toml +0 -0
  115. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/Mopo/XX_car.toml +0 -0
  116. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/Mopo/XX_truck.toml +0 -0
  117. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/Mopo/XX_van.toml +0 -0
  118. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/bus_test/XX_bus.toml +0 -0
  119. {chaproev-1.2.6 → chaproev-1.2.8}/scenarios/local_impact_BEVs/baseline.toml +0 -0
  120. {chaproev-1.2.6 → chaproev-1.2.8}/setup.cfg +0 -0
  121. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/ChaProEV.py +0 -0
  122. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV/profiles.py +0 -0
  123. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/PKG-INFO-PC-28624 +0 -0
  124. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/PKG-INFO-PC-28624-2 +0 -0
  125. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/SOURCES-PC-28624-2.txt +0 -0
  126. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/SOURCES-PC-28624.txt +0 -0
  127. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/dependency_links.txt +0 -0
  128. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/requires-PC-28624-2.txt +0 -0
  129. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/requires-PC-28624.txt +0 -0
  130. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/requires.txt +0 -0
  131. {chaproev-1.2.6 → chaproev-1.2.8}/src/ChaProEV.egg-info/top_level.txt +0 -0
  132. {chaproev-1.2.6 → chaproev-1.2.8}/test_bus_moility_matrices/bus_weekday_in_holiday_week.csv +0 -0
  133. {chaproev-1.2.6 → chaproev-1.2.8}/test_bus_moility_matrices/bus_weekday_in_workweek.csv +0 -0
  134. {chaproev-1.2.6 → chaproev-1.2.8}/test_bus_moility_matrices/bus_weekend_in_holiday_week.csv +0 -0
  135. {chaproev-1.2.6 → chaproev-1.2.8}/test_bus_moility_matrices/bus_weekend_in_workweek.csv +0 -0
  136. {chaproev-1.2.6 → chaproev-1.2.8}/tests/test_battery_space.py +0 -0
  137. {chaproev-1.2.6 → chaproev-1.2.8}/tests/test_charge_and_consumption.py +0 -0
  138. {chaproev-1.2.6 → chaproev-1.2.8}/tests/test_empty_values.py +0 -0
  139. {chaproev-1.2.6 → chaproev-1.2.8}/tests/test_same_output.py +0 -0
  140. {chaproev-1.2.6 → chaproev-1.2.8}/todo.txt +0 -0
  141. {chaproev-1.2.6 → chaproev-1.2.8}/variants/Mopo/XX_car.csv +0 -0
  142. {chaproev-1.2.6 → chaproev-1.2.8}/variants/Mopo.toml +0 -0
@@ -9,4 +9,7 @@ site/
9
9
  .venv/
10
10
  reference_run/
11
11
  reference_run_prev/
12
- reference_run_previous/
12
+ reference_run_previous/
13
+ non-road-output/
14
+ test_outputs/
15
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ChaProEV
3
- Version: 1.2.6
3
+ Version: 1.2.8
4
4
  Summary: ChaProEV: Charging Profiles of Electric Vehicles
5
5
  Author-email: Omar Usmani <Omar.Usmani@TNO.nl>
6
6
  Project-URL: Homepage, https://github.com/TNO/ChaProEV
@@ -85,7 +85,18 @@ To run the model, you need to put a ChaProEV.toml configuration
85
85
  in the folder where you run your model. You also need to have at least one scenario in your scenario/case_name (e.g. scenario/Mopo) folder. A
86
86
  If you want to create varaints, then you need to add a case.toml (e.g. Mopo.toml) file in the variants folder and put a variant file in the variants/case (e.g. variants/Mopo) folder.
87
87
  If you want to compute fleet-level values and/or do a car owndriveway/street charging split, you need to put some files in the input/case (e.g. input/Mopo) folder.
88
- You can use the examples provided in this repository.
88
+ You can use the examples provided in this repository. You can also
89
+ unzip [this file](https://github.com/TNO/ChaProEV/blob/main/ChaProEV_test_case_configuration_files.zip)
90
+ into your working folder and use 'test_case' as your case name:
91
+ ```python
92
+ from ChaProEV import ChaProEV
93
+
94
+ if __name__ == '__main__':
95
+ case_name: str = 'test_case'
96
+ ChaProEV.run_ChaProEV(case_name)
97
+ ```
98
+
99
+
89
100
 
90
101
  For examples of running ChaProEV and more configuration files,
91
102
  you can visit the [ChaProEV runs repository](https://github.com/TNO/ChaProEV_runs).
@@ -0,0 +1,161 @@
1
+ # **ChaProEV**
2
+
3
+
4
+
5
+
6
+ <center>
7
+ <img src=MOPO_logo_chaproev.svg>
8
+ </center>
9
+
10
+
11
+
12
+ This repository contains the ChaProEV (Charging Profiles of Electric Vehicles)
13
+ model.
14
+
15
+ ## Status
16
+ The ChaProEV model is currently released and useable. This version
17
+ has been used in projects and can be used in future projects.
18
+ Please contact the authors below if you have questions or requests to get
19
+ model runs at some point.
20
+
21
+ ## Authors and contact
22
+ Omar Usmani (Omar.Usmani@TNO.nl)
23
+
24
+
25
+ ## Licence
26
+
27
+ ChaProEV is released under the Apache 2.0 license.
28
+ All accompanying documentation and manual are released under the
29
+ Creative Commons BY-SA 4.0 license.
30
+
31
+ ## Requirements
32
+
33
+
34
+ (See requirements.txt file for versions (corresponding to Python 3.11.1, which
35
+ is the version used for developing and testing the model))
36
+
37
+ ## Installation and use
38
+
39
+
40
+ You can install ChaProEV with pip:
41
+ ```
42
+ pip install ChaProEV
43
+ ```
44
+ And then import ChaProEV in your code.
45
+ You can of course use the various functions of ChaProEV, but the general
46
+ use case is to run the model and focus on defining your case through the
47
+ scenarios and their variants.
48
+ In that case, the only piece of code you need is as follows (you just need
49
+ to put the name of the folder where you put your case scenarios instead of the
50
+ 'Mopo' example).
51
+ ```python
52
+ from ChaProEV import ChaProEV
53
+
54
+ if __name__ == '__main__':
55
+ case_name: str = 'Mopo'
56
+ ChaProEV.run_ChaProEV(case_name)
57
+ ```
58
+ If you installed ChaProEV with pip, then the requirements
59
+ should be installed as well (see requirements.txt file if you have issues
60
+ or use the contact below).
61
+ To run the model, you need to put a ChaProEV.toml configuration
62
+ in the folder where you run your model. You also need to have at least one scenario in your scenario/case_name (e.g. scenario/Mopo) folder. A
63
+ If you want to create varaints, then you need to add a case.toml (e.g. Mopo.toml) file in the variants folder and put a variant file in the variants/case (e.g. variants/Mopo) folder.
64
+ If you want to compute fleet-level values and/or do a car owndriveway/street charging split, you need to put some files in the input/case (e.g. input/Mopo) folder.
65
+ You can use the examples provided in this repository. You can also
66
+ unzip [this file](https://github.com/TNO/ChaProEV/blob/main/ChaProEV_test_case_configuration_files.zip)
67
+ into your working folder and use 'test_case' as your case name:
68
+ ```python
69
+ from ChaProEV import ChaProEV
70
+
71
+ if __name__ == '__main__':
72
+ case_name: str = 'test_case'
73
+ ChaProEV.run_ChaProEV(case_name)
74
+ ```
75
+
76
+
77
+
78
+ For examples of running ChaProEV and more configuration files,
79
+ you can visit the [ChaProEV runs repository](https://github.com/TNO/ChaProEV_runs).
80
+
81
+ ## General approach and structure
82
+ - Split into scenarios, modules/computations, output profiles
83
+ - USer can define a case (series of scenarios) without having to do anything
84
+ with the code. They just need to edit/add scenarios and variants.
85
+ <center>
86
+ <img src=ChaProEV_workflow.png>
87
+ </center>
88
+
89
+ ## Documentation
90
+
91
+ The docmentation can be found [here](https://tno.github.io/ChaProEV/)
92
+ ## **Context, goals, and future developments**
93
+
94
+ ### **Driver**
95
+ The primary driver for the publication and development of ChaProEV in this
96
+ repository is the participation in the
97
+ [Mopo](https://www.tools-for-energy-system-modelling.org/) project (funded from
98
+ European Climate,
99
+ Infrastructure and Environment Executive Agency under the European Union’s
100
+ HORIZON Research and Innovation Actions under grant agreement N°101095998).
101
+
102
+ ### **Goal**
103
+ The main goal of providing this repository is transparency regarding the
104
+ assumptions and computations of the ChaProEV model.
105
+
106
+ ### **Uses outside Mopo**
107
+
108
+ #### **Prior to Mopo**
109
+
110
+ 1. [Afspraken maken:
111
+ Van data tot
112
+ informatie
113
+ Informatiebehoeften, datastandaarden en
114
+ protocollen voor provinciale
115
+ systeemstudies – Deel II technische
116
+ rapportage. Nina Voulis, Joeri Vendrik, Reinier van der Veen, Alexander Wirtz, Michiel Haan, Charlotte von Meijenfeldt,
117
+ Edwin Matthijssen, Sebastiaan Hers, Ewoud Werkman (CE Delft, TNO, Quintel), April 2021](https://cedelft.eu/wp-content/uploads/sites/2/2021/07/CE_Delft_200227_Afspraken_maken_Van_data_tot_informatie_Deel-2.pdf) where a previous version of ChaProEV was used to provide charging profiles of electric vehicles at the province level (for the Dutch proivinces of North Holland and Limburg)
118
+
119
+ 2. [Elektrisch rijden personenauto's & logistiek: Trends en impact op het elektriciteitssyteem. Hein de Wilde, Charlotte Smit, Omar Usmani, Sebastiaan Hers (TNO), Marieke Nauta (PBL), August 2022](https://publications.tno.nl/publication/34640002/AVDCKb/TNO-2022-P11511.pdf) where a previous version of ChaProEV was used to identify potential moments where charging electric cars could result in local (i.e. neighbourhood/transformer level) network issues and see if these issues could be solved.
120
+
121
+ 3. [Verlagen van lokale impact laden elektrisch vervoer: De waarde en haalbarheid van potentiële oplossingen, Charlotte Smit, Hein de Wilde, Richard Westerga, Omar Usmani, Sebastiaan Hers, TNO M12721, December 2022](https://energy.nl/wp-content/uploads/kip-local-impact-ev-charging-final-1.2.pdf) where a previous version of ChaProEV was used to identify and quantify potential solutions to potential local (i.e. neighbourhood/transformer level) issues due to a possible large-scale adoption of electric cars (with illustrative examples for neighbourhoods in ihe cities of Amsterdam and Lelystad).
122
+
123
+ 4. [TRADE-RES](https://traderes.eu/). A previous version of ChaProEV was used to generate reference charging profiles for a number of European countries, based on statistical differences per country.
124
+ Results are in the [TRADE-RES scenario database](https://zenodo.org/records/10829706)
125
+
126
+
127
+
128
+ #### **After/during Mopo**
129
+ 1. I.S. Jimenez, D. Ribó-Pérez, M. Cvetkovic, J. Kochems, C. Schimeczek,
130
+ L. de Vries,[Can an energy only market enable resource ade-
131
+ quacy in a decarbonized power system? a co-simulation with
132
+ two agent-based-models](https://www.sciencedirect.com/science/article/pii/S0306261924000783)
133
+ Applied Energy 360 (2024) 122695
134
+ 2. S. Johanndeiter, N. Helistö, J. Kiviluoma, V. Bertsch, [Price formation
135
+ and intersectoral distributional eects in a fully decarbonised european
136
+ electricity market](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=48874423)
137
+ 3. Sanchez Jimenez, Ingrid and Johanndeiter, Silke and de Vries, Laurens, Capacity Remuneration Mechanisms for Power Systems in Transition. Available at SSRN: https://ssrn.com/abstract=5196543 or http://dx.doi.org/10.2139/ssrn.5196543
138
+
139
+
140
+ #### **Future**
141
+ The ChaProEV will be used in other projects that will be listed here, if deemed
142
+ relevant and apprpriate within the context of these projects.
143
+
144
+
145
+
146
+ ## Acknowledgments
147
+ &nbsp;
148
+ <hr>
149
+ <center>
150
+ <table width=500px frame="none">
151
+ <tr>
152
+ <td valign="middle" width=100px>
153
+ <img src=eu-emblem-low-res.jpg alt="EU emblem" width=100%></td>
154
+ <img src=MOPO_logo_main.svg width = 25%>
155
+ <td valign="middle">This project was partly develop under funding from the
156
+ European Climate,
157
+ Infrastructure and Environment Executive Agency under the European Union’s
158
+ HORIZON Research and Innovation Actions under grant agreement N°101095998.</td>
159
+ <tr>
160
+ </table>
161
+ </center>
@@ -61,7 +61,18 @@ To run the model, you need to put a ChaProEV.toml configuration
61
61
  in the folder where you run your model. You also need to have at least one scenario in your scenario/case_name (e.g. scenario/Mopo) folder. A
62
62
  If you want to create varaints, then you need to add a case.toml (e.g. Mopo.toml) file in the variants folder and put a variant file in the variants/case (e.g. variants/Mopo) folder.
63
63
  If you want to compute fleet-level values and/or do a car owndriveway/street charging split, you need to put some files in the input/case (e.g. input/Mopo) folder.
64
- You can use the examples provided in this repository.
64
+ You can use the examples provided in this repository. You can also
65
+ unzip [this file](https://github.com/TNO/ChaProEV/blob/main/ChaProEV_test_case_configuration_files.zip)
66
+ into your working folder and use 'test_case' as your case name:
67
+ ```python
68
+ from ChaProEV import ChaProEV
69
+
70
+ if __name__ == '__main__':
71
+ case_name: str = 'test_case'
72
+ ChaProEV.run_ChaProEV(case_name)
73
+ ```
74
+
75
+
65
76
 
66
77
  For examples of running ChaProEV and more configuration files,
67
78
  you can visit the [ChaProEV runs repository](https://github.com/TNO/ChaProEV_runs).
@@ -0,0 +1,5 @@
1
+
2
+ ## create_consumption_tables
3
+
4
+ ### Source column
5
+ [in the scenario](scenario.md#kilometers_column_for_consumption)
@@ -0,0 +1,191 @@
1
+
2
+ # Classes
3
+
4
+ ## Leg
5
+ This class defines the legs and their properties, from a scenario
6
+ file that contains a list of instances and their properties.
7
+ Legs are point-to-point vehicle movements (i.e. movements where
8
+ the vehicle goes from a start location and ends/stops at an end location).
9
+
10
+ ### Parameters
11
+ The parameters of a leg are:
12
+
13
+ 1. **Name:** The name of the leg
14
+ 2. **Vehicle:** The vehicle that runs the leg. If this does not correspond
15
+ to the [scenario vehicle name](scenario.md#name), then the leg is not
16
+ declared. Note that when running a
17
+ scenario, you select one vehicle, so this is in principle not necessary.
18
+ The reason for having this is to allow the user to copy the baseline file
19
+ and keep the location definitions that are not used for this scenario but
20
+ might be so for another, thereby reducing the need for changes between
21
+ scenarios.
22
+ 3. **Distance:** The distance driven during the leg (in kilometers)
23
+ 4. **Duration:** How long it takes to drive the leg (in hours)
24
+ 5. **Hour in day factors:** These factors add a correction to the vehicle
25
+ consumption that depend on the hour in day (the first is for 00:00 to 00:59,
26
+ last for 23:00 to 23:59). Note that these are actual hours,
27
+ not hours in the user day (which can start and end at other moments than
28
+ midnight). This is used to take into account things like traffic jams.
29
+ The default value is 1. ***This factor is a placeholder and is currently not
30
+ in use.***
31
+
32
+ ## Location
33
+ This class defines the locations where the vehicles are
34
+ and their properties, from a scenario
35
+ file that contains a list of instances and their proper.
36
+
37
+ ### Parameters
38
+
39
+ The parameters of a location are:
40
+
41
+ 1. **Name**: The name of the location.
42
+ 2. **Vehicle:** The vehicle that uses the location. If this does not correspond
43
+ to the [scenario vehicle name](scenario.md#name), then the trip is not
44
+ declared. Note that when running a
45
+ scenario, you select one vehicle, so this is in principle not necessary.
46
+ The reason for having this is to allow the user to copy the baseline file
47
+ and keep the location definitions that are not used for this scenario but
48
+ might be so for another, thereby reducing the need for changes between
49
+ scenarios.
50
+ 3. **Connectivity:** A value between 0 and 1 (0% to 100%) that tells the
51
+ probability that a vehicle parked at this location is connected to a
52
+ charger.
53
+ 4. **Charging power:** The (peak) charging power of the charger at this
54
+ location (in kW).
55
+ 5. **Charger efficiency:** A value between 0 and 1 (0% to 100%) that tells how
56
+ much of the power drawn from the network is delivered to the battery of the
57
+ vehicle.
58
+ 6. **Latitude:** The latitude of the location. ***This factor is a placeholder
59
+ and is currently not in use.***
60
+ 7. **Longitude:** The longitude of the location. ***This factor is a
61
+ placeholder and is currently not in use.***
62
+ 8. **Base charging price:** The base/reference (i.e. before
63
+ flexibility/temporal changes) charging price at this location, in €/kWh.
64
+ ***This factor is a placeholder and is currently not in use.***
65
+ 9. **Charging desirability:** A value between 0 and 1 (0% to 100%) that tells
66
+ how much the users like to charge at this location.
67
+ ***This factor is a placeholder and is currently not in use.***
68
+ 10. **Percentage in location at run start:** A value between 0 and 1
69
+ (0% to 100%) that tells which percentage of the vehicles start the run there.
70
+ This is used if we will that in directly instead of computing it. The decision
71
+ t use this is controlled by the compute_start_location_split parameter in
72
+ the [mobility](mobility.md#module-parameters) module.
73
+
74
+ ## Trip
75
+
76
+ This class defines the trips and their properties, from a scenario
77
+ file that contains a list of instances and their properties.
78
+ Trips are collections of legs that take place on a given day.
79
+ Note that this day does not necessarily start (and end) at midnight,
80
+ but can start (and end) at an hour that is more logical/significant for the
81
+ vehicle user (it could for example be 05:00 for car drivers).
82
+ This [day start hour](scenario.md#day_start_hour)
83
+ parameter is universal for all trips
84
+ This value is set in the scenario files.
85
+
86
+ ### Parameters
87
+ 1. **Name**: The name of the trip.
88
+ 2. **Vehicle:** The vehicle that does the trip. If this does not correspond
89
+ to the [scenario vehicle name](scenario.md#name), then the trip is not
90
+ declared. Note that when running
91
+ a scenario, you select one vehicle, so this is in principle not necessary.
92
+ The reason for having this is to allow the user to copy the baseline file
93
+ and keep the trip definitions that are not used for this scenario but
94
+ might be so for another, thereby reducing the need for changes between
95
+ scenarios.
96
+ 3. **Legs:** A list of the legs in the trip.
97
+ 4. **Time between legs:** A list of the time spent at the arrival locations
98
+ between each leg (in hours).
99
+ 5. **Percentage station users:**A value between 0 and 1
100
+ (0% to 100%) that tells us which percentage of users use fast charging
101
+ stations.
102
+ ***This factor is a placeholder and is currently not in use.***
103
+ 6. **Start probabilities:** A list of values between 0 and 1 (0%-100%) adding
104
+ up to 1/100% that tells us what the probability of starting the trip is at
105
+ a given hour. Note that the hours start at
106
+ [day start hour](scenario.md#day_start_hour), not at
107
+ midnight.
108
+ 7. **Repeated sequence:** A list of repeated legs
109
+ (which should follow each other) that form a repeated sequence.
110
+ 8. **Repetition amounts:** How often
111
+ the repeated sequence is repeated. This is a list, with one value per leg
112
+ repetition (the nth element corresponds to the nth appearance of
113
+ the sequence in the leg list).
114
+ 9. **Time between repetitions:** The time between repetitions of each
115
+ repeated sequence (in hours). This is a list, with one value per leg
116
+ repetition (the nth element corresponds to the nth appearance of
117
+ the sequence in the leg list).
118
+
119
+
120
+ ### Mobility matrix
121
+
122
+ The main aim of the trip initialization/declaration is to create a mobility
123
+ matrix for the trip.
124
+ This mobility matrix has, for all combinations of possible start and end
125
+ locations (i.e.
126
+ locations connected by a leg in the trip) and for each hour in day number
127
+ (starting at the [day start hour](scenario.md#day_start_hour)), the following
128
+ quantities:
129
+ 1. **Duration:** The duration (in hours) of a leg between the start location
130
+ and the end location.
131
+ 2. **Distance:** The distance (in kilometers) of a leg between the start
132
+ location.
133
+ 3. **Weighted distance:** The weighted distance (in kilometers) of a leg
134
+ between the start location and the end location. This corresponds to using
135
+ different [road types](scenario.md#road_types), with given
136
+ [weights](scenario.md#weights) and given [mixes](scenario.md#mix) to account
137
+ for the fact that vehicles consume more on some road types.
138
+ 4. **Departures amount**: The chance that a vehicle, in a given hour, leaves
139
+ the start location,
140
+ going to the end location (amount and chance are equivalent
141
+ here, as we compute on an individual vehicle basis).
142
+ 5. **Departures kilometers:** The kilometers driven by vehicles leaving the
143
+ start location at a given hour and going to the end location. This is given
144
+ by the departures amount times the distance.
145
+ 6. **Departures weighted kilometers:** The weighted (by road type) kilometers
146
+ driven by vehicles leaving the start location at a given hour and going to the
147
+ end location. This is given
148
+ by the departures amount times the weighted distance.
149
+ 7. **Arrivals amount**: The chance that a vehicle, in a given hour,
150
+ arrives to the end
151
+ location,
152
+ having started the start location (amount and chance are equivalent
153
+ here, as we compute on an individual vehicle basis).
154
+ 8. **Arrivals kilometers:** The kilometers driven by vehicles arriving to the
155
+ end location at a given hour, having started at the start location.
156
+ This is given
157
+ by the arrivals amount times the distance.
158
+ 9. **Arrivals weighted kilometers:** The weighted (by road type) kilometers
159
+ driven by vehicles arriving to the end location at a given hour, having
160
+ started at the start location. This is given
161
+ by the arrivals amount times the weighted distance.
162
+
163
+ The model also produces a version of this mobility matrix for the whole
164
+ run (which is essentially a copy of the above matrix). This run
165
+ mobility matrix is the mobility matrix if the trip had a probability of 1
166
+ for the whole run.
167
+
168
+
169
+
170
+
171
+ #### Leg repetitions
172
+
173
+ Is repeat of leg or two legs????
174
+ [0, 5, 5, 0]
175
+ If next leg is also repeated/still has repeats left, then it is repeated after the leg
176
+ in question
177
+ so when putting a leg, check if it is repeated. If so, check if the next is repeated,
178
+ until you have no repeats (or end the list). Add on of each repeated legs
179
+ then number of repeats goes down by one and redo
180
+ Have one trip per day type for non-cars
181
+
182
+ Reference to day start hour
183
+ cross-links with scenario
184
+
185
+
186
+ ## declare_class_instances
187
+
188
+
189
+ ## compute_travel_impact
190
+
191
+ ## get_trip_charging_sessions
@@ -0,0 +1,243 @@
1
+ # Purpose
2
+ The purpose of the ChaProEV.toml file is to set parameters
3
+ that are common for all your scenarios.
4
+ This page describes the various parameters.
5
+ You can use the navigation bar on the left to go directly to a group
6
+ of parameters (or a given parameter).
7
+ This mostly contains general parameters that should not change too much from case to case. As such, you can take the version provided in the repository (and possibly modify one or two things).
8
+
9
+ ## variants
10
+ The variants section of the configuration file sets parameters
11
+ to create scenario [variants](variants.md) (see that page for
12
+ details).
13
+
14
+ ### use_variants
15
+ Setting the use_variants parameters to true creates variants,
16
+ while setting it to false skips variant creation althogether.
17
+
18
+ ### csv_version
19
+
20
+ Setting the csv_version to true parameters makes you use csv files
21
+ to define your variants (in a folder within the variants folder: this
22
+ folder needs to have the same name as your case). Setting it to false makes you use a toml file in the variants folder (case_name.toml).
23
+
24
+ ### use_years_in_profiles
25
+
26
+ This is used to create different variants per year when doing
27
+ [car home own driveway and street parking splits](profiles.md#home-type-split)
28
+
29
+
30
+
31
+
32
+ ## parallel_processing
33
+ This parallel processing section of the configuration file sets parameters to manage the [parallel processing/multiprocessing](multiprocessing.md) of the model (which reduces the model run time, see link for details).
34
+
35
+ ### set_amount_of_processes
36
+
37
+ Set this as false if you want the amount of parallel processes to be determined by the model (via the [multiprocessing standard library of Python](https://docs.python.org/3/library/multiprocessing.html)). Set this to true if you want to set the amount of processes yourself.
38
+
39
+ ### amount_for_scenarios
40
+
41
+ If you put true in set_amount_of_processes, provide a number of parallel processes here to run scenarios in parallel.
42
+
43
+ ### amount_for_pickle_saves
44
+ If you put true in set_amount_of_processes, provide a number of parallel processes here to save the pickle output saves to other formats in parallel (see [writing module](writing.md) for details).
45
+
46
+ ## interim_files
47
+ This concerns parameters for saving intermediary results to files.
48
+
49
+ ### pickle
50
+ Set this to true to save interim results to pickle files.
51
+ Set this to false not to do this.
52
+ ### consumption_tables_frequencies
53
+ Provide a list of consumption
54
+ tables frequencies (see [consumption module](consumption.md)). The default is the following list ['hourly', 'daily', 'weekly', 'monthly', 'yearly']
55
+ ### save_consumption_table
56
+ Provide a list of booleans (true or false) to save a given frequency to file (this list needs to have the same length as the above list): true save a file for that frequency and false does not.
57
+
58
+
59
+
60
+
61
+ ## profile_dataframe
62
+ These are the headers that appear in output dataframes.
63
+
64
+ ### headers
65
+ This one is for profiles (at one-vehicle scale).
66
+ ### fleet_headers
67
+ This one is for the fleet-level dataframes.
68
+ ### do_fleet_tables
69
+ Set this to true to create fleet-level tables.
70
+ ### fleet_file_name
71
+ The file name (has to be a csv inside the input/your_case folder)
72
+ containing the fleet characteristics.
73
+ See [here](input.md#fleets) for details about this file.
74
+
75
+ ## sessions_dataframe
76
+ This is to create the session dataframes.
77
+ ### properties
78
+ Those are the quantities we want to put in the session dataframes.
79
+ ### dataframe_headers
80
+ Those are the headers of the session dataframes at the day level.
81
+ ### run_dataframe_headers
82
+ Those are the headers of the session dataframes for the whole run.
83
+ ### display_dataframe_headers
84
+ These are the headers of the display/final output dataframe headers at vehicle level.
85
+ ### display_dataframe_index
86
+ These give the index of the display/final output dataframe headers.
87
+ ### fleet_display_dataframe_headers
88
+ These are the headers of the display/final output dataframe headers at fleet
89
+ level.
90
+ ## plots
91
+ This contains parameters for output plots (colors, styles, sizes, etc.).
92
+ ### vehicle_temperature_efficiency
93
+ This set of parameters is for the [range-temperature](weather.md#range-and-temperature) plot.
94
+ #### style
95
+ This is a string with one of the [available Matplotlib styles](https://matplotlib.org/stable/gallery/style_sheets/style_sheets_reference.html).
96
+ #### source_data_folder
97
+ Folder where the data to plot is.
98
+ #### source_data_file
99
+ File containg the data to plot.
100
+ #### fit_color
101
+ The color name of fit line.
102
+ #### fit_line_size
103
+ The size of the fir line.
104
+ #### geotab_data_color
105
+ The color of the data points.
106
+ #### geotab_data_size
107
+ The size of the data points.
108
+ #### title_size
109
+ The size of the plot title.
110
+
111
+ ## files
112
+ General file parameters.
113
+ ### input_root
114
+ The name of the folder where your input data goes (it goes to a subfolder of this with the name of your case).
115
+ ### output_root
116
+ The name of the folder where your output data goes (it goes to a subfolder of this with the name of your case).
117
+ ### groupfile_root
118
+ This is for files that group data (such as (sqlite) databases or Excel workbooks) and will be the name of that grouping file.
119
+
120
+ ### figures
121
+ Parameters for plots/figures.
122
+ #### dpi
123
+ Change this to change the resolution of the output figures.
124
+ #### outputs
125
+ Indicate if you want to save your (Matplotlib) figures (true if you do, false if you don't) in various formats.
126
+
127
+
128
+ ### dataframe_outputs
129
+ Indicate if you want to save your Pandas DataFrames in the
130
+ listed formats (put a true if you want to do so, false if you don't).
131
+ Clipboard saves to the local clipboard, not a file.
132
+
133
+ ## maps
134
+ Parameters for making maps.
135
+ ## map_data_folder
136
+ The folder where the map data is.
137
+ ## area_data_file_name
138
+ The file containing map areas.
139
+ ## general_exclusion_codes
140
+ Excluded map codes.
141
+ ## border_data_file_prefix
142
+ The prefix of the border data file.
143
+ ## border_data_file_suffix
144
+ The suffix of the border data file.
145
+ ## points_data_file_prefix
146
+ The prefix of the points data file.
147
+ ## points_data_file_suffix
148
+ The suffix of the points data file.
149
+ ## country_code_header
150
+ The header we use for country codes.
151
+ ## country_code_header_in_map_data
152
+ The country code header in tnhe source data.
153
+ ## heat_bar_map
154
+ The heat bar map/scale we want to use for maps (is the name of a
155
+ [color bar](#color_bars)).
156
+
157
+ ## colors
158
+ Definitions of custom colors (with RGB values, from 0 to 255).
159
+ ## color_bars
160
+ You can deine color bars here, by listing the colors they use (in order).
161
+
162
+
163
+ ## unit_conversions
164
+ This contains various constants used for unit conversions,
165
+ such as the amount of Joules in a kiloWatt-hour.
166
+ Some are grouped (time conversions).
167
+ The times subpart also contains the codes for weekend day numbers
168
+ and the index of the first hour in the year (often 0,
169
+ but sometimes 1, as for the SPINE toolbox).
170
+ ## numbers
171
+ This contains a threshold to avoid issues with float precision and exteremely small values that are actually zero.
172
+
173
+ ## consumption
174
+ This contains settings (mostly headers and display names) related to
175
+ the [connusmption](consumption.md) tables.
176
+ ### energy_carriers
177
+ A list of the energy carriers that come in the consumption table.
178
+ ### consumption_table_name
179
+ The name of the consumption table.
180
+ ### time_header
181
+ The header used for the time index in the consumption table.
182
+ ### distance_header
183
+ The header used for the distance column in the consumption table.
184
+ ### fleet_distance_header
185
+ The header used for the distance column in the fleet consumption table.
186
+ ### energy_carriers_consumption_names
187
+ The headers for each emergy carrier in the consumption table.
188
+ ### fleet_energy_carriers_consumption_names
189
+ The headers for each emergy carrier in the fleet consumption table.
190
+
191
+ ## home_type
192
+ These are parametrers related to the [home type split](profiles.md#home-type-split) (split for cars between cars with their own driveway and street parking).
193
+ ### do_car_home_type_split
194
+ Set this to true to compute the split. Set it to false not to do it.
195
+ ### percentages_file
196
+ The file name (has to be a csv inside the input/your_case folder)
197
+ containing the spli.
198
+ See [here](input.md#car-own-driveway-percentage) for details about this file.
199
+
200
+ ### index_name
201
+ The index header in the source file.
202
+
203
+ ### own_driveway_name
204
+ The header for the own driveway percentage. Also used for the output profile file names.
205
+ ### on_street_name
206
+ The header for the street parking percentage. Used for the output profile file names.
207
+ ### profiles_index
208
+ The index for the profile outputs.
209
+ ### sessions_index
210
+ The index for the sessions outputs.
211
+ ### sessions_values_columns
212
+ The columns of the sessions dataframes.
213
+
214
+ ## sessions
215
+ Parameters used for the [sessions](profiles.md#sessions).
216
+ ### produce
217
+ Set to true if you want to create [sessions](profiles.md#sessions), to
218
+ false if you don't.
219
+
220
+ ### generate_profiles
221
+ Set to true if you want to [generate profiles from sessions][scenarios_module.md#Generate-profiles-from-sessions], to false if you don't.
222
+ ## standard_profiles
223
+
224
+ ### produce
225
+ Set to true if you want to produce [standard charging profiles](profiles.md#standard-profiles), false if you don't.
226
+
227
+ ## progress_bars
228
+ Parameters related to displaying progress bars.
229
+ ### display_scenario_run
230
+ Set to true to show a progress bar for the computing of scenarios, false if you don't.
231
+ ### scenario_run_description
232
+ Text to display for the scenarios progress bar.
233
+ ### display_saving_pool_run
234
+ Set to true to show a progress bar for the saving of output files, false if you don't.
235
+ ### saving_pool_run_description
236
+ Text to display for the output file saving progress bar.
237
+
238
+ ## discharge
239
+ Parameters related to vehicle discharge.
240
+ ### no_discharge_efficiency_output
241
+ Message to display if the discharge efficiencncy value is empty.
242
+ ### no_charge_efficiency_output
243
+ Message to display if the charge efficiencncy value is empty.