0% found this document useful (0 votes)
186 views11 pages

Fortran

The document contains 14 Fortran code examples that solve various computational problems: 1. Code to calculate factorial of an integer N 2. Code to calculate the sum of a series with terms containing factorials in the denominator 3. Code to calculate the value of a function F(x) defined piecewise based on the value of x 4. Code to calculate reactions and member forces of a truss structure 5. Code to calculate shear force and bending moment at intervals along a beam under given loading 6. Code to calculate deflections in a cantilever beam under different loading conditions 7. Codes to perform addition and subtraction of matrices 8. Code to multiply two matrices 9. Code

Uploaded by

wilroca
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
186 views11 pages

Fortran

The document contains 14 Fortran code examples that solve various computational problems: 1. Code to calculate factorial of an integer N 2. Code to calculate the sum of a series with terms containing factorials in the denominator 3. Code to calculate the value of a function F(x) defined piecewise based on the value of x 4. Code to calculate reactions and member forces of a truss structure 5. Code to calculate shear force and bending moment at intervals along a beam under given loading 6. Code to calculate deflections in a cantilever beam under different loading conditions 7. Codes to perform addition and subtraction of matrices 8. Code to multiply two matrices 9. Code

Uploaded by

wilroca
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

#. Write a fortran code that reads an integer N and Compute Factorial N.

Program:

INTEGER NUMBER, FACT, N


PRINT*,'ENTER A POSITIVE INTEGER'
READ*, NUMBER
FACT = 1
DO 100 N = 2, NUMBER, 1
FACT = FACT*N
100 CONTINUE
PRINT*, FACT
STOP
END

#. Write a fortran code to calculate the sum of the following series:


1 + 1/∟1 + 1/∟2 + ……..+ 1/∟N
Program:

REAL SUM,I,N
INTEGER FACT
READ*,N
SUM = 1
FACT = 1
DO 100 I = 1,N
FACT = FACT*I
SUM = SUM + 1/FACT
100 CONTINUE
PRINT*,SUM
STOP
END

#. A function F(x) is defined as follows :


F(x) = ax3 – bx2 + cx – d, if x>1
= 0 , if x = 0
= -ax3 + bx2 – cx + d, if x<1
Write a program that reads the values of a,b,c,d,x and find the values of
F(x).
Program:

REAL A,B,C,D,X,FUNC
READ*,A,B,C,D,X
IF(X.GT.1) THEN
FUNC = A*X**3-B*X**2+C*X-D
ELSE IF(X.EQ.1) THEN
FUNC = 0
ELSE(X.LT.1) THEN
FUNC = -A*X**3+B*X**2-C*X+D
END IF
PRINT*,FUNC
STOP
END

#. Write a Fortran code to calculate the reaction and member forces of


the following truss:

Program:

C WRITE A FORTRAN CODE TO CALCULATE THE REACTION AND MEMBER FORCES OF


THE FOLLOWING TRUSS:
C
REAL SPAN,ANGLE,P1,P2,P3,R1,R2,A,B,C,D
REAL UU1,U1U2,U2U3,U3U4,UL1,L1L2,L2L3,U4L3,U1L1,U2L2,U3L3,U1L2,U3L2
PRINT*,'SPAN LENGTH'
READ*,SPAN
PRINT*,'SLOPE ANGLE OF THE TRUSS'
READ*, ANGLE
PRINT*,'LOADS ON THE TRUSS P1,P2,P3'
READ*, P1,P2,P3
C
A=SPAN/4
B=A/COS(ANGLE*3.1416/180)
C=A*TAN(ANGLE*3.1416/180)
D=2*C
C
C CALCULATION OF REACTION :
C
R1=(P1*A+P3*2*A+P2*3*A+P1*4*A)/SPAN
R2=(2*P1+2*P2+P3)-R1
SINF=SIN(ANGLE*3.1416/180)
COSF=COS(ANGLE*3.1416/180)
PRINT*,'LEFT REACTION,R1=',R1,'KIP'
PRINT*,'RIGHT REACTION,R2=',R2,'KIP'
C
C CALCULATION OF BAR FORCES :
C
UU1=(P1-R1)/SINF
UL1=-UU1*COSF
U1L1=0
L1L2=UL1
U1U2=(P2*A+P1*2*A-R1*2*A)/(C*COSF+A*SINF)
U1L2=(R1-P1-P2+U1U2*SINF)/SINF
U3U4=(P2-R2)/SINF
U4L3=-U3U4*COSF
U3L3=0
L2L3=U4L3
U2U3=(-R2*2*A+P2*2*A+P1*A)/(C*COSF+A*SINF)
U3L2=(R2-P1-P2+U2U3*SINF)/SINF
U2L2=-((U1L2*SINF)+(U3L2*SINF))
C
C RESULT OF BAR FORCES :
C
PRINT*,'TOP CHORD'
PRINT*,'UU1=',UU1,'KIP'
PRINT*,'U1U2=',U1U2,'KIP'
PRINT*,'U2U3=',U2U3,'KIP'
PRINT*,'U3U4=',U3U4,'KIP'
PRINT*,'VERTICAL CHORD'
PRINT*,'U1L1=',U1L1,'KIP'
PRINT*,'U2L2=',U2L2,'KIP'
PRINT*,'U3L3=',U3L3,'KIP'
PRINT*,'INCLINED BAR'
PRINT*,'U1L2=',U1L2,'KIP'
PRINT*,'U3L2=',U3L2,'KIP'
PRINT*,'BOTTOM CHORD'
PRINT*,'UL1=',UL1,'KIP'
PRINT*,'L1L2=',L1L2,'KIP'
PRINT*,'L2L3=',L2L3,'KIP'
PRINT*,'U4L3=',U4L3,'KIP'
STOP
END

