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 
by

Visual basic (VB.net) Online Compiler

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.

Read input from STDIN in VB.net

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

About VB.net

Visual Basic is a event driven programming language by Microsoft, first released in the year 1991.

Key Features

  • Beginner's friendly language.
  • Simple and object oriented programming language.
  • User friendly language and easy to develop GUI based applications.

Syntax help

Variables

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 ]

Variable initialization

variableName = value

Conditional Statements

1. If

If condition-expression Then 
    'code
End If

2. If-else

If(conditional-expression)Then
   'code if the conditional-expression is true 
Else
  'code if the conditional-expression is false 
End If

3. If-else-if ladder

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

4. Nested-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

5. Select Case

Select [ Case ] expression
   [ Case expressionlist
      'code ]
   [ Case Else
      'code ]
End Select

Loops

1. For..Next

For counter [ As datatype ] = begin To end [ Step step ]
   'code
   [ Continue For ]
   'code
   [ Exit For ]
   'code
Next [ counter ]

2. For..Each

For Each element [ As datatype ] In group
   'code
   [ Continue For ]
   'code
   [ Exit For ]
   'code
Next [ element ]

3. While

While conditional-expression
   'Code 
   [ Continue While ]
   'Code
   [ Exit While ]
   'Code
End While

4. Do-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

Procedures

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.

1. Functions

Functions return a value when they are called.

[accessModifiers] Function functionName [(parameterList)] As returnType
   'code
End Function

2. Sub-Procedures

Sub-procedures are similar to functions but they don't return any value.

Sub ProcedureName (parameterList)
'Code
End Sub