chem.gms : Chemical Equilibrium Problem

Description

The problem is to find the equilibrium composition of a
mixture of different atoms.


Small Model of Type : NLP


Category : GAMS Model library


Main file : chem.gms

$title Chemical Equilibrium Problem (CHEM,SEQ=21)

$onText
The problem is to find the equilibrium composition of a
mixture of different atoms.


Bracken, J, and McCormick, G P, Chapter 5. In Selected Applications
of Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 48-49.

Keywords: nonlinear programming, chemical equilibrium problem, chemical engineering
$offText

Set
   c 'compounds' / H, H2, H2O, N, N2, NH, NO, O, O2, OH   /
   i 'atoms'     / H 'hydrogen', N 'nitrogen', O 'oxygen' /;

Table a(i,c) 'atoms per compound'
       H  H2  H2O  N  N2  NH  NO  O  O2  OH
   H   1   2    2          1              1
   N               1   2   1   1
   O            1              1  1   2   1;

Parameter
   mix(i)   'number of elements in mixture' / h 2, n 1, o 1 /
   gibbs(c) 'gibbs free energy at 3500 k and 750 psi'
            / H  -10.021, H2  -21.096, H2O -37.986, N   -9.846, N2 -28.653
              NH -18.918, NO -28.032 , O   -14.640, o2 -30.594, OH -26.11  /
   gplus(c) 'gibbs energy plus pressure';

gplus(c) = gibbs(c) + log(750*.07031);

display gplus;

Variable
   x(c)    'number of mols in mixture'
   xb      'total number of mols in mixture'
   energy  'total free energy in mixture';

Positive Variable x, xb;

Equation
   cdef(i) 'component definition'
   edef    'energy definition'
   xdef    'total mol definition';

cdef(i)..  sum(c, a(i,c)*x(c)) =e= mix(i);

xdef..     xb     =e= sum(c, x(c));

edef..     energy =e= sum(c, x(c)*(gplus(c) + log(x(c)/xb)));

x.lo(c) = .001;
xb.lo   = .01;

Model mixer 'chemical mix for N2H4+O2' / all /;

solve mixer minimizing energy using nlp;