***************************************************************** *** Chapter 6 *** Test Problem 8 *** *** Ethylene Glycol - Lauryl Alcohol - Nitromethane *** -- Tangent plane distance minimization(UNIQUAC) ***************************************************************** SETS i components /1*3/ alias(i,j); ***************************************************************** * P = pressure (atm) * T = temperature (K) * feed(i) = mole fraction of component i in candidate phase (feed) * chempot(i) = chemical potential of component i in candidate phase * gform(i,k) = Gibbs energy of formation of component i in phase k * z, q(i), r(i), qp(i), zr(i), zrm, zb(i), za, psi(i) = pure component * and calculated parameters * tau(i,j) = binary interaction parameter (nonsymmetric) PARAMETERS P, T, chempot(i), feed(i), gform(i), minval, z, q(i), r(i), qp(i), zr(i), zrm, zb(i), za, psi(i), tau(i,j), bina(i,j); P = 1.0; T = 295.0; feed('1') = 0.29672; feed('2') = 0.46950; feed('3') = 0.23378; chempot('1') = -0.20102; chempot('2') = -0.56343; chempot('3') = -0.02272; gform('1') = 0.0; gform('2') = 0.0; gform('3') = 0.0; z = 10.0; q('1') = 2.2480; q('2') = 7.3720; q('3') = 1.8680; qp('1') = 2.2480; qp('2') = 7.3720; qp('3') = 1.8680; r('1') = 2.4088; r('2') = 8.8495; r('3') = 2.0086; bina('1','1') = 0.0; bina('1','2') = 247.2; bina('1','3') = 54.701; bina('2','1') = 69.69; bina('2','2') = 0.0; bina('2','3') = 305.52; bina('3','1') = 467.88; bina('3','2') = 133.19; bina('3','3') = 0.0; tau(i,j) = EXP(-bina(i,j)/T); zr(i) = (z*q(i)/2.0 - 1.0)/r(i); minval = 100.0; LOOP(i, IF( (zr(i) LT minval), minval = zr(i))); zrm = minval; zb(i) = SUM(j$(ord(j) NE ord(i)), zr(j)-zrm); za = zrm + SUM(i,zr(i)-zrm); psi(i) = qp(i) + r(i)*za; ******************************************************************* * dist = tangent plane distance function * x(i) = mole fraction of component i VARIABLES dist, x(i); ******************************************************************* * obj = objective function * molesum = mole fractions sum to 1 EQUATIONS obj molesum; obj.. dist =e= SUM(i, x(i)*((z/2.0)*q(i)*LOG(q(i))-zr(i)*r(i)*LOG(r(i))-chempot(i))) +SUM(i, za*r(i)*x(i))*LOG(SUM(j,r(j)*x(j))) +SUM(i, zb(i)*r(i)*x(i)*LOG(x(i))) +SUM(i, -zb(i)*r(i)*x(i)*LOG(SUM(j, r(j)*x(j)))) +SUM(i, (z/2.0)*q(i)*x(i)*LOG(x(i))) +SUM(i, -(z/2.0)*q(i)*x(i)*LOG(SUM(j, q(j)*x(j)))) +SUM(i, qp(i)*x(i))*LOG(SUM(j,qp(j)*x(j))) +SUM(i, qp(i)*x(i)*LOG(x(i))) +SUM(i, -qp(i)*x(i)*LOG(SUM(j, qp(j)*tau(j,i)*x(j)))) +SUM(i, -psi(i)*x(i)*LOG(x(i))); molesum.. SUM(i, x(i)) =e= 1.0; MODEL tpd / all /; x.lo(i) = 0.000001; x.up(i) = 1.0; x.l('1') = 0.71540; x.l('2') = 0.00336; x.l('3') = 0.28124; SOLVE tpd USING nlp MINIMIZING dist;