Fortran Error Problem
- From: engrzia76@xxxxxxxxx
- Date: 27 Nov 2006 22:07:46 -0800
I am new user of fortran. Trying it first time . Infact to make some
change in code of optimization of 10 bar truss. elimitated 70 errors
but the last one is not eliminated. So i cant run the code i have. Can
anybody help me to run this code. THX.. do email me on
[engr_zia76@xxxxxxxxx[ .
==================
! Program for 10 bar truss optimization yet under process of debugging
by Zia !
REAL, DIMENSION(8) :: P
REAL, DIMENSION(8,8) :: A
REAL, DIMENSION(8,8) :: U
REAL, DIMENSION(10) :: STRS
REAL, DIMENSION(10) :: PENALTY
REAL, DIMENSION(8) :: D
Ps=X(1)+X(2)+X(3)+X(4)+X(5)+X(6)+SQRT(2.)*(X(7)+X(8)+X(9)+X(10))
RL=360.
RHO=0.1
VALUE=RHO*RL*Ps
OBJ=VALUE
! DEFINE CONSTRAINTS
P(1)=0.
P(2)=0.
P(3)=0.
P(4)=0.
P(5)=0.
P(6)=100000.
P(7)=0.
P(8)=100000.
PAR=2.*DSQRT(2.D0)
A(1,1)=X(1)+X(2)+(X(8)+X(9))/PAR
A(1,2)=(-X(8)+X(9))/PAR
A(1,3)=-X(2)
A(1,4)=0.
A(1,5)=-X(9)/PAR
A(1,6)=A(1,5)
A(1,7)=0.
A(1,8)=0.
A(2,2)=X(5)+(X(8)+X(9))/PAR
A(2,3)=0.
A(2,4)=0.
A(2,5)=A(1,5)
A(2,6)=A(1,5)
A(2,7)=0.
A(2,8)=-X(5)
A(3,3)=X(2)+X(10)/PAR
A(3,4)=-X(10)/PAR
A(3,5)=0.
A(3,6)=0.
A(3,7)=-X(10)/PAR
A(3,8)=-A(3,7)
A(4,4)=X(6)+X(10)/PAR
A(4,5)=0.
A(4,6)=-X(6)
A(4,7)=X(10)/PAR
A(4,8)=-A(4,7)
A(5,5)=X(4)+X(9)/PAR
A(5,6)=X(9)/PAR
A(5,7)=-X(4)
A(5,8)=0.
A(6,6)=X(6)+X(9)/PAR
A(6,7)=0.
A(6,8)=0.
A(7,7)=X(3)+X(4)+(X(7)+X(10))/PAR
A(7,8)=(X(7)-X(10))/PAR
A(8,8)=X(5)+(X(7)+X(10))/PAR
EMOD=36.D6
DO 2 I=1,8
DO 4 J=1,8
A(I,J)=EMOD/RL*A(I,J)
IF(J.LT.I) THEN
A(I,J)=A(J,I)
ENDIF
4 CONTINUE
2 CONTINUE
ND=8
DO 1 I=1,ND
DO 1 J=1,ND
U(I,J)=0.
IF(I.EQ.J) U(I,J)=1.
1 CONTINUE
EPS=0.0000001
DO 15 I=1,ND
K=I
IF(I-8) 21,7,21
21 IF(A(I,I)-EPS) 5,6,7
5 IF(-A(I,I)-EPS) 6,6,7
6 K=K+1
DO 23 J=1,ND
U(I,J)=U(I,J)+U(K,J)
23 A(I,J)=A(I,J)+A(K,J)
GOTO 21
7 DIV=A(I,I)
DO 9 J=1,ND
U(I,J)=U(I,J)/DIV
9 A(I,J)=A(I,J)/DIV
DO 15 MM=1,ND
DELT=A(MM,I)
IF(ABS(DELT)-EPS) 15,15,16
16 IF(MM-I) 10,15,10
10 DO 11 J=1,ND
U(MM,J)=U(MM,J)-U(I,J)*DELT
11 A(MM,J)=A(MM,J)-A(I,J)*DELT
15 CONTINUE
DO 33 I=1,ND
DO 33 J=1,ND
33 A(I,J)=U(I,J)
DO 34 J=1,ND
34 CONTINUE
DO I=1,ND
SUM=0.
DO J=1,ND
SUM=SUM+A(I,J)*P(J)
ENDDO
D(I)=SUM
ENDDO
STRS(1)=D(1)
STRS(2)=D(3)-D(1)
STRS(3)=D(7)
STRS(4)=D(5)-D(7)
STRS(5)=D(8)-D(2)
STRS(6)=D(6)-D(4)
STRS(7)=(D(7)+D(8))/2.
STRS(8)=(D(1)-D(2))/2.
STRS(9)=((D(5)+D(6))-(D(1)+D(2)))/2.
STRS(10)=((D(3)-D(4))-(D(7)-D(8)))/2.
DO I=1,10
STRS(I)=STRS(I)*EMOD/RL
ENDDO
PENALTY(1)=ABS(STRS(1))/25000.-1.
PENALTY(2)=ABS(STRS(2))/25000.-1.
PENALTY(3)=ABS(STRS(3))/25000.-1.
PENALTY(4)=ABS(STRS(4))/25000.-1.
PENALTY(5)=ABS(STRS(5))/25000.-1.
PENALTY(6)=ABS(STRS(6))/25000.-1.
PENALTY(7)=ABS(STRS(7))/25000.-1.
PENALTY(8)=ABS(STRS(8))/25000.-1.
PENALTY(9)=ABS(STRS(9))/75000.-1.
PENALTY(10)=ABS(STRS(10))/25000.-1.
STOP
END
.
- Follow-Ups:
- Re: Fortran Error Problem
- From: engrzia76
- Re: Fortran Error Problem
- Prev by Date: Re: random numbers in fortran
- Next by Date: Re: rounding a number
- Previous by thread: rounding a number
- Next by thread: Re: Fortran Error Problem
- Index(es):
Relevant Pages
|