Amphlett Static Model

Version 0.9

The Amphlett static model has been used to predict the performance of proton exchange membrane fuel cell. Key concepts in Amphlett static model are Nernst voltage, activation polarization loss, ohmic polarization loss and concentration polarization loss. Amphlett static model has a mechanistic and empirical approach to describe the performance of proton exchange membrane fuel cell. The ideal standard potential of an H2/O2 fuel cell is 1.229 V with liquid water product. The actual cell potential is decreased from its reference potential because of irreversible losses.

Fig1. Graphical Abstract of Static Models

Nernst Voltage

$$E_{Nernst}(V)=1.229-(8.5\times10^{-4})(T-298.15)+(4.308\times10^{-5})(T)[\ln(P_{H2})+0.5ln(P_{O2})]$$

In [1]:
from opem.Static.Amphlett import Enernst_Calc
Enernst=Enernst_Calc(T=343.15,PH2=1,PO2=1)
Enernst
Out[1]:
1.19075
  • Notice : from opem.Amphlett in version (0.3>)

PEM Losses Model

Activation

$$\eta_{activation}=\xi_{1}+\xi_{2}T+\xi_{3}T[ln(C_{O_{2}})]+\xi_{4}T[ln(i)]$$

$$\xi_{1}=-0.948$$

$$\xi_{2}=0.00286+0.0002\times ln(A)+(4.3\times10^{-5})[ln(C_{H_{2}})]$$

$$\xi_{3}=7.6\times10^{-5}$$

$$\xi_{4}=-1.93\times10^{-4}$$

$$C_{H_{2}}=\frac{P_{H_2}}{1.09\times10^{6}\times exp(\frac{77}{T})}$$

$$C_{O_{2}}=\frac{P_{O_2}}{5.08\times10^{6}\times exp(\frac{-498}{T})}$$

In [2]:
from opem.Params import xi1,xi3,xi4
print("XI1="+str(xi1))
print("XI3="+str(xi3))
print("XI4="+str(xi4))
XI1=-0.948
XI3=7.6e-05
XI4=-0.000193
In [3]:
from opem.Static.Amphlett import CO2_Calc,CH2_Calc,Xi2_Calc
CO2=CO2_Calc(PO2=1,T=343.15)
CH2=CH2_Calc(PH2=1,T=343.15)
XI2=Xi2_Calc(A=50.6,PH2=1,T=343.15)
print("XI2="+str(XI2))
print("CO2="+str(CO2))
print("CH2="+str(CH2))
XI2=0.0030373688787134006
CO2=8.402541445801334e-07
CH2=7.330294784824117e-07
In [4]:
from opem.Static.Amphlett import Eta_Act_Calc
Eta_Act=Eta_Act_Calc(T=343.15,PO2=1 , PH2=1, i=2, A=50.6)
Eta_Act
Out[4]:
0.3164719546471556

Ohmic

$$\eta_{ohmic}=i(R_{electronic}+R_{Proton})$$

$$R_{Proton}=\frac{\rho_m\times I}{A}$$

$$\rho_m=\frac{181.6[1+0.03(\frac{i}{A})+0.062(\frac{T}{303})^2(\frac{i}{A})^{2.5}]}{[\lambda-0.634-3(\frac{i}{A})]exp[4.18(\frac{T-303}{T})]}$$

  • Relectronic Should be approximately constant over the relatively narrow temperature range of PEM fuel cell operation. Therefore, the parameter Relectronic can be taken as a constant, but is generally difficult to predict and, therefore, is initially an unknown.
In [5]:
from opem.Static.Amphlett import Rho_Calc
Rho_Calc(i=2, A=50.6, T=343.15, lambda_param=23)
Out[5]:
5.011385192458396
In [6]:
from opem.Static.Amphlett import Eta_Ohmic_Calc
Eta_Ohmic=Eta_Ohmic_Calc(i=2, l=0.0178, A=50.6, T=343.15, lambda_param=23, R_elec=0)
Eta_Ohmic
Out[6]:
0.0035257966966703337

Concentration

$$\eta_{Concentration}=-B\times ln(1-\frac{J}{J_{Max}})$$

$$J=\frac{i}{A}$$

$$J_{Max}=\frac{i_L}{A}$$

