10 REM ***************************************************************** 20 REM * IEEE METHOD - TRANSIENT OR STEADY STATE CALCULATION 30 REM * OF BARE OVERHEAD CONDUCTOR TEMPERATURE OR THERMAL RATING 40 REM * LAST MODIFIED 11/7/97 BY DAD 50 REM * PROGRAM NAME IS "IEEE738SI.BAS" 60 REM * LANGUAGE IS "QUICK BASIC" 70 REM * ASSUMES SI UNITS FOR INPUT FILE 80 REM * 90 REM * 240 REM * IN COMPARISON WITH THE 1986 VERSION OF THIS PROGRAM, PROVIDED 250 REM * BY THE IEEE, THE 1993 VERSION ADDED THE FOLLLOWING FEATURES: 260 REM * 290 REM * - INITIAL CONDUCTOR TEMP OR CURRENT CAN BE USED IN 300 REM * TRANSIENT CALCULATIONS 330 REM * - VERY SHORT DURATION "FAULT" CURRENTS AS LARGE AS 1E6 340 REM * AMPERES FOR TIMES AS SHORT AS 0.01 SEC CAN BE USED 350 REM * - THE ORIGINAL NUMERICAL ITERATION METHOD HAS BEEN 360 REM * REPLACED WITH A MUCH MORE EFFICIENT METHOD 370 REM * - FOR ACSR CONDUCTOR, THE HEAT CAPACITY OF THE STEEL CORE 380 REM * AND THE OUTER ALUM STRANDS ARE ENTERED SEPARATELY. 390 REM * 392 REM * THIS VERSION IS CONSISTENT WITH IEEE STD 738-2006 394 REM * - THE SOLAR MODEL ALLOWS ANY HOUR AND LATITUDE 396 REM * - THE AIR PROPERTIES ARE CALCULATED WITH CLOSED FORM EQUATIONS 398 REM * - THIS PROGRAM AND EQUATIONS USE SI UNITS 400 REM ************************************************************** 410 REM *********************************** 420 REM * INITIALIZE VARIABLES AND ARRAYS * 430 REM *********************************** 440 DIM ATCDR(1000) 450 DIM TIME(1000) 460 FLAG1 = 0 470 XIDUMMY = 0 480 XIPRELOAD = 0 490 XISTEP = 0 500 TCDR = 0 510 TCDRPRELOAD = 0 520 TCDRMAX = 0 530 IORTPRELOAD = 0 540 DELTIME = 0 550 FS1 = 0 560 FS2 = 0 570 FS3 = 0 580 X$ = STRING$(56, 45) 590 REM ******************************* 600 REM * START REPEAT CALCULATION HERE 610 REM ******************************* 620 FOR KI = 1 TO 1000 630 ATCDR(KI) = 0 640 TIME(KI) = 0 650 NEXT KI 660 NFLAG = 0 670 PI = 3.141593 672 PIANG = PI / 180! 680 IF FLAG1 = 99 GOTO 1120 690 REM ************************************************ 700 REM * SPECIFY DATA INPUT ASCII FILE NAME 710 REM ************************************************ 720 CLS 730 INPUT "ENTER INPUT FILE NAME ", F$: OPEN F$ FOR INPUT AS #1 780 REM *********************************** 790 REM * SPECIFY HOW DATA IS TO BE OUTPUT 800 REM *********************************** 810 PRINT "DO YOU WANT THE OUTPUT TO GO TO SCREEN ONLY(0), FILE ONLY(1)," 820 INPUT " OR TO BOTH SCREEN AND FILE(2)? ", SORF 830 IF SORF <> 0 AND SORF <> 1 AND SORF <> 2 THEN GOTO 810 840 IF SORF <> 0 THEN INPUT "ENTER OUTPUT FILE NAME ", FOUT$: OPEN FOUT$ FOR OUTPUT AS #2 845 INPUT "DO YOU WANT DEBUG CHECKS? YES (0), NO(1) ", DEBUG 850 REM ************************************************************ 860 REM * ENTER DATA FROM INPUT FILE 870 REM ************************************************************ 880 GOSUB 8000 1120 REM ***************************************** 1130 REM * CALCULATE SOLAR HEAT INPUT TO CONDUCTOR 1140 REM ***************************************** 1150 GOSUB 5000 1160 REM ************************************************************** 1170 REM * CALCULATE THERMAL COEF OF RESISTANCE & WIND ANGLE CORRECTION 1180 REM ************************************************************** 1190 GOSUB 9000 1200 REM ******************************** 1210 REM * SELECT THE CALCULATION DESIRED 1220 REM ******************************** 1230 ON NSELECT GOTO 1500, 1240, 1460, 1460 1240 REM ******************************************************************** 1250 REM * FOR NSELECT = 2 1260 REM * GO TO AMPACITY SUBROUTINE TO CALCULATE THE STEADY STATE 1270 REM * CURRENT (TR) GIVEN THE STEADY STATE CONDUCTOR TEMPERATURE (TCDR) 1280 REM * THE CONDUCTOR TEMPERATURE IS GIVEN SO ONLY ONE PASS THROUGH 1290 REM * THE SUBROUTINE IS REQUIRED. 1300 REM ******************************************************************** 1310 TCDR = TCDRPRELOAD 1320 GOSUB 15000 1330 GOTO 1730 1340 REM ******************************************************************** 1350 REM 1360 REM ******************************************************************** 1370 REM * FOR NSELECT = 1,3,OR 4 1380 REM * GO TO AMPACITY SUBROUTINE REPEATEDLY IN ORDER TO CALCULATE 1390 REM * THE STEADY STATE CURRENT (TR) CORRESPONDING TO TRIAL VALUES OF 1400 REM * CONDUCTOR TEMPERATURE (TCDR). IF T=1 THEN THE OUTPUT OF THE 1410 REM * SUBROUTINE, TR, IS THE STEADY STATE CURRENT FOR 1420 REM * WHICH A STEADY STATE TEMPERATURE WAS TO BE FOUND. 1430 REM * IF T=3 OR 4 AND IORTPRELOAD=1, THEN TR IS THE INITIAL PRE-STEP 1440 REM * CHANGE CURRENT FOR WHICH AN INITIAL TEMPERATURE WAS TO BE CALCULATED. 1450 REM ********************************************************************* 1460 ON IORTPRELOAD GOTO 1500, 1650 1470 REM ******************************************** 1480 REM * CALCULATE TCDR GIVEN XIDUMMY = XIPRELOAD * 1490 REM ******************************************** 1500 XIDUMMY = XIPRELOAD 1510 NFLAG = 0 1520 GOSUB 13000 1530 TCDRPRELOAD = TCDR 1540 REM *************************************************************** 1550 REM * FOR NSELECT = 1 THE PROGRAM HAS FOUND THE STEADY STATE CONDUCTOR 1560 REM * TEMPERATURE (TCDRPRELOAD) CORRESPONDING TO THE GIVEN STEADY STATE 1570 REM * CURRENT (XIPRELOAD) AND CONTROL IS PASSED TO THE PRINTOUT SECTION 1580 REM *************************************************************** 1590 IF NSELECT = 1 THEN 1730 1600 REM ***************************************************************** 1610 REM * FOR NSELECT = 3 OR 4, THE PROGRAM HAS DETERMINED (IORTPRELOAD=1) OR BEEN 1620 REM * GIVEN (IORTPRELOAD=2) THE INITIAL STEADY STATE CONDUCTOR TEMPERATURE 1630 REM * AND CONTROL PASSES TO FURTHUR TRANSIENT CALCULATIONS 1640 REM ***************************************************************** 1650 IF NSELECT = 4 THEN GOSUB 10000 1660 REM ************************************************************* 1670 REM * BEGIN CALCULATION OF CONDUCTOR TEMP AS A FUNCTION OF TIME 1680 REM * FOR A STEP INCREASE IN ELECTRICAL CURRENT, NSELECT = 3 1690 REM ************************************************************* 1700 ET = 3600! 1710 XISTEP = XISTEP 1720 GOSUB 11000 1730 REM ************************* 1740 REM * PRINT RESULTS TO SCREEN 1750 REM ************************* 1760 IF SORF = 0 OR SORF = 2 THEN GOSUB 6000 1770 REM *********************** 1780 REM * WRITE RESULTS TO FILE 1790 REM *********************** 1800 IF SORF = 1 OR SORF = 2 THEN GOSUB 16000 1810 REM IF FS = 1 GOTO 1880 1820 IF NS < NSETS THEN GOTO 880 ELSE CLOSE #1 1830 IF SORF = 1 OR SORF = 2 THEN CLOSE #2 1840 GOTO 1930 1850 REM ******************************************** 1860 REM * SETUP TO REPEAT PROGRAM CALCULATIONS WITH NEW DATA 1870 REM ******************************************** 1880 REM INPUT "DO YOU WANT TO RUN THE PROGRAM AGAIN (YES = 1, NO = 2)", YN 1890 REM IF YN <> 1 AND YN <> 2 THEN GOTO 1880 1900 REM IF YN = 2 GOTO 1920 1910 REM IF YN = 1 THEN FLAG1 = 99: RESTORE: GOTO 620 1920 REM IF SORF = 1 OR SORF = 2 THEN CLOSE #2 1930 END 5000 REM ///////////////////////////////////////////////////////// 5010 REM / SUBROUTINE TO CALCULATE CONDUCTOR SOLAR HEAT GAIN (QS) 5020 REM ///////////////////////////////////////////////////////// 5030 IF SUN.TIME >= 24 THEN 5560 5040 DEG.TO.RAD = PI / 180! 5050 CDR.LAT.RAD = CDR.LAT.DEG * DEG.TO.RAD 5060 REM * SOLAR DECLINATION 5070 DECL.DEG = 23.4583 * SIN(((284 + NDAY) / 365) * 2 * PI) 5080 DECL.RAD = DECL.DEG * DEG.TO.RAD 5090 REM * SOLAR ANGLE RELATIVE TO NOON 5100 HOUR.ANG.DEG = (SUN.TIME - 12) * 15 5110 HOUR.ANG.RAD = HOUR.ANG.DEG * DEG.TO.RAD 5120 REM * FIND SOLAR ALTITUDE - H3 5130 H3ARG = COS(CDR.LAT.RAD) * COS(DECL.RAD) * COS(HOUR.ANG.RAD) + SIN(CDR.LAT.RAD) * SIN(DECL.RAD) 5140 H3.RAD = ATN(H3ARG / SQR(1 - H3ARG ^ 2)) 5150 H3.DEG = H3.RAD / DEG.TO.RAD 5160 5170 IF A3 = 1 THEN 5290 5180 REM *************************************************************** 5190 REM * SOLAR HEATING (Q3) AT EARTH SURFACE (W/M2) IN CLEAR AIR (P6) 5200 REM *************************************************************** 5210 Q3 = -42.2391 + 63.8044 * H3.DEG - 1.922 * H3.DEG ^ 2 5220 Q3 = Q3 + .034692 * H3.DEG ^ 3 - 3.6112E-04 * H3.DEG ^ 4 5230 Q3 = Q3 + 1.9432E-06 * H3.DEG ^ 5 - 4.0761E-09 * H3.DEG ^ 6 5240 B$ = "CLEAR" 5250 GOTO 5330 5260 REM ***************************************************************** 5270 REM * SOLAR HEAT (Q3) AT EARTH SURFACE (W/M2) IN INDUSTRIAL AIR (P6) 5280 REM ***************************************************************** 5290 Q3 = 53.1821 + 14.211 * H3.DEG + .66138 * H3.DEG ^ 2 5300 Q3 = Q3 - .031658 * H3.DEG ^ 3 + 5.4654E-04 * H3.DEG ^ 4 5310 Q3 = Q3 - 4.3446E-06 * H3.DEG ^ 5 + 1.3236E-08 * H3.DEG ^ 6 5320 B$ = "INDUSTRIAL" 5330 REM * CALCULATE SOLAR AZIMUTH VARIABLE, CHI 5335 IF DEBUG = 0 THEN PRINT #2, " Q3 = "; Q3 5340 CHI.DENOM = SIN(CDR.LAT.RAD) * COS(HOUR.ANG.RAD) - COS(CDR.LAT.RAD) * TAN(DECL.RAD) 5350 CHI = SIN(HOUR.ANG.RAD) / CHI.DENOM 5360 REM * CALCULATE SOLAR AZIMUTH CONSTANT, CAZ 5370 IF HOUR.ANG.DEG < 0 AND CHI >= 0 THEN CAZ = 0 5380 ELSEIF HOUR.ANG.DEG >= 0 AND CHI < 0 THEN CAZ = 360 5390 ELSE CAZ = 180 5495 END IF 5400 REM * CALCULATE SOLAR AZIMUTH IN DEGREES, Z4.DEG 5410 Z4.DEG = CAZ + ATN(CHI)/DEG.TO.RAD 5420 Z4.RAD = Z4.DEG * DEG.TO.RAD 5510 Z1.RAD = Z1.DEG * DEG.TO.RAD 5520 E1 = COS(H3.RAD) * COS(Z4.RAD - Z1.RAD) 5530 E2.RAD = ATN(SQR(1 / E1 ^ 2 - 1)) 5540 QS = ABSORP * Q3 * SIN(E2.RAD) * D / 1000 * (1 + .0001148 * CDR.ELEV - 1.108E-08 * CDR.ELEV ^ 2) 5545 IF DEBUG = 0 THEN PRINT #2, " QS = "; QS 5550 GOTO 5570 5560 QS = 0! 5570 RETURN 6000 REM ////////////////////////////////////////////// 6010 REM / SUBROUTINE TO PRINT OUTPUT TO MONITOR SCREEN 6020 REM ////////////////////////////////////////////// 6030 REM ***************** 6040 REM * PRINT TO SCREEN 6050 REM ***************** 6060 CLS 6070 PRINT 6080 PRINT X$ 6090 PRINT " IEEE STD 738-2006 METHOD OF CALCULATION" 6100 PRINT 6110 PRINT "AIR TEMPERATURE = "; TAMB; " DEG C &"; 6130 PRINT "WIND SPEED IS "; VWIND; " M / SEC" 6140 PRINT USING "THE ANGLE BETWEEN WIND AND CONDUCTOR IS ### DEG"; WINDANG.DEG 6150 PRINT USING "THE CONDUCTOR IS #####. M ABOVE SEA LEVEL;"; CDR.ELEV 6160 PRINT USING "AND ###.# DEG FROM NORTH; AT A LATITUDE OF ###.# DEG"; Z1.DEG; CDR.LAT 6170 PRINT "THE SUN TIME IS "; SUN.TIME; "HOURS &"; " THE ATMOSPHERE IS "; B$ 6180 PRINT 6240 PRINT "CONDUCTOR DIAMETER IS "; D; " MM" 6250 PRINT USING "CONDUCTOR RESISTANCE IS ##.#### OHMS/KM AT #### DEG C"; RLO * 1000; TLO 6260 PRINT USING " AND ##.#### OHMS/KM AT #### DEG C"; RHI * 1000; THI 6270 PRINT "COEF OF EMISSIVITY = "; EMISS; " & COEF OF ABSORPTIVITY = "; ABSORP 6280 IF NSELECT = 3 OR NSELECT = 4 GOTO 6490 6290 PRINT 6350 PRINT USING "SOLAR HEAT INPUT IS ####.### WATTS PER CONDUCTOR METER"; QS 6360 PRINT USING "RADIATION COOLING IS ####.### WATTS PER CONDUCTOR METER"; QR 6370 PRINT USING "CONVECTIVE COOLING IS ####.### WATTS PER CONDUCTOR METER"; QC 6380 PRINT 6390 IF NSELECT = 1 THEN GOTO 6440 6400 PRINT USING "GIVEN A MAXIMUM CONDUCTOR TEMPERATURE OF #####.# DEG C,"; TCDRPRELOAD 6410 PRINT USING "THE STEADY STATE THERMAL RATING IS ######.# AMPERES"; TR 6420 GOSUB 7000 6430 RETURN 6440 IF XIPRELOAD = 1.111 THEN XIPRELOAD = 0 6450 PRINT USING "GIVEN A CONSTANT CURRENT OF #####.# AMPERES,"; XIPRELOAD 6460 PRINT USING "THE CONDUCTOR TEMPERATURE IS ####.# DEG C"; TCDRPRELOAD 6470 GOSUB 7000 6480 RETURN 6490 REM PRINT 6500 PRINT " ******* TRANSIENT THERMAL CALCULATIONS *******" 6510 PRINT USING "INITIAL STEADY STATE CONDUCTOR TEMP = ###.# DEG C"; TCDRPRELOAD 6520 IF IORTPRELOAD = 1 THEN PRINT USING "FOR A PRE-STEP STEADY STATE CURRENT = #####.# AMPERES"; XIPRELOAD 6530 IF HNH = 2 THEN GOTO 6610 6550 PRINT USING " HEAT CAPACITY = ####.# WATTS-SEC/M-C"; HEATCAP 6560 GOTO 6630 6610 PRINT USING " CORE HEAT CAPACITY = ####.# WATTS-SEC/M-C"; HEATCORE 6620 PRINT USING " OUTER STRAND LAYERS HEAT CAPACITY = ####.# WATTS-SEC/M-C"; HEATOUT 6630 IF NSELECT = 4 THEN 6670 6640 PRINT "THE TOTAL TIME OF INTEREST AFTER THE CURRENT" 6650 IF SORM = 0 THEN PRINT USING "INCREASES TO #######.# AMPS = ####.#### SECONDS"; XISTEP; TT 6660 IF SORM = 1 THEN PRINT USING "INCREASES TO #######.# AMPS = ####.#### MINUTES"; XISTEP; TT / 60 6670 PRINT USING "CALCULATION TIME INTERVAL = ###.#### SECONDS"; DELTIME 6680 IF ((ATCDR(2) - TAMB) / (ATCDR(KTIMEMAX) - TAMB)) < .05 THEN GOTO 6710 6690 PRINT " CALCULATION ACCURACY WOULD IMPROVE IF THIS TIME INTERVAL WERE REDUCED " 6700 REM PRINT 6710 IF FLAG = 0 OR HEATCORE = 0 THEN 6730 6720 PRINT "CORE HEAT CAPACITY IS IGNORED SINCE STEP DURATION LESS THAN 60 SEC" 6730 IF NSELECT = 4 GOTO 6870 6740 IF ATCDR(KTIMEMAX) < TCDRMAX THEN GOTO 6780 6750 PRINT USING "IT TAKES ####.#### SEC (####.#### MIN) "; TIME(KTIMEMAX); TIME(KTIMEMAX) / 60! 6760 PRINT "TO REACH THE MAXIMUM ALLOWABLE CONDUCTOR TEMPERATURE " 6770 PRINT USING "OF ####.# DEGREES C"; TCDRMAX 6780 GOSUB 7000 6790 FOR K = 1 TO KTIMEMAX 6800 IF SORM = 0 THEN PRINT USING "TIME=#####.#### SEC CDRTEMP= ####.# DEG C"; TIME(K); ATCDR(K) 6810 IF SORM = 1 THEN PRINT USING "TIME=#####.#### MIN CDRTEMP= ####.# DEG C"; TIME(K) / 60; ATCDR(K) 6820 IF K <> 20 AND K <> 40 AND K <> 60 AND K <> 80 THEN GOTO 6840 6830 GOSUB 7000 6840 NEXT K 6850 IF KTIMEMAX < 20 THEN GOSUB 7000 6860 RETURN 6870 PRINT USING "THE TRANSIENT THERMAL RATING = ########.# AMPERES"; XISTEP 6880 PRINT "THAT IS, WITH THIS CURRENT, THE CDR TEMPERATURE JUST REACHES " 6890 IF TT > 60 THEN PRINT USING "THE MAXIMUM OF ####.# DEG C IN ##.#### MINUTES"; TCDRMAX; TT / 60! 6900 IF TT <= 60 THEN PRINT USING "THE MAXIMUM OF ####.# DEG C IN ###.#### SECONDS"; TCDRMAX; TT 6910 GOSUB 7000 6920 RETURN 7000 REM ////////////////////////////////////// 7010 REM / SUBROUTINE TO FREEZE MONITOR SCREEN 7020 REM ////////////////////////////////////// 7030 PRINT X$ 7040 PRINT "PRESS PRTSC TO PRINT OR ANY KEY TO CONTINUE" 7050 FOR P = 1 TO 1000000! 7060 D$ = INKEY$: IF LEN(D$) <> 0 THEN 7090 7070 NEXT P 7080 CLS 7090 RETURN 8000 REM //////////////////////////////////////////////// 8010 REM / SUBROUTINE TO ENTER INPUT DATA FROM ASCII FILE 8020 REM //////////////////////////////////////////////// 8030 IF NS = 0 THEN INPUT #1, FILENAM$, Z$: INPUT #1, NSETS, Z$ 8040 NS = NS + 1 8050 INPUT #1, COMMENT$, Z$ 8060 REM INPUT #1, MOREIN, Z$ 8070 REM INPUT #1, MOREOUT, Z$ 8080 INPUT #1, NSELECT, Z$ 8090 IF NSELECT = 1 THEN 8130 8100 IF NSELECT = 3 OR NSELECT = 4 THEN 8180 8110 INPUT #1, TCDRPRELOAD, Z$ 8120 GOTO 8300 8130 INPUT #1, XIPRELOAD, Z$ 8140 GOTO 8300 8150 REM ***************** 8160 REM * TRANSIENT DATA 8170 REM ***************** 8180 INPUT #1, IORTPRELOAD, Z$ 8190 IF IORTPRELOAD = 1 THEN INPUT #1, XIPRELOAD, Z$ 8200 IF IORTPRELOAD = 2 THEN INPUT #1, TCDRPRELOAD, Z$ 8210 IF NSELECT = 4 THEN INPUT #1, TCDRMAX, Z$ ELSE TCDRMAX = 1000 8220 IF NSELECT = 3 THEN INPUT #1, XISTEP, Z$ 8230 INPUT #1, SORM, Z$ 8240 INPUT #1, TT, Z$ 8250 INPUT #1, DELTIME, Z$ 8260 IF SORM = 1 THEN TT = TT * 60 8270 REM ************** 8280 REM * WEATHER DATA 8290 REM ************** 8300 INPUT #1, TAMB, Z$ 8310 INPUT #1, VWIND, Z$ 8320 INPUT #1, WINDANG.DEG, Z$ 8340 REM ***************** 8350 REM * CONDUCTOR DATA 8360 REM ***************** 8370 INPUT #1, C$, Z$ 8380 INPUT #1, D, Z$ 8390 INPUT #1, TLO, THI, Z$ 8400 INPUT #1, RLO, RHI, Z$ 8430 RLO = RLO / 1000 8440 RHI = RHI / 1000 8450 IF NSELECT = 1 OR NSELECT = 2 THEN 8510 8460 INPUT #1, HNH, Z$ 8470 IF HNH = 1 THEN INPUT #1, HEATOUT, Z$: HEATCORE = 0 8480 IF HNH = 2 THEN INPUT #1, HEATOUT, HEATCORE, Z$ 8490 REM 8500 REM 8510 HEATCAP = HEATOUT + HEATCORE 8520 INPUT #1, EMISS, ABSORP, Z$ 8530 INPUT #1, CDR.ELEV, Z$ 8540 INPUT #1, Z1.DEG, Z$ 8550 REM 8560 REM ********************* 8570 REM * SOLAR HEATING DATA 8580 REM ********************* 8590 INPUT #1, CDR.LAT, Z$ 8600 INPUT #1, SUN.TIME, NDAY, Z$ 8610 INPUT #1, A3, B$, Z$ 8620 RETURN 9000 REM /////////////////////////////////////////////////////////////////////// 9010 REM / SUBROUTINE TO CALCULATE THERM COEF OF RAC & HEATCAP & WIND CORRECTION 9020 REM /////////////////////////////////////////////////////////////////////// 9030 REM ********************************************************** 9040 REM * SETUP LINEAR CONDUCTOR RESISTANCE EQ AS FUNCTION OF TEMP 9042 REM * B IN OHM/M-C OR OHM/FT-C AND B1 IN OHM/M OR OHM/FT 9050 REM ********************************************************** 9060 B = (RHI - RLO) / (THI - TLO) 9070 B1 = RLO - B * TLO 9080 REM ***************************************************** 9090 REM * SET UP LINEAR HEAT CAPACITY EQS AS FUNCTION OF TEMP 9100 REM ***************************************************** 9110 REM *************************************************** 9120 REM * CORRECTION FACTOR (YC) FOR NON-PERPENDICULAR WIND 9130 REM *************************************************** 9140 WINDANG.RAD = 1.570796 - WINDANG.DEG * PIANG 9150 YC = 1.194 - SIN(WINDANG.RAD) - .194 * COS(2! * WINDANG.RAD) + .368 * SIN(2! * WINDANG.RAD) 9160 RETURN 10000 REM /////////////////////////////////////////////////////////////// 10010 REM / SUBROUTINE TO CALCULATE STARTING VALUE FOR CURRENT ITERATION 10020 REM / BY ASSUMING ADIABATIC HEATING DURING TIME TT 10030 REM /////////////////////////////////////////////////////////////// 10040 TCDR = (TCDRMAX + TAMB) / 2 10050 IF TT < 60 THEN HEATCAP = HEATOUT ELSE HEATCAP = HEATOUT + HEATCORE 10060 GOSUB 15000 10070 AT = SQR(HEATCAP * (TCDRMAX - TAMB) / TT) / W4 10080 TCDR = TCDRPRELOAD 10090 NFLAG = 1 10100 GOSUB 13000 10110 RETURN 11000 REM /////////////////////////////////////////////////////////// 11010 REM / SUBROUTINE CALCS CDR TEMP VS TIME FOR STEP CHANGE CURRENT 11020 REM /////////////////////////////////////////////////////////// 11030 IF NSELECT = 4 THEN PRINT USING "TRYING A CURRENT OF #######.#### AMPS"; XISTEP 11040 FLAG = 0 11050 ATCDR(1) = TCDRPRELOAD 11060 TCDR = ATCDR(1) 11070 GOSUB 15000 11080 K = 1 11090 ATCDR(K + 1) = TCDR + (W4 ^ 2 * XISTEP ^ 2 + QS - QR - QC) * DELTIME / HEATCAP 11100 TIME(K + 1) = TIME(K) + DELTIME 11110 TCDR = ATCDR(K + 1) 11115 IF NSELECT = 4 GOTO 11130 11120 PRINT "TIME = "; TIME(K + 1); " SECONDS / "; "CDR TEMP = "; TCDR; "DEG C" 11130 IF NSELECT = 3 AND TCDR > TCDRMAX THEN 11280 11140 REM ******************************************************************** 11150 REM * 11160 REM ******************************************************************** 11170 GOSUB 15000 11180 K = K + 1 11190 IF K = 3000 THEN PRINT "TIME INTERVAL TOO SMALL. ARRAY OUT OF BOUNDS ": GOTO 1880 11200 IF TIME(K) < TT THEN 11090 11210 IF XISTEP = 0 AND TCDR > TCDRMAX THEN 11220 ELSE 11250 11220 PRINT "EVEN IF THE CURRENT IS REDUCED TO ZERO AMPS, THE CONDUCTOR" 11230 PRINT USING "TEMPERATURE WILL NOT DECREASE TO ####.# DEG C IN ####.# MINUTES"; TCDRMAX; TT / 60 11240 GOTO 1880 11250 REM ********************************** 11260 REM * CHECK FOR SHORT DURATION FAULTS 11270 REM ********************************** 11280 IF TIME(K) >= 60 OR FLAG = 1 OR HEATCORE = 0 OR TT < 60 THEN GOTO 11320 11290 HEATCAP = HEATOUT 11300 FLAG = 1 11310 GOTO 11050 11320 KTIMEMAX = K 11330 RETURN 12000 REM //////////////////////////////////////////////////// 12010 REM / SUBROUTINE ITERATES TO FIND CONDUCTOR TEMPERATURE 12020 REM / GIVEN THE CONDUCTOR CURRENT 12030 REM //////////////////////////////////////////////////// 12040 IF NFLAG = 0 THEN TCDR = X: GOSUB 15000: TEMP = XIDUMMY - TR: RETURN 12050 IF NFLAG = 1 THEN XISTEP = X: GOSUB 11000 12060 IF TCDRPRELOAD <= TCDRMAX THEN TEMP = TCDRMAX - TCDR: RETURN 12070 IF TCDRPRELOAD > TCDRMAX THEN TEMP = TCDR - TCDRMAX: RETURN 13000 REM //////////////////////////////////////////////////////////////// 13010 REM / SUBROUTINE RTMI MUELLER-S ITERATION METHOD SELECTS A CURRENT 13020 REM / WHICH JUST RAISES TCDR TO TCDMAX IN THE TIME TT. THIS CURRENT 13030 REM / IS THE TRANSIENT RATING OF THE CONDUCTOR. IT DOES THIS BY 13040 REM / REPEATEDLY GUESSING A CURRENT - XISTEP - CALCULATING TCDR AT TT 13050 REM / AND COMPARING THE CALCULATED TCDR TO TCDRMAX. ROUTINE SUPPLIED 13060 REM / COURTESY OF BILL HOWINGTON. 13070 REM ///////////////////////////////////////////////////////////////// 13080 REM * START BY PREPARING TO ITERATE 13090 REM ******************************* 13100 XLI = 0: XRI = 0: EPS = .049: IEND = 20: X = 0 13110 GOSUB 14000 13120 IER = 0: XL = XLI: XR = XRI: X = XL: TOL = X 13130 GOSUB 12000 13140 F = TEMP: IF XLI = XRI OR F = 0 THEN 13530 13150 FL = F: X = XR: TOL = X 13160 GOSUB 12000 13170 F = TEMP: IF F = 0 THEN 13530 13180 FR = F: IF (SGN(FL) + SGN(FR)) = 0 THEN 13200 ELSE 13760 13190 REM ************************************************ 13200 REM BASIC ASSUMPTION FL*FR LESS THAN 0 IS SATISFIED. 13210 REM ************************************************ 13220 I = 0 13230 REM ******************** 13240 REM START ITERATION LOOP 13250 REM ******************** 13260 I = I + 1 13270 REM ******************** 13280 REM START BISECTION LOOP 13290 REM ******************** 13300 FOR JK = 1 TO IEND 13310 X = .5 * (XL + XR): TOL = X: GOSUB 12000 13320 F = TEMP: IF F = 0 THEN 13530 13330 IF (SGN(F) + SGN(FR)) = 0 THEN 13370 ELSE 13380 13340 REM *************************************************************** 13350 REM INTERCHANGE XL AND XR IN ORDER TO GET THE SAME SIGN IN F AND FR 13360 REM *************************************************************** 13370 TOL = XL: XL = XR: XR = TOL: TOL = FL: FL = FR: FR = TOL 13380 TOL = F - FL: DA = F * TOL: DA = DA + DA 13390 IF (DA - FR * (FR - FL)) >= 0 THEN 13410 13400 IF (I - IEND) <= 0 THEN 13570 13410 XR = X: FR = F 13420 REM *********************************************** 13430 REM TEST ON SATISFACTORY ACCURACY IN BISECTION LOOP 13440 REM *********************************************** 13450 TOL = EPS 13460 IF (ABS(FR - FL) - TOL) <= 0 THEN 13530 13470 NEXT JK 13480 REM ***************************************************************** 13490 REM END OF BISECTION LOOP - NO CONVERGENCE AFTER IEND ITERATION STEPS 13500 REM FOLLOWED BY IEND SUCCESSIVE STEPS OF BISECTION 13510 REM ***************************************************************** 13520 IER = 1: GOTO 13780 13530 RETURN 13540 REM ****************************************************************** 13550 REM COMPUTATION OF ITERATED X-VALUE BY INVERSE PARABOLIC INTERPOLATION 13560 REM ****************************************************************** 13570 DA = FR - F: DX = (X - XL) * FL * (1 + F * (DA - TOL) / (DA * (FR - FL))) / TOL 13580 XM = X: FM = F: X = XL - DX: TOL = X 13590 GOSUB 12000 13600 F = TEMP: IF F = 0 THEN 13530 13610 REM *********************************************** 13620 REM TEST ON SATISFACTORY ACCURACY IN ITERATION LOOP 13630 REM *********************************************** 13640 TOL = EPS 13650 IF (ABS(F) - TOL) <= 0 THEN 13530 13660 REM ********************************** 13670 REM PREPARATION OF NEXT BISECTION LOOP 13680 REM ********************************** 13690 IF (SGN(F) + SGN(FL)) <> 0 THEN 13710 13700 XR = X: FR = F: GOTO 13260 13710 XL = X: FL = F: XR = XM: FR = FM: GOTO 13260 13720 REM **************************************** 13730 REM END OF ITERATION LOOP 13740 REM ERROR RETURN IN CASE OF WRONG INPUT DATA 13750 REM **************************************** 13760 IF XHI <> XLO THEN 13770 ELSE RETURN 13770 IER = 2: JK = 0 13780 BEEP: PRINT "NUMBER OF ITERATIONS= "; JK 13790 PRINT "ITERATION ROUTINE CONDITION CODE,IER= "; IER 13800 IF IER = 2 THEN PRINT "TCDR OUT OF TEMPERATURE RANGE" 13810 IF IER = 1 THEN PRINT "NO CONVERGENCE IN SUBROUTINE TRANS" 13820 STOP 14000 REM //////////////////////////////////////////////////////////// 14010 REM / SUBROUTINE GUESS TO DETERMINE INITIAL BOUNDS FOR ITERATION 14020 REM //////////////////////////////////////////////////////////// 14030 IF NFLAG = 0 THEN XLO = TAMB: XHI = 1000: DIV = 10 14040 IF NFLAG = 1 THEN XLO = 0: XHI = 10 * AT: DIV = 10 14050 CHA = (XHI - XLO) / DIV: NUM = INT(DIV): X = XLO 14060 GOSUB 12000 14070 FO = TEMP 14080 FOR JK = 1 TO NUM 14090 X = XLO + JK * CHA: GOSUB 12000 14100 FF = TEMP: IF (SGN(FF) + SGN(FO)) = 0 THEN 14140 14110 FO = FF 14120 NEXT JK 14130 XLI = XLO: XRI = XHI: RETURN 14140 XRI = X: XLI = X - CHA: RETURN 15000 REM ///////////////////////////////////////////////////////////////// 15010 REM / SUBROUTINE T0 CALCULATE THERMAL RATING GIVEN A CDR TEMP (TCDR), 15020 REM / AND CONDUCTOR PARAMETERS AND WEATHER CONDITIONS 15030 REM ///////////////////////////////////////////////////////////////// 15040 REM PRINT USING "TRYING A TCDR OF ####.### DEG C"; TCDR 15050 REM ********************************************************* 15060 REM * CALC CONDUCTOR HEAT LOSS (QR) BY RADIATION (WATTS/M) 15070 REM ********************************************************* 15080 T3 = TCDR + 273 15090 T4 = TAMB + 273 15102 QR = .0178 * EMISS * D * ((T3 / 100) ^ 4 - (T4 / 100) ^ 4) 15110 REM ****************************************************************** 15120 REM * CALC CONDUCTOR HEAT LOSS BY CONVECTION (WATTS/M) 15130 REM ****************************************************************** 15140 T5 = (TCDR + TAMB) / 2 15160 U1 = 1.458E-06 * (T5 + 273) ^ 1.5 / (T5 + 383.4) 15172 P1 = (1.2932 - .0001525 * CDR.ELEV + 6.379E-09 * CDR.ELEV ^ 2) / (1 + .00367 * T5) 15180 K1 = .02424 + 7.477E-05 * T5 - 4.407E-09 * T5 ^ 2 IF DEBUG = 0 THEN PRINT #2, "U1,P1,K1 = "; U1, P1, K1 15182 REM ****************************************************************** 15184 REM * CALC CONDUCTOR HEAT LOSS (QC) BY NATURAL CONVECTION (WATTS/M) 15186 REM ****************************************************************** 15188 IF (TCDR - TAMB) < 0! THEN TCDR = TAMB + .1 15191 QC = .0205 * P1 ^ .5 * D ^ .75 * (TCDR - TAMB) ^ 1.25 15192 IF VWIND = 0 THEN 15450 15194 REM ***************************************************************** 15196 REM * CALC CONDUCTOR HEAT LOSS (QCF) BY FORCED CONVECTION (WATTS/M) 15198 REM ***************************************************************** 15202 Z = D * P1 * VWIND / U1 15212 Q1 = .0119 * Z ^ .6 * K1 * (TCDR - TAMB) 15222 Q2 = (1.01 + .0372 * Z ^ .52) * K1 * (TCDR - TAMB) 15230 IF Q1 - Q2 <= 0 THEN 15260 15240 QCF = Q1 15250 GOTO 15270 15260 QCF = Q2 15265 IF DEBUG = 0 THEN PRINT #2, "QCF = "; QCF 15270 QCF = QCF * YC 15370 REM *********************************************************** 15380 REM * SELECT LARGER OF CONVECTIVE HEAT LOSSES (QC VERSUS QCF) 15390 REM *********************************************************** 15400 IF QCF < QC THEN 15450 15410 QC = QCF 15420 REM *************************************** 15430 REM * CALC SUM OF STEADY STATE HEAT FLOWS 15440 REM *************************************** 15450 R5 = -QS + QC + QR 15460 REM ************************************************ 15470 REM * CALC SQRT OF CONDUCTOR RESISTANCE IN OHMS/FT 15480 REM ************************************************ 15492 W4 = SQR(B1 + B * TCDR) 15500 IF R5 <= 0 THEN TR = 0: GOTO 15560 15510 R4 = R5 ^ .5 15520 REM ************************************************** 15530 REM * CALCULATE THERMAL RATING (AMPACITY) IN AMPERES 15540 REM ************************************************** 15550 TR = R4 / W4 15560 RETURN 16000 REM ///////////////////////////////////////// 16010 REM / SUBROUTINE TO WRITE OUTPUT DATA TO FILE 16020 REM ///////////////////////////////////////// 16030 PRINT #2, 16040 PRINT #2, 16050 PRINT #2, X$ 16060 PRINT #2, " IEEE STD 738-2006 METHOD FOR CALCULATION OF" 16070 PRINT #2, "BARE OVERHEAD CONDUCTOR TEMPERATURES & THERMAL RATINGS" 16080 PRINT #2, "INPUT DATA FILE NAME IS "; F$ 16090 PRINT #2, COMMENT$ 16100 PRINT #2, C$ 16110 PRINT #2, "AIR TEMPERATURE IS "; TAMB; " DEG C" 16180 PRINT #2, "WIND SPEED IS "; VWIND; " M/SEC" 16190 PRINT #2, USING "ANGLE BETWEEN WIND AND CONDUCTOR IS ### DEG"; WINDANG.DEG 16200 PRINT #2, "COEFFICIENT OF EMISSIVITY IS "; EMISS 16210 PRINT #2, "COEFFICIENT OF ABSORPTIVITY IS "; ABSORP 16220 PRINT #2, "LINE DIRECTION IS ### DEG FROM NORTH"; Z1.DEG; " AND THE ATMOSPHERE IS "; B$ 16230 IF NSELECT = 3 OR NSELECT = 4 THEN GOTO 16450 16240 PRINT #2, 16250 PRINT #2, 16260 PRINT #2, "STEADY STATE THERMAL CALCULATIONS" 16320 PRINT #2, USING "QS IS ####.### WATTS PER METER OF CONDUCTOR "; QS 16330 PRINT #2, USING "QR IS ####.### WATTS PER METER OF CONDUCTOR "; QR 16340 PRINT #2, USING "QC IS ####.### WATTS PER METER OF CONDUCTOR "; QC 16350 PRINT #2, 16360 IF NSELECT = 1 THEN GOTO 16400 16370 PRINT #2, USING "GIVEN A MAXIMUM CONDUCTOR TEMPERATURE OF ####.# DEG C,"; TCDRPRELOAD 16380 PRINT #2, USING "THE STEADY STATE THERMAL RATING IS ##### AMPERES"; TR 16390 GOTO 16430 16400 IF XIPRELOAD = 1.111 THEN XIPRELOAD = 0 16410 PRINT #2, USING "GIVEN A CONSTANT CURRENT OF ##### AMPERES"; XIPRELOAD 16420 PRINT #2, USING "THE CONDUCTOR TEMPERATURE IS ####.# DEG C"; TCDRPRELOAD 16430 REM 16440 GOTO 16740 16450 PRINT #2, 16460 PRINT #2, 16470 PRINT #2, " TRANSIENT THERMAL CALCULATIONS " 16480 PRINT #2, USING "INITIAL STEADY STATE CDR TEMP IS ###.# DEG C"; TCDRPRELOAD 16490 IF IORTPRELOAD = 2 THEN PRINT #2, 16500 IF IORTPRELOAD = 1 THEN PRINT #2, USING "FOR A GIVEN INITIAL CURRENT OF ##### AMPERES,"; XIPRELOAD 16505 IF HNH = 2 THEN GOTO 16545 16515 PRINT #2, USING " HEAT CAPACITY = ####.#WATTS-SEC/MC"; HEATCAP 16520 GOTO 16570 16545 PRINT #2, USING " CORE HEAT CAPACITY = ####.# WATTSSEC/ M-C"; HEATCORE 16550 PRINT #2, USING " OUTER STRAND LAYERS HEAT CAPACITY = ####.# WATTSSEC/ M-C"; HEATOUT 16570 IF NSELECT = 4 THEN 16610 16580 PRINT #2, "THE MAXIMUM TIME OF INTEREST AFTER THE STEP CURRENT" 16590 IF SORM = 0 THEN PRINT #2, USING "INCREASES TO #######.# AMPS IS ####.#### SECONDS"; XISTEP; TT 16600 IF SORM = 1 THEN PRINT #2, USING "INCREASES TO #######.# AMPS IS ####.#### MINUTES"; XISTEP; TT / 60 16610 PRINT #2, USING "THE MAX ALLOWABLE CONDUCTOR TEMPERATURE IS ####.# DEG C"; TCDRMAX 16620 IF NSELECT = 4 GOTO 16680 16630 FOR I = 1 TO KTIMEMAX 16640 IF SORM = 0 THEN PRINT #2, USING "TIME=###.#### SEC CDRTEMP= ###.# DEG C"; TIME(I); ATCDR(I) 16650 IF SORM = 1 THEN PRINT #2, USING "TIME=###.### MIN CDRTEMP= ###.# DEG C"; TIME(I) / 60; ATCDR(I) 16660 NEXT I 16670 GOTO 16730 16680 PRINT #2, USING "THE TRANSIENT THERMAL RATING IS ########.# AMPERES"; XISTEP 16690 PRINT #2, "THAT IS, WITH THIS CURRENT, THE CONDUCTOR TEMPERATURE JUST REACHES " 16700 PRINT #2, USING "THE MAXIMUM ALLOWABLE CDR TEMP OF ####.# DEG C"; TCDRMAX 16710 IF TT > 60 THEN PRINT #2, USING "IN ####.## MINUTES"; TT / 60 16720 IF TT < 60 THEN PRINT #2, USING "IN ###.#### SECONDS"; TT 16730 PRINT #2, X$ 16740 RETURN 20000 REM ///////////////////// 20010 REM / COMMENTS ON PROGRAM 20020 REM ///////////////////// 20030 REM * 20040 REM * THE PROGRAM DOES NOT CALCULATE ANY INTERNAL RADIAL OR AXIAL 20050 REM * TEMPERATURE GRADIENTS. THIS IS NORMALLY NOT A SOURCE OF 20060 REM * SIGNIFICANT ERROR EXCEPT FOR INTERNALLY COMPLEX CONDUCTORS 20070 REM * SUCH AS FIBER-OPTIC SHIELD WIRE AND FOR NON-HOMOGENEOUS CONDUCTORS 20080 REM * FOR FAULT CURRENTS OF LESS THAN 1 MINUTE. THE PROGRAM DOES NOT 20090 REM * APPLY TO INTERNALLY COMPLEX CONDUCTORS, IT DOES CALCULATE A WORST 20100 REM * CASE ESTIMATE OF TEMPERATURE/RATING FOR ACSR OR ACSR/AW BY NEGLECTING 20110 REM * THE HEAT STORAGE CAPACITY OF THE RELATIVELY POORLY CONDUCTING CORE 20120 REM * FOR STEP CURRENTS WHICH PERSIST FOR LESS THAN ONE MINUTE. 20130 REM * THE VARIATION IN SPECIFIC HEAT WITH TEMPERATURE IS NEGLECTED. 20140 REM * ADDED COMMENTS 7/97 DAD 20150 REM * ADDED SI FORMULAS, SOLAR EQUATIONS, AND CHANGED AIR PARAMETERS
Write, Run & Share VB.net code online using OneCompiler's VB.net online compiler for free. It's one of the robust, feature-rich online compilers for VB.net language, running on the latest version 16. Getting started with the OneCompiler's VB.net compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as VB.net
. OneCompiler also has reference programs, where you can look for the sample code to get started with.
OneCompiler's VB.net online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample VB.net program which takes name as input and prints hello message with your name.
Public Module Program
Public Sub Main(args() As string)
Dim name as String = Console.ReadLine() ' Reading input from STDIN
Console.WriteLine("Hello " & name) ' Writing output to STDOUT
End Sub
End Module
Visual Basic is a event driven programming language by Microsoft, first released in the year 1991.
Variable is a name given to the storage area in order to identify them in our programs.
Simple syntax of Variable declaration is as follows
Dim variableName [ As [ New ] dataType ] [ = initializer ]
variableName = value
If condition-expression Then
'code
End If
If(conditional-expression)Then
'code if the conditional-expression is true
Else
'code if the conditional-expression is false
End If
If(conditional-expression)Then
'code if the above conditional-expression is true
Else If(conditional-expression) Then
'code if the above conditional-expression is true
Else
'code if the above conditional-expression is false
End If
If(conditional-expression)Then
'code if the above conditional-expression is true
If(conditional-expression)Then
'code if the above conditional-expression is true
End If
End If
Select [ Case ] expression
[ Case expressionlist
'code ]
[ Case Else
'code ]
End Select
For counter [ As datatype ] = begin To end [ Step step ]
'code
[ Continue For ]
'code
[ Exit For ]
'code
Next [ counter ]
For Each element [ As datatype ] In group
'code
[ Continue For ]
'code
[ Exit For ]
'code
Next [ element ]
While conditional-expression
'Code
[ Continue While ]
'Code
[ Exit While ]
'Code
End While
Do { While | Until } conditional-expression
'Code
[ Continue Do ]
'Code
[ Exit Do ]
'Code
Loop
Do
'Code
[ Continue Do ]
'Code
[ Exit Do ]
'Code
Loop { While | Until } conditional-expression
Procedure is a sub-routine which contains set of statements. Usually Procedures are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
Procedures are of two types.
Functions return a value when they are called.
[accessModifiers] Function functionName [(parameterList)] As returnType
'code
End Function
Sub-procedures are similar to functions but they don't return any value.
Sub ProcedureName (parameterList)
'Code
End Sub