FCSys.Chemistry

Chemical reactions and related models

Information

Extends from Icons.ChemistryPackage (Icon for packages containing chemical models).

Package Content

NameDescription
FCSys.Chemistry.Examples Examples Examples
FCSys.Chemistry.Electrochemistry Electrochemistry Models associated with electrochemical reactions
FCSys.Chemistry.HOR HOR Hydrogen oxidation reaction
FCSys.Chemistry.ORR ORR Oxygen reduction reaction
FCSys.Chemistry.Capillary Capillary Young-Laplace model for capillary pressure
FCSys.Chemistry.CapillaryVolume CapillaryVolume Volume with capillary pressure applied to the liquid

FCSys.Chemistry.HOR FCSys.Chemistry.HOR

Hydrogen oxidation reaction FCSys.Chemistry.HOR

Information

H2 ⇌ 2e- + 2H+
Extends from FCSys.Icons.Names.Top2.

Parameters

TypeNameDefaultDescription
Integern_trans Number of components of translational momentum

Connectors

TypeNameDescription
Chemical'cheme-'Connector for e-
Chemical'chemH+'Connector for H+
ChemicalchemH2Connector for H2

Modelica definition

model HOR "Hydrogen oxidation reaction"
  extends FCSys.Icons.Names.Top2;

  constant Integer n_trans(min=0, max=3) 
    "Number of components of translational momentum";
  // Note:  This must be a constant rather than a parameter due to errors in
  // Dymola 2014.
  Conditions.Adapters.ChemicalReaction 'e-'(
    final n_trans=n_trans,
    m=Characteristics.'e-'.Gas.m,
    n=-2);
  Conditions.Adapters.ChemicalReaction 'H+'(
    final n_trans=n_trans,
    m=Characteristics.'H+'.Gas.m,
    n=-2);
  Conditions.Adapters.ChemicalReaction H2(
    final n_trans=n_trans,
    m=Characteristics.H2.Gas.m,
    n=1);

  Connectors.Chemical 'cheme-'(redeclare final constant Integer n_trans=n_trans)
    "Connector for e-";
  Connectors.Chemical 'chemH+'(redeclare final constant Integer n_trans=n_trans)
    "Connector for H+";
  Connectors.Chemical chemH2(redeclare final constant Integer n_trans=n_trans) 
    "Connector for H2";
  // Note:  These redeclarations are necessary due to errors in Dymola 2014.

equation 
  connect(chemH2, H2.chemical);
  connect('e-'.chemical, 'cheme-');
  connect('H+'.chemical, 'chemH+');
  connect(H2.reaction, 'e-'.reaction);
  connect('H+'.reaction, H2.reaction);
end HOR;

FCSys.Chemistry.ORR FCSys.Chemistry.ORR

Oxygen reduction reaction FCSys.Chemistry.ORR

Information

4e- + 4H+ + O2 ⇌ 2H2O
Extends from FCSys.Icons.Names.Top2.

Parameters

TypeNameDefaultDescription
Integern_trans Number of components of translational momentum

Connectors

TypeNameDescription
Chemical'cheme-'Connector for e-
Chemical'chemH+'Connector for H+
ChemicalchemO2Connector for O2
ChemicalchemH2OConnector for H2O

Modelica definition

model ORR "Oxygen reduction reaction"
  extends FCSys.Icons.Names.Top2;

  constant Integer n_trans(min=0, max=3) 
    "Number of components of translational momentum";
  // Note:  This must be a constant rather than a parameter due to errors in
  // Dymola 2014.
  Conditions.Adapters.ChemicalReaction 'e-'(
    final n_trans=n_trans,
    m=Characteristics.'e-'.Gas.m,
    reaction(Ndot(stateSelect=StateSelect.prefer)),
    n=4);
  Conditions.Adapters.ChemicalReaction 'H+'(
    final n_trans=n_trans,
    m=Characteristics.'H+'.Gas.m,
    n=4);
  Conditions.Adapters.ChemicalReaction O2(
    final n_trans=n_trans,
    m=Characteristics.O2.Gas.m,
    n=1);
  Conditions.Adapters.ChemicalReaction H2O(
    final n_trans=n_trans,
    m=Characteristics.H2O.Gas.m,
    n=-2);

  Connectors.Chemical 'cheme-'(redeclare final constant Integer n_trans=n_trans)
    "Connector for e-";
  Connectors.Chemical 'chemH+'(redeclare final constant Integer n_trans=n_trans)
    "Connector for H+";
  Connectors.Chemical chemO2(redeclare final constant Integer n_trans=n_trans) 
    "Connector for O2";
  Connectors.Chemical chemH2O(redeclare final constant Integer n_trans=n_trans)
    "Connector for H2O";
  // Note:  These redeclarations are necessary due to errors in Dymola 2014.

equation 
  connect('H+'.chemical, 'chemH+');
  connect('e-'.chemical, 'cheme-');
  connect(O2.chemical, chemO2);
  connect(H2O.chemical, chemH2O);
  connect('e-'.reaction, H2O.reaction);
  connect('H+'.reaction, H2O.reaction);
  connect(O2.reaction, H2O.reaction);
end ORR;

FCSys.Chemistry.Capillary FCSys.Chemistry.Capillary