#. Write a Fortran code to calculate the shear force and bending moment
at certain interval of the following beam under the given loading
condition:
Program:

REAL W,P,L,A,B,C,D,R1,R2,N,SF,BM
INTEGER I
PRINT*,'ENTER UDL'
READ*,W
PRINT*,'ENTER CONCENTRATED LOAD,P'
READ*,P
PRINT*,'ENTER A,B,C,D'
READ*,A,B,C,D
L=A+B+C+D
R1=(P*D+W*B*(B/2+C+D))/L
R2=W*B+P-R1
PRINT*,'LEFT REACTION,R1=',R1,'KIP'
PRINT*,'RIGHT REACTION,R2=',R2,'KIP'
PRINT*,'ENTER THE INTERVAL'
READ*,N
DO 10 I=0,L,N
IF(I.LE.A)THEN
SF=R1
BM=R1*I
ELSE IF(I.GT.A.AND.I.LE.(A+B))THEN
SF=R1-W*(I-A)
BM=R1*I-W*(I-A)**2/2
ELSE IF(I.GT.A+B.AND.I.LT.A+B+C)THEN
SF=R1-W*B
BM=R1*I-W*B*(I-A-B/2)
ELSE
SF=-R2
BM=-R2*(L-I)
END IF
PRINT*,'SHEAR FORCE AT',I,'(FT)',SF,'KIP'
PRINT*,'BENDING MOMENT AT',I,'(FT)',BM,'KIP-FT'
10 CONTINUE
STOP
END

#.Write a Program that calculates deflections in a cantilever beam under


a given load.Three different loading conditions are analyzed.
Case 1: A single point load at the free end of the beam.
Case 2: A single point load at an interior point.
Case 3: Load uniformly distributed along the beam.

Program:

INTEGER COND,NOD
REAL MOE,MOI,L,TLOAD,UDL,DEFLECTION,X,A,B,STEP,LAST,VARIABLE
PRINT*,'ENTER CONDITION NO'
READ*,COND
PRINT*,'ENTER NUMBER OF DIVISIONS AT WHICH DEFLECTIONS ARE FOUND'
READ*,NOD
PRINT*,'ENTER MODULUS OF ELASTICITY AND MOMENT OF INERTIA'
READ*,MOE,MOI
PRINT*,'ENTER LENGTH OF BEAM'
READ*,L
STEP=L/NOD
LAST=L
IF(COND.EQ.1)THEN
PRINT*,'ENTER TOTAL LOAD'
READ*,TLOAD
PRINT*,'DISTANCE DEFLECTION'
DO 20 X = 0,LAST,STEP
VARIABLE=X**3-3*L**2*X+2*L**3
DEFLECTION=(-TLOAD/(6*MOE*MOI))*VARIABLE
PRINT*,X,DEFLECTION
20 CONTINUE
ELSE IF(COND.EQ.2)THEN
PRINT*,'ENTER TOTAL LOAD AND DISTANCE A'
READ*,TLOAD,A
B = L-A
PRINT*,'DISTANCE DEFLECTION'
DO 30 X=0,LAST,STEP
IF(X.LT.B)THEN
VARIABLE=-A**3+3*A**2*L-3*A**2*X
ELSE
VARIABLE=(X-B)**3-3*A**2*(X-B)+2*A**3
ENDIF
DEFLECTION=(-TLOAD/(6*MOE*MOI))*VARIABLE
PRINT*,X,DEFLECTION
30 CONTINUE
ELSE
PRINT*,'ENTER UNIT LOAD'
READ*,UDL
TLOAD=UDL*L
PRINT*,'DISTANCE DEFLECTION'
DO 40 X=0,LAST,STEP
VARIABLE=X**4-4*L**3*X+3*L**4
DEFLECTION=(-TLOAD/(24*MOE*MOI*L))*VARIABLE
PRINT*,X,DEFLECTION
40 CONTINUE
END IF
STOP
END

