 Timestamp:
 Nov 16, 2007, 6:13:36 PM (15 years ago)
 Location:
 trunk/eml/heat_exchangers
 Files:

 2 added
 2 edited
Legend:
 Unmodified
 Added
 Removed

trunk/eml/heat_exchangers/DoublePipe.mso
r379 r404 19 19 using "HEX_Engine"; 20 20 21 21 22 Model DoublePipe_Basic 22 23 … … 34 35 M(NComp) as molweight (Brief="Component Mol Weight"); 35 36 36 HotSide as Switcher (Brief="Flag for Fluid Alocation ",Valid=["outer","inner"],Default="outer");37 HotSide as Switcher (Brief="Flag for Fluid Alocation ",Valid=["outer","inner"],Default="outer"); 37 38 innerFlowRegime as Switcher (Brief="Inner Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar"); 38 39 outerFlowRegime as Switcher (Brief="Outer Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar"); 39 40 40 InnerLaminarCorrelation as Switcher 41 InnerTransitionCorrelation as Switcher (Brief="Heat Transfer Correlation in Transition Flow for the Inner Side",Valid=["Gnielinski"," ESDU"],Default="Gnielinski");42 InnerTurbulentCorrelation as Switcher 41 InnerLaminarCorrelation as Switcher (Brief="Heat Transfer Correlation in Laminar Flow for the Inner Side",Valid=["Hausen","Schlunder"],Default="Hausen"); 42 InnerTransitionCorrelation as Switcher (Brief="Heat Transfer Correlation in Transition Flow for the Inner Side",Valid=["Gnielinski","Hausen"],Default="Gnielinski"); 43 InnerTurbulentCorrelation as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Inner Side",Valid=["Petukhov","SiederTate"],Default="Petukhov"); 43 44 44 45 OuterLaminarCorrelation as Switcher (Brief="Heat Transfer Correlation in Laminar Flow for the Outer Side",Valid=["Hausen","Schlunder"],Default="Hausen"); 45 OuterTransitionCorrelation as Switcher (Brief="Heat Transfer Correlation in Transition Flow for the OuterSide",Valid=["Gnielinski"," ESDU"],Default="Gnielinski");46 OuterTransitionCorrelation as Switcher (Brief="Heat Transfer Correlation in Transition Flow for the OuterSide",Valid=["Gnielinski","Hausen"],Default="Gnielinski"); 46 47 OuterTurbulentCorrelation as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Outer Side",Valid=["Petukhov","SiederTate"],Default="Petukhov"); 47 48 48 Pi as constant (Brief="Pi Number",Default=3.14159265, Symbol = "\pi");49 DoInner as length (Brief="Outside Diameter of Inner Pipe",Lower=1e6);49 Pi as constant (Brief="Pi Number",Default=3.14159265, Symbol = "\pi"); 50 DoInner as length (Brief="Outside Diameter of Inner Pipe",Lower=1e6); 50 51 DiInner as length (Brief="Inside Diameter of Inner Pipe",Lower=1e10); 51 52 DiOuter as length (Brief="Inside Diameter of Outer pipe",Lower=1e10); 52 Lpipe as length (Brief="Effective Tube Length",Lower=0.1, Symbol = "L_{pipe}");53 Kwall as conductivity (Brief="Tube Wall Material Thermal Conductivity",Default=1.0, Symbol = "K_{wall}");54 Rfi as positive (Brief="Inside Fouling Resistance",Unit='m^2*K/kW',Default=1e6,Lower=0);55 Rfo as positive (Brief="Outside Fouling Resistance",Unit='m^2*K/kW',Default=1e6,Lower=0);53 Lpipe as length (Brief="Effective Tube Length of one segment of Pipe",Lower=0.1, Symbol = "L_{pipe}"); 54 Kwall as conductivity (Brief="Tube Wall Material Thermal Conductivity",Default=1.0, Symbol = "K_{wall}"); 55 Rfi as positive (Brief="Inside Fouling Resistance",Unit='m^2*K/kW',Default=1e6,Lower=0); 56 Rfo as positive (Brief="Outside Fouling Resistance",Unit='m^2*K/kW',Default=1e6,Lower=0); 56 57 57 58 VARIABLES … … 63 64 64 65 Details as Details_Main (Brief="Some Details in the Heat Exchanger", Symbol=" "); 65 Inner as Main_DoublePipe (Brief="Inner Side of the Heat Exchanger", Symbol="_{ inInner}");66 Outer as Main_DoublePipe (Brief="Outer Side of the Heat Exchanger", Symbol="_{ inInner}");66 Inner as Main_DoublePipe (Brief="Inner Side of the Heat Exchanger", Symbol="_{Inner}"); 67 Outer as Main_DoublePipe (Brief="Outer Side of the Heat Exchanger", Symbol="_{Outer}"); 67 68 68 69 SET … … 295 296 case "outer": 296 297 297 "Energy Balance HotStream"298 "Energy Balance Outer Stream" 298 299 Details.Q = InletOuter.F*(InletOuter.hOutletOuter.h); 299 300 300 "Energy Balance ColdStream"301 Details.Q = InletInner.F*(OutletInner.h InletInner.h);301 "Energy Balance Inner Stream" 302 Details.Q = InletInner.F*(OutletInner.hInletInner.h); 302 303 303 304 when InletInner.T > InletOuter.T switchto "inner"; … … 339 340 OutletInner.z=InletInner.z; 340 341 341 "Exchange Surface Area "342 "Exchange Surface Area for one segment of pipe" 342 343 Details.A=Pi*DoInner*Lpipe; 343 344 … … 429 430 Inner.HeatTransfer.Nu*(1+(12.7*sqrt(0.125*Inner.HeatTransfer.fi)*((Inner.HeatTransfer.PR)^(2/3) 1))) = 0.125*Inner.HeatTransfer.fi*(Inner.HeatTransfer.Re1000)*Inner.HeatTransfer.PR; 430 431 431 case " ESDU":432 433 "Nusselt Number" 434 Inner.HeatTransfer.Nu = 1;#to be implemented432 case "Hausen": 433 434 "Nusselt Number" 435 Inner.HeatTransfer.Nu =0.116*(Inner.HeatTransfer.Re^(0.667)125)*Inner.HeatTransfer.PR^(0.333)*(1+(DiInner/Lpipe)^0.667); 435 436 436 437 end … … 500 501 Outer.HeatTransfer.Nu*(1+(12.7*sqrt(0.125*Outer.HeatTransfer.fi)*((Outer.HeatTransfer.PR)^(2/3) 1))) = 0.125*Outer.HeatTransfer.fi*(Outer.HeatTransfer.Re1000)*Outer.HeatTransfer.PR; 501 502 502 case "ESDU": 503 504 "Nusselt Number" 505 Outer.HeatTransfer.Nu =1;#to be implemented 503 case "Hausen": 504 505 "Nusselt Number" 506 Outer.HeatTransfer.Nu = 0.116*(Outer.HeatTransfer.Re^(0.667)125)*Outer.HeatTransfer.PR^(0.333)*(1+(Outer.HeatTransfer.Dh/Lpipe)^0.667); 507 506 508 507 509 "Outer Side Friction Factor for Heat Transfer  transition Flow" … … 545 547 Outer.HeatTransfer.hcoeff= (Outer.HeatTransfer.Nu*Outer.Properties.Average.K/Outer.HeatTransfer.Dh)*Outer.HeatTransfer.Phi; 546 548 549 "Total Pressure Drop Outer Stream" 550 Outer.PressureDrop.Pdrop = Outer.PressureDrop.Pd_fric+Outer.PressureDrop.Pd_ret; 551 552 "Total Pressure Drop Inner Stream" 553 Inner.PressureDrop.Pdrop = Inner.PressureDrop.Pd_fric+Inner.PressureDrop.Pd_ret; 554 547 555 "Pressure Drop Outer Stream" 548 556 OutletOuter.P = InletOuter.P  Outer.PressureDrop.Pdrop; … … 552 560 553 561 "Outer Pipe Pressure Drop for friction" 554 Outer.PressureDrop.Pd rop= (2*Outer.PressureDrop.fi*Lpipe*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2)/(Outer.PressureDrop.Dh*Outer.HeatTransfer.Phi);562 Outer.PressureDrop.Pd_fric = (2*Outer.PressureDrop.fi*Lpipe*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2)/(Outer.PressureDrop.Dh*Outer.HeatTransfer.Phi); 555 563 556 564 "Inner Pipe Pressure Drop for friction" 557 Inner.PressureDrop.Pdrop = (2*Inner.PressureDrop.fi*Lpipe*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2)/(DiInner*Inner.HeatTransfer.Phi); 565 Inner.PressureDrop.Pd_fric = (2*Inner.PressureDrop.fi*Lpipe*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2)/(DiInner*Inner.HeatTransfer.Phi); 566 567 "Outer Pipe Pressure Drop due to return" 568 Outer.PressureDrop.Pd_ret = 0*'kPa'; 569 570 "Inner Pipe Pressure Drop due to return" 571 Inner.PressureDrop.Pd_ret = 0*'kPa'; 558 572 559 573 "Outer Pipe Phi correction" … … 777 791 778 792 end 793 794 # Testing Hairpin Heat Exchanger (U tube) 795 796 Model Hairpin_Basic 797 798 ATTRIBUTES 799 Pallete = false; 800 Brief = "Basic Equations for hairpin heat exchanger model."; 801 Info = 802 "to be documented."; 803 804 PARAMETERS 805 806 outer PP as Plugin (Brief="External Physical Properties", Type="PP"); 807 outer NComp as Integer (Brief="Number of Components"); 808 809 M(NComp) as molweight (Brief="Component Mol Weight"); 810 811 HotSide as Switcher (Brief="Flag for Fluid Alocation ",Valid=["outer","inner"],Default="outer"); 812 innerFlowRegime as Switcher (Brief="Inner Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar"); 813 outerFlowRegime as Switcher (Brief="Outer Flow Regime ",Valid=["laminar","transition","turbulent"],Default="laminar"); 814 815 InnerLaminarCorrelation as Switcher (Brief="Heat Transfer Correlation in Laminar Flow for the Inner Side",Valid=["Hausen","Schlunder"],Default="Hausen"); 816 InnerTransitionCorrelation as Switcher (Brief="Heat Transfer Correlation in Transition Flow for the Inner Side",Valid=["Gnielinski","Hausen"],Default="Gnielinski"); 817 InnerTurbulentCorrelation as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Inner Side",Valid=["Petukhov","SiederTate"],Default="Petukhov"); 818 819 OuterLaminarCorrelation as Switcher (Brief="Heat Transfer Correlation in Laminar Flow for the Outer Side",Valid=["Hausen","Schlunder"],Default="Hausen"); 820 OuterTransitionCorrelation as Switcher (Brief="Heat Transfer Correlation in Transition Flow for the OuterSide",Valid=["Gnielinski","Hausen"],Default="Gnielinski"); 821 OuterTurbulentCorrelation as Switcher (Brief="Heat Transfer Correlation in Turbulent Flow for the Outer Side",Valid=["Petukhov","SiederTate"],Default="Petukhov"); 822 823 Pi as constant (Brief="Pi Number",Default=3.14159265, Symbol = "\pi"); 824 DoInner as length (Brief="Outside Diameter of Inner Pipe",Lower=1e6); 825 DiInner as length (Brief="Inside Diameter of Inner Pipe",Lower=1e10); 826 DiOuter as length (Brief="Inside Diameter of Outer pipe",Lower=1e10); 827 Lpipe as length (Brief="Effective Tube Length of one segment of Pipe",Lower=0.1, Symbol = "L_{pipe}"); 828 Kwall as conductivity (Brief="Tube Wall Material Thermal Conductivity",Default=1.0, Symbol = "K_{wall}"); 829 Rfi as positive (Brief="Inside Fouling Resistance",Unit='m^2*K/kW',Default=1e6,Lower=0); 830 Rfo as positive (Brief="Outside Fouling Resistance",Unit='m^2*K/kW',Default=1e6,Lower=0); 831 832 VARIABLES 833 834 in InletInner as stream (Brief="Inlet Inner Stream", PosX=1, PosY=0.7, Symbol="_{inInner}"); 835 in InletOuter as stream (Brief="Inlet Outer Stream", PosX=0.8, PosY=0, Symbol="_{inOuter}"); 836 out OutletInner as streamPH (Brief="Outlet Inner Stream", PosX=1, PosY=0.3, Symbol="_{outInner}"); 837 out OutletOuter as streamPH (Brief="Outlet Outer Stream", PosX=0.8, PosY=1, Symbol="_{outOuter}"); 838 839 Details as Details_Main (Brief="Some Details in the Heat Exchanger", Symbol=" "); 840 Inner as Main_DoublePipe (Brief="Inner Side of the Heat Exchanger", Symbol="_{Inner}"); 841 Outer as Main_DoublePipe (Brief="Outer Side of the Heat Exchanger", Symbol="_{Outer}"); 842 843 SET 844 845 #"Component Molecular Weight" 846 M = PP.MolecularWeight(); 847 848 #"Pi Number" 849 Pi = 3.14159265; 850 851 #"Inner Pipe Cross Sectional Area for Flow" 852 Inner.HeatTransfer.As=Pi*DiInner*DiInner/4; 853 854 #"Outer Pipe Cross Sectional Area for Flow" 855 Outer.HeatTransfer.As=Pi*(DiOuter*DiOuter  DoInner*DoInner)/4; 856 857 #"Inner Pipe Hydraulic Diameter for Heat Transfer" 858 Inner.HeatTransfer.Dh=DiInner; 859 860 #"Outer Pipe Hydraulic Diameter for Heat Transfer" 861 Outer.HeatTransfer.Dh=(DiOuter*DiOuterDoInner*DoInner)/DoInner; 862 863 #"Inner Pipe Hydraulic Diameter for Pressure Drop" 864 Inner.PressureDrop.Dh=DiInner; 865 866 #"Outer Pipe Hydraulic Diameter for Pressure Drop" 867 Outer.PressureDrop.Dh=DiOuterDoInner; 868 869 EQUATIONS 870 871 "Outer Stream Average Temperature" 872 Outer.Properties.Average.T = 0.5*InletOuter.T + 0.5*OutletOuter.T; 873 874 "Inner Stream Average Temperature" 875 Inner.Properties.Average.T = 0.5*InletInner.T + 0.5*OutletInner.T; 876 877 "Outer Stream Average Pressure" 878 Outer.Properties.Average.P = 0.5*InletOuter.P+0.5*OutletOuter.P; 879 880 "Inner Stream Average Pressure" 881 Inner.Properties.Average.P = 0.5*InletInner.P+0.5*OutletInner.P; 882 883 "Inner Stream Wall Temperature" 884 Inner.Properties.Wall.Twall = 0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T; 885 886 "Outer Stream Wall Temperature" 887 Outer.Properties.Wall.Twall = 0.5*Outer.Properties.Average.T + 0.5*Inner.Properties.Average.T; 888 889 "Outer Stream Average Molecular Weight" 890 Outer.Properties.Average.Mw = sum(M*InletOuter.z); 891 892 "Inner Stream Average Molecular Weight" 893 Inner.Properties.Average.Mw = sum(M*InletInner.z); 894 895 if InletInner.v equal 0 896 897 then 898 899 "Average Heat Capacity Inner Stream" 900 Inner.Properties.Average.Cp = PP.LiquidCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 901 902 "Inlet Heat Capacity Inner Stream" 903 Inner.Properties.Inlet.Cp = PP.LiquidCp(InletInner.T,InletInner.P,InletInner.z); 904 905 "Outlet Heat Capacity Inner Stream" 906 Inner.Properties.Outlet.Cp = PP.LiquidCp(OutletInner.T,OutletInner.P,OutletInner.z); 907 908 "Average Mass Density Inner Stream" 909 Inner.Properties.Average.rho = PP.LiquidDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 910 911 "Inlet Mass Density Inner Stream" 912 Inner.Properties.Inlet.rho = PP.LiquidDensity(InletInner.T,InletInner.P,InletInner.z); 913 914 "Outlet Mass Density Inner Stream" 915 Inner.Properties.Outlet.rho = PP.LiquidDensity(OutletInner.T,OutletInner.P,OutletInner.z); 916 917 "Average Viscosity Inner Stream" 918 Inner.Properties.Average.Mu = PP.LiquidViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 919 920 "Inlet Viscosity Inner Stream" 921 Inner.Properties.Inlet.Mu = PP.LiquidViscosity(InletInner.T,InletInner.P,InletInner.z); 922 923 "Outlet Viscosity Inner Stream" 924 Inner.Properties.Outlet.Mu = PP.LiquidViscosity(OutletInner.T,OutletInner.P,OutletInner.z); 925 926 "Average Conductivity Inner Stream" 927 Inner.Properties.Average.K = PP.LiquidThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 928 929 "Inlet Conductivity Inner Stream" 930 Inner.Properties.Inlet.K = PP.LiquidThermalConductivity(InletInner.T,InletInner.P,InletInner.z); 931 932 "Outlet Conductivity Inner Stream" 933 Inner.Properties.Outlet.K = PP.LiquidThermalConductivity(OutletInner.T,OutletInner.P,OutletInner.z); 934 935 "Viscosity Inner Stream at wall temperature" 936 Inner.Properties.Wall.Mu = PP.LiquidViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z); 937 938 else 939 940 "Average Heat Capacity InnerStream" 941 Inner.Properties.Average.Cp = PP.VapourCp(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 942 943 "Inlet Heat Capacity Inner Stream" 944 Inner.Properties.Inlet.Cp = PP.VapourCp(InletInner.T,InletInner.P,InletInner.z); 945 946 "Outlet Heat Capacity Inner Stream" 947 Inner.Properties.Outlet.Cp = PP.VapourCp(OutletInner.T,OutletInner.P,OutletInner.z); 948 949 "Average Mass Density Inner Stream" 950 Inner.Properties.Average.rho = PP.VapourDensity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 951 952 "Inlet Mass Density Inner Stream" 953 Inner.Properties.Inlet.rho = PP.VapourDensity(InletInner.T,InletInner.P,InletInner.z); 954 955 "Outlet Mass Density Inner Stream" 956 Inner.Properties.Outlet.rho = PP.VapourDensity(OutletInner.T,OutletInner.P,OutletInner.z); 957 958 "Average Viscosity Inner Stream" 959 Inner.Properties.Average.Mu = PP.VapourViscosity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 960 961 "Inlet Viscosity Inner Stream" 962 Inner.Properties.Inlet.Mu = PP.VapourViscosity(InletInner.T,InletInner.P,InletInner.z); 963 964 "Outlet Viscosity Inner Stream" 965 Inner.Properties.Outlet.Mu = PP.VapourViscosity(OutletInner.T,OutletInner.P,OutletInner.z); 966 967 "Average Conductivity Inner Stream" 968 Inner.Properties.Average.K = PP.VapourThermalConductivity(Inner.Properties.Average.T,Inner.Properties.Average.P,InletInner.z); 969 970 "Inlet Conductivity Inner Stream" 971 Inner.Properties.Inlet.K = PP.VapourThermalConductivity(InletInner.T,InletInner.P,InletInner.z); 972 973 "Outlet Conductivity Inner Stream" 974 Inner.Properties.Outlet.K = PP.VapourThermalConductivity(OutletInner.T,OutletInner.P,OutletInner.z); 975 976 "Viscosity Inner Stream at wall temperature" 977 Inner.Properties.Wall.Mu = PP.VapourViscosity(Inner.Properties.Wall.Twall,Inner.Properties.Average.P,InletInner.z); 978 979 end 980 981 if InletOuter.v equal 0 982 983 then 984 985 "Average Heat Capacity Outer Stream" 986 Outer.Properties.Average.Cp = PP.LiquidCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 987 988 "Inlet Heat Capacity Outer Stream" 989 Outer.Properties.Inlet.Cp = PP.LiquidCp(InletOuter.T,InletOuter.P,InletOuter.z); 990 991 "Outlet Heat Capacity Outer Stream" 992 Outer.Properties.Outlet.Cp = PP.LiquidCp(OutletOuter.T,OutletOuter.P,OutletOuter.z); 993 994 "Average Mass Density Outer Stream" 995 Outer.Properties.Average.rho = PP.LiquidDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 996 997 "Inlet Mass Density Outer Stream" 998 Outer.Properties.Inlet.rho = PP.LiquidDensity(InletOuter.T,InletOuter.P,InletOuter.z); 999 1000 "Outlet Mass Density Outer Stream" 1001 Outer.Properties.Outlet.rho = PP.LiquidDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1002 1003 "Average Viscosity Outer Stream" 1004 Outer.Properties.Average.Mu = PP.LiquidViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 1005 1006 "Inlet Viscosity Outer Stream" 1007 Outer.Properties.Inlet.Mu = PP.LiquidViscosity(InletOuter.T,InletOuter.P,InletOuter.z); 1008 1009 "Outlet Viscosity Outer Stream" 1010 Outer.Properties.Outlet.Mu = PP.LiquidViscosity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1011 1012 "Average Conductivity Outer Stream" 1013 Outer.Properties.Average.K = PP.LiquidThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 1014 1015 "Inlet Conductivity Outer Stream" 1016 Outer.Properties.Inlet.K = PP.LiquidThermalConductivity(InletOuter.T,InletOuter.P,InletOuter.z); 1017 1018 "Outlet Conductivity Outer Stream" 1019 Outer.Properties.Outlet.K = PP.LiquidThermalConductivity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1020 1021 "Viscosity Outer Stream at wall temperature" 1022 Outer.Properties.Wall.Mu = PP.LiquidViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z); 1023 1024 1025 else 1026 1027 "Average Heat Capacity Outer Stream" 1028 Outer.Properties.Average.Cp = PP.VapourCp(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 1029 1030 "Inlet Heat Capacity Outer Stream" 1031 Outer.Properties.Inlet.Cp = PP.VapourCp(InletOuter.T,InletOuter.P,InletOuter.z); 1032 1033 "Outlet Heat Capacity Outer Stream" 1034 Outer.Properties.Outlet.Cp = PP.VapourCp(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1035 1036 "Average Mass Density Outer Stream" 1037 Outer.Properties.Average.rho = PP.VapourDensity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 1038 1039 "Inlet Mass Density Outer Stream" 1040 Outer.Properties.Inlet.rho = PP.VapourDensity(InletOuter.T,InletOuter.P,InletOuter.z); 1041 1042 "Outlet Mass Density Outer Stream" 1043 Outer.Properties.Outlet.rho = PP.VapourDensity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1044 1045 "Average Viscosity Outer Stream" 1046 Outer.Properties.Average.Mu = PP.VapourViscosity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 1047 1048 "Inlet Viscosity Outer Stream" 1049 Outer.Properties.Inlet.Mu = PP.VapourViscosity(InletOuter.T,InletOuter.P,InletOuter.z); 1050 1051 "Outlet Viscosity Outer Stream" 1052 Outer.Properties.Outlet.Mu = PP.VapourViscosity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1053 1054 "Average Conductivity Outer Stream" 1055 Outer.Properties.Average.K = PP.VapourThermalConductivity(Outer.Properties.Average.T,Outer.Properties.Average.P,InletOuter.z); 1056 1057 "Inlet Conductivity Outer Stream" 1058 Outer.Properties.Inlet.K = PP.VapourThermalConductivity(InletOuter.T,InletOuter.P,InletOuter.z); 1059 1060 "Outlet Conductivity Outer Stream" 1061 Outer.Properties.Outlet.K = PP.VapourThermalConductivity(OutletOuter.T,OutletOuter.P,OutletOuter.z); 1062 1063 "Viscosity Outer Stream at wall temperature" 1064 Outer.Properties.Wall.Mu = PP.VapourViscosity(Outer.Properties.Wall.Twall,Outer.Properties.Average.P,InletOuter.z); 1065 1066 end 1067 1068 switch HotSide 1069 1070 case "outer": 1071 1072 "Energy Balance Outer Stream" 1073 Details.Q = InletOuter.F*(InletOuter.hOutletOuter.h); 1074 1075 "Energy Balance Inner Stream" 1076 Details.Q = InletInner.F*(OutletInner.hInletInner.h); 1077 1078 when InletInner.T > InletOuter.T switchto "inner"; 1079 1080 case "inner": 1081 1082 "Energy Balance Hot Stream" 1083 Details.Q = InletInner.F*(InletInner.hOutletInner.h); 1084 1085 "Energy Balance Cold Stream" 1086 Details.Q = InletOuter.F*(OutletOuter.h  InletOuter.h); 1087 1088 when InletInner.T < InletOuter.T switchto "outer"; 1089 1090 end 1091 1092 "Flow Mass Inlet Inner Stream" 1093 Inner.Properties.Inlet.Fw = sum(M*InletInner.z)*InletInner.F; 1094 1095 "Flow Mass Outlet Inner Stream" 1096 Inner.Properties.Outlet.Fw = sum(M*OutletInner.z)*OutletInner.F; 1097 1098 "Flow Mass Inlet Outer Stream" 1099 Outer.Properties.Inlet.Fw = sum(M*InletOuter.z)*InletOuter.F; 1100 1101 "Flow Mass Outlet Outer Stream" 1102 Outer.Properties.Outlet.Fw = sum(M*OutletOuter.z)*OutletOuter.F; 1103 1104 "Molar Balance Outer Stream" 1105 OutletOuter.F = InletOuter.F; 1106 1107 "Molar Balance Inner Stream" 1108 OutletInner.F = InletInner.F; 1109 1110 "Outer Stream Molar Fraction Constraint" 1111 OutletOuter.z=InletOuter.z; 1112 1113 "InnerStream Molar Fraction Constraint" 1114 OutletInner.z=InletInner.z; 1115 1116 "Exchange Surface Area for one segment of pipe" 1117 Details.A=Pi*DoInner*(2*Lpipe); 1118 1119 switch innerFlowRegime 1120 1121 case "laminar": 1122 1123 "Inner Side Friction Factor for Pressure Drop  laminar Flow" 1124 Inner.PressureDrop.fi*Inner.PressureDrop.Re = 16; 1125 1126 when Inner.PressureDrop.Re > 2300 switchto "transition"; 1127 1128 case "transition": 1129 1130 "using Turbulent Flow  to be implemented" 1131 (Inner.PressureDrop.fi0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264; 1132 1133 when Inner.PressureDrop.Re < 2300 switchto "laminar"; 1134 when Inner.PressureDrop.Re > 10000 switchto "turbulent"; 1135 1136 case "turbulent": 1137 1138 "Inner Side Friction Factor  Turbulent Flow" 1139 (Inner.PressureDrop.fi0.0035)*(Inner.PressureDrop.Re^0.42) = 0.264; 1140 1141 when Inner.PressureDrop.Re < 10000 switchto "transition"; 1142 1143 end 1144 1145 switch outerFlowRegime 1146 1147 case "laminar": 1148 1149 "Outer Side Friction Factor  laminar Flow" 1150 Outer.PressureDrop.fi*Outer.PressureDrop.Re = 16; 1151 1152 when Outer.PressureDrop.Re > 2300 switchto "transition"; 1153 1154 case "transition": 1155 1156 "using Turbulent Flow  Transition Flow must be implemented" 1157 (Outer.PressureDrop.fi0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264; 1158 1159 when Outer.PressureDrop.Re < 2300 switchto "laminar"; 1160 when Outer.PressureDrop.Re > 10000 switchto "turbulent"; 1161 1162 case "turbulent": 1163 1164 "Outer Side Friction Factor  Turbulent Flow" 1165 (Outer.PressureDrop.fi0.0035)*(Outer.PressureDrop.Re^0.42) = 0.264; 1166 1167 when Outer.PressureDrop.Re < 10000 switchto "transition"; 1168 1169 end 1170 1171 switch innerFlowRegime 1172 1173 case "laminar": 1174 1175 "Inner Side Friction Factor for Heat Transfer  laminar Flow" 1176 Inner.HeatTransfer.fi = 1/(0.79*ln(Inner.HeatTransfer.Re)1.64)^2; 1177 1178 switch InnerLaminarCorrelation 1179 1180 case "Hausen": 1181 1182 "Nusselt Number" 1183 Inner.HeatTransfer.Nu = 3.665 + ((0.19*((DiInner/Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.8)/(1+0.117*((DiInner/Lpipe)*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR)^0.467)); 1184 1185 case "Schlunder": 1186 1187 "Nusselt Number" 1188 Inner.HeatTransfer.Nu = (49.027896+4.173281*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR*(DiInner/Lpipe))^(1/3); 1189 1190 end 1191 1192 when Inner.HeatTransfer.Re > 2300 switchto "transition"; 1193 1194 case "transition": 1195 1196 "Inner Side Friction Factor for Heat Transfer  transition Flow" 1197 Inner.HeatTransfer.fi = 1/(0.79*ln(Inner.HeatTransfer.Re)1.64)^2; 1198 1199 switch InnerTransitionCorrelation 1200 1201 case "Gnielinski": 1202 1203 "Nusselt Number" 1204 Inner.HeatTransfer.Nu*(1+(12.7*sqrt(0.125*Inner.HeatTransfer.fi)*((Inner.HeatTransfer.PR)^(2/3) 1))) = 0.125*Inner.HeatTransfer.fi*(Inner.HeatTransfer.Re1000)*Inner.HeatTransfer.PR; 1205 1206 case "Hausen": 1207 1208 "Nusselt Number" 1209 Inner.HeatTransfer.Nu =0.116*(Inner.HeatTransfer.Re^(0.667)125)*Inner.HeatTransfer.PR^(0.333)*(1+(DiInner/Lpipe)^0.667); 1210 1211 end 1212 1213 when Inner.HeatTransfer.Re < 2300 switchto "laminar"; 1214 when Inner.HeatTransfer.Re > 10000 switchto "turbulent"; 1215 1216 case "turbulent": 1217 1218 switch InnerTurbulentCorrelation 1219 1220 case "Petukhov": 1221 1222 "Inner Side Friction Factor for Heat Transfer  turbulent Flow" 1223 Inner.HeatTransfer.fi = 1/(1.82*log(Inner.HeatTransfer.Re)1.64)^2; 1224 1225 "Nusselt Number" 1226 Inner.HeatTransfer.Nu*(1.07+(12.7*sqrt(0.125*Inner.HeatTransfer.fi)*((Inner.HeatTransfer.PR)^(2/3) 1))) = 0.125*Inner.HeatTransfer.fi*Inner.HeatTransfer.Re*Inner.HeatTransfer.PR; 1227 1228 case "SiederTate": 1229 1230 "Nusselt Number" 1231 Inner.HeatTransfer.Nu = 0.027*(Inner.HeatTransfer.PR)^(1/3)*(Inner.HeatTransfer.Re)^(4/5); 1232 1233 "Inner Side Friction Factor for Heat Transfer  turbulent Flow" 1234 Inner.HeatTransfer.fi = 1/(1.82*log(Inner.HeatTransfer.Re)1.64)^2; 1235 1236 end 1237 1238 when Inner.HeatTransfer.Re < 10000 switchto "transition"; 1239 1240 end 1241 1242 switch outerFlowRegime 1243 1244 case "laminar": 1245 1246 "Outer Side Friction Factor for Heat Transfer  laminar Flow" 1247 Outer.HeatTransfer.fi = 1/(0.79*ln(Outer.HeatTransfer.Re)1.64)^2; 1248 1249 switch OuterLaminarCorrelation 1250 1251 case "Hausen": 1252 1253 "Nusselt Number" 1254 Outer.HeatTransfer.Nu = 3.665 + ((0.19*((Outer.HeatTransfer.Dh/Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.8)/(1+0.117*((Outer.HeatTransfer.Dh/Lpipe)*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR)^0.467)); 1255 1256 case "Schlunder": 1257 1258 "Nusselt Number" 1259 Outer.HeatTransfer.Nu = (49.027896+4.173281*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR*(Outer.HeatTransfer.Dh/Lpipe))^(1/3); 1260 1261 end 1262 1263 when Outer.HeatTransfer.Re > 2300 switchto "transition"; 1264 1265 case "transition": 1266 1267 switch OuterTransitionCorrelation 1268 1269 case "Gnielinski": 1270 1271 "Outer Side Friction Factor for Heat Transfer  transition Flow" 1272 Outer.HeatTransfer.fi = 1/(0.79*ln(Outer.HeatTransfer.Re)1.64)^2; 1273 1274 "Nusselt Number" 1275 Outer.HeatTransfer.Nu*(1+(12.7*sqrt(0.125*Outer.HeatTransfer.fi)*((Outer.HeatTransfer.PR)^(2/3) 1))) = 0.125*Outer.HeatTransfer.fi*(Outer.HeatTransfer.Re1000)*Outer.HeatTransfer.PR; 1276 1277 case "Hausen": 1278 1279 "Nusselt Number" 1280 Outer.HeatTransfer.Nu = 0.116*(Outer.HeatTransfer.Re^(0.667)125)*Outer.HeatTransfer.PR^(0.333)*(1+(Outer.HeatTransfer.Dh/Lpipe)^0.667); 1281 1282 1283 "Outer Side Friction Factor for Heat Transfer  transition Flow" 1284 Outer.HeatTransfer.fi = 1/(0.79*ln(Outer.HeatTransfer.Re)1.64)^2; 1285 1286 end 1287 1288 when Outer.HeatTransfer.Re < 2300 switchto "laminar"; 1289 when Outer.HeatTransfer.Re > 10000 switchto "turbulent"; 1290 1291 case "turbulent": 1292 1293 switch OuterTurbulentCorrelation 1294 1295 case "Petukhov": 1296 1297 "Outer Side Friction Factor for Heat Transfer  turbulent Flow" 1298 Outer.HeatTransfer.fi = 1/(1.82*log(Outer.HeatTransfer.Re)1.64)^2; 1299 1300 "Nusselt Number" 1301 Outer.HeatTransfer.Nu*(1.07+(12.7*sqrt(0.125*Outer.HeatTransfer.fi)*((Outer.HeatTransfer.PR)^(2/3) 1))) = 0.125*Outer.HeatTransfer.fi*Outer.HeatTransfer.Re*Outer.HeatTransfer.PR; 1302 1303 case "SiederTate": 1304 1305 "Nusselt Number" 1306 Outer.HeatTransfer.Nu = 0.027*(Outer.HeatTransfer.PR)^(1/3)*(Outer.HeatTransfer.Re)^(4/5); 1307 1308 "Outer Side Friction Factor for Heat Transfer  turbulent Flow" 1309 Outer.HeatTransfer.fi = 1/(1.82*log(Outer.HeatTransfer.Re)1.64)^2; 1310 1311 end 1312 1313 when Outer.HeatTransfer.Re < 10000 switchto "transition"; 1314 1315 end 1316 1317 "Inner Pipe Film Coefficient" 1318 Inner.HeatTransfer.hcoeff = (Inner.HeatTransfer.Nu*Inner.Properties.Average.K/DiInner)*Inner.HeatTransfer.Phi; 1319 1320 "Outer Pipe Film Coefficient" 1321 Outer.HeatTransfer.hcoeff= (Outer.HeatTransfer.Nu*Outer.Properties.Average.K/Outer.HeatTransfer.Dh)*Outer.HeatTransfer.Phi; 1322 1323 "Total Pressure Drop Outer Stream" 1324 Outer.PressureDrop.Pdrop = Outer.PressureDrop.Pd_fric+Outer.PressureDrop.Pd_ret; 1325 1326 "Total Pressure Drop Inner Stream" 1327 Inner.PressureDrop.Pdrop = Inner.PressureDrop.Pd_fric+Inner.PressureDrop.Pd_ret; 1328 1329 "Pressure Drop Outer Stream" 1330 OutletOuter.P = InletOuter.P  Outer.PressureDrop.Pdrop; 1331 1332 "Pressure Drop Inner Stream" 1333 OutletInner.P = InletInner.P  Inner.PressureDrop.Pdrop; 1334 1335 "Outer Pipe Pressure Drop for friction" 1336 Outer.PressureDrop.Pd_fric = (2*Outer.PressureDrop.fi*(2*Lpipe)*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2)/(Outer.PressureDrop.Dh*Outer.HeatTransfer.Phi); 1337 1338 "Inner Pipe Pressure Drop for friction" 1339 Inner.PressureDrop.Pd_fric = (2*Inner.PressureDrop.fi*(2*Lpipe)*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2)/(DiInner*Inner.HeatTransfer.Phi); 1340 1341 "Outer Pipe Pressure Drop due to return" 1342 Outer.PressureDrop.Pd_ret = 1.5*Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean^2; 1343 1344 "Inner Pipe Pressure Drop due to return" 1345 Inner.PressureDrop.Pd_ret = 1.5*Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean^2; 1346 1347 "Outer Pipe Phi correction" 1348 Outer.HeatTransfer.Phi = (Outer.Properties.Average.Mu/Outer.Properties.Wall.Mu)^0.14; 1349 1350 "Inner Pipe Phi correction" 1351 Inner.HeatTransfer.Phi = (Inner.Properties.Average.Mu/Inner.Properties.Wall.Mu)^0.14; 1352 1353 "Outer Pipe Prandtl Number" 1354 Outer.HeatTransfer.PR = ((Outer.Properties.Average.Cp/Outer.Properties.Average.Mw)*Outer.Properties.Average.Mu)/Outer.Properties.Average.K; 1355 1356 "Inner Pipe Prandtl Number" 1357 Inner.HeatTransfer.PR = ((Inner.Properties.Average.Cp/Inner.Properties.Average.Mw)*Inner.Properties.Average.Mu)/Inner.Properties.Average.K; 1358 1359 "Outer Pipe Reynolds Number for Heat Transfer" 1360 Outer.HeatTransfer.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.HeatTransfer.Dh)/Outer.Properties.Average.Mu; 1361 1362 "Outer Pipe Reynolds Number for Pressure Drop" 1363 Outer.PressureDrop.Re = (Outer.Properties.Average.rho*Outer.HeatTransfer.Vmean*Outer.PressureDrop.Dh)/Outer.Properties.Average.Mu; 1364 1365 "Inner Pipe Reynolds Number for Heat Transfer" 1366 Inner.HeatTransfer.Re = (Inner.Properties.Average.rho*Inner.HeatTransfer.Vmean*Inner.HeatTransfer.Dh)/Inner.Properties.Average.Mu; 1367 1368 "Inner Pipe Reynolds Number for Pressure Drop" 1369 Inner.PressureDrop.Re = Inner.HeatTransfer.Re; 1370 1371 "Outer Pipe Velocity" 1372 Outer.HeatTransfer.Vmean*(Outer.HeatTransfer.As*Outer.Properties.Average.rho) = Outer.Properties.Inlet.Fw; 1373 1374 "Inner Pipe Velocity" 1375 Inner.HeatTransfer.Vmean*(Inner.HeatTransfer.As*Inner.Properties.Average.rho) = Inner.Properties.Inlet.Fw; 1376 1377 "Overall Heat Transfer Coefficient Clean" 1378 Details.Uc*((DoInner/(Inner.HeatTransfer.hcoeff*DiInner) )+(DoInner*ln(DoInner/DiInner)/(2*Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1; 1379 1380 "Overall Heat Transfer Coefficient Dirty" 1381 Details.Ud*(Rfi*(DoInner/DiInner) + Rfo + (DoInner/(Inner.HeatTransfer.hcoeff*DiInner) )+(DoInner*ln(DoInner/DiInner)/(2*Kwall))+(1/(Outer.HeatTransfer.hcoeff)))=1; 1382 1383 end 1384 1385 Model Hairpin_NTU as Hairpin_Basic 1386 1387 ATTRIBUTES 1388 1389 Icon = "icon/hairpin"; 1390 Pallete = true; 1391 Brief = "Hairpin Heat Exchanger  NTU Method"; 1392 Info = 1393 "to be documented."; 1394 1395 PARAMETERS 1396 1397 FlowDirection as Switcher (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent"); 1398 1399 VARIABLES 1400 1401 Method as NTU_Basic (Brief="NTU Method of Calculation", Symbol=" "); 1402 1403 EQUATIONS 1404 1405 "Number of Units Transference" 1406 Method.NTU*Method.Cmin = Details.Ud*Pi*DoInner*(2*Lpipe); 1407 1408 "Minimum Heat Capacity" 1409 Method.Cmin = min([Method.Ch,Method.Cc]); 1410 1411 "Maximum Heat Capacity" 1412 Method.Cmax = max([Method.Ch,Method.Cc]); 1413 1414 "Thermal Capacity Ratio" 1415 Method.Cr = Method.Cmin/Method.Cmax; 1416 1417 "Effectiveness Correction" 1418 Method.Eft1 = 1; 1419 1420 if Method.Cr equal 0 1421 1422 then 1423 "Effectiveness" 1424 Method.Eft = 1exp(Method.NTU); 1425 1426 else 1427 1428 switch FlowDirection 1429 1430 case "cocurrent": 1431 1432 "Effectiveness in Cocurrent Flow" 1433 Method.Eft = (1exp(Method.NTU*(1+Method.Cr)))/(1+Method.Cr); 1434 1435 case "counter": 1436 1437 if Method.Cr equal 1 1438 1439 then 1440 1441 "Effectiveness in Counter Flow" 1442 Method.Eft = Method.NTU/(1+Method.NTU); 1443 1444 else 1445 1446 "Effectiveness in Counter Flow" 1447 Method.Eft = (1exp(Method.NTU*(1Method.Cr)))/(1Method.Cr*exp(Method.NTU*(1Method.Cr))); 1448 1449 end 1450 1451 end 1452 1453 end 1454 1455 switch HotSide 1456 1457 case "outer": 1458 1459 "Duty" 1460 Details.Q = Method.Eft*Method.Cmin*(InletOuter.TInletInner.T); 1461 1462 "Hot Stream Heat Capacity" 1463 Method.Ch = InletOuter.F*Outer.Properties.Average.Cp; 1464 1465 "Cold Stream Heat Capacity" 1466 Method.Cc = InletInner.F*Inner.Properties.Average.Cp; 1467 1468 when InletInner.T > InletOuter.T switchto "inner"; 1469 1470 case "inner": 1471 1472 "Duty" 1473 Details.Q = Method.Eft*Method.Cmin*(InletInner.TInletOuter.T); 1474 1475 "Cold Stream Heat Capacity" 1476 Method.Cc = InletOuter.F*Outer.Properties.Average.Cp; 1477 1478 "Hot Stream Heat Capacity" 1479 Method.Ch = InletInner.F*Inner.Properties.Average.Cp; 1480 1481 when InletInner.T < InletOuter.T switchto "outer"; 1482 1483 end 1484 1485 end 1486 1487 Model Hairpin_LMTD as Hairpin_Basic 1488 1489 ATTRIBUTES 1490 1491 Icon = "icon/hairpin"; 1492 Pallete = true; 1493 Brief = "Hairpin Heat Exchanger  LMTD Method"; 1494 Info = 1495 "to be documented."; 1496 1497 PARAMETERS 1498 1499 FlowDirection as Switcher (Brief="Flow Direction",Valid=["counter","cocurrent"],Default="cocurrent"); 1500 1501 VARIABLES 1502 1503 Method as LMTD_Basic (Brief="LMTD Method of Calculation", Symbol=" "); 1504 1505 EQUATIONS 1506 1507 "Exchange Surface Area" 1508 Details.Q = Details.Ud*Pi*DoInner*(2*Lpipe)*Method.LMTD; 1509 1510 "LMTD Correction Factor  True counter ou cocurrent flow" 1511 Method.Fc = 1; 1512 1513 switch HotSide 1514 1515 case "outer": 1516 1517 switch FlowDirection 1518 1519 case "cocurrent": 1520 1521 "Temperature Difference at Inlet  Cocurrent Flow" 1522 Method.DT0 = InletOuter.T  InletInner.T; 1523 1524 "Temperature Difference at Outlet  Cocurrent Flow" 1525 Method.DTL = OutletOuter.T  OutletInner.T; 1526 1527 case "counter": 1528 1529 "Temperature Difference at Inlet  Counter Flow" 1530 Method.DT0 = InletOuter.T  OutletInner.T; 1531 1532 "Temperature Difference at Outlet  Counter Flow" 1533 Method.DTL = OutletOuter.T  InletInner.T; 1534 1535 1536 end 1537 1538 when InletInner.T > InletOuter.T switchto "inner"; 1539 1540 case "inner": 1541 1542 switch FlowDirection 1543 1544 case "cocurrent": 1545 1546 "Temperature Difference at Inlet  Cocurrent Flow" 1547 Method.DT0 = InletInner.T  InletOuter.T; 1548 1549 "Temperature Difference at Outlet  Cocurrent Flow" 1550 Method.DTL = OutletInner.T  OutletOuter.T; 1551 1552 case "counter": 1553 1554 "Temperature Difference at Inlet  Counter Flow" 1555 Method.DT0 = InletInner.T  OutletOuter.T; 1556 1557 "Temperature Difference at Outlet  Counter Flow" 1558 Method.DTL = OutletInner.T  InletOuter.T; 1559 1560 end 1561 1562 when InletInner.T < InletOuter.T switchto "outer"; 1563 1564 end 1565 1566 end 
trunk/eml/heat_exchangers/HEX_Engine.mso
r387 r404 356 356 VARIABLES 357 357 358 Pdrop as press_delta (Brief="Pressure Drop",Default=0.01, Lower=1e10,DisplayUnit='kPa', Symbol ="\Delta P}"); 358 Pdrop as press_delta (Brief="Total Pressure Drop",Default=0.01, Lower=1e10,DisplayUnit='kPa', Symbol ="\Delta P"); 359 Pd_fric as press_delta (Brief="Pressure Drop for friction",Default=0.01, Lower=1e10,DisplayUnit='kPa', Symbol ="\Delta P_{fric}"); 360 Pd_ret as press_delta (Brief="Pressure Drop due to return",Default=0.01, Lower=0,DisplayUnit='kPa', Symbol ="\Delta P_{return}"); 359 361 fi as fricfactor (Brief="Friction Factor", Default=0.05, Lower=1e10, Upper=2000); 360 362 Re as positive (Brief="Reynolds Number",Default=100,Lower=1);
Note: See TracChangeset
for help on using the changeset viewer.