You are on page 1of 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