Hydrogen recovery from purge stream of ammonia plant :
concentration of impurities in permeate stream vs. stage cut​
​Authors: Housam Binous and Ahmed Bellagi

Hydrogen recovery from purge gas of ammonia plant is important. Pan compared model and experimental data for CH4, N2 and Argon mole fractions in the permeate stream at various values of stage cut (see Fig. 3 of Ref. 1). ​​
​​Here, we reproduce Fig. 3 of Ref. 1 using a counter-current gas permeation module and the methodology described in detail in Ref. 2.​​References:​[1] Pan, C.Y. (1986), Gas separation by high-flux, asymmetric hollow-fiber membrane. AIChE J., 32: 2020-2027. https://doi.org/10.1002/aic.690321212[2] H . Binous, U . Zahid and A . Bellagi, Modeling for Multi - component Gas Permeation with Orthogonal Collocation and Arc - Length Continuation, Chemistry Africa (2024) . https://doi.org/10.1007/s42250-024-01167-y​​​
In[]:=
Out[]=
{xA[1]0.500575,xB[1]0.255751,xC[1]0.202724,xA[2]0.500682,xB[2]0.255696,xC[2]0.20268,xA[3]0.501001,xB[3]0.255532,xC[3]0.20255,xA[4]0.501523,xB[4]0.255263,xC[4]0.202337,xA[5]0.502236,xB[5]0.254897,xC[5]0.202046,xA[6]0.503121,xB[6]0.254442,xC[6]0.201685,xA[7]0.504156,xB[7]0.25391,xC[7]0.201263,xA[8]0.505315,xB[8]0.253315,xC[8]0.20079,xA[9]0.506569,xB[9]0.252671,xC[9]0.200279,xA[10]0.507887,xB[10]0.251993,xC[10]0.199742,xA[11]0.509235,xB[11]0.2513,xC[11]0.199192,xA[12]0.510582,xB[12]0.250609,xC[12]0.198643,xA[13]0.511893,xB[13]0.249935,xC[13]0.198108,xA[14]0.513136,xB[14]0.249296,xC[14]0.197601,xA[15]0.514282,xB[15]0.248708,xC[15]0.197134,xA[16]0.515302,xB[16]0.248183,xC[16]0.196718,xA[17]0.516172,xB[17]0.247736,xC[17]0.196364,xA[18]0.516871,xB[18]0.247377,xC[18]0.196079,xA[19]0.517383,xB[19]0.247114,xC[19]0.19587,xA[20]0.517695,xB[20]0.246954,xC[20]0.195743,yA[2]0.983438,yB[2]0.00760996,yC[2]0.00580118,yA[3]0.983451,yB[3]0.0076041,yC[3]0.00579671,yA[4]0.983471,yB[4]0.00759451,yC[4]0.0057894,yA[5]0.9835,yB[5]0.00758145,yC[5]0.00577943,yA[6]0.983535,yB[6]0.00756525,yC[6]0.00576708,yA[7]0.983576,yB[7]0.00754636,yC[7]0.00575267,yA[8]0.983622,yB[8]0.00752526,yC[8]0.00573658,yA[9]0.983671,yB[9]0.0075025,yC[9]0.00571922,yA[10]0.983723,yB[10]0.00747865,yC[10]0.00570103,yA[11]0.983775,yB[11]0.00745432,yC[11]0.00568247,yA[12]0.983828,yB[12]0.0074301,yC[12]0.00566401,yA[13]0.983879,yB[13]0.0074066,yC[13]0.00564608,yA[14]0.983927,yB[14]0.00738437,yC[14]0.00562913,yA[15]0.983971,yB[15]0.00736395,yC[15]0.00561355,yA[16]0.984011,yB[16]0.00734581,yC[16]0.00559972,yA[17]0.984044,yB[17]0.00733037,yC[17]0.00558794,yA[18]0.984071,yB[18]0.00731798,yC[18]0.00557849,yA[19]0.984091,yB[19]0.00730893,yC[19]0.00557159,yA[20]0.984103,yB[20]0.00730341,yC[20]0.00556738,yA[21]0.984107,yB[21]0.00730156,yC[21]0.00556597,q[2]0.96459,q[3]0.965228,q[4]0.966274,q[5]0.967705,q[6]0.969487,q[7]0.97158,q[8]0.973933,q[9]0.976492,q[10]0.979195,q[11]0.981976,q[12]0.984768,q[13]0.987501,q[14]0.990107,q[15]0.99252,q[16]0.994678,q[17]0.996525,q[18]0.998015,q[19]0.999108,q[20]0.999776,theta0.035624,
y
PAi
0.983434,
y
PBi
0.00761193,
y
PCi
0.00580268,
y
PDi
0.0031517}
In[]:=
xA[Np+1]=.;xB[Np+1]=.;xC[Np+1]=.;q[Np+1]=.;q[1]=.;​​yA[1]=.;yB[1]=.;yC[1]=.;​​xA[Np+1][s_]:=
x
fA
;xB[Np+1][s_]:=
x
fB
;yA[1][s_]:=
y
PAi
[s];yB[1][s_]:=
y
PBi
[s];xC[Np+1][s_]:=
x
fC
;yC[1][s_]:=
y
PCi
[s];q[Np+1][s_]:=
q
f
;q[1][s_]:=
q
f
(1-theta[s]);​​init=Join[Flatten[Table[{xA[i][0](xA[i]/.sol),yA[i][0](yA[i]/.sol),xC[i][0](xC[i]/.sol),yC[i][0](yC[i]/.sol),xB[i][0](xB[i]/.sol),yB[i][0](yB[i]/.sol)},{i,2,Np}],1],Flatten[Table[q[i][0](q[i]/.sol),{i,2,Np}],1],{theta[0](theta/.sol),
y
PDi
[0](
y
PDi
/.sol),st[0]0.001,yA[1][0](
y
PAi
/.sol),yB[1][0](
y
PBi
/.sol),yC[1][0](
y
PCi
/.sol),yA[Np+1][0](yA[Np+1]/.sol),yB[Np+1][0](yB[Np+1]/.sol),yC[Np+1][0](yC[Np+1]/.sol),xA[1][0](xA[1]/.sol),xC[1][0](xC[1]/.sol),xB[1][0](xB[1]/.sol)}];​​initdev=Join[Flatten[Table[{xA[i]'[0]-0.1,yA[i]'[0]-0.1,xB[i]'[0]0.1,yB[i]'[0]0.1,xC[i]'[0]-0.1,yC[i]'[0]-0.1},{i,2,Np}],1],Flatten[Table[{q[i]'[0]-0.1},{i,2,Np}],1],{theta'[0]0.1,st'[0]0.1,xA[1]'[0]-0.1,xC[1]'[0]-0.1,xB[1]'[0]0.1,
y
PAi
'[0]0.1,
y
PBi
'[0]0.1,
y
PCi
'[0]0.1,
y
PDi
'[0]0.1,yA[Np+1]'[0]-0.1,yB[Np+1]'[0]-0.1,yC[Np+1]'[0]-0.1}];​​aux=Sum[xA[i]'[s]^2+yA[i]'[s]^2+xB[i]'[s]^2+yB[i]'[s]^2+xC[i]'[s]^2+yC[i]'[s]^2,{i,1,Np}]+Sum[q[i]'[s]^2,{i,2,Np}]+theta'[s]^2+st'[s]^2+
y
PAi
'[s]^2+
y
PBi
'[s]^2+
y
PDi
'[s]^2+
y
PCi
'[s]^2+yA[21]'[s]^2+yB[21]'[s]^2+yC[21]'[s]^21;​​unknown1=Join[Flatten[Table[{xA[i],yA[i],xB[i],yB[i],xC[i],yC[i]},{i,2,Np}],1],Flatten[Table[q[i],{i,2,Np}],1],{
y
PAi
,
y
PBi
,
y
PCi
,
y
PDi
,theta,st,yA[Np+1],yB[Np+1],yC[Np+1],xA[1],xB[1],xC[1]}];
In[]:=
In[]:=
SYS=Join[sys/.functions,{aux},init,initdev];​​SOL=Quiet@NDSolve[SYS,unknown1,{s,-1000,1000},AccuracyGoal7];
Mole fraction of CH4, N2 and Argon in the permeate stream versus stage cut
In[]:=
pB=ParametricPlot[Evaluate[{theta[s],yB[Np+1][s]}/.SOL[[1]]],{s,-8.9,65},PlotRange{{0.3,0.65},{0,0.12}},FrameTrue,GridLinesAutomatic,AspectRatio1,PlotStyle{Thickness[0.0125],Darker@Blue,Dashed},FrameTrue,FrameLabel{Style["stage cut",16],Style["mole fraction in permeate stream",16]}];
In[]:=
pC=ParametricPlot[Evaluate[{theta[s],yC[Np+1][s]}/.SOL[[1]]],{s,-8.9,65},PlotRange{{0.3,0.65},{0,0.12}},FrameTrue,GridLinesAutomatic,AspectRatio1,PlotStyle{Thickness[0.0125],Darker@Red,Dashed},FrameTrue,FrameLabel{Style["stage cut",16],Style["mole fraction in permeate stream",16]}];
In[]:=
pD=ParametricPlot[Evaluate[{theta[s],1-yA[Np+1][s]-yB[Np+1][s]-yC[Np+1][s]}/.SOL[[1]]],{s,-8.9,65},PlotRange{{0.3,0.65},{0,0.12}},FrameTrue,GridLinesAutomatic,AspectRatio1,PlotStyle{Thickness[0.0125],Darker@Green,Dashed},FrameTrue,FrameLabel{Style["stage cut",16],Style["mole fraction in permeate stream",16]},PlotLegends->LineLegend[{Darker@Blue,Darker@Red,Darker@Green},{"N2","CH4","Ar"}]];
In[]:=
A=Show[pB,pC,pD,PlotRange{{0.3,0.6},{0,0.10}}]
Out[]=
N2
CH4
Ar
Comparison between our results and Fig. 3 of Ref. 1 indicates close agreement
In[]:=
img=
;
In[]:=
Show[A,ImageSize400{1,1},Prolog{Raster[ImageData[img,DataReversedTrue],{Scaled[{0.00,0.00}],Scaled[{1,1}]}]}]
Out[]=
N2
CH4
Ar