Ticket #62: prob03.mso

File prob03.mso, 5.4 KB (added by Rodolfo Rodrigues, 15 years ago)

Problema 3

Line 
1#*---------------------------------------------------------------------
2* EMSO Model Library (EML) Copyright (C) 2004 - 2007 ALSOC.
3*
4* This LIBRARY is free software; you can distribute it and/or modify
5* it under the therms of the ALSOC FREE LICENSE as available at
6* http://www.enq.ufrgs.br/alsoc.
7*
8* EMSO Copyright (C) 2004 - 2007 ALSOC, original code
9* from http://www.rps.eng.br Copyright (C) 2002-2004.
10* All rights reserved.
11*
12* EMSO is distributed under the therms of the ALSOC LICENSE as
13* available at http://www.enq.ufrgs.br/alsoc.
14*
15*----------------------------------------------------------------------
16* 3. Vapor pressure data representation by polynomials and equations
17*----------------------------------------------------------------------
18*
19*   Description:
20*      This problem is part of a collection of 10 representative
21*       problems in Chemical Engineering for solution by numerical methods
22*       developed for Cutlip (1998).
23*
24*   Subject:
25*       * Mathematical Methods
26*               * Thermodynamics
27*
28*       Concepts utilized:
29*               Use of polynomials, a modified Clausis-Clapeyron, and the
30*       Antoine equations to model vapor pressure versus temperature data.
31*
32*       Numerical method:
33*               * Nonlinear regression
34*
35*   Reference:
36*       * CUTLIP et al. A collection of 10 numerical problems in
37*       chemical engineering solved by various mathematical software
38*       packages. Comp. Appl. in Eng. Education. v. 6, 169-180, 1998.
39*       * More informations and a detailed description of all problems
40*       is available online in http://www.polymath-software.com/ASEE
41*
42*----------------------------------------------------------------------
43* Author: Rodolfo Rodrigues
44* GIMSCOP/UFRGS - Group of Integration, Modeling, Simulation,
45*                                       Control, and Optimization of Processes
46* $Id$
47*--------------------------------------------------------------------*#
48using "types";
49
50
51
52#*---------------------------------------------------------------------
53*       Simple polynomial equation
54*--------------------------------------------------------------------*#
55
56FlowSheet simple_polynomial
57        PARAMETERS
58        N               as Integer              (Brief="Number of polynomial terms", Default=4);
59        a(N)    as Real                 (Brief="Parameters (coefficients) to be determined", Default=1);
60       
61        VARIABLES
62        P               as pressure             (Brief="Vapor pressure", DisplayUnit='mmHg');
63        T               as temperature  (Brief="Temperature");
64        n(N)    as Integer              (Brief="Exponencial");
65       
66        EQUATIONS
67        for i in [1:N]
68        "Exponencial"   
69                n(i) = (i - 1);
70        end
71       
72        "Polynomial expression"
73        P = sum(a*(T/'K')^n)*'mmHg';
74       
75        SPECIFY
76        T = 250*'K';
77end
78
79
80#*---------------------------------------------------------------------
81*       Clausius-Clapeyron equation
82*--------------------------------------------------------------------*#
83
84FlowSheet clausius_clapeyron
85        VARIABLES
86        P               as pressure             (Brief="Vapor pressure", DisplayUnit='mmHg');
87        T               as temperature  (Brief="Temperature");
88       
89        PARAMETERS
90        A               as Real                 (Brief="Parameters to be determined", Default=1);
91        B               as Real                 (Brief="Parameters to be determined", Unit='K', Default=1);
92       
93       
94        EQUATIONS
95        "Clausis-Clapeyron equation"
96        log(P/'mmHg') = A - B/T;
97       
98        SPECIFY
99        T = 250*'K';
100end
101
102
103#*---------------------------------------------------------------------
104*       Antoine equation
105*--------------------------------------------------------------------*#
106
107FlowSheet antoine
108        PARAMETERS
109        A               as Real                 (Brief="Parameters to be determined", Default=1);
110        B               as Real                 (Brief="Parameters to be determined", Unit='K', Default=1);
111        C               as Real                 (Brief="Parameters to be determined", Unit='K', Default=1);
112
113        VARIABLES
114        P               as pressure             (Brief="Vapor pressure", DisplayUnit='mmHg');
115        T               as temperature  (Brief="Temperature");
116       
117        EQUATIONS
118        "Antoine equation"
119        log(P/'mmHg') = A - B/(T + C);
120       
121        SPECIFY
122        T = 250*'K';
123end
124
125
126
127#*---------------------------------------------------------------------
128*       Parameter estimation to simple polynomial equation
129*--------------------------------------------------------------------*#
130
131Estimation est_pol as simple_polynomial
132        ESTIMATE
133        # PAR   START  LOWER  UPPER     UNIT
134        a(1)    1               -1e2    1e5;
135        a(2)    1               -1e2    1e5;
136        a(3)    1               -1e2    1e5;
137        a(4)    1               -1e2    1e5;
138       
139        EXPERIMENTS
140        # FILE                WEIGTH
141        "prob03.dat"                    1;
142
143        OPTIONS
144        NLPSolver(File = "ipopt_emso",
145                ObjTol = 1e-3,
146                AcceptableObjTol = 1e-3,
147                File = "complex");
148        Dynamic = false;
149end
150
151
152#*---------------------------------------------------------------------
153*       Parameter estimation to Clausius-Clapeyron equation
154*--------------------------------------------------------------------*#
155
156Estimation est_clau as clausius_clapeyron
157        ESTIMATE
158        # PAR   START  LOWER  UPPER     UNIT
159        A               1               -1e2    1e5;
160        B               1               -1e2    1e5     'K';
161       
162        EXPERIMENTS
163        # FILE                WEIGTH
164        "prob03.dat"                    1;
165
166        OPTIONS
167        NLPSolver(File = "ipopt_emso",
168                ObjTol = 1e-3,
169                AcceptableObjTol = 1e-3,
170                File = "complex");
171        Dynamic = false;
172end
173
174
175#*---------------------------------------------------------------------
176*       Parameter estimation to Antoine equation
177*--------------------------------------------------------------------*#
178
179Estimation est_ant as antoine
180        ESTIMATE
181        # PAR   START  LOWER  UPPER     UNIT
182        A               1               -1e2    1e5;
183        B               1               -1e2    1e5     'K';
184        C               1               -1e2    1e5     'K';
185
186        EXPERIMENTS
187        # FILE                WEIGTH
188        "prob03.dat"                    1;
189
190        OPTIONS
191        NLPSolver(File = "ipopt_emso",
192                ObjTol = 1e-3,
193                AcceptableObjTol = 1e-3,
194                File = "complex");
195        Dynamic = false;
196end