#. Write a Fortran Code to calculate the a) Summation & b) Subtraction


of two matrices.

Program:

PARAMETER (MAXROW=100,MAXCOL=100)
C
DIMENSION MATRX1(MAXROW,MAXCOL),MATRX2(MAXROW,MAXCOL)
DIMENSION SUM(MAXROW,MAXCOL), SUBT(MAXROW,MAXCOL)
C
REAL MATRX1,MATRX2,SUM,SUBT
INTEGER ROWS1,COLS1,ROWS2,COLS2
C
10 PRINT*, 'DIMENSIONS OF MATRIX 1'
READ*, ROWS1,COLS1
PRINT*, 'DIMENSIONS OF MATRIX 2'
READ*, ROWS2,COLS2
C
IF (ROWS1.GT.MAXROW .OR. COLS1.GT.MAXCOL) THEN
PRINT*,'MATRIX 1 TOO BIG '
GO TO 10
ENDIF
C
IF (ROWS2.GT.MAXROW .OR. COLS2.GT.MAXCOL) THEN
PRINT*,'MATRIX 2 TOO BIG '
GO TO 10
ENDIF
C
PRINT*,'ENTER ROW-WISE ELEMENTS OF MATRIX 1'
DO 20 I=1,ROWS1
DO 30 J=1,COLS1
READ*,MATRX1(I,J)
30 CONTINUE
20 CONTINUE
C
PRINT*,'ENTER ROW-WISE ELEMENT OF MATRIX 2'
DO 40 I=1,ROWS2
DO 50 J=1,COLS2
READ*,MATRX2(I,J)
50 CONTINUE
40 CONTINUE
C
DO 100 I=1,ROWS1
DO 110 J=1,COLS1
SUM(I,J)=MATRX1(I,J)+MATRX2(I,J)
SUBT(I,J)=MATRX1(I,J)-MATRX2(I,J)
110 CONTINUE
100 CONTINUE
PRINT*,'SUMMATION OF TWO MATRIX'
C
DO 120 I=1,ROWS1
PRINT*,(SUM(I,J),J=1,COLS1)
120 CONTINUE
C
PRINT*,'SUBTRACTION OF TWO MATRIX:'
DO 60 I =1,ROWS1
PRINT*,(SUBT(I,J),J=1,COLS1)
60 CONTINUE
STOP
END

#. Write a Fortran code to calculate the multiplication of two matrices.

Program:

PARAMETER (MAXROW=100,MAXCOL=100)
C
DIMENSION MATRX1(MAXROW,MAXCOL),MATRX2(MAXROW,MAXCOL)
DIMENSION PROD(MAXROW,MAXCOL)
C
REAL MATRX1,MATRX2,PROD
INTEGER ROWS1,COLS1,ROWS2,COLS2
C
10 PRINT*, 'DIMENSIONS OF MATRIX 1'
READ*, ROWS1,COLS1
PRINT*, 'DIMENSIONS OF MATRIX 2'
READ*, ROWS2,COLS2
C
IF (COLS1.NE.ROWS2) THEN
PRINT*,'MATRIX MULTIPLICATION IS NOT POSSIBLE '
GO TO 10
ENDIF
C
IF (ROWS1.GT.MAXROW .OR. COLS1.GT.MAXCOL) THEN
PRINT*,'MATRIX 1 TOO BIG '
GO TO 10
ENDIF
C
IF (ROWS2.GT.MAXROW .OR. COLS2.GT.MAXCOL) THEN
PRINT*,'MATRIX 2 TOO BIG '
GO TO 10
ENDIF
C
PRINT*,'ENTER ROW-WISE ELEMENTS OF MATRIX 1'
DO 20 I=1,ROWS1
DO 30 J=1,COLS1
READ*,MATRX1(I,J)
30 CONTINUE
20 CONTINUE
C
PRINT*,'ENTER ROW-WISE ELEMENTS OF MATRIX 2'
DO 40 I=1,ROWS2
DO 50 J=1,COLS2
READ*,MATRX2(I,J)
50 CONTINUE
40 CONTINUE
C
DO 60 I=1,ROWS1
DO 70 J=1,COLS2
PROD(I,J)=0.0
DO 80 K=1, COLS1
PROD(I,J)=PROD(I,J)+MATRX1(I,K)*MATRX2(K,J)
80 CONTINUE
70 CONTINUE
60 CONTINUE
C
PRINT*,'PRODUCT OF TWO MATRICES'
DO 90 I =1,ROWS1
PRINT*,(PROD(I,J),J=1,COLS2)
90 CONTINUE
C
STOP
END

