methanol.gms : Methanol to hydrocarbons COPS 2.0 #13

Description

Determine the reaction coefficients for the conversion of methanol
into various hydrocarbons.

This model is from the COPS benchmarking suite.
See http://www-unix.mcs.anl.gov/~more/cops/.

The number of discretization points can be specified using the command
line parameter --nh. COPS performance tests have been reported for nh
= 50, 100, 200, 400


Large Model of Type : NLP


Category : GAMS Model library


Main file : methanol.gms   includes :  copspart.inc

$title Methanol to Hydrocarbons COPS 2.0 #13 (METHANOL,SEQ=241)

$onText
Determine the reaction coefficients for the conversion of methanol
into various hydrocarbons.

This model is from the COPS benchmarking suite.
See http://www-unix.mcs.anl.gov/~more/cops/.

The number of discretization points can be specified using the command
line parameter --nh. COPS performance tests have been reported for nh
= 50, 100, 200, 400


Dolan, E D, and More, J J, Benchmarking Optimization
Software with COPS. Tech. rep., Mathematics and Computer
Science Division, 2000.

Tjoa, I B, and Biegler, L T, Simultaneous Solution and
Optimization Strategies for Parameter Estimation of
Differential-Algebraic Equations Systems. Ind. Eng. Chem.
Res. 30 (1991), 376-385.

Averick, B M, Carter, R G, More, J J, and Xue, G L, The
MINPACK-2 Test Problem Collection. Tech. rep., Mathematics
and Computer Science Division, Argonne National Laboratory,
1992.

Maria, G, An Adaptive Strategy for Solving Kinetic Model
Concomitant Estimation - Reduction Problems. Can. J. Chem.
Eng. 67 (1989), 825.

Ascher, U M, Mattheij, R M M, and Russell, R D, Numerical
Solution of Boundary Value Problems for Ordinary
Differential Equations. SIAM, 1995.

Floudas, C A, Pardalos, P M, Adjiman, C S, Esposito, W R,
Gumus, Z H, Harding, S T, Klepeis, J L, Meyer, C A, and
Schweiger, C A, Handbook of Test Problems in Local and
Global Optimization. Kluwer Academic Publishers, 1999.

Keywords: nonlinear programming, chemical engineering, chemical reaction, conversion,
          chemical kinetics, reaction rate coefficient
$offText

$if not set nh $set nh 50

Set
   ne 'differential equations' / ne1*ne3    /
   np 'ODE parameters'         / np1*np5    /
   nc 'collocation points'     / nc1*nc3    /
   nh 'partition intervals'    / nh1*nh%nh% /
   nm 'measurements'           / 1*17       /;

Parameter
   bc(ne)  'ODE initial conditions' / ne1 1, ne2 0, ne3 0 /
   tau(nm) 'times at which observations made'
           /  1  0.000,   2  0.050,   3  0.065,   4  0.080,   5  0.123
              6  0.233,   7  0.273,   8  0.354,   9  0.397,  10  0.418
             11  0.502,  12  0.553,  13  0.681,  14  0.750,  15  0.916
             16  0.937,  17  1.122                                     /;

Table z(nm,ne) 'observation'
            ne1     ne2     ne3
    1    1.0000       0       0
    2    0.7085  0.1621  0.0811
    3    0.5971  0.1855  0.0965
    4    0.5537  0.1989  0.1198
    5    0.3684  0.2845  0.1535
    6    0.1712  0.3491  0.2097
    7    0.1198  0.3098  0.2628
    8    0.0747  0.3576  0.2467
    9    0.0529  0.3347  0.2884
   10    0.0415  0.3388  0.2757
   11    0.0261  0.3557  0.3167
   12    0.0208  0.3483  0.2954
   13    0.0085  0.3836  0.2950
   14    0.0053  0.3611  0.2937
   15    0.0019  0.3609  0.2831
   16    0.0018  0.3485  0.2846
   17    0.0006  0.3698  0.2899;

$batInclude copspart.inc nc3 17

Positive Variable theta(np) 'ODE parameters';

Equation
   collocation_eqn1(nh,nc)
   collocation_eqn2(nh,nc)
   collocation_eqn3(nh,nc);

collocation_eqn1(i,j)..
   Duc[i,j,'ne1'] =e= - (2*theta['np2'] - (theta['np1']*uc[i,j,'ne2'])
                   /     ((theta['np2']  +  theta['np5'])*uc[i,j,'ne1'] + uc[i,j,'ne2'])
                   +       theta['np3']  +  theta['np4'])*uc[i,j,'ne1'];

collocation_eqn2(i,j)..
   Duc[i,j,'ne2'] =e= (theta['np1']*uc[i,j,'ne1']*(theta['np2']*uc[i,j,'ne1'] - uc[i,j,'ne2']))
                   / ((theta['np2'] + theta['np5'])*uc[i,j,'ne1'] + uc[i,j,'ne2'])
                   +   theta['np3']*uc[i,j,'ne1'];

collocation_eqn3(i,j)..
   Duc[i,j,'ne3'] =e= (theta['np1']*uc[i,j,'ne1']*(uc[i,j,'ne2'] + theta['np5']*uc[i,j,'ne1']))
                   / ((theta['np2'] + theta['np5'])*uc[i,j,'ne1'] + uc[i,j,'ne2'])
                   +   theta['np4']*uc[i,j,'ne1'];

theta.l(np)   = 1;
v.fx['nh1',s] = bc(s);

Model methanol / all /;

$if set workSpace methanol.workSpace = %workSpace%

solve methanol minimizing obj using nlp;