CLS

 

        PRINT "       COMPUTER PROGRAM USING HARDY CROSS METHOD FOR  PIPE NETWORK "

        PRINT " ***************************** ******************************"

        PRINT

        REM NP-NO.OF PIPES,NL -NO.OF LOOPS,MAX-MAX.NO OF ITERATIONS ALLOWED

        REM VIS-VISCOSITY OF FLUID , ERS-ERROR PARAMETER,G2-2*ACCEL OF GRAVITY

        REM NUNIT=0 D&E IN INCH,L IN FEED AND QI IN CFS

        REM NUNIT=1 D&E IN MILLIMETER,L IN METER AND QI IN L/S

        DIM D(50), K(50), L(50), E(50), QI(50), LP(42, 7), NN(42)

        DIM VL(50), HL(50), HE(50), AR(50), F(50), G(50)

120     READ NP, NL, NUNIT, MAX, VIS, ERS, G2

        REM II-PIPE NO.,D(II)-DIAMETER OF PIPE

        REM L(II)-LENGTH OF PIPE,E(II)-WALL POUGHNESS OF PIPE

        REM QI(II)-INITIOL FLOW SATISFYING CONTINUTY EQS.

        REM F & G ARE THE JUNCTION NO. AT TWO ENDS OF EACH PIPE

        FOR I = 1 TO NP

            READ II

            READ D(II), L(II), E(II), QI(II)

            E(II) = E(II) / D(II)

            IF NUNIY = 0 GOTO 230

            D(II) = D(II) / 1000: QI(II) = QI(II) / 100: GOTO 240

230         D(II) = D(II) / 12!

240     NEXT I

        REM IF G2<.0001 THEN G2=64.4 OR G2=19.6

        ELOG = 18.7 * 43429

        FOR I = 1 TO NP

            QM = ABS(QI(I))

            DEQ = .1 * QM

            AR(I) = .78539392# * D(I) ^ 2

            ARL = L(I) / (G2 * D(I) * AR(I) ^ 2)

            V1 = (QM - DEQ) / AR(I)

            V2 = (QM + DEQ) / AR(I)

            RE1 = V1 * D(I) / VIS

            RE2 = V2 * D(I) / VIS

            IF RE2 > 2100 GOTO 420

            F1 = 64 / RE1

            F2 = 64 / RE2

            E(I) = 1!

            K(I) = (F1 + F2) / 2! * ARL

            GOTO 700

420         MM = 0

            F = 1! / (1.14 - .8685889 * LOG(E(I))) ^ 2

            PAR = V1 * SQR(.125 * F) * D(I) * E(I) / VIS

            IF PAR > 65 GOTO 680

            RE = RE1

470         MCT = 0

480         FS = SQR(F)

            FZ = .5 / (F * FS)

            ARG = E(I) + 9.350001 / (RE * FS)

            FF = 1! / FS - 1.14 + 2 * .43429 * LOG(ARG)

            DF = FZ + ELOG * FZ / (ARG * RE)

            DIF = FF / DF

            F = F + DIF

            MCT = MCT + 1

            IF (ABS(DIF) > .00001) AND (MCT < 15) GOTO 480

            IF MM = 1 GOTO 620

            MM = 1

            RE = RE2

            F1 = F

            GOTO 470

620         F2 = F

            BE = (LOG(F1) - LOG(F2)) / (LOG(QM + DEQ) - LOG(QM - DEQ))

            AE = F1 * (QM - DEQ) ^ BE

            E(I) = 2! - BE

            K(I) = AE * ARL

            GOTO 700

680         K(I) = F * ARL

            E(I) = 2

700     NEXT I

        PRINT "COEF.K IN EXPONENTIAL FORMULA"

        INPUT "WOULD YOU LIKE TO INPUT COEF.K ?(Y/N)"; A$

        IF A$ = "N" THEN 750

        FOR I = 1 TO NP

            INPUT K(I)

        NEXT I

750     FOR I = 1 TO NP

        PRINT K(I)

        NEXT I

        PRINT "EXPONENT N IN EXPOPNENTIAL FORMULA"

        FOR I = 1 TO NP

            PRINT E(I)

        NEXT I

        INPUT A$

        REM NNP AREA THE NUMBER OF PIPES AROUND LOOP .

        REM LP(I,J) AREA THE PIPE NO.AROUND THE LOOP.

        REM IF COUNTER CLOCKWISE THIS NUMBER IS NEGETIVE.

        FOR I = 1 TO NL

            READ NNP

            FOR J = 1 TO NNP

                READ LP(I, J)

            NEXT J

            NN(I) = NNP

        NEXT I

        NCT = 0

920     SUM = 0

        FOR I = 1 TO NL

            NNP = NN(I)

            SUM1 = 0

            SUM2 = 0

            FOR J = 1 TO NNP

                IJ = LP(I, J)

                IIJ = ABS(IJ)

                HL = IJ / IIJ * K(IIJ) * QI(IIJ) ^ E(IIJ)

                SUM1 = SUM1 + HL

                SUM2 = SUM2 + E(IIJ) * ABS(HL) / QI(IIJ)

            NEXT J

            DQ = SUM1 / SUM2

            SUM = SUM + ABS(DQ)

            FOR J = 1 TO NNP

            IJ = LP(I, J)

            IIJ = ABS(IJ)

            QI(IIJ) = QI(IIJ) - (IJ / IIJ) * DQ

            IF QI(IIJ) > 0 GOTO 1140

            PRINT "THE DIRECTION OF PIPE NO.("; IIJ; ")IS INCORRECT "

            PRINT "PLEASE CORRECT THE DIRECTION AND RE SUBMIT"

            STOP

1140            NEXT J

            NEXT I

            NCT = NCT + 1

           IF (NCT < MAX) AND (SUM > ERS) GOTO 920

        INPUT "PRESS <CR> RO CONTINUE"; D$

        FOR I = 1 TO NP

            HE(I) = K(I) * (ABS(QI(I))) ^ E(I)

        NEXT I

        FOR I = 1 TO NP: READ F(I), G(I): NEXT I

        PRINT CHR$(15);

        WIDTH LPRINT 140

        PRINT "         --------------------------------------"

        FOR I = 1 TO NP: HL(I) = HE(I) * 1000 / L(I): NEXT I

        PRINT "            PIPE                    FLOW RATE "

        IF NUNIT = 0 THEN GOTO 1480

        FOR I = 1 TO NP: D(I) = D(I) * 1000: QI(I) = QI(I) * 1000: NEXT I

        PRINT "             NO.                       L/S      ": GOTO 1500

1480    FOR I = 1 TO NP: D(I) = D(I) * 12: NEXT I

        PRINT "             NO.                       CFS      "

1500    PRINT "          --------------------------------------"

        FOR I = 1 TO NP

  PRINT USING "             ##                  #######.######   "; I; QI(I) / 1000

        NEXT I

        INPUT "WOULD YOU LIKE TO RUN ANOTHER SET OF DATA?(Y/N)"; A$

        IF A$ = "Y" GOTO 120

        STOP

        END

        DATA 5,2,1,10,0.000682,0.01,19.62

        DATA 1,800,3000,0.012,500

        DATA 2,350,2000,0.012,100

        DATA 3,800,3000,0.012,500

        DATA 4,600,2000,0.012,300

        DATA 5,500,3000,0.012,200

        DATA 3,1,2,-3

        DATA 3,5,-4,-2

        DATA 1,2,2,4,1,4,4,3,2,3