In [7]:
from opem.Static.Amphlett import Eta_Conc_Calc
Eta_Conc=Eta_Conc_Calc(i=2, A=50.6, B=0.016, JMax=1.5)
Eta_Conc
Out[7]:
0.0004272617031588504

VCell & VStack

$$Loss=\eta_{Activation}+\eta_{Ohmic}+\eta_{Concentration}$$

$$V_{cell}=E_{Nernst}-Loss$$

$$V_{Stack}=N\times V_{cell}$$

In [8]:
from opem.Static.Amphlett import Loss_Calc,Vcell_Calc,VStack_Calc
Loss=Loss_Calc(Eta_Act=Eta_Act,Eta_Conc=Eta_Conc,Eta_Ohmic=Eta_Ohmic)
Loss
Out[8]:
0.32042501304698484
In [9]:
Vcell=Vcell_Calc(Enernst=Enernst,Loss=Loss)
Vcell
Out[9]:
0.8703249869530152
In [10]:
VStack=VStack_Calc(Vcell=Vcell,N=2)
VStack
Out[10]:
1.7406499739060304

Power Of PEMFC

$$P=V_{cell}\times i$$

$$P_{Stack}=N\times P$$

$$P_{Thermal}=i\times(N \times E_{th}-V_{Stack})$$

$$E_{th}=\frac{-\Delta H}{nF}=1.23V$$

In [11]:
from opem.Static.Amphlett import Power_Calc,PowerStack_Calc,Power_Thermal_Calc
Power=Power_Calc(Vcell=Vcell,i=2)
Power
Out[11]:
1.7406499739060304
In [12]:
PowerStack_Calc(Power=Power,N=2)
Out[12]:
3.4812999478120608
In [13]:
Power_Thermal_Calc(VStack=VStack,N=2,i=2)
Out[13]:
1.4387000521879392

Efficiency of PEMFC

$$\eta=\frac{\mu_F\times V_{cell}}{HHV}$$

In [14]:
from opem.Params import uF,HHV
from opem.Static.Amphlett import Efficiency_Calc
In [15]:
uF
Out[15]:
0.95
In [16]:
HHV
Out[16]:
1.482
In [17]:
Efficiency_Calc(Vcell=Vcell)
Out[17]:
0.5579006326621893

Linear Approximation

Sometimes quick calculations regarding fuel cell efficiency–power-size relationships need to be made. Linear approximation is a good method to find a rough estimate of the value of polarization function at a particular point. A linear polarization curve has the following form: $$V_{cell}=V_0-kI$$ where V0 is the intercept (actual open circuit voltage is always higher) and k is the slope of the curve.

$$Parameter$$ $$Description$$ $$Unit$$
$$V_0$$ Intercept of the curve obtained by linear approximation $$V$$
$$k$$ Slope of the curve obtained by linear approximation $$A^{-1}$$
$$P_{max}$$ Maximum power obtained by linear approximation $$W$$
$$V_{FC}|P_{max}$$ Cell voltage at maximum power obtained by linear approximation $$V$$
  • Notice : These parameters are only available in HTML report

Overall Parameters

$$Parameter$$ $$Description$$ $$Unit$$
$$\eta|P_{Max}$$ Cell efficiency at maximum power $$--$$
$$P_{Max}$$ Maximum power $$W$$
$$P_{Elec} $$ Total electrical power $$W$$
$$P_{Thermal} $$ Total thermal power $$W$$
$$V_{FC}|P_{Max}$$ Cell voltage at maximum power $$V$$
  • Notice : P(Thermal) & P(Elec) calculated by Simpson's Rule

  • Notice : These parameters are only available in HTML report

Full Run

  • Run from i=0 to i=2 with step=0.1
In [18]:
Test_Vector={"T":343.15,"PH2":1,"PO2":1,"i-start":0,"i-stop":2,"i-step":0.1,"A":50.6,"l":0.0178,"lambda":23,"N":1,"R":0,"JMax":1.5,"B":0.016,"Name":"Test"}
  • Notice : "Name", new in version 0.5
