21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203 | def determined_parameters(type_fuel_cell):
"""This function is used to determine the parameters of the fuel cell model for the calibration when a registered
type_fuel_cell is considered.
Parameters
----------
type_fuel_cell : str
Type of fuel cell configuration.
Returns
-------
T_des : float
Desired fuel cell temperature in Kelvin.
Pa_des : float
Desired anode pressure in Pascal.
Pc_des : float
Desired cathode pressure in Pascal.
Sa : float
Stoichiometric ratio of hydrogen.
Sc : float
Stoichiometric ratio of oxygen.
Phi_a_des : float
Desired anode relative humidity.
Phi_c_des : float
Desired cathode relative humidity.
i_max_pola : float
Maximum current density for the polarization curve.
Aact : float
Active area of the cell in m².
Hmem : float
Thickness of the membrane in m.
Hcl : float
Thickness of the catalyst layer in m.
Hgc : float
Thickness of the gas channel in m.
Wgc : float
Width of the gas channel in m.
Lgc : float
Length of the gas channel in m.
type_auxiliary : str
Type of auxiliary system.
type_control : str
Type of control system.
type_purge : str
Type of purge system.
type_display : str
Type of display.
type_plot : str
Type of plot.
type_current : str
Type of current density function.
current_density : function
Current density evolution over time. It is a function of time and parameters dictionary.
t_step : tuple
Time parameters for the step_current density function.
It is a tuple containing the initial time 't0_step', final time 'tf_step', loading time 'delta_t_load' and
dynamic time for display 'delta_t_dyn'.
i_step : tuple
Current parameters for the step_current density function.
It is a tuple containing the initial and final current density value 'i_ini' and 'i_final'.
delta_pola : tuple
Parameters for the polarization curve. It is a tuple containing the loading time
'delta_t_load', the breaking time 'delta_t_break', the current density step 'delta_i', and the initial
breaking time 'delta_t_ini'.
i_EIS : float
Current for which a ratio_EIS perturbation is added.
ratio_EIS : float
Value of the perturbation on the current density for building the EIS curve.
t_EIS : tuple
EIS parameters. It is a tuple containing the initial EIS time after stack equilibrium 't0_EIS', a list of time
parameters which gives the beginning of each frequency change 't_new_start', the final time 'tf_EIS', a list of
time parameters which gives the estimated time for reaching equilibrium at each frequency 'delta_t_break_EIS',
and a list of time parameters which gives the estimated time for measuring the voltage response at each
frequency 'delta_t_measurement_EIS'.
f_EIS : tuple
EIS parameters. It is a tuple containing the power of the initial frequency
'f_power_min': f_min = 10**f_power_min, the power of the final frequency 'f_power_max', the number of
frequencies tested 'nb_f' and the number of points calculated per specific period 'nb_points'.
t_purge : tuple
Time parameters for purging the system.
It is the purge time interval 'purge_time' and the time between two purges 'delta_purge'.
max_step : float
Maximum time step for the solver.
n_gdl : int
Number of points considered in the GDL.
i_exp : numpy.ndarray
Experimental values of the current density.
U_exp : numpy.ndarray
Experimental values of the voltage.
"""
if type_fuel_cell == "EH-31_1.5" or type_fuel_cell == "EH-31_2.0" or type_fuel_cell == "EH-31_2.25" or \
type_fuel_cell == "EH-31_2.5":
# Given values by the author
# Operating inputs
T_des = 74 + 273.15 # K. It is the temperature of the fuel cell.
Sa, Sc = 1.2, 2.0 # It is the stoichiometric ratio (of hydrogen and oxygen).
Phi_a_des, Phi_c_des = 0.4, 0.6 # It is the desired relative humidity.
if type_fuel_cell == "EH-31_1.5":
Pa_des, Pc_des = 1.5e5, 1.5e5 # Pa. It is the desired pressure of the fuel gas (at the anode/cathode).
i_max_pola = 2.3e4
elif type_fuel_cell == "EH-31_2.0":
Pa_des, Pc_des = 2.0e5, 2.0e5 # Pa. It is the desired pressure of the fuel gas (at the anode/cathode).
i_max_pola = 2.5e4
elif type_fuel_cell == "EH-31_2.25":
Pa_des, Pc_des = 2.25e5, 2.25e5 # Pa. It is the desired pressure of the fuel gas (at the anode/cathode).
i_max_pola = 2.85e4
else: # type_fuel_cell == "EH-31_2.5":
Pa_des, Pc_des = 2.5e5, 2.5e5 # Pa. It is the desired pressure of the fuel gas (at the anode/cathode).
i_max_pola = 3.05e4
# Fuel cell physical parameters
Aact = 8.5e-3 # m². It is the active area of the catalyst layer.
Wgc = 4.5e-4 # m. It is the width of the gas channel.
Lgc = 9.67 # m. It is the length of the gas channel.
# Extrapolated physical parameters
Hmem = 2e-5 # m. It is the thickness of the membrane.
Hcl = 1e-5 # m. It is the thickness of the anode or cathode catalyst layer.
Hgdl = 2e-4 # m. It is the thickness of the gas diffusion layer.
Hgc = 5e-4 # m. It is the thickness of the gas channel.
# Algorithm parameters for polarization curve generation
type_auxiliary = "forced-convective_cathode_with_flow-through_anode"
type_control = "no_control"
type_purge = "no_purge"
type_display = "synthetic"
type_plot = "fixed"
type_current = "polarization"
current_density = polarization_current
t_step = np.nan, np.nan, np.nan, np.nan # It is the time parameters for the step_current density function.
i_step = np.nan, np.nan # It is the current parameters for the step_current density function.
delta_pola = 30, 30, 0.1e4, 1 * 60 # It is the parameters for the polarization curve.
i_EIS, ratio_EIS = np.nan, np.nan # (A/m², ). i_EIS is the current for which a ratio_EIS perturbation is added.
f_EIS, t_EIS = np.nan, np.nan # It is the EIS parameters.
t_purge = 0.6, 15 # s It is the purge time and the distance between two purges.
max_step = 0.1 # It is good enough for having graphs without instabilities.
n_gdl = int(Hgdl / Hcl / 4) # It is the number of model points placed inside each GDL.
elif type_fuel_cell == "LF":
# Given values by the author
# Operating inputs
T_des = 80 + 273.15 # K. It is the temperature of the fuel cell.
Pa_des, Pc_des = 101325, 101325 # Pa. It is the desired pressure of the fuel gas (at the anode/cathode).
Sa, Sc = 2.0, 1.5 # It is the stoichiometric ratio (of hydrogen and oxygen).
Phi_a_des, Phi_c_des = 0.84, 0.59 # It is the desired relative humidity.
i_max_pola = 1.45e4
# Fuel cell physical parameters
Hmem = 5.08e-5 # m. It is the thickness of the membrane.
Hcl = 1e-5 # m. It is the thickness of the anode or cathode catalyst layer.
Hgdl = 4.2e-4 # m. It is the thickness of the gas diffusion layer.
Hgc = 1e-3 # m. It is the thickness of the gas channel.
Wgc = 8e-4 # m. It is the width of the gas channel.
# Extrapolated physical parameters
Aact = 0.0025 # m². It is the active area of the catalyst layer.
Lgc = 1.6 # m. It is the length of the gas channel.
# Algorithm parameters for polarization curve generation
type_auxiliary = "forced-convective_cathode_with_anodic_recirculation"
type_control = "no_control"
type_purge = "no_purge"
type_display = "no_display"
type_plot = "fixed"
type_current = "polarization"
current_density = polarization_current
t_step = np.nan # It is the time parameters for the step_current density function.
i_step = np.nan, np.nan # It is the current parameters for the step_current density function.
delta_pola = 30, 30, 0.1e4, 60 * 60 # It is the parameters for the polarization curve.
i_EIS, ratio_EIS = np.nan, np.nan # (A/m², ). i_EIS is the current for which a ratio_EIS perturbation is added.
f_EIS, t_EIS = np.nan, np.nan # It is the EIS parameters.
t_purge = 0.6, 15 # s It is the purge time and the distance between two purges.
max_step = 0.1 # It is good enough for having graphs without instabilities.
n_gdl = int(Hgdl / Hcl / 4) # It is the number of model points placed inside each GDL.
else:
ValueError("A correct type_fuel_cell should be given.")
# Characteristic points of the experimental polarization curve
i_exp, U_exp = pola_exp_values(type_fuel_cell)
return (T_des, Pa_des, Pc_des, Sa, Sc, Phi_a_des, Phi_c_des, i_max_pola, Aact, Hmem, Hcl, Hgdl, Hgc, Wgc, Lgc,
type_auxiliary, type_control, type_purge, type_display, type_plot, type_current, current_density, t_step,
i_step, delta_pola, i_EIS, ratio_EIS, t_EIS, f_EIS, t_purge, max_step, n_gdl, i_exp, U_exp)
|