Sets i hot streams /1*4/ j cold streams /1*5/ k superstructure stage /1*5/ knew counters for temperature /1*6/ n1 points for area regions /1*100/ n grid points for area points /1*101/; Scalars cu cold utility /1/ hu hot utility /1/ area_high upper limit on area /5000/ film_hu film coefficient for hot utility / 0.5 / film_cu film coefficient for cold utility / 0.5 / Tin_cu cold utility entry temperature / 15 / Tout_cu cold utility exit temperature / 30 / Tin_hu hot utility entry temperature / 330 / Tout_hu hot utility exit temperature / 250 /; Parameters Tin_HOT(i) input temperature of hot streams / 1 = 327,2 = 220, 3 = 220, 4 = 160 / Tout_HOT(i) outlet temperature of hot streams / 1 = 40, 2 = 160, 3 = 60, 4 = 45 / Tin_COLD(j) inlet temperature of cold streams /1 = 100, 2 = 35, 3 = 85, 4 = 60, 5 = 140 / Tout_COLD(j) outlet temperature of cold streams /1 = 300, 2 = 164, 3 = 138, 4 = 170, 5 = 300 / Fhot(i) heat capacity flowrate of hot streams / 1 = 100, 2 = 160, 3 = 60, 4 = 400 / Fcold(j) heat capacity flowrate of cold streams /1 = 100, 2 = 70, 3 = 350, 4 = 60, 5 = 200 / filmhot(i) film coefficient for hot streams / 1 = 0.5, 2 = 0.4, 3 = 0.14, 4 = 0.6 / filmcold(j) film coefficient for cold streams /1 = 0.35, 2 = 0.7, 3 = 0.5, 4 = 0.14, 5 = 0.6 / Scalars EMAT exchange minimum approach temperature / 10 / omega upper bound for heat transfer / 10000000/ Gamma upper bound for temperature difference / 500 / beta scale factors for area cost / 1 / CF fixed cost for units /2000/ C area cost coefficients / 70 / CHU cost of hot utility /60/ CCU cost of cold utility /6/ LMTD_LO lower bound on LMTD /10/ LMTD_HI upper bound on LMTD /500/; Parameter U(i,j) overall heat transfer coefficient ; U(i,j) = 1/((1/filmhot(i)) + (1/filmcold(j))); Parameter Uh(j) overall heat transfer coefficient between hot utility and cold streams; Uh(j) = 1/((1/filmcold(j)) + (1/film_hu)); Parameter Uc(i) overall heat transfer coefficient between cold utility and hot streams; Uc(i) = 1/((1/filmhot(i)) + (1/film_cu)); Parameter area_points1(i,j,k,n) Boundary points for division of area; area_points1(i,j,k,'1') = 0; loop(n$(ord(n)<>1), area_points1(i,j,k,n) = area_points1(i,j,k,n-1) + (area_high/100); ); Parameter area_points2(i,n) Boundary points for division of area; area_points2(i,'1') = 0; loop(n$(ord(n)<>1), area_points2(i,n) = area_points2(i,n-1) + (area_high/100); ); Parameter area_points3(j,n) Boundary points for division of area; area_points3(j,'1') = 0; loop(n$(ord(n)<>1), area_points3(j,n) = area_points3(j,n-1) + (area_high/100); ); Scalars delta_LO minimum value of delta /0/ delta_HI maximum value of delta /100/; * ---------------------------------------------------------------------- * Variable definition * --------------------------------------------------------------------- Binary Variables y1(i,j,k) Existence of HE between hot stream i and cold stream j in zone k y2(i) Existence of HE between cold utility and stream i y3(j) Existence of HE between hot utility and stream j w1(i,j,k,n1) binary variables for existence of the current area division w2(i,n1) w3(j,n1); Positive Variables T1(i,knew) temperature of hot stream i at stage k T2(j,knew) temperature of cold stream j at stage k q1(i,j,k) heat tranfer in exchangers q2(i) q3(j) area1(i,j,k) area of heat exchangers area2(i) area3(j) deltaT1(i,j,knew) temperature approaches for heat transfer deltaT2(i) deltaT3(j) LMTD1(i,j,k) log mean temperature differences LMTD2(i) LMTD3(j) * -----------Variables for linearization of area term------------------ delta1(i,j,k,n1) variables for each division of area gamma1(i,j,k,n1) variables for the bilinear term delta2(i,n1) variables for each division of area gamma2(i,n1) variables for the bilinear term delta3(j,n1) variables for each division of area gamma3(j,n1) variables for the bilinear term; * ----------------------------------------------------------------------- Variable TAC total annual cost; * ------------------------------------------------------------------------ * Equations * ------------------------------------------------------------------------ Equations cost defines objective function hbhot(i) heat balance for hot streams hbcold(j) heat balance for cold streams stagebalanceh(i,k) heat balance for hot streams for a given stage stagebalancec(j,k) heat balance for cold streams for a given stage inlethot(i) assignment of inlet temperatures inletcold(j) tempfeasible1(i,k) feasibility of temperatures tempfeasible2(j,k) tempfeasible3(i) tempfeasible4(j) hotload(i) hot utility load coldload(j) cold utility load heatlimit1(i,j,k) logical constraint on heat exchanged heatlimit2(i) heatlimit3(j) approachT1(i,j,k) calculation of approach temperatures approachT2(i,j,k) approachT3(i) approachT4(j) approachT5(i,j,k) logmean1(i,j,k) logmean2(i) logmean3(j) nosplitting1(i,k) nosplitting2(j,k) area_value1(i,j,k) area_value2(i) area_value3(j) area_constraint1La(i,j,k,n1) area_constraint1L(i,j,k,n1) area_constraint1G(i,j,k,n1) area_constraint2L(i,n1) area_constraint2La(i,n1) area_constraint2G(i,n1) area_constraint3L(j,n1) area_constraint3La(j,n1) area_constraint3G(j,n1) logical_area1(i,j,k,n1) logical_area2(i,n1) logical_area3(j,n1) heat_balance1(i,j,k) heat_balance2(i) heat_balance3(j) gamma_constraint11(i,j,k,n1) gamma_constraint12(i,j,k,n1) gamma_constraint13(i,j,k,n1) gamma_constraint14(i,j,k,n1) gamma_constraint21(i,n1) gamma_constraint22(i,n1) gamma_constraint23(i,n1) gamma_constraint24(i,n1) gamma_constraint31(j,n1) gamma_constraint32(j,n1) gamma_constraint33(j,n1) gamma_constraint34(j,n1); * -------------------------------------------------------------------------------- cost .. TAC =e= sum(i,CCU*q2(i)) + sum(j,CHU*q3(j)) + sum((i,j,k),CF*y1(i,j,k)) + sum(i,CF*y2(i)) + sum(j,CF*y3(j)) + sum((i,j,k),C*(area1(i,j,k)**beta)) + sum(i,C*(area2(i)**beta)) + sum(j,C*(area3(j)**beta)); hbhot(i).. (Tin_HOT(i) - Tout_HOT(i))*Fhot(i) =e= sum((k,j),q1(i,j,k)) + q2(i); hbcold(j).. (Tout_COLD(j) - Tin_COLD(j))*Fcold(j) =e= sum((k,i),q1(i,j,k)) + q3(j); stagebalanceh(i,k).. (sum(knew$(ord(knew)=ord(k)),T1(i,knew)) - sum(knew$(ord(knew)=(ord(k)+1)),T1(i,knew)))*Fhot(i) =e= sum(j,q1(i,j,k)); stagebalancec(j,k).. (sum(knew$(ord(knew)=ord(k)),T2(j,knew)) - sum(knew$(ord(knew)=(ord(k)+1)),T2(j,knew)))*Fcold(j) =e= sum(i,q1(i,j,k)); inlethot(i).. T1(i,'1') =e= Tin_HOT(i); inletcold(j).. T2(j,'6') =e= Tin_COLD(j); tempfeasible1(i,k) .. sum(knew$(ord(knew)=ord(k)),T1(i,knew)) =G= sum(knew$(ord(knew)=(ord(k)+1)),T1(i,knew)); tempfeasible2(j,k) .. sum(knew$(ord(knew)=ord(k)),T2(j,knew)) =G= sum(knew$(ord(knew)=(ord(k)+1)),T2(j,knew)); tempfeasible3(i) .. Tout_HOT(i) =L= T1(i,'6'); tempfeasible4(j) .. Tout_COLD(j) =G= T2(j,'1'); hotload(i) .. (T1(i,'6') - Tout_HOT(i))*Fhot(i) =e= q2(i); coldload(j) .. (Tout_COLD(j) - T2(j,'1'))*Fcold(j) =e= q3(j); heatlimit1(i,j,k) .. q1(i,j,k) =L= omega*y1(i,j,k); heatlimit2(i) .. q2(i) =L= omega*y2(i); heatlimit3(j) .. q3(j) =L= omega*y3(j); approachT1(i,j,k) .. sum(knew$(ord(knew)=ord(k)),deltaT1(i,j,knew)) =L= sum(knew$(ord(knew)=ord(k)),T1(i,knew)) - sum(knew$(ord(knew)=ord(k)),T2(j,knew)) + Gamma*(1-y1(i,j,k)); approachT2(i,j,k) .. sum(knew$(ord(knew)=(ord(k)+1)),deltaT1(i,j,knew)) =L= sum(knew$(ord(knew)=(ord(k)+1)),T1(i,knew)) - sum(knew$(ord(knew)=(ord(k)+1)),T2(j,knew)) + Gamma*(1-y1(i,j,k)); approachT3(i) .. deltaT2(i) =L= T1(i,'6') - Tout_cu + Gamma*(1-y2(i)); approachT4(j) .. deltaT3(j) =L= Tout_hu - T2(j,'1') + Gamma*(1-y3(j)); approachT5(i,j,k) .. sum(knew$(ord(knew)=ord(k)),deltaT1(i,j,knew)) =G= EMAT; logmean1(i,j,k) .. LMTD1(i,j,k) =L= ((sum(knew$(ord(knew)=ord(k)),deltaT1(i,j,knew))+sum(knew$(ord(knew)=(ord(k)+1)),deltaT1(i,j,knew)))/6) + ((2/3)*sqrt(sum(knew$(ord(knew)=ord(k)),deltaT1(i,j,knew))*sum(knew$(ord(knew)=(ord(k)+1)),deltaT1(i,j,knew)))); logmean2(i) .. LMTD2(i) =L= ((deltaT2(i) + Tout_HOT(i) - Tin_cu)/6) + ((2/3)*sqrt(deltaT2(i)*(Tout_HOT(i) - Tin_cu))); logmean3(j) .. LMTD3(j) =L= ((deltaT3(j)+Tin_hu - Tout_COLD(j))/6) + ((2/3)*sqrt(deltaT3(j)*(Tin_hu - Tout_COLD(j)))); nosplitting1(i,k) .. sum(j,y1(i,j,k)) =L= 1; nosplitting2(j,k) .. sum(i,y1(i,j,k)) =L= 1; * --------------- Equality constraint on area relaxed--------------------- area_value1(i,j,k) .. area1(i,j,k) =e= area_points1(i,j,k,'1') + sum(n1,delta1(i,j,k,n1)); area_value2(i) .. area2(i) =e= area_points2(i,'1') + sum(n1,delta2(i,n1)); area_value3(j) .. area3(j) =e= area_points3(j,'1') + sum(n1,delta3(j,n1)); area_constraint1La(i,j,k,n1)$(ord(n1) = 1) .. delta1(i,j,k,n1) =L= sum(n$(ord(n)=(ord(n1)+1)),area_points1(i,j,k,n)) - sum(n$(ord(n)=ord(n1)),area_points1(i,j,k,n)); area_constraint1L(i,j,k,n1)$(ord(n1) > 1) .. delta1(i,j,k,n1) =L= (sum(n$(ord(n)=(ord(n1)+1)),area_points1(i,j,k,n)) - sum(n$(ord(n)=ord(n1)),area_points1(i,j,k,n)))*w1(i,j,k,n1-1); area_constraint1G(i,j,k,n1)$(ord(n1) < card(n1)) .. delta1(i,j,k,n1) =G= (sum(n$(ord(n)=(ord(n1)+1)),area_points1(i,j,k,n)) - sum(n$(ord(n)=ord(n1)),area_points1(i,j,k,n)))*w1(i,j,k,n1); area_constraint2La(i,n1)$(ord(n1) = 1) .. delta2(i,n1) =L= sum(n$(ord(n)=(ord(n1)+1)),area_points2(i,n)) - sum(n$(ord(n)=ord(n1)),area_points2(i,n)); area_constraint2L(i,n1)$(ord(n1) > 1) .. delta2(i,n1) =L= (sum(n$(ord(n)=(ord(n1)+1)),area_points2(i,n)) - sum(n$(ord(n)=ord(n1)),area_points2(i,n)))*w2(i,n1-1); area_constraint2G(i,n1)$(ord(n1) < card(n1)) .. delta2(i,n1) =G= (sum(n$(ord(n)=(ord(n1)+1)),area_points2(i,n)) - sum(n$(ord(n)=ord(n1)),area_points2(i,n)))*w2(i,n1); area_constraint3La(j,n1)$(ord(n1) = 1) .. delta3(j,n1) =L= sum(n$(ord(n)=(ord(n1)+1)),area_points3(j,n)) - sum(n$(ord(n)=ord(n1)),area_points3(j,n)); area_constraint3L(j,n1)$(ord(n1) > 1) .. delta3(j,n1) =L= (sum(n$(ord(n)=(ord(n1)+1)),area_points3(j,n)) - sum(n$(ord(n)=ord(n1)),area_points3(j,n)))*w3(j,n1-1); area_constraint3G(j,n1)$(ord(n1) < card(n1)) .. delta3(j,n1) =G= (sum(n$(ord(n)=(ord(n1)+1)),area_points3(j,n)) - sum(n$(ord(n)=ord(n1)),area_points3(j,n)))*w3(j,n1); logical_area1(i,j,k,n1)$(ord(n1) < (card(n1)-1)) .. w1(i,j,k,n1) =G= w1(i,j,k,n1+1); logical_area2(i,n1)$(ord(n1) < (card(n1)-1)) .. w2(i,n1) =G= w2(i,n1+1); logical_area3(j,n1)$(ord(n1) < (card(n1)-1)) .. w3(j,n1) =G= w3(j,n1+1); heat_balance1(i,j,k) .. q1(i,j,k)/U(i,j) =e= (area_points1(i,j,k,'1')*LMTD1(i,j,k)) + sum(n1,gamma1(i,j,k,n1)); heat_balance2(i) .. q2(i)/Uc(i) =e= (area_points2(i,'1')*LMTD2(i)) + sum(n1,gamma2(i,n1)); heat_balance3(j) .. q3(j)/Uh(j) =e= (area_points3(j,'1')*LMTD3(j)) + sum(n1,gamma3(j,n1)); gamma_constraint11(i,j,k,n1) .. gamma1(i,j,k,n1) =G= (delta1(i,j,k,n1)*LMTD_LO) + (delta_LO*LMTD1(i,j,k)) - (delta_LO*LMTD_LO); gamma_constraint12(i,j,k,n1) .. gamma1(i,j,k,n1) =G= (delta1(i,j,k,n1)*LMTD_HI) + (delta_HI*LMTD1(i,j,k)) - (delta_HI*LMTD_HI); gamma_constraint13(i,j,k,n1) .. gamma1(i,j,k,n1) =L= (delta1(i,j,k,n1)*LMTD_HI) + (delta_LO*LMTD1(i,j,k)) - (delta_LO*LMTD_HI); gamma_constraint14(i,j,k,n1) .. gamma1(i,j,k,n1) =L= (delta1(i,j,k,n1)*LMTD_LO) + (delta_HI*LMTD1(i,j,k)) - (delta_HI*LMTD_LO); gamma_constraint21(i,n1) .. gamma2(i,n1) =G= (delta2(i,n1)*LMTD_LO) + (delta_LO*LMTD2(i)) - (delta_LO*LMTD_LO); gamma_constraint22(i,n1) .. gamma2(i,n1) =G= (delta2(i,n1)*LMTD_HI) + (delta_HI*LMTD2(i)) - (delta_HI*LMTD_HI); gamma_constraint23(i,n1) .. gamma2(i,n1) =L= (delta2(i,n1)*LMTD_HI) + (delta_LO*LMTD2(i)) - (delta_LO*LMTD_HI); gamma_constraint24(i,n1) .. gamma2(i,n1) =L= (delta2(i,n1)*LMTD_LO) + (delta_HI*LMTD2(i)) - (delta_HI*LMTD_LO); gamma_constraint31(j,n1) .. gamma3(j,n1) =G= (delta3(j,n1)*LMTD_LO) + (delta_LO*LMTD3(j)) - (delta_LO*LMTD_LO); gamma_constraint32(j,n1) .. gamma3(j,n1) =G= (delta3(j,n1)*LMTD_HI) + (delta_HI*LMTD3(j)) - (delta_HI*LMTD_HI); gamma_constraint33(j,n1) .. gamma3(j,n1) =L= (delta3(j,n1)*LMTD_HI) + (delta_LO*LMTD3(j)) - (delta_LO*LMTD_HI); gamma_constraint34(j,n1) .. gamma3(j,n1) =L= (delta3(j,n1)*LMTD_LO) + (delta_HI*LMTD3(j)) - (delta_HI*LMTD_LO); * ------------------------------------------------------------------------- MODEL TEST /ALL/; SOLVE TEST USING MINLP MINIMIZING TAC;