Natural gas sweetening by gas permeation
Authors: Housam Binous and Ahmed Bellagi
Natural gas sweetening by gas permeation
Authors: Housam Binous and Ahmed Bellagi
Authors: Housam Binous and Ahmed Bellagi
The separation of CO2 from methane and other gases is of primary importance. Traditional method of cleaning natural gas is the chemical absorption using amine-based solvents. Membrane separation is an interesting alternative if combined with re-injection of CO2 rich gas (i.e., permeate stream) as shown in Fig. 2.1 of Ref. 1.Here, following Ref. 1, we consider the following feed stream composed of CO2, CH4, other hydrocarbons and water:Assuming cross-flow pattern, we successfully reproduce, using the methodology of Ref. 2, the results obtained for CASE 1 of Ref. 1. Such later results were obtained by Ommedal using Aspen Custom Modeler and Aspen-Plus. One advantage of our methodology consists in performing a parametric study where the membrane area as well as permeate and retentate compositions are given versus stage cut. References:[1] Roy Sømme Ommedal, Process evaluation of novel CO2 capture processes for subsea application, FMH606 Master’s Thesis 2021, Process Technology, University of South-eastern Norway, 2021. https://openarchive.usn.no/usn-xmlui/handle/11250/2774684[2] [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[]:=
In[]:=
unknown=Join[Flatten[Table[{{yA[i],/.soli},{xB[i],xBin},{yB[i],/.soli},{xC[i],xCin},{yC[i],/.soli},{xD[i],xDin},{yD[i],/.soli},{xE[i],xEin},{yE[i],/.soli}},{i,1,Np+1}],1],Flatten[Table[{{xA[i],xAin},{q[i],}},{i,1,Np+1}],1],{{theta,0.41}}];
y
PAi
y
PBi
y
PCi
y
PDi
y
PEi
q
f
In[]:=
sol=FindRoot[sys/.st->1,unknown,MaxIterations10000,AccuracyGoal->10]
Out[]=
{yA[1]0.975609,xB[1]0.127003,yB[1]0.00330818,xC[1]0.0320008,yC[1]0.00147103,xD[1]0.0320007,yD[1]0.00205141,xE[1]0.00800018,yE[1]0.000639166,yA[2]0.975609,xB[2]0.127003,yB[2]0.00330818,xC[2]0.0320007,yC[2]0.00147102,xD[2]0.0320007,yD[2]0.0020514,xE[2]0.00800018,yE[2]0.000639166,yA[3]0.975609,xB[3]0.127003,yB[3]0.00330817,xC[3]0.0320007,yC[3]0.00147102,xD[3]0.0320007,yD[3]0.0020514,xE[3]0.00800016,yE[3]0.000639164,yA[4]0.975609,xB[4]0.127002,yB[4]0.00330816,xC[4]0.0320006,yC[4]0.00147102,xD[4]0.0320006,yD[4]0.00205139,xE[4]0.00800014,yE[4]0.000639162,yA[5]0.975609,xB[5]0.127002,yB[5]0.00330815,xC[5]0.0320005,yC[5]0.00147101,xD[5]0.0320005,yD[5]0.00205138,xE[5]0.00800012,yE[5]0.000639159,yA[6]0.975609,xB[6]0.127002,yB[6]0.00330813,xC[6]0.0320004,yC[6]0.001471,xD[6]0.0320004,yD[6]0.00205137,xE[6]0.00800009,yE[6]0.000639156,yA[7]0.975609,xB[7]0.127001,yB[7]0.00330811,xC[7]0.0320003,yC[7]0.001471,xD[7]0.0320003,yD[7]0.00205136,xE[7]0.00800006,yE[7]0.000639153,yA[8]0.975609,xB[8]0.127001,yB[8]0.0033081,xC[8]0.0320002,yC[8]0.00147099,xD[8]0.0320002,yD[8]0.00205135,xE[8]0.00800004,yE[8]0.00063915,yA[9]0.975609,xB[9]0.127,yB[9]0.00330809,xC[9]0.0320001,yC[9]0.00147098,xD[9]0.0320001,yD[9]0.00205135,xE[9]0.00800002,yE[9]0.000639148,yA[10]0.975609,xB[10]0.127,yB[10]0.00330808,xC[10]0.032,yC[10]0.00147098,xD[10]0.032,yD[10]0.00205134,xE[10]0.008,yE[10]0.000639147,yA[11]0.975609,xB[11]0.127,yB[11]0.00330808,xC[11]0.032,yC[11]0.00147098,xD[11]0.032,yD[11]0.00205134,xE[11]0.008,yE[11]0.000639146,xA[1]0.795996,q[1]0.999975,xA[2]0.795996,q[2]0.999976,xA[3]0.795996,q[3]0.999978,xA[4]0.795996,q[4]0.99998,xA[5]0.795997,q[5]0.999984,xA[6]0.795998,q[6]0.999988,xA[7]0.795998,q[7]0.999991,xA[8]0.795999,q[8]0.999995,xA[9]0.796,q[9]0.999998,xA[10]0.796,q[10]0.999999,xA[11]0.796,q[11]1.,theta0.0000247477}
In[]:=
st=.;
In[]:=
init=Join[Flatten[Table[{xA[i][0](xA[i]/.sol),yA[i][0](xA[i]/.sol),xB[i][0](xB[i]/.sol),yB[i][0](yB[i]/.sol),xC[i][0](xC[i]/.sol),yC[i][0](xC[i]/.sol),xD[i][0](xD[i]/.sol),yD[i][0](xD[i]/.sol),xE[i][0](xE[i]/.sol),yE[i][0](xE[i]/.sol),q[i][0](q[i]/.sol)},{i,1,Np+1}],1],{theta[0](theta/.sol),st[0]1}];
In[]:=
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,xD[i]'[0]0.1,yD[i]'[0]0.1,xE[i]'[0]0.1,yE[i]'[0]0.1,q[i]'[0]0.1},{i,1,Np+1}],1],{theta'[0]0.1,st'[0]-1}];
In[]:=
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+xD[i]'[s]^2+yD[i]'[s]^2+xE[i]'[s]^2+yE[i]'[s]^2+q[i]'[s]^2,{i,1,Np+1}]+theta'[s]^2+st'[s]^21;
In[]:=
unknown1=Join[Flatten[Table[{xA[i],yA[i],xB[i],yB[i],xC[i],yC[i],xD[i],yD[i],xE[i],yE[i],q[i]},{i,1,Np+1}],1],{theta,st}];
In[]:=
In[]:=
SYS=Join[sys/.functions,{aux},init,initdev];
In[]:=
SOL=Quiet@NDSolve[SYS,unknown1,{s,-10^5,10^5},AccuracyGoal10];
In[]:=
solA=First@NSolve[theta[s]yAP+(1-theta[s])xA[1][s]xAin,yAP]
Out[]=
yAP
0.796-1.(1.-1.theta[s])xA[1][s]
theta[s]
In[]:=
solB=First@NSolve[theta[s]yBP+(1-theta[s])xB[1][s]xBin,yBP]
Out[]=
yBP
0.127-1.(1.-1.theta[s])xB[1][s]
theta[s]
In[]:=
solC=First@NSolve[theta[s]yCP+(1-theta[s])xC[1][s]xCin,yCP]
Out[]=
yCP
0.032-1.(1.-1.theta[s])xC[1][s]
theta[s]
In[]:=
solD=First@NSolve[theta[s]yDP+(1-theta[s])xD[1][s]xDin,yDP]
Out[]=
yDP
0.032-1.(1.-1.theta[s])xD[1][s]
theta[s]
In[]:=
solE=First@NSolve[theta[s]yEP+(1-theta[s])xE[1][s]xEin,yEP]
Out[]=
yEP
0.008-1.(1.-1.theta[s])xE[1][s]
theta[s]
In[]:=
x=x/.FindRoot[(xA[1][s]/.SOL/.sx)0.08,{x,1000}]
Out[]=
-90480.3
In[]:=
st[s]/.SOL/.sx
Out[]=
{90481.4}
In[]:=
yAP/.solA/.SOL/.sx
Out[]=
{0.936482}
In[]:=
yBP/.solB/.SOL/.sx
Out[]=
{0.0279658}
In[]:=
yCP/.solC/.SOL/.sx
Out[]=
{0.0111793}
In[]:=
yDP/.solD/.SOL/.sx
Out[]=
{0.0142732}
In[]:=
yEP/.solE/.SOL/.sx
Out[]=
{0.00412687}
ResultsforCASE1reproducedfromRef.1
ResultsforCASE1reproducedfromRef.1
Final checks : stage cut and membrane area
Final checks : stage cut and membrane area