Young-Laplace model for capillary pressure FCSys.Chemistry.Capillary

Information

The characteristic radius (R) is the harmonic mean of the (2) principle radii of the liquid volume.

The default surface tension (γ = 0.0663 N/m) is for saturated water at 60 °C, interpolated from [Incropera2002, pp. 924]. Note that the surface tension in [Wang2001] is incorrect (likely unit conversion error).

Extends from FCSys.Icons.Names.Top2.

Parameters

TypeNameDefaultDescription
Geometry
LengthRU.umEffective radius [L]
Material properties
SurfaceTensiongamma0.0663*U.N/U.mSurface tension [M/T2]
Angletheta140*U.degreeContact angle [A]

Connectors

TypeNameDescription
AmagatwettingInterface to the wetting phase
AmagatnonwettingInterface to the nonwetting phase

Modelica definition

model Capillary "Young-Laplace model for capillary pressure"

  extends FCSys.Icons.Names.Top2;

  // Geometry
  parameter Q.Length R=U.um "Effective radius";

  // Material properties
  parameter Q.SurfaceTension gamma=0.0663*U.N/U.m "Surface tension";
  parameter Q.Angle theta=140*U.degree "Contact angle";

  // Auxiliary variables (for analysis only)
  Q.Pressure Deltap=wetting.p - nonwetting.p if environment.analysis 
    "Pressure difference due to surface tension";

  Connectors.Amagat wetting "Interface to the wetting phase";
  Connectors.Amagat nonwetting "Interface to the nonwetting phase";

protected 
  outer Conditions.Environment environment "Environmental conditions";

equation 
  // Pressure relation
  nonwetting.p = wetting.p + 2*gamma*cos(theta)/R "Young-Laplace equation";

  // Conservation (without storage)
  0 = wetting.V + nonwetting.V "Volume";

end Capillary;

FCSys.Chemistry.CapillaryVolume FCSys.Chemistry.CapillaryVolume

Volume with capillary pressure applied to the liquid FCSys.Chemistry.CapillaryVolume

Information

The default surface tension (γ = 0.0663 N/m) is for saturated water at 60 °C, interpolated from [Incropera2002, pp. 924]. Note that the surface tension in [Wang2001] is incorrect (likely unit conversion error).

The default permeability (κ = 6.46×10-5 mm2) is based on the air permeability of SGL Carbon Group Sigracet® 10 BA [SGL2007]. Wang et al. use κ = 10-5 mm2 [Wang2001].

The default contact angle (θ = 140°) is typical of the GDL measurements listed at http://www.chem.mtu.edu/cnlm/research/Movement_of_Water-in_Fuel_Cell_Electrodes.htm (accessed Nov. 22, 2103).

Extends from FCSys.Icons.Names.Top3.

Parameters

TypeNameDefaultDescription
Capillarycapillary Capillary model
Geometry
VolumeV Volume [L3]
Included phases
BooleaninclGastrueGas
BooleaninclLiquidtrueLiquid
BooleaninclSolidtrueSolid
Capillary pressure
BooleaninclCapillaryfalseInclude capillary pressure

Connectors

TypeNameDescription
DaltongasInterface to the gas phase
AmagatliquidInterface to the liquid phase
AmagatsolidInterface to the solid phase

Modelica definition

model CapillaryVolume 
  "Volume with capillary pressure applied to the liquid"
  extends FCSys.Icons.Names.Top3;

  // Material properties
  parameter Q.Volume V "Volume";

  // Material properties
  parameter Boolean inclGas=true "Gas";
  parameter Boolean inclLiquid=true "Liquid";
  parameter Boolean inclSolid=true "Solid";

  // Capillary pressure
  parameter Boolean inclCapillary=false "Include capillary pressure";
  Capillary capillary if inclLiquid and inclCapillary "Capillary model";

  // Alias variables (for common terms)
  Q.Volume V_pore "Pore volume";

  // Auxiliary variables (for analysis)
  output Q.NumberAbsolute x(final stateSelect=StateSelect.never) = liquid.V/(
    gas.V + liquid.V) if inclLiquid and inclGas and environment.analysis 
    "Liquid saturation";

  Connectors.Dalton gas if inclGas "Interface to the gas phase";
  Connectors.Amagat liquid if inclLiquid "Interface to the liquid phase";
  Connectors.Amagat solid "Interface to the solid phase";

  Conditions.ByConnector.Amagat.VolumeFixed volume(final V=V) if inclGas or 
    inclLiquid "Fixed volume";

protected 
  Conditions.Adapters.AmagatDalton amagatDalton if inclGas or (inclSolid and 
    not inclLiquid) 
    "Adapter between additivity of volume and additivity of gas pressure";

  outer Conditions.Environment environment "Environmental conditions";

equation 
  // Aliases
  V = V_pore + solid.V;

  if not inclCapillary then
    connect(liquid, volume.amagat) 
      "Directly connect liquid to the volume (not shown in diagram)";
  end if;

  connect(capillary.wetting, liquid);
  connect(solid, amagatDalton.amagat);
  connect(volume.amagat, amagatDalton.amagat);
  connect(gas, amagatDalton.dalton);
  connect(capillary.nonwetting, volume.amagat);
end CapillaryVolume;