#. Write a fortran code to find the solution of simultaneous equations by


gauss elimination method.

Program:

DIMENSION A(20,21),X(20)
INTEGER N,K,I,J
PRINT*,'ENTER VALUE OF N'
READ*,N
PRINT*,'ENTER THE ELEMENTS ROW WISE'
READ*,((A(I,J),J=1,N+1),I=1,N)
DO 10 K = 1,N-1
T = A(K,K)
IF(T.EQ.0) STOP 'ZERO DIVISION,RETRY'
DO 10 I = K+1,N
U = A(I,K)/T
DO 10 J = K,N+1
A(I,J) = A(I,J)-U*A(K,J)
10 CONTINUE
X(N) = A(N,N+1)/A(N,N)
DO 14 I = N-1,1,-1
SUM = 0.0
DO 13 J= I+1,N
SUM = SUM + A(I,J)*X(J)
13 CONTINUE
X(I) = (A(I,N+1)-SUM)/A(I,I)
14 CONTINUE
PRINT*,'SOLUTION OF THE EQUATION IS'
DO 16 I = 1,N
PRINT*,I,X(I)
16 CONTINUE
STOP
END

#. Write a fortran code to find the solution of simultaneous equations by


GAUSS JORDAN method.
Program:

DIMENSION A(20,21),X(20)
INTEGER N,K,I,J
PRINT*,'ENTER VALUE OF N'
READ*,N
PRINT*,'ENTER THE ELEMENTS ROW WISE'
READ*,((A(I,J),J=1,N+1),I=1,N)
DO 10 K = 1,N
P = A(K,K)
IF(P.EQ.0) STOP 'ZERO DIVISION,RETRY'
DO 20 J = K,N+1
A(K,J) = A(K,J)/P
20 CONTINUE
DO 30 I = 1,N
IF(I.NE.K) THEN
C = A(I,K)
DO 40 J = K,N+1
A(I,J) = A(I,J)-C*A(K,J)
40 CONTINUE
END IF
30 CONTINUE
10 CONTINUE
DO 50 I = 1,N
X(I) = A(I,N+1)
50 CONTINUE
PRINT*,'SOLUTION OF THE EQUATIONS IS'
DO 100 I = 1,N
PRINT*,I,X(I)
100 CONTINUE
STOP
END

#. Write a fortran code to implement newton’s forward difference


formula.

Program:

DIMENSION X(20),Y(20),D(20,20)
INTEGER FACT,N
PRINT*,'ENTER NUMBER OF POINTS'
READ*,N
PRINT*,'ENTER', N ,'SETS OF POINTS AS (X,Y)'
READ*,(X(I),Y(I),I = 1,N)
PRINT*,'VALUE OF X FOR INTERPOLATION'
READ*,A
IF((A.LT.X(1)).OR.(A.GT.X(N))) THEN
STOP 'VALUE LIES OUTSIDE RANGE'
END IF
DO 10 I = 2,N
IF(X(I).GT.A) GO TO 20
10 CONTINUE
20 K = I-1
CALL FORDIFF(Y,D,N)
U = (A-X(K))/(X(K+1)-X(K))
S = Y(K)
DO 50 I = 1,N-K
P = 1.0
DO 60 J = 0,I-1
P = P*(U-J)
60 CONTINUE
FACT = 1
DO 100 L = 2,I-1
FACT = FACT*L
100 CONTINUE
S = S+D(K,I)*P/FACT
50 CONTINUE
PRINT*,S,A
STOP
END
SUBROUTINE FORDIFF(Y,D,N)
DIMENSION Y(N),D(N,N)
INTEGER N
DO 30 J = 1,N-1
DO 30 I = 1,N-J
IF(J.LT.2) THEN
D(I,J) = Y(I+1)-Y(I)
ELSE
D(I,J) = D(I+1,J-1) - D(I,J-1)
END IF
30 CONTINUE
RETURN
END

You might also like