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
