Languages: Fortran IV (Fist Version) or Excel/Visual Basic (Second Version).
Objective: Calculation of hot rolling load, torque, power and energy. The load is calculated according to the methods of Orowan, Sims, Ekelund, Orowan-Pascoe, Tselikov and Alexander-Ford.
***** Begin of FORTRAN Program Listing *****
C C *** C *** CALCULATION OF LOAD, TORQUE, POWER AND WORK IN THE C *** HOT ROLLING OF STEEL FLATS C *** C *** C *** References: C *** C *** - SILVA, A.M.S.: Analise do Processo de Laminacao a Quente; C *** CPGEM/UFMG; Belo Horizonte; 1978. C *** C *** - BUCKLEY, G.W. et alii: Dynamic Analysis and Performance C *** of Hot Rolling Mills; Metals Technology; July 1978. C *** C *** - PLAUT, R.L.: Laminacao dos Acos - Topicos Avancados; C *** Associacao Brasileira dos Metais; Sao Paulo; 1984. C *** C *** - WUSATOWSKI, Z.: Fundamentals of Rolling; Pergamon Press; C *** Katowice; 1969. C *** C *** - ROBERTS, W.L.: The Hot Rolling of Steel; Marcel Dekker C *** Inc.; New York; 1983. C *** C *** C ***C *** C *** Antonio Augusto Gorni - July 23, 1990 C *** C $NOFLOATCALLS $STORAGE:2 $DO66 $INCLUDE:'FOREXEC.INC' SUBROUTINE SPEAK(IMEM,VEC,N) INTEGER*2 SYSTEM DIMENSION VEC(1) WRITE(*,2)IMEM 2 FORMAT(' ',A2) DO 1 I=1,N,4 1 WRITE(*,*)VEC(I),VEC(I+1),VEC(I+2),VEC(I+3) RETURN END C C *** FUNCAO ARCOS(X): Arco-cosseno de X, em radianos. C FUNCTION ARCOS(X) ARCOS=ATAN(SQRT(1.-X*X)/X) RETURN END C C *** FUNCAO FUN(X,Y,XK): Calculo da Tensao Horizontal para a C *** Saida. C FUNCTION FUN(X,Y,XK) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) TANG=SIN(X)/COS(X) IF(X)1,1,2 1 YM=0.5 GOTO 3 2 YM=0.7853982*SIN(X)-0.5*((1./X)-1./TANG)*SIN(X)+0.5*COS(X) 3 A=HF+D*(1.-COS(X)) FUN=(Y*D/A)*SIN(X)+D*XK*YM RETURN END C C *** FUNCAO FEN(X,Y,XK): Calculo da Tensao Horizontal para a C *** Entrada. C FUNCTION FEN(X,Y,XK) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) A=HF+D*(1.-COS(X)) I=101.-IFIX(X*101./XM) IF(I)4,4,5 4 I=1 5 XA=XKA(I) Z=XM-X TANG=SIN(Z)/COS(Z) IF(Z)1,1,2 1 YM=-0.5 GOTO 3 2 YM=0.7853982*SIN(Z)+0.5*((1./Z)-1./TANG)*SIN(Z)-0.5*COS(Z) 3 FEN=(Y*D/A)*SIN(Z)+D*XA*YM FEN=-FEN RETURN END C C *** FUNCAO SUN(X,Y,XK): Calculo da Tensao Vertical para a C *** Saida. C FUNCTION SUN(X,Y,XK) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) A=HF+D*(1.-COS(X)) TANG=SIN(X)/COS(X) IF(X)1,1,2 1 SUN=Y/A+XK*0.7853982 GOTO 3 2 SUN=Y/A+XK*0.7853982-0.5*((1./X)-1./TANG)*XK 3 RETURN END C C *** FUNCAO SEN(X,Y,XK): Calculo da Tensao Vertical para a C *** Entrada. C FUNCTION SEN(X,Y,XK) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) A=HF+D*(1.-COS(X)) TANG=SIN(X)/COS(X) IF(X)1,1,2 1 SEN=Y/A+XK*0.7853982 GOTO 3 2 SEN=Y/A+XK*0.7853982+0.5*((1./X)-1./TANG)*XK 3 RETURN END C C *** SUBROTINA QSF: Integracao de Pontos Discretos por Simpson. C SUBROUTINE QSF(H,Y,Z,NDIM) DIMENSION Y(1),Z(1) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) HT=.3333333*H L1=1 L2=2 L3=3 L4=4 L5=5 L6=6 IF(NDIM-5)7,8,1 1 SUM1=Y(L2)+Y(L2) SUM1=SUM1+SUM1 SUM1=HT*(Y(L1)+SUM1+Y(L3)) AUX1=Y(L4)+Y(L4) AUX1=AUX1+AUX1 AUX1=SUM1+HT*(Y(L3)+AUX1+Y(L5)) AUX2=HT*(Y(L1)+3.875*(Y(L2)+Y(L5))+2.825*(Y(L3)+Y(L4))+Y(L6)) SUM2=Y(L5)+Y(L5) SUM2=SUM2+SUM2 SUM2=AUX2-HT*(Y(L4)+SUM2+Y(L6)) Z(L1)=0. AUX=Y(L3)+Y(L3) AUX=AUX+AUX Z(L2)=SUM2-HT*(Y(L2)+AUX+Y(L4)) Z(L3)=SUM1 Z(L4)=SUM2 IF(NDIM-6)5,5,2 2 DO 4 I=7,NDIM,2 SUM1=AUX1 SUM2=AUX2 AUX1=Y(I-1)+Y(I-1) AUX1=AUX1+AUX1 AUX1=SUM1+HT*(Y(I-2)+AUX1+Y(I)) Z(I-2)=SUM1 IF(I-NDIM)3,6,6 3 AUX2=Y(I)+Y(I) AUX2=AUX2+AUX2 AUX2=SUM2+HT*(Y(I-1)+AUX2+Y(I+1)) 4 Z(I-1)=SUM2 5 Z(NDIM-1)=AUX1 Z(NDIM)=AUX2 RETURN 6 Z(NDIM-1)=SUM2 Z(NDIM)=AUX1 RETURN 7 IF(NDIM-3)12,11,8 8 SUM2=1.125*HT*(Y(L1)+Y(L2)+Y(L2)+Y(L2)+Y(L3)+Y(3)+Y(L3)+Y(L4)) SUM1=Y(L2)+Y(L2) SUM1=SUM1+SUM1 SUM1=HT*(Y(L1)+SUM1+Y(L3)) Z(L1)=0. AUX1=Y(L3)+Y(L3) AUX1=AUX1+AUX1 Z(L2)=SUM2-HT*(Y(L2)+AUX1+Y(L4)) IF(NDIM-5)10,9,9 9 AUX1=Y(L4)+Y(L4) AUX1=AUX1+AUX1 Z(L5)=SUM1+HT*(Y(L3)+AUX1+Y(L5)) 10 Z(L3)=SUM1 Z(L4)=SUM2 RETURN 11 SUM1=HT*(1.25*Y(L1)+Y(L2)+Y(L2)-0.25*Y(L3)) SUM2=Y(L2)+Y(L2) SUM2=SUM2+SUM2 Z(L3)=HT*(Y(L1)+SUM2+Y(L3)) Z(L1)=0. Z(L2)=SUM1 12 RETURN END C C *** SUBROTINA RK(FUN,H,XI,YI,K,N,VEC): Resolucao de Equacao C *** Diferencial pelo Metodo de Runge-Kutta. C SUBROUTINE RK(FUN,H,XI,YI,K,N,VEC) DIMENSION VEC(1) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) H2=H/2. X=XI Y=YI DO 2 I=1,N XK=XKA(I) DO 1 J=1,K T1=H*FUN(X,Y,XK) T2=H*FUN(X+H2,Y+T1/2.,XK) T3=H*FUN(X+H2,Y+T2/2.,XK) T4=H*FUN(X+H,Y+T3,XK) Y=Y+(T1+2.*T2+2.*T3+T4)/6. 1 X=X+H VEC(I)=Y 2 CONTINUE RETURN END C C *** PROGRAMA PRINCIPAL. C PROGRAM RCALC LOGICAL FLAG,FLAG1,FLAG2 EXTERNAL FUN,FEN,SUN,SEN INTEGER*2 SYSTEM DIMENSION P(101),H(101),SS(101),SE(101),DEF(101),VD(101) DIMENSION A(101),B(101),S(101),X(101),IBF(40) DIMENSION CLE(7),HFD(7),TLI(7),TLF(7),TQE(7),VPER(7) COMMON HI,HF,D,RI,XM,TLAM,XKA(101) DATA VRE/6.0/,IBELL/7/,CFATR/0.01/,CTRANS/0.95/,RMOT/0.95/ OPEN(1,FILE='CON:') OPEN(2,FILE='PRN:') 300 WRITE(*,1210)IBELL IDUMMY=SYSTEM('CLS'C) WRITE(*,189) 189 FORMAT(' CALCULATION OF HOT ROLLING LOAD, TORQUE AND POWER ', >,///' IDENTIFICATION MESSAGE? ') READ(*,1000)IBF 1000 FORMAT(40A2) WRITE(*,1010) 1010 FORMAT(/,' HOT STRENGTH GRADE? ',\) READ(*,1205)IRES 1205 FORMAT(A2) WRITE(*,1050) 1050 FORMAT(/,' INITIAL THICKNESS (MM)? ',\) READ(*,*)HI WRITE(*,1070) 1070 FORMAT(/,' WORK ROLL DIAMETER (MM)? ',\) READ(*,*)D WRITE(*,1080) 1080 FORMAT(/,' ROLLING STOCK WIDTH (MM)? ',\) READ(*,*)W WRITE(*,1090) 1090 FORMAT(/,' ROLLING STOCK LENGTH (MM)? ',\) READ(*,*)CI WRITE(*,1100) 1100 FORMAT(/,' NUMBER OF ROLLING PASSES? ',\) READ(*,*)JC WRITE(*,1110) 1110 FORMAT(/,' ROLL GAP OF EACH PASS (MM)? ') DO 1120 I=1,JC WRITE(*,2000)I 2000 FORMAT(1X,'PASS NO. ',I2,' = ',\) 1120 READ(*,*)HFD(I) WRITE(*,1130) 1130 FORMAT(/,' INITIAL TEMPERATURES OF EACH PASS (.C)? ') DO 1140 I=1,JC WRITE(*,2000)I 1140 READ(*,*)TLI(I) WRITE(*,1150) 1150 FORMAT(/,' FINAL TEMPERATURES OF EACH PASS (.C)? ') DO 1160 I=1,JC WRITE(*,2000)I 1160 READ(*,*)TLF(I) WRITE(*,1170) 1170 FORMAT(/,' WORK ROLL PERIPHERICAL SPEED (M/MIN)? ') DO 1180 I=1,JC WRITE(*,2000)I 1180 READ(*,*)VPER(I) WRITE(*,3000) 3000 FORMAT(/,' DO YOU WANT CORRECTION BY HITCHCOCK (T/F)? ',\) READ(*,3010)FLAG 3010 FORMAT(L1) WRITE(*,3146) 3146 FORMAT(/,' DO YOU WANT PRINTING OF THE RESULTS (T/F)? ',\) READ(*,3010)FLAG1 IDUMMY=SYSTEM('CLS'C) NA=100 NB=10 NN=0 Z=2.1517E-4 DA=D R=D/2 RI=R DO 30 KC=1,JC HIO=HI HF=HFD(KC) CF=CI*HI/HF RLA=RI*SIN(ARCOS(1.-(HI-HF)/(2.*RI))) IF((HI+HF)/2..LT.RLA)GO TO 57 HI=RLA+(HI-HF)/2. HF=RLA-(HIO-HF)/2. C C *** ANOTHER PATCH IN THE WALL! C WRITE(*,9845)HI,HF 9845 FORMAT(F9.2,F9.2) READ(*,*)WALZ 57 RE=(HI-HF)/HI TLAM=(TLI(KC)+TLF(KC))/2. 7 FACT=(1.-(HI-HF)/D)**2. RPM=VPER(KC)/(6.28318E-3*RI) XM=ATAN(SQRT((1.0/FACT)-1.0)) XITL=1./TLAM KK=1 N=NA+1 STEP1=XM/(N*NB) STEP2=STEP1*NB X(1)=STEP2 IF(IRES.EQ.'MR')GOTO 4340 IF(IRES.EQ.'AR')GOTO 4341 TERM1=10. GOTO 4342 4340 TERM1=11.1 4342 TERM2=12.231 TERM3=0.0025 TERM4=1.494 TERM5=0.174 TERM6=0.726 TERM7=0.139 GOTO 4345 4341 TERM1=11.9 TERM2=18.170 TERM3=0.0028 TERM4=1.516 TERM5=0.181 TERM6=0.750 TERM7=0.124 4345 DO 14 I=1,NA 14 X(I+1)=X(I)+STEP2 ICHAR='X' CALL SPEAK(ICHAR,X,NA) DO 15 I=1,N H(I)=HF+2.*RI*(1.-COS(X(I))) VD(I)=0.2094395*RPM*RI*SIN(X(I))/H(I) DEF(I)=ALOG(HI/H(I)) IF(DEF(I).LE.0.)DEF(I)=0.01 XKA(I)=(TERM1*TERM2* >EXP(-TERM3*TLAM)*TERM4*DEF(I)**TERM5*TERM6*VD(I)**TERM7)*1.155 C IF(XKA(I)-VRE)42,42,15 C 42 XKA(I)=VRE 15 CONTINUE ICHAR='H' CALL SPEAK(ICHAR,H,N) ICHAR='VD' CALL SPEAK(ICHAR,VD,N) ICHAR='DEF' CALL SPEAK(ICHAR,DEF,N) ICHAR='XKA' CALL SPEAK(ICHAR,XKA,N) C JE=0 C DO 32 I=1,N C IF(DEF(I)-50.)34,34,35 C 34 IF(VD(I)-1.5)35,35,32 C 35 JE=JE+1 C 32 CONTINUE C JF=JE+1 C DO 33 I=1,JE C 33 XKA(I)=XKA(JF) REMED=0.67*ALOG(HI/HF) VDMED=0.1047197*RPM*RI*SQRT(1./(RI*(HI-HF)))*ALOG(HI/HF) XKMED=(TERM1*TERM2* >EXP(-TERM3*TLAM)*TERM4*REMED**TERM5*TERM6*VDMED**TERM7)*1.155 ICHAR='**** XKMED ****' WRITE(*,4859)ICHAR,XKMED 4859 FORMAT(' ',A30,F8.2) XS=STEP1 FS=0.0 CALL RK(FUN,STEP1,XS,FS,NB,N,A) XE=STEP1 FE=0.0 CALL RK(FEN,STEP1,XE,FE,NB,N,B) DO 60 J=1,N L=N-J+1 E=X(J) XKB=XKA(J) FSAI=A(J) SS(J)=SUN(E,FSAI,XKB) FENT=B(L) SE(J)=SEN(E,FENT,XKB) IF(SE(J)-SS(J))10,10,11 11 S(J)=SS(J) GOTO 60 10 IF(KK-1)13,12,13 12 KK=KK+1 XN=X(J) HN=H(J) 13 S(J)=SE(J) 60 CONTINUE ICHAR='SS' CALL SPEAK(ICHAR,SS,N) ICHAR='SE' CALL SPEAK(ICHAR,SE,N) CALL QSF(STEP2,S,P,N) ICHAR='P' CALL SPEAK(ICHAR,P,N) CL=P(N)*D/2. QP=SQRT((1.-RE)/RE)*(1.5707965*ATAN(SQRT(RE/(1.-RE)))-SQRT >(RI/HF)*ALOG(HN/HF)+0.5*SQRT(RI/HF)*ALOG(1./(1.-RE)))-0.7853982 CLS=XKMED*SQRT(RI*(HI-HF))*QP QWP=(3.1415929+SQRT(RI*(HI-HF))/HF)/4. PWP=XKMED*QWP*SQRT(RI*(HI-HF)) YMI=0.8*(1.05-0.0005*TLAM)*(1.15-0.26*ALOG(VPER(KC)/60.)) YQEK=1.+(1.6*YMI*SQRT(RI*(HI-HF))-1.2*(HI-HF))/(HI+HF) PEK=XKMED*YQEK*SQRT(RI*(HI-HF)) DELTA=YMI*SQRT(4.*RI/(HI-HF)) RH=((1.+SQRT(1.+(DELTA**2.-1.)*(HI/HF)**DELTA))/(DELTA+1.))**(1./ >DELTA) PTSEL=SQRT(RI*(HI-HF))*XKMED*2.*RH*HF/((HI-HF)*(DELTA-1.))*(RH** >DELTA-1.) PFORD=0.5*XKMED*SQRT(RI*(HI-HF))*(1.570796+SQRT(RI*(HI-HF))/(HI+ >HF)) T=XKMED*R*RI*((XM/2.)-XN)*2. HP=T*RPM*1.0273E-6 WP=(T*9.81)/(RI*HN*COS(XN)) RA=RI RN=R*(1.+(Z*CL)/(HI-HF)) RI=RN D=2.*RN NN=NN+1 KK=1 IF(FLAG1)GO TO 1246 IS=1 GO TO 1946 1246 IS=2 WRITE(*,1210)IBELL WRITE(*,1295) 1295 FORMAT(//,' PREPARE PRINTER AND PRESS ENTER!') READ(*,1205)IAX 1946 WRITE(*,1210)IBELL WRITE(IS,101) 101 FORMAT(12X,' CALCULATION OF HOT ROLLING LOAD, TORQUE AND POWER', >/) IF(.NOT.FLAG1)GO TO 4698 WRITE(IS,9289)IBF 9289 FORMAT(31X,'VERSION IV, JULY 1990',//,31X,'ANTONIO AUGUSTO GORNI' >,////,' ',40A2,////) 4698 IF(NN.LE.1)GOTO 130 WRITE(IS,140) 140 FORMAT(' === CORRECTION FOR NEW WORK ROLL RADIUS ACCORDING ', >'TO HITCHCOCK ===',/) 130 WRITE(IS,211)IRES,HIO,HFD(KC) 211 FORMAT(' HOT STRENGTH GRADE: ',A2,/,' INITIAL THICKNESS (MM): ', >F4.0,20X,'FINAL THICKNESS (MM): ',F4.0) WRITE(IS,103)W,RA,VPER(KC),TLI(KC),TLF(KC) 103 FORMAT(' ROLLING STOCK WIDTH (MM): ',F5.0,/,' WORK ROLL RADIUS ', >'(MM): ',F4.0,/,' WORK ROLL PERIPHERICAL SPEED (M/MIN): ', >F5.1,/,' ROLLING STOCK ENTRY TEMPERATURE (.C): ',F5.0,/,' ROLLING ', >'STOCK EXIT TEMPERATURE (.C): ',F5.0) WRITE(IS,213)CI,CF 213 FORMAT(' INITIAL ROLLING STOCK LENGTH (MM): ',F8.2,/, >' FINAL ROLLING STOCK LENGTH (MM): ',F8.2,///) AUX1=W/1000. CLORW=CL*AUX1 CLSIM=CLS*AUX1 CLEKE=PEK*AUX1 CLOPA=PWP*AUX1 CLTSE=PTSEL*AUX1 CLFORD=PFORD*AUX1 AUX1=9.E-4*SQRT(RI*(HI-HF)) TORW=T*W/1.E6 TSIM=CLSIM*AUX1 TEKE=CLEKE*AUX1 TOPA=CLOPA*AUX1 TOTSE=CLTSE*AUX1 TOFORD=XKMED/2.E6*W*RI*(HI-HF)*(1.6+0.91*SQRT(RI*(HI-HF))/(HI+HF)) ATRORW=CLORW*2.*RI*CFATR/1000. TSIMT=CLSIM*2.*RI*CFATR/1000.+TSIM TEKET=CLEKE*2.*RI*CFATR/1000.+TEKE TOTAP=CLOPA*2.*RI*CFATR/1000.+TOPA TOTSET=CLTSE*2.*RI*CFATR/1000.+TOTSE TOFORT=CLFORD*2.*RI*CFATR/1000.+TOFORD RENDTR=(1./CTRANS-1.) ATRORW=(TORW+ATRORW)*RENDTR+ATRORW TORWT=TORW+ATRORW TSIMT=TSIMT*RENDTR+TSIMT TEKET=TEKET*RENDTR+TEKET TOTAP=TOTAP*RENDTR+TOTAP TOTSET=TOTSET*RENDTR+TOTSET TOFORT=TOFORT*RENDTR+TOFORT AUX1=RPM*1.0439972 HPORW=(HP*W+ATRORW*AUX1)/RMOT HPSIM=TSIMT*AUX1/RMOT HPEKE=TEKET*AUX1/RMOT HPOPA=TOTAP*AUX1/RMOT HPTSE=TOTSET*AUX1/RMOT HPFORD=TOFORT*AUX1/RMOT AUX1=9.81E6*HI*CI/(RA*HN*COS(XN)) WORW=TORWT*AUX1 WSIM=TSIMT*AUX1 WEKE=TEKET*AUX1 WOPA=TOTAP*AUX1 WTSE=TOTSET*AUX1 WFORD=TOFORT*AUX1 IF(IS.NE.1)GO TO 5839 WRITE(*,1200)IBELL 1200 FORMAT(/,1X,A2,'PRESS ENTER TO CONTINUE. ') READ(*,1205)IAX 1210 FORMAT(1X,A2) 5839 WRITE(IS,107) 107 FORMAT(' CALCULATION BY:',10X,'CALCULATION BY', >' SIMS:',/) WRITE(IS,108)CLORW,CLSIM,TORW,TSIM,TORWT,TSIMT,HPORW,HPSIM,WORW,WS >IM 108 FORMAT(' CARGA TOTAL (T): ',F5.0,18X,'TOTAL LOAD (T): ',F5.0,/, >' ROLLING TORQUE (T.M): ',F7.2,12X,'ROLLING TORQUE (T.M): ',F7.2,/, >' TOTAL TORQUE (T.M): ',F7.2,13X,'TOTAL TORQUE (T.M): ',F7.2,/, >' TOTAL POWER (KW): ',F6.0,12X,' TOTAL POWER (KW): ',F6.0,/, >' TOTAL WORK (KJ): ',E9.3,10X,'TOTAL WORK (KJ): ',E9.3, >//) WRITE(IS,110) 110 FORMAT(//,' CALCULATION BY EKELUND:',9X,'CALCULATION BY ', >'OROWAN-PASCOE:',/) WRITE(IS,108)CLEKE,CLOPA,TEKE,TOPA,TEKET,TOTAP,HPEKE,HPOPA,WEKE,WO >PA WRITE(IS,120) 120 FORMAT(//,' CALCULATION BY TSELIKOV:',8X,'CALCULATION BY ', >'ALEXANDER-FORD:',/) WRITE(IS,108)CLTSE,CLFORD,TOTSE,TOFORD,TOTSET,TOFORT,HPTSE,HPFORD, >WTSE,WFORD WRITE(IS,2947) 2947 FORMAT(10X) IF(IS.NE.1)GO TO 9387 WRITE(*,1200)IBELL READ(*,1205)IAX 9387 IDUMMY=SYSTEM('CLS'C) IF(NN.LE.1.AND.FLAG)GOTO 7 20 HI=HFD(KC) CI=CF RI=R NN=0 30 CONTINUE WRITE(*,9426) 9426 FORMAT(/,' DO YOU WANT TO CONTINUE (T/F)? ') READ(*,3010)FLAG2 IF(FLAG2)GO TO 300 22 END
***** End of Program Listing ******
Click here to download the Excel file or use the Visual Basic for Applications listing below.
***** Begin of Program Listing *****
' ' PROGRAMA PARA CÁLCULO DA CARGA DE LAMINAÇÃO A QUENTE CONFORME OS MODELOS DE ' OROWAN, SIMS, EKELUND, OROWAN-PASCOE, TSELIKOV E ALEXANDER-FORD ' ' ' Referências Bibliográficas Fundamentais: ' ' - SILVA, A.M.S. Análise do Processo de Laminação a Quente, CPGEM/UFMG, Belo Horizonte, ' 1978. ' ' - ROBERTS, W.L. The Hot Rolling of Steel, Marcel Dekker, Inc., New York, 1983. ' ' - WUSATOWSKI, Z. Fundamentals of Rolling, Pergamon Press, Katowice, 1969. ' ' - BUCKLEY, G.W. et al. Dynamic Analysis and Performance of Hot Rolling Mills, Metals ' Technology, July 1978. ' ' - ANON. Automatisation du Préréglage des Trains Continus a Larges Bandes, Rapport Final ' EUR 5712FR, IRSID/USINOR/Commission des Communautes Européenes, Septembre 1976. ' ' - PLAUT, R.L. Laminação dos Aços - Tópicos Avançados, Associação Brasileira de Metais, ' São Paulo, 1984. ' ' ' ' Desenvolvido por Antonio Augusto Gorni ' www.gorni.eng.br ' ' - Versão MBasic (TRS-80 III): 15.06.1984 ' - Versão Fortran IV (IBM 4340): 22.09.1984 ' - Versão Fortran 80 (CP/M): 10.07.1985 ' - Versão Fortran 80 (IBM-PC): 23.10.1990 ' - Versão GWBasic: 12.07.1992 ' - Versão VisualBasic: 17.06.2004 ' Option Explicit Option Base 1 Const Pi = 3.1415929 Dim a(101) As Single Dim b(101) As Single Dim C As Single Dim CargaLQ(6) As Single Dim CoefAtrito As Single Dim Compr As Single Dim D As Single Dim Def(101) As Single Dim DefConv As Single Dim DefMed As Single Dim EficMec As Single Dim EficElec As Single Dim FatorBracoAlav As Single Dim H(101) As Single Dim Hct As Single Dim Hi As Single Dim Hf As Single Dim Hn As Single Dim n As Integer Dim nb As Integer Dim NroPasses As Integer Dim P(101) As Single Dim PenetDef As Single Dim Potencia(6) As Single Dim R As Single Dim Ri As Single Dim RPM As Single Dim S(101) As Single Dim SE(101) As Single Dim Sigma(101) As Single Dim SigmaMed As Single Dim SS(101) As Single Dim Step1 As Single Dim Step2 As Single Dim TLam As Single Dim TorqueLQ(6) As Single Dim TorqueTotal(6) As Single Dim Trabalho(6) As Single Dim VelDef(101) As Single Dim VelDefMed As Single Dim W As Single Dim X(101) As Single Dim Xm As Single Dim i, iP, j, kk, l, na, nn As Integer Dim Da, Delta, Hio, Factor, Qek, Qp, Qwp, Rh, Xn As Single Sub LoadCalc() Application.ScreenUpdating = False na = 100 nb = 10 n = na + 1 Sheets("Dados Passe").Select Hi = [D4] Hf = [D5] W = [D6] Compr = [D7] TLam = [D8] RPM = [D9] D = [D10] C = [I4] FatorBracoAlav = [I5] EficMec = [I6] / 100 EficElec = [I7] / 100 nn = 0 Da = D R = D / 2 Ri = R Hio = Hi PenetDef = Ri * Sin(ArCos(1# - (Hi - Hf) / (2# * Ri))) If (Hi + Hf) / 2 > PenetDef Then Hi = PenetDef + (Hi - Hf) / 2# Hf = PenetDef - (Hio - Hf) / 2# End If DefConv = (Hi - Hf) / Hi TLam = TLam + 0.77 * 0.0000000566 * (TLam + 273) ^ 4 * Hi / (1000 * 6 * 26.4) Factor = (1# - (Hi - Hf) / D) ^ 2# Xm = Atn(Sqr((1# / Factor) - 1#)) kk = 1 Step1 = Xm / (n * nb) Step2 = Step1 * nb X(1) = Step2 For i = 1 To na X(i + 1) = X(i) + Step2 Next i For i = 1 To n H(i) = Hf + 2# * Ri * (1# - Cos(X(i))) Def(i) = Log(Hi / H(i)) If Def(i) < 0 Then Def(i) = 0 VelDef(i) = 0.2094395 * RPM * Ri * Sin(X(i)) / H(i) Sigma(i) = 1.155 * Misaka(C, TLam, Def(i), VelDef(i)) Next i DefMed = Log(Hi / Hf) VelDefMed = 0.1047197 * RPM * Ri * Sqr(1# / (Ri * (Hi - Hf))) * Log(Hi / Hf) SigmaMed = 1.155 * Misaka(C, TLam, DefMed, VelDefMed) Call RungeKutta_Fun(Step1, Step1, 0, nb, n, a) Call RungeKutta_Fen(Step1, Step1, 0, nb, n, b) For j = 1 To n l = n - j + 1 SS(j) = Sun(X(j), a(j), Sigma(j)) SE(j) = Sen(X(j), b(l), Sigma(j)) If SE(j) > SS(j) Then S(j) = SS(j) Else If kk = 1 Then kk = kk + 1 Xn = X(j) Hn = H(j) Else S(j) = SE(j) End If End If Next j Call QSF(Step2, S, P, n) CargaLQ(1) = P(n) * D / 2# * W / 1000 Qp = Sqr((1# - DefConv) / DefConv) * (1.5707965 * Atn(Sqr(DefConv / (1# - DefConv))) - _ Sqr(Ri / Hf) * Log(Hn / Hf) + 0.5 * Sqr(Ri / Hf) * Log(1# / (1# - DefConv))) - _ 0.7853982 CargaLQ(2) = SigmaMed * Sqr(Ri * (Hi - Hf)) * Qp * W / 1000 Qwp = (Pi + Sqr(Ri * (Hi - Hf)) / Hf) / 4# CargaLQ(3) = SigmaMed * Qwp * Sqr(Ri * (Hi - Hf)) * W / 1000 CoefAtrito = 0.8 * (1.05 - 0.0005 * TLam) Qek = 1# + (1.6 * CoefAtrito * Sqr(Ri * (Hi - Hf)) - 1.2 * (Hi - Hf)) / (Hi + Hf) CargaLQ(4) = SigmaMed * Qek * Sqr(Ri * (Hi - Hf)) * W / 1000 Delta = CoefAtrito * Sqr(4# * Ri / (Hi - Hf)) Rh = ((1# + Sqr(1# + (Delta ^ 2# - 1#) * (Hi / Hf) ^ Delta)) / (Delta + 1#)) ^ _ (1# / Delta) CargaLQ(5) = Sqr(Ri * (Hi - Hf)) * SigmaMed * 2# * Rh * Hf / ((Hi - Hf) * _ (Delta - 1#)) * (Rh ^ Delta - 1#) * W / 1000 CargaLQ(6) = 0.5 * SigmaMed * Sqr(Ri * (Hi - Hf)) * (Pi / 2 + Sqr(Ri * _ (Hi - Hf)) / (Hi + Hf)) * W / 1000 TorqueLQ(1) = SigmaMed * R * Ri * ((Xm / 2#) - Xn) * 2# * W / 1000000 For j = 2 To 5 TorqueLQ(j) = 2 * CargaLQ(j) * FatorBracoAlav * Sqr(Ri * (Hi - Hf) / 1000000) Next j TorqueLQ(6) = SigmaMed / 2000000# * W * Ri * (Hi - Hf) * (1.6 + 0.91 * Sqr(Ri * (Hi - Hf)) / (Hi + Hf)) For j = 1 To 6 TorqueTotal(j) = TorqueLQ(j) / EficMec Potencia(j) = TorqueTotal(j) * RPM * 1.02666 / EficElec Trabalho(j) = TorqueTotal(j) * 9.81 * Hi * Compr / (Ri * Hn * Cos(Xn)) Next j For j = 4 To 9 Cells(14, j) = CargaLQ(j - 3) Cells(15, j) = TorqueLQ(j - 3) Cells(16, j) = TorqueTotal(j - 3) Cells(17, j) = Potencia(j - 3) Cells(18, j) = Trabalho(j - 3) Next j End Sub Function Misaka(C As Single, T As Single, Def As Single, VelDef As Single) As Single Misaka = Exp(0.126 - 1.75 * C + 0.594 * C ^ 2 + (2851 + 2968 * C - 1120 * C ^ 2) / (T + 273)) * Def ^ 0.21 * VelDef ^ 0.13 End Function Function ArCos(X As Single) As Single ArCos = Atn(Sqr(1# - X * X) / X) End Function Function Fun(X As Single, Y As Single, XK As Single) As Single Dim Tang, a, Ym As Single Tang = Sin(X) / Cos(X) If X <= 0 Then Ym = 0.5 Else Ym = 0.7853982 * Sin(X) - 0.5 * ((1# / X) - 1# / Tang) * Sin(X) + 0.5 * Cos(X) End If a = Hf + D * (1# - Cos(X)) Fun = (Y * D / a) * Sin(X) + D * XK * Ym End Function Function Fen(X As Single, Y As Single, XK As Single) As Single Dim a, xa, z, Tang, Ym As Single a = Hf + D * (1# - Cos(X)) i = 101# - Int(X * 101# / Xm) If i <= 0 Then i = 1 xa = Sigma(i) z = Xm - X Tang = Sin(z) / Cos(z) If z <= 0 Then Ym = 0.5 Else Ym = 0.7853982 * Sin(z) + 0.5 * ((1# / z) - 1# / Tang) * Sin(z) - 0.5 * Cos(z) End If Fen = (Y * D / a) * Sin(z) + D * xa * Ym Fen = -Fen End Function Function Sun(X As Single, Y As Single, XK As Single) As Single Dim a, Tang As Single a = Hf + D * (1# - Cos(X)) Tang = Sin(X) / Cos(X) If X <= 0 Then Sun = Y / a + XK * 0.7853982 Else Sun = Y / a + XK * 0.7853982 - 0.5 * ((1# / X) - 1# / Tang) * XK End If End Function Function Sen(X As Single, Y As Single, XK As Single) As Single Dim a, Tang As Single a = Hf + D * (1# - Cos(X)) Tang = Sin(X) / Cos(X) If X <= 0 Then Sen = Y / a + XK * 0.7853982 Else Sen = Y / a + XK * 0.7853982 + 0.5 * ((1# / X) - 1# / Tang) * XK End If End Function Sub QSF(H As Single, Y() As Single, z() As Single, NDim As Integer) Dim l1, l2, l3, l4, l5, l6 As Integer Dim Ht, Sum1, Sum2, Aux, Aux1, Aux2 As Single Ht = 0.3333333 * H l1 = 1 l2 = 2 l3 = 3 l4 = 4 l5 = 5 l6 = 6 If NDim > 5 Then Sum1 = Y(l2) + Y(l2) Sum1 = Sum1 + Sum1 Sum1 = Ht * (Y(l1) + Sum1 + Y(l3)) Aux1 = Y(l4) + Y(l4) Aux1 = Aux1 + Aux1 Aux1 = Sum1 + Ht * (Y(l3) + Aux1 + Y(l5)) Aux2 = Ht * (Y(l1) + 3.875 * (Y(l2) + Y(l5)) + 2.825 * (Y(l3) + Y(l4)) + Y(l6)) Sum2 = Y(l5) + Y(l5) Sum2 = Sum2 + Sum2 Sum2 = Aux2 - Ht * (Y(l4) + Sum2 + Y(l6)) z(l1) = 0# Aux = Y(l3) + Y(l3) Aux = Aux + Aux z(l2) = Sum2 - Ht * (Y(l2) + Aux + Y(l4)) z(l3) = Sum1 z(l4) = Sum2 If NDim > 6 Then For i = 7 To NDim Step 2 Sum1 = Aux1 Sum2 = Aux2 Aux1 = Y(i - 1) + Y(i - 1) Aux1 = Aux1 + Aux1 Aux1 = Sum1 + Ht * (Y(i - 2) + Aux1 + Y(i)) z(i - 2) = Sum1 If i < NDim Then Aux2 = Y(i) + Y(i) Aux2 = Aux2 + Aux2 Aux2 = Sum2 + Ht * (Y(i - 1) + Aux2 + Y(i + 1)) z(i - 1) = Sum2 Else z(NDim - 1) = Sum2 z(NDim) = Aux1 Exit Sub End If Next i End If z(NDim - 1) = Aux1 z(NDim) = Aux2 Exit Sub Else If NDim > 3 Then Sum2 = 1.125 * Ht * (Y(l1) + Y(l2) + Y(l2) + Y(l2) + Y(l3) + Y(3) + Y(l3) + Y(l4)) Sum1 = Y(l2) + Y(l2) Sum1 = Sum1 + Sum1 Sum1 = Ht * (Y(l1) + Sum1 + Y(l3)) z(l1) = 0# Aux1 = Y(l3) + Y(l3) Aux1 = Aux1 + Aux1 z(l2) = Sum2 - Ht * (Y(l2) + Aux1 + Y(l4)) If NDim >= 5 Then Aux1 = Y(l4) + Y(l4) Aux1 = Aux1 + Aux1 z(l5) = Sum1 + Ht * (Y(l3) + Aux1 + Y(l5)) End If z(l3) = Sum1 z(l4) = Sum2 Exit Sub Else If NDim = 3 Then Sum1 = Ht * (1.25 * Y(l1) + Y(l2) + Y(l2) - 0.25 * Y(l3)) Sum2 = Y(l2) + Y(l2) Sum2 = Sum2 + Sum2 z(l3) = Ht * (Y(l1) + Sum2 + Y(l3)) z(l1) = 0# z(l2) = Sum1 End If End If End If End Sub Sub RungeKutta_Fun(H As Single, XI As Single, YI As Single, _ k As Integer, n As Integer, Vec() As Single) Dim i, j As Integer Dim X As Single Dim Y As Single Dim XK As Single Dim h2, t1, t2, t3, t4 As Single h2 = H / 2# X = XI Y = YI For i = 1 To n XK = Sigma(i) For j = 1 To k t1 = H * Fun(X, Y, XK) t2 = H * Fun(X + h2, Y + t1 / 2#, XK) t3 = H * Fun(X + h2, Y + t2 / 2#, XK) t4 = H * Fun(X + H, Y + t3, XK) Y = Y + (t1 + 2# * t2 + 2# * t3 + t4) / 6# X = X + H Next j Vec(i) = Y Next i End Sub Sub RungeKutta_Fen(H As Single, XI As Single, YI As Single, _ k As Integer, n As Integer, Vec() As Single) Dim i, j As Integer Dim X As Single Dim Y As Single Dim XK As Single Dim h2, t1, t2, t3, t4 As Single h2 = H / 2# X = XI Y = YI For i = 1 To n XK = Sigma(i) For j = 1 To k t1 = H * Fen(X, Y, XK) t2 = H * Fen(X + h2, Y + t1 / 2#, XK) t3 = H * Fen(X + h2, Y + t2 / 2#, XK) t4 = H * Fen(X + H, Y + t3, XK) Y = Y + (t1 + 2# * t2 + 2# * t3 + t4) / 6# X = X + H Next j Vec(i) = Y Next i End Sub
***** End of Program Listing ******
Return to the Software Menu.
Last Update: 23 April 2005 | ||
© Antonio Augusto Gorni |