Skip to content

Commit 03f1add

Browse files
authored
Merge pull request #235 from Illuminator-team/hydrogen
Introducing: Hydrogen models
2 parents ce72681 + 21c723a commit 03f1add

35 files changed

+41328
-4
lines changed

.github/workflows/e2e_tests.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,8 @@ jobs:
3636
3737
- name: Compare Tutorial3 CSV files
3838
run: |
39-
diff tests/outputs/out_e2e_T3.csv tests/outputs/expected_out_e2e_T3.csv
39+
diff tests/outputs/out_e2e_T3.csv tests/outputs/expected_out_e2e_T3.csv
40+
41+
- name: Compare Hydrogen CSV files
42+
run: |
43+
diff tests/outputs/out_e2e_hydrogen.csv tests/outputs/expected_out_e2e_hydrogen.csv
Lines changed: 298 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,298 @@
1+
scenario:
2+
name: "Hydrogen_system_4" # in mosaik so called world
3+
start_time: '2025-01-01 00:00:00' # ISO 8601 start time of the simulation
4+
end_time: '2025-02-01 00:00:00' # duration in seconds
5+
time_resolution: 3600 # time step in seconds (optional). Defaults to 15 minutes (900 s)
6+
7+
8+
9+
models:
10+
- name: CSVdayahead
11+
type: CSV
12+
parameters:
13+
file_path: './data/dayahead.csv'
14+
delimiter: ','
15+
date_format: 'YYYY-MM-DD HH:mm:ss'
16+
17+
- name: CSVbiomass
18+
type: CSV
19+
parameters:
20+
file_path: './data/biomass3.csv'
21+
delimiter: ','
22+
date_format: 'YYYY-MM-DD HH:mm:ss'
23+
24+
25+
### Hydrogen production system components ###
26+
- name: thermolyzer1
27+
type: Thermolyzer
28+
parameters:
29+
eff: 90 # thermolyzer effficiency [%]
30+
C_bio_h2 : 50 # conversion factor from biomass to hydrogen [kg/kg]
31+
C_CO_2 : 20 # absorption factor carbondioxide per h2 produced [kg/kg]
32+
C_Eelec_h2: 11.5 # conversion factor electrical energy to hydrogen mass [kWh/kg]
33+
max_ramp_up : 200 # maximum ramp up in power per timestep [kW/timestep]
34+
max_p_in : 8000 # maximum input power [kW]
35+
inputs:
36+
biomass_in : 0 # biomass input [kg/timestep]
37+
desired_out : 5 # desired output flow of hydrogen [kg/h]
38+
outputs:
39+
h_gen : 0 # hydrogen generation [kg]
40+
power_consumption : 0 # power consumption [kWh]
41+
CO2_out : 0 # CO2 output [kg]
42+
43+
- name: ZZE1
44+
type: ZZE
45+
parameters:
46+
e_eff: 90 # electrolyzer effficiency [%]
47+
max_p_in: 500 # maximum charging power [kW]
48+
max_p_out: 100 # maximum output power [kW]
49+
h2_capacity_tot: 2000 # total hydrogen capacity [kg]
50+
h2_soc_min: 0
51+
h2_soc_max: 100
52+
inputs:
53+
setpoint: 2 # charge setpoint [kg/h]
54+
outputs:
55+
# electrolyzer part
56+
power_consumption: 0 # power_consumption power [kWh]
57+
# buffer part
58+
h2_out: 30
59+
overflow: 0
60+
states:
61+
soc: 0
62+
flag: 0
63+
available_h2: 0
64+
free_capacity: 0
65+
66+
- name: Joint1
67+
type: H2Joint
68+
parameters:
69+
joint_eff: 100 # joint efficiency [%]
70+
inputs:
71+
h2_in_1: 0 # input flow [kg/timestep]
72+
h2_in_2: 0 # input flow [kg/timestep]
73+
outputs:
74+
out: 0 # output flow [kg/timestep]
75+
76+
- name: PSA1
77+
type: H2PSA
78+
parameters:
79+
eff: 100 # PSA efficiency [%]
80+
inputs:
81+
h2_in: 0 # hydrogen input [kg/timestep]
82+
outputs:
83+
h2_out: 0 # hydrogen output [kg/timestep]
84+
85+
86+
# # Additional hydrogen system components (buffers, valves, demands, compressor, controller)
87+
88+
- name: Electrolyzer1
89+
type: Electrolyzer
90+
parameters:
91+
e_eff: 70 # electrolyzer efficiency [%]
92+
max_p_in: 10 # maximum input power [kW]
93+
max_p_ramp_rate: 10 # maximum rampup power [kW/s]
94+
inputs:
95+
desired_out: 30 # desired output flow of the electrolyzer [kg/h]
96+
outputs:
97+
h_gen: 0 # hydrogen generation [kg/timestep]
98+
power_consumption: 0 # power consumption of the electrolyzer [kW]
99+
100+
- name: H2_controller
101+
type: H2Controller2
102+
parameters:
103+
dummy: 0
104+
inputs:
105+
demand1: 10
106+
demand2: 10
107+
thermolyzer_out: 0
108+
buffer_available_h2: 0
109+
buffer_free_capacity: 0
110+
outputs:
111+
dump: 0
112+
states:
113+
buffer_in: 0
114+
desired_out: 0
115+
valve1_ratio1: 0
116+
valve1_ratio2: 0
117+
valve1_ratio3: 0
118+
119+
- name: H2Buffer1
120+
type: H2Buffer
121+
parameters:
122+
h2_soc_min: 0
123+
h2_soc_max: 100
124+
h2_charge_eff: 100
125+
h2_discharge_eff: 100
126+
max_flow_rate_in: 200 # maximum hydrogen input rate [kg/h]
127+
min_flow_rate_in: 0
128+
max_flow_rate_out: 200 # maximum hydrogen output rate [kg/h]
129+
min_flow_rate_out: 0
130+
h2_capacity_tot: 100
131+
inputs:
132+
h2_in: 0
133+
desired_out: 29
134+
outputs:
135+
h2_out: 20
136+
actual_h2_in: 0
137+
overflow: 0
138+
states:
139+
soc: 0
140+
flag: 0
141+
available_h2: 0
142+
free_capacity: 0
143+
144+
- name: compressor1
145+
type: Compressor
146+
parameters:
147+
p_in: 30
148+
p_out: 500
149+
T_amb: 293.15
150+
compressor_eff: 100
151+
max_power_in: 10000
152+
inputs:
153+
flow2c: 0
154+
outputs:
155+
flow_from_c: 0
156+
states:
157+
volume_flow_out: 0
158+
power_req: 0
159+
160+
- name: H2Buffer2
161+
type: H2Buffer
162+
parameters:
163+
h2_soc_min: 0
164+
h2_soc_max: 100
165+
h2_charge_eff: 100
166+
h2_discharge_eff: 100
167+
max_flow_rate_in: 200 # maximum hydrogen input rate [kg/h]
168+
min_flow_rate_in: 0
169+
max_flow_rate_out: 200 # maximum hydrogen output rate [kg/h]
170+
min_flow_rate_out: 0
171+
h2_capacity_tot: 1000
172+
inputs:
173+
h2_in: 0
174+
desired_out: 0
175+
outputs:
176+
h2_out: 0
177+
actual_h2_in: 0
178+
overflow: 0
179+
states:
180+
soc: 80
181+
flag: 0
182+
available_h2: 0
183+
free_capacity: 0
184+
185+
- name: H2valve1
186+
type: H2Valve
187+
parameters:
188+
valve_eff: 100
189+
# max_flow: 100
190+
inputs:
191+
h2_in: 0
192+
ratio1: 33
193+
ratio2: 33
194+
ratio3: 34
195+
outputs:
196+
out1: 0
197+
out2: 0
198+
out3: 0
199+
200+
- name: controller
201+
type: Hydrogen_production_controller
202+
parameters:
203+
dummy: 0
204+
inputs:
205+
ZZE_soc : 0
206+
DayAhead_price: 0
207+
states:
208+
Thermolyzer_setpoint: 0
209+
ZZE_setpoint: 0
210+
211+
connections:
212+
213+
# from biomass to thermolyzer
214+
- from: CSVbiomass.biomass
215+
to: thermolyzer1.biomass_in
216+
217+
# from thermolyzer to joint
218+
- from: thermolyzer1.h_gen
219+
to: Joint1.h2_in_1
220+
221+
### ZZE ELECTROLYZER ###
222+
- from: ZZE1.h2_out
223+
to: Joint1.h2_in_2
224+
225+
# from joint to PSA
226+
- from: Joint1.out
227+
to: PSA1.h2_in
228+
229+
# control connections
230+
- from: ZZE1.soc
231+
to: controller.ZZE_soc
232+
time_shifted: True
233+
- from: controller.ZZE_setpoint
234+
to: ZZE1.setpoint
235+
# time_shifted: True
236+
- from: controller.Thermolyzer_setpoint
237+
to: thermolyzer1.desired_out
238+
239+
- from: CSVdayahead.price
240+
to: controller.DayAhead_price
241+
242+
243+
### START hydrogen system additional components ###
244+
245+
# from electrolyzer to buffer
246+
- from: Electrolyzer1.h_gen
247+
to: H2Buffer1.h2_in
248+
249+
# from buffer to compressor
250+
- from: H2Buffer1.h2_out
251+
to: compressor1.flow2c
252+
253+
# from compressor to big buffer
254+
- from: compressor1.flow_from_c
255+
to: H2Buffer2.h2_in
256+
257+
# from big buffer to fuel station
258+
- from: H2Buffer2.h2_out
259+
to: H2valve1.h2_in
260+
261+
# from buffer to controller
262+
- from: H2Buffer1.available_h2
263+
to: H2_controller.buffer_available_h2
264+
- from: H2Buffer1.free_capacity
265+
to: H2_controller.buffer_free_capacity
266+
267+
# from controller to electrolyzer
268+
- from: H2_controller.desired_out
269+
to: Electrolyzer1.desired_out
270+
time_shifted: True
271+
272+
273+
# from controller to valve
274+
- from: H2_controller.valve1_ratio1
275+
to: H2valve1.ratio1
276+
time_shifted: True
277+
- from: H2_controller.valve1_ratio2
278+
to: H2valve1.ratio2
279+
time_shifted: True
280+
- from: H2_controller.valve1_ratio3
281+
to: H2valve1.ratio3
282+
time_shifted: True
283+
284+
285+
286+
### END hydrogen system additional components ###
287+
288+
monitor:
289+
file: './h2_system_example4_3.csv'
290+
items:
291+
292+
- ZZE1.h2_out
293+
- ZZE1.soc
294+
- controller.ZZE_setpoint
295+
- controller.Thermolyzer_setpoint
296+
- thermolyzer1.h_gen
297+
- Joint1.out
298+
- CSVdayahead.price

0 commit comments

Comments
 (0)