forked from Cantera/cantera
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsofc.yaml
303 lines (282 loc) · 10 KB
/
sofc.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
description: |-
This is a an example input file that defines models for phases and
interfaces that could be used, for example, to simulate a solid
oxide fuel cell. Note, however, that reaction rate coefficients and
species thermochemistry ARE NOT REAL VALUES - they are chosen only
for the purposes of this example.
Defines bulk (that is, 3D) phases - a gas, a metal, and an oxide.
The gas contains only the minimum number of species needed to model
operation on hydrogen. The species definitions are imported from
gri30.yaml. The initial composition is set to hydrogen + 5% water, but
usually this is reset in the program importing this definition.
The 'metal' phase will be used for the electrodes. All we need is
a source/sink for electrons, so we define this phase as only
containing electrons. Note that the 'metal' entry type requires
specifying a density, but it is not used in this simulation and
therefore is arbitrary.
The electron is set to have zero enthalpy and entropy. Therefore,
the chemical potential of the electron is zero, and the
electrochemical potential is simply -F * phi, where phi is the
electric potential of the metal. Note that this simple model is
adequate only because all we require is a reservoir for electrons;
if we wanted to do anything more complex, like carry out energy or
charge balances on the metal, then we would require a more complex
model. Note that there is no work function for this metal.
Note: the 'const_cp' species thermo model is used throughout this
file (with the exception of the gaseous species, which use NASA
polynomials imported from gri30.yaml). The const_cp model assumes a
constant specific heat, which by default is zero. Parameters that
can be specified are cp0, t0, h0, and s0. If omitted, t0 = 300 K,
h0 = 0, and s0 = 0. The thermo properties are computed as follows:
h = h0 + cp0*(t - t0), s = s0 + cp0*ln(t/t0).
For work at a single temperature, it is sufficient to specify only h0.
The 'oxide_bulk' phase is a very simple model for the bulk phase. We only
consider the oxygen sublattice. The only species we define are a
lattice oxygen, and an oxygen vacancy. Again, the density is a
required input, but is not used here, so may be set arbitrarily.
The vacancy will be modeled as truly vacant - it contains no atoms,
has no charge, and has zero enthalpy and entropy. This is different
from the usual convention in which the vacancy properties are are
expressed relative to the perfect crystal lattice. For example, in
the usual convention, an oxygen vacancy has charge +2. But the
convention we will use is that an oxygen ion has charge -2, and a
vacancy has charge 0. It all works out the same, as long as we are
consistent.
The surface of a bulk phase must be treated like a separate phase, with its
own set of species. In the 'metal_surface' phase we define the model for the
metal surface.
We allow the following species:
(m) - an empty metal site
H(m) - a chemisorbed H atom
O(m) - a chemisorbed O atom
OH(m) - a chemisorbed hydroxl
H2O(m) - a physisorbed water molecule
Notes:
1. The site density is in mol/cm2, since no units are specified and
'mol' and 'cm' were specified in the units directive below as the
units for quantity and length, respectively.
2. The 'reactions' field specifies that all reaction entries in this file
that are in the 'metal_surface-reactions' field are reactions belonging
to this surface mechanism.
On the oxide surface, we consider four species:
1. (ox) - a surface vacancy
2. O''(ox) - a surface oxygen with charge -2
3. OH'(ox) - a surface hydroxyl with charge -1
4. H2O(ox) - physisorbed neutral water
The triple phase boundary (TPB) between the metal, oxide, and gas is
specified in the 'tpb' phase. A single species is specified, but it
is not used, since all reactions only involve species on either side
of the TPB. Note that the site density is in mol/cm. But since no
reactions involve TPB species, this parameter is unused.
generator: cti2yaml
cantera-version: 2.5.0
date: Wed, 11 Dec 2019 16:59:15 -0500
input-files: [sofc.cti]
units: {length: cm, quantity: mol, activation-energy: kJ/mol}
phases:
- name: gas
thermo: ideal-gas
elements: [H, O, N]
species:
- gri30.yaml/species: [H2, H2O, N2, O2]
transport: mixture-averaged
state:
T: 1073.15
P: 1.01325e+05
X: {H2: 0.95, H2O: 0.05}
- name: metal
thermo: electron-cloud
elements: [E]
species: [electron]
state:
T: 1073.15
X: {electron: 1.0}
density: 9.0 kg/m^3
- name: oxide_bulk
thermo: lattice
elements: [O, E]
species: [Ox, VO**]
state:
T: 1073.15
P: 1.01325e+05
X: {Ox: 0.95, VO**: 0.05}
site-density: 0.0176 mol/cm^3
- name: metal_surface
thermo: ideal-surface
adjacent-phases: [gas]
elements: [H, O]
species: [(m), H(m), O(m), OH(m), H2O(m)]
kinetics: surface
reactions: [metal_surface-reactions]
state:
T: 973.0
coverages: {(m): 0.5, H(m): 0.5}
site-density: 2.6e-09
- name: oxide_surface
thermo: ideal-surface
adjacent-phases: [gas, oxide_bulk]
elements: [O, H, E]
species: [(ox), O''(ox), OH'(ox), H2O(ox)]
kinetics: surface
reactions: [oxide_surface-reactions]
state:
T: 1073.15
coverages: {O''(ox): 2.0, (ox): 0.0}
site-density: 2.0e-09
- name: tpb
thermo: edge
adjacent-phases: [metal, metal_surface, oxide_surface]
elements: [H, O]
species: [(tpb)]
kinetics: edge
reactions: [tpb-reactions]
state:
T: 1073.15
coverages: {(tpb): 1.0}
site-density: 5.0e-17
species:
- name: electron
composition: {E: 1}
thermo:
model: constant-cp
h0: 0.0 kcal/mol
- name: VO**
composition: {}
thermo:
model: constant-cp
h0: 0.0 kJ/mol
note: A bulk lattice vacancy
- name: Ox
composition: {O: 1, E: 2}
thermo:
model: constant-cp
h0: -170.0 kJ/mol
s0: 50.0 J/K/mol
note: A bulk lattice oxygen
- name: (m)
composition: {}
thermo:
model: constant-cp
h0: 0.0 kJ/mol
s0: 0.0 J/mol/K
- name: H(m)
composition: {H: 1}
thermo:
model: constant-cp
h0: -35.0 kJ/mol
s0: 37.0 J/mol/K
- name: O(m)
composition: {O: 1}
thermo:
model: constant-cp
h0: -220.0 kJ/mol
s0: 37.0 J/mol/K
- name: OH(m)
composition: {O: 1, H: 1}
thermo:
model: constant-cp
h0: -198.0 kJ/mol
s0: 102.0 J/mol/K
- name: H2O(m)
composition: {H: 2, O: 1}
thermo:
model: constant-cp
h0: -281.0 kJ/mol
s0: 123.0 J/mol/K
- name: O''(ox)
composition: {O: 1, E: 2}
thermo:
model: constant-cp
h0: -170.0 kJ/mol
s0: 50.0 J/K/mol
note: An oxygen ion at the surface, with charge = -2
- name: OH'(ox)
composition: {O: 1, H: 1, E: 1}
thermo:
model: constant-cp
h0: -220.0 kJ/mol
s0: 87.0 J/mol/K
note: An OH at the surface, with charge = -1
- name: (ox)
composition: {}
thermo:
model: constant-cp
h0: 0.0 kJ/mol
s0: 0.0 J/mol/K
note: A surface vacancy in the oxygen sublattice
- name: H2O(ox)
composition: {H: 2, O: 1}
thermo:
model: constant-cp
h0: -265.0 kJ/mol
s0: 98.0 J/mol/K
- name: (tpb)
composition: {}
thermo:
model: constant-cp
note: dummy species
# Surface reactions on the metal. We assume three dissociative
# adsorption reactions, and three reactions on the surface
# among adsorbates. All reactions are treated as reversible.
metal_surface-reactions:
- equation: H2 + (m) + (m) <=> H(m) + H(m) # Reaction 1
sticking-coefficient: {A: 0.1, b: 0, Ea: 0}
id: metal-rxn1
- equation: O2 + (m) + (m) <=> O(m) + O(m) # Reaction 2
sticking-coefficient: {A: 0.1, b: 0, Ea: 0}
id: metal-rxn2
- equation: H2O + (m) <=> H2O(m) # Reaction 3
sticking-coefficient: {A: 1.0, b: 0, Ea: 0}
id: metal-rxn3
- equation: H(m) + O(m) <=> OH(m) + (m) # Reaction 4
id: metal-rxn4
rate-constant: {A: 5.0e+22, b: 0, Ea: 100.0}
- equation: H(m) + OH(m) <=> H2O(m) + (m) # Reaction 5
id: metal-rxn5
rate-constant: {A: 5.0e+20, b: 0, Ea: 40.0}
- equation: OH(m) + OH(m) <=> H2O(m) + O(m) # Reaction 6
id: metal-rxn6
rate-constant: {A: 5.0e+21, b: 0, Ea: 100.0}
oxide_surface-reactions:
# This reaction represents the exchange of a surface oxygen vacancy and
# a subsurface vacancy. The concentration of subsurface vacancies is
# fixed by the doping level. If this reaction is given a large rate,
# then the surface vacancies will stay in equilibrium with the bulk
# vacancies.
- equation: (ox) + Ox <=> VO** + O''(ox) # Reaction 7
id: oxide-vac
rate-constant: {A: 5.0e+08, b: 0.0, Ea: 0.0}
# Desorption of physisorbed water. This is made fast.
- equation: H2O(ox) <=> H2O + (ox) # Reaction 8
id: oxide-water
rate-constant: {A: 1.0e+14, b: 0.0, Ea: 0.0 kJ/mol}
# chemisorption of water as surface hydroxyls. In reality, this
# reaction would surely be activated and have a lower pre-exponential
- equation: H2O(ox) + O''(ox) <=> OH'(ox) + OH'(ox) # Reaction 9
id: oxide-oh
rate-constant: {A: 1.0e+14, b: 0.0, Ea: 0.0 kJ/mol}
# Here we define two charge transfer reactions. Both reactions are
# reversible, and can be used to model either anodes or cathodes
# (although real anodes and cathodes would usually have different
# reaction mechanisms, except in a symmetric cell).
# in this reaction, a proton from the metal crosses the TPB to the
# oxide surface to make a hydroxyl and deliver an electron to the
# metal.
tpb-reactions:
- equation: H(m) + O''(ox) <=> (m) + electron + OH'(ox) # Reaction 10
id: edge-f2
rate-constant: {A: 5.0e+13, b: 0.0, Ea: 120.0}
beta: 0.5
- equation: O(m) + (ox) + 2 electron <=> (m) + O''(ox) # Reaction 11
id: edge-f3
rate-constant: {A: 5.0e+13, b: 0.0, Ea: 120.0}
beta: 0.5
# this reaction is commented out, but you can explore its effects by
# uncommenting it. Be careful, if you are not solving for the OH'
# concentration that the system does not become overdetermined
# (that is, impossible for all reactions to be simultaneously in
# equilibrium). If this happens, the wrong OCVs will result.
# - equation: H(m) + OH'(ox) <=> H2O(ox) + (m) + electron
# id: edge-f
# rate-constant: {A: 5.0e+13, b: 0.0, Ea: 120.0}
# beta: 0.5