In [19]:
from opem.Static.Amphlett import Static_Analysis
Static_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=True)
Out[19]:
{'EFF': [0.763301282051282,
  0.6874890758222313,
  0.6579364138373093,
  0.6405968621886462,
  0.628257558614402,
  0.618658070249436,
  0.610791539932373,
  0.60412087931632,
  0.5983254944546936,
  0.5931985956180685,
  0.5885989881753353,
  0.5844259636913888,
  0.5806051627342551,
  0.5770801158862924,
  0.5738069285336743,
  0.5707508038668997,
  0.567883690327933,
  0.5651826435194095,
  0.5626286570434207,
  0.5602058098699769],
 'I': [0,
  0.1,
  0.2,
  0.3,
  0.4,
  0.5,
  0.6,
  0.7,
  0.8,
  0.9,
  1.0,
  1.1,
  1.2,
  1.3,
  1.4,
  1.5,
  1.6,
  1.7,
  1.8,
  1.9],
 'K': -0.11440911221732857,
 'P': [0.0,
  0.1072482958282681,
  0.2052761611172405,
  0.29979933150428645,
  0.3920327165753869,
  0.4825532947945601,
  0.5717008813767012,
  0.6597000002134213,
  0.7467102170794577,
  0.8328508282477683,
  0.9182144215535232,
  1.0028749536944233,
  1.0868928646385256,
  1.1703184750174012,
  1.2531943319175447,
  1.3355568810485454,
  1.417437691058521,
  1.498864370613474,
  1.5798612689779254,
  1.6604500204546115],
 'Ph': [0.0,
  0.015751704171731908,
  0.0407238388827595,
  0.06920066849571356,
  0.09996728342461313,
  0.13244670520543989,
  0.16629911862329885,
  0.20129999978657856,
  0.23728978292054237,
  0.2741491717522317,
  0.3117855784464768,
  0.3501250463055768,
  0.3891071353614744,
  0.428681524982599,
  0.4688056680824551,
  0.5094431189514546,
  0.5505623089414792,
  0.5921356293865259,
  0.6341387310220746,
  0.6765499795453883],
 'Status': True,
 'V': [1.19075,
  1.072482958282681,
  1.0263808055862025,
  0.9993311050142881,
  0.9800817914384672,
  0.9651065895891202,
  0.9528348022945019,
  0.9424285717334592,
  0.933387771349322,
  0.925389809164187,
  0.9182144215535232,
  0.9117045033585666,
  0.905744053865438,
  0.9002449807826162,
  0.895138808512532,
  0.8903712540323636,
  0.8858985569115755,
  0.8816849238902789,
  0.8777007049877363,
  0.873921063397164],
 'V0': 1.0551285303936633}
  • Notice : "Status", "V0", "K" and "EFF" , new in version 0.8
In [20]:
Static_Analysis(InputMethod=Test_Vector,TestMode=True,PrintMode=False,ReportMode=True)
Out[20]:
{'EFF': [0.763301282051282,
  0.6874890758222313,
  0.6579364138373093,
  0.6405968621886462,
  0.628257558614402,
  0.618658070249436,
  0.610791539932373,
  0.60412087931632,
  0.5983254944546936,
  0.5931985956180685,
  0.5885989881753353,
  0.5844259636913888,
  0.5806051627342551,
  0.5770801158862924,
  0.5738069285336743,
  0.5707508038668997,
  0.567883690327933,
  0.5651826435194095,
  0.5626286570434207,
  0.5602058098699769],
 'I': [0,
  0.1,
  0.2,
  0.3,
  0.4,
  0.5,
  0.6,
  0.7,
  0.8,
  0.9,
  1.0,
  1.1,
  1.2,
  1.3,
  1.4,
  1.5,
  1.6,
  1.7,
  1.8,
  1.9],
 'K': -0.11440911221732857,
 'P': [0.0,
  0.1072482958282681,
  0.2052761611172405,
  0.29979933150428645,
  0.3920327165753869,
  0.4825532947945601,
  0.5717008813767012,
  0.6597000002134213,
  0.7467102170794577,
  0.8328508282477683,
  0.9182144215535232,
  1.0028749536944233,
  1.0868928646385256,
  1.1703184750174012,
  1.2531943319175447,
  1.3355568810485454,
  1.417437691058521,
  1.498864370613474,
  1.5798612689779254,
  1.6604500204546115],
 'Ph': [0.0,
  0.015751704171731908,
  0.0407238388827595,
  0.06920066849571356,
  0.09996728342461313,
  0.13244670520543989,
  0.16629911862329885,
  0.20129999978657856,
  0.23728978292054237,
  0.2741491717522317,
  0.3117855784464768,
  0.3501250463055768,
  0.3891071353614744,
  0.428681524982599,
  0.4688056680824551,
  0.5094431189514546,
  0.5505623089414792,
  0.5921356293865259,
  0.6341387310220746,
  0.6765499795453883],
 'Status': True,
 'V': [1.19075,
  1.072482958282681,
  1.0263808055862025,
  0.9993311050142881,
  0.9800817914384672,
  0.9651065895891202,
  0.9528348022945019,
  0.9424285717334592,
  0.933387771349322,
  0.925389809164187,
  0.9182144215535232,
  0.9117045033585666,
  0.905744053865438,
  0.9002449807826162,
  0.895138808512532,
  0.8903712540323636,
  0.8858985569115755,
  0.8816849238902789,
  0.8777007049877363,
  0.873921063397164],
 'V0': 1.0551285303936633}
  • Notice : "PrintMode" & "ReportMode" , new in version 0.5
In [21]:
Static_Analysis(InputMethod={},TestMode=True,PrintMode=False,ReportMode=True)
Out[21]:
{'Message': '[Error] Amphlett Simulation Failed!(Check Your Inputs)',
 'Status': False}

Parameters

Inputs, Constants & Middle Values

  1. User : User Input
  2. System : Simulator Calculation (Middle Value)
$$Parameter$$ $$Description$$ $$Unit$$ $$Value$$
$$P_{H2}$$ Partial Pressure $$atm$$ $$User$$
$$P_{O2}$$ Partial Pressure $$atm$$ $$User$$
$$T$$ Cell Operation Temperature $$K$$ $$User$$
$$l$$ Membrane Thickness $$cm$$ $$User$$
$$A$$ Active area $$cm^2$$ $$User$$
$$\lambda$$ An adjustable parameter with a possible minimum value of 14 and a maximum value of 23 $$--$$ $$User$$
$$J_{Max}$$ Maximum current density of the cell $$Acm^{-2}$$ $$User$$
$$B$$ An empirical constant depending on the cell and its operation state $$V$$ $$User$$
$$N$$ Number of single cells $$--$$ $$User$$
$$R_{electronic}$$ R-Electronic $$\Omega$$ $$User$$
$$i_{start}$$ Cell operating current start point $$A$$ $$User$$
$$i_{step}$$ Cell operating current step $$A$$ $$User$$
$$i_{stop}$$ Cell operating current end point $$A$$ $$User$$
$$\rho$$ Membrane Specific Resistivity $$\Omega cm$$ $$System$$
$$J$$ Actual current density of the cell $$Acm^{-2}$$ $$System$$
$$C_{O_2}$$ Concentration of oxygen in the catalytic interface of the cathode $$molcm^{-3}$$ $$System$$
$$C_{H_2}$$ Concentration of hydrogen in the catalytic interface of the anode $$molcm^{-3}$$ $$System$$
$$R_{Proton}$$ Resistance to proton flow $$\Omega$$ $$System$$
$$\xi_2$$ Parametric coefficients for cell model $$--$$ $$System$$
$$\xi_1$$ Parametric coefficients for cell model $$--$$ $$-0.948$$
$$\xi_3$$ Parametric coefficients for cell model $$--$$ $$7.6\times10^{-5}$$
$$\xi_4$$ Parametric coefficients for cell model $$--$$ $$-1.93\times10^{-4}$$
$$\mu_F$$ The fuel utilization $$--$$ $$0.95$$
$$HHV$$ Higher Heating Value Potential $$V$$ $$1.482$$
$$E_{th}$$ Theoretical Potential $$V$$ $$1.23$$

Reference

1-J. C. Amphlett, R. M. Baumert, R. F. Mann, B. A. Peppley, and P. R. Roberge. 1995. "Performance Modeling of the Ballard Mark IV Solid Polymer Electrolyte Fuel Cell." J. Electrochem. Soc. (The Electrochemical Society, Inc.) 142 (1): 9-15. doi: 10.1149/1.2043959.
2-Jeferson M. Correa, Felix A. Farret, Vladimir A. Popov, Marcelo G. Simoes. 2005. "Sensitivity Analysis of the Modeling Parameters Used in Simulation of Proton Exchange Membrane Fuel Cells." IEEE Transactions on Energy Conversion (IEEE) 20 (1): 211-218. doi:10.1109/TEC.2004.842382.