# Contents of /trunk/models/phaseq_comp.a4c

Revision 1 - (show annotations) (download) (as text)
Fri Oct 29 20:54:12 2004 UTC (19 years, 10 months ago) by aw0a
File MIME type: text/x-ascend
File size: 6126 byte(s)
```Setting up web subdirectory in repository
```
 1 REQUIRE "atoms.a4l"; 2 (* => atoms.a4l, measures.a4l, system.a4l, basemodel.a4l *) 3 PROVIDE "phaseq_comp.a4c"; 4 (* 5 * This file is part of the ASCEND Modeling Library and is released 6 * under the GNU Public License as described at the end of this file. 7 * 8 * Use of this module is demonstrated by the associated script file 9 * phaseq_comp.a4s. 10 *) 11 12 (* 13 Ascend model of the phase Equilibrium example presented by Zaher 14 -- Conditional Modeling. Ph.D. Thesis, Carnegie Mellon University, 15 Pittsburgh, PA, 15213. 1995 --. The problem consists of a phase equilibrium 16 calculation of a multicomponent mixture. For each of the phases (3 phases 17 are possible: organic-liquid, inorganic-liquid, and vapor) there is a 18 disjunctive statement which represents whether the phase exists or not. 19 Each disjunctive statement is represented by using a complementarity 20 formulation, in such a way that we can solve the problem by using a 21 conventional nonlinear solver. 22 23 This model requires: 24 "system.a4l" 25 "atoms.a4l" 26 *) 27 28 (* ************************************************* *) 29 30 MODEL phaseq; 31 32 phases IS_A set OF symbol_constant; 33 components IS_A set OF symbol_constant; 34 k_terms IS_A set OF integer_constant; 35 z[components] IS_A fraction; 36 y[phases][components] IS_A fraction; 37 phi[phases] IS_A fraction; 38 exist[phases] IS_A boolean_var; 39 P IS_A pressure; 40 T IS_A temperature; 41 Pcr[components] IS_A pressure; 42 Tcr[components] IS_A temperature; 43 B[components][k_terms] IS_A factor; 44 C[k_terms] IS_A factor; 45 A[components][components] IS_A temperature; 46 h1[phases],h2[phases] IS_A fraction; 47 48 (* Definition of sets *) 49 50 components :== ['B','E','W']; 51 phases :== ['A','O','V']; 52 k_terms :== [1..4]; 53 54 (* Complementarity Equations *) 55 56 FOR i IN phases CREATE 57 SUM[y[i][j] | j IN components ] = 1.0 - h1[i]; 58 phi[i] = h2[i]; 59 h1[i] * h2[i] = 0; 60 END FOR; 61 62 (* Invariant Equations *) 63 64 FOR i IN components CREATE 65 y['V'][i] = y['A'][i] * (Pcr[i]/P) * exp( 66 ((1/T) * 67 SUM[ ( A[i][j] - (0.5* 68 SUM[ A[j][k] * y['A'][k] | k IN components] 69 ) ) * y['A'][j] 70 | j IN components ]) + 71 ((Tcr[i]/T) * 72 SUM[ B[i][k] * ( (1 - (T/Tcr[i]))^C[k] ) | k IN k_terms] ) ); 73 74 y['V'][i] = y['O'][i] * (Pcr[i]/P) * exp( 75 ((1/T) * 76 SUM[ ( A[i][j] - (0.5* 77 SUM[ A[j][k] * y['O'][k] | k IN components] 78 ) ) * y['O'][j] 79 | j IN components ]) + 80 ((Tcr[i]/T) * 81 SUM[ B[i][k] * ( (1 - (T/Tcr[i]))^C[k] ) | k IN k_terms] ) ); 82 END FOR; 83 84 FOR i IN components CREATE 85 SUM[phi[j]*y[j][i] | j IN phases] = z[i]; 86 END FOR; 87 88 89 METHODS 90 91 METHOD specify; 92 P.fixed := TRUE; 93 T.fixed := TRUE; 94 FOR i IN components DO 95 z[i].fixed := TRUE; 96 Pcr[i].fixed := TRUE; 97 Tcr[i].fixed := TRUE; 98 FOR j IN components DO 99 A[i][j].fixed := TRUE; 100 END FOR; 101 FOR j IN k_terms DO 102 B[i][j].fixed := TRUE; 103 END FOR; 104 END FOR; 105 FOR j IN k_terms DO 106 C[j].fixed := TRUE; 107 END FOR; 108 END specify; 109 110 METHOD bound_self; 111 FOR i IN components DO 112 FOR j IN components DO 113 A[i][j].lower_bound := 0 {K}; 114 END FOR; 115 END FOR; 116 END bound_self; 117 118 METHOD default_self; 119 (* Constants *) 120 Tcr['B'] := 562.2 {K}; 121 Tcr['E'] := 516.2 {K}; 122 Tcr['W'] := 647.4 {K}; 123 Pcr['B'] := 48.3 {atm}; 124 Pcr['E'] := 63.0 {atm}; 125 Pcr['W'] := 217.6 {atm}; 126 C[1] := 1.0; 127 C[2] := 1.5; 128 C[3] := 3.0; 129 C[4] := 6.0; 130 A['B']['B'] := 0.0{K}; 131 A['B']['E'] := 576.3 {K}; 132 A['B']['W'] := 1074.5 {K}; 133 A['E']['B'] := 576.3 {K}; 134 A['E']['E'] := 0.0 {K}; 135 A['E']['W'] := 351.8 {K}; 136 A['W']['B'] := 1074.5 {K}; 137 A['W']['E'] := 351.8 {K}; 138 A['W']['W'] := 0.0 {K}; 139 B['B'][1] := -6.98273; 140 B['B'][2] := 1.33213; 141 B['B'][3] := -2.62863; 142 B['B'][4] := -3.33399; 143 B['E'][1] := -8.51838; 144 B['E'][2] := 0.34163; 145 B['E'][3] := -5.73683; 146 B['E'][4] := 8.32581; 147 B['W'][1] := -7.76451; 148 B['W'][2] := 1.45838; 149 B['W'][3] := -2.77580; 150 B['W'][4] := -1.23303; 151 152 RUN bound_self; 153 END default_self; 154 155 METHOD values; 156 (* fixed *) 157 T := 340.0 {K}; 158 P := 1.0 {atm}; 159 z['B'] := 0.50; 160 z['E'] := 0.15; 161 z['W'] := 0.35; 162 (* initial values *) 163 y['A']['B'] := 0.02; 164 y['A']['E'] := 0.03; 165 y['A']['W'] := 0.95; 166 167 y['O']['B'] := 0.95; 168 y['O']['E'] := 0.03; 169 y['O']['W'] := 0.02; 170 171 y['V']['B'] := 0.50; 172 y['V']['E'] := 0.15; 173 y['V']['W'] := 0.35; 174 175 phi['A'] := 0.0; 176 phi['O'] := 0.0; 177 phi['V'] := 0.0; 178 END values; 179 180 END phaseq; 181 182 183 (* 184 * phaseq_comp.a4c 185 * by Vicente Rico-Ramirez 186 * April 10, 1998 187 * Part of the ASCEND Library 188 * \$Date: 1998/06/17 19:13:37 \$ 189 * \$Revision: 1.3 \$ 190 * \$Author: mthomas \$ 191 * \$Source: /afs/cs.cmu.edu/project/ascend/Repository/models/phaseq_comp.a4c,v \$ 192 * 193 * This file is part of the ASCEND Modeling Library. 194 * 195 * Copyright (C) 1998 Carnegie Mellon University 196 * 197 * The ASCEND Modeling Library is free software; you can redistribute 198 * it and/or modify it under the terms of the GNU General Public 199 * License as published by the Free Software Foundation; either 200 * version 2 of the License, or (at your option) any later version. 201 * 202 * The ASCEND Modeling Library is distributed in hope that it will be 203 * useful, but WITHOUT ANY WARRANTY; without even the implied 204 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 205 * See the GNU General Public License for more details. 206 * 207 * You should have received a copy of the GNU General Public License 208 * along with the program; if not, write to the Free Software 209 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139 USA. Check 210 * the file named COPYING. 211 *)

 john.pye@anu.edu.au ViewVC Help Powered by ViewVC 1.1.22