Re: Fortran Error Problem





On Nov 28, 6:10 am, engrzi...@xxxxxxxxx wrote:
Plz give me advice...  at  engr_zi...@xxxxxxxxx

ERROR IS :

Compiling Fortran...
C:\MSDEV\Projects\truss\Text1.f90
Linking...
Text1.obj : error LNK2001: unresolved external symbol _X@4
Debug/Text1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Text1.exe - 2 error(s), 0 warning(s)
======================================

On Nov 27, 10:07 pm, engrzi...@xxxxxxxxx wrote:



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_zi...@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- Hide quoted text -- Show quoted text -

The other posters have got it right, but maybe a little more
explanation would help.

Your program references X(9) etc. From the line containing the
reference to X(9), the compiler cannot tell whether it is:
1) The 9th element of the array X or
2) A reference to an external function X
The way it decides is to look for the type statement associated with X.

If the type statement assigns (a) dimension(s) to X, then the compiler
knows X is an array.
Otherwise, including no type statement, when X defaults to REAL, X is
assumed to be an external FUNCTION.

Hope this helps

Dave Flower

.



Relevant Pages

  • Re: How to convert Infix notation to postfix notation
    ... Even if we grant that, there remain others which are not matters of opinion, ... and cannot use it as a *reference*. ... Failure to do so causes common bugs. ... I do compiler stuff; we don't actually do our own compiler/libc ...
    (comp.lang.c)
  • Re: Using early-bound interface on a late-bound object
    ... > the compiler determines which interfaces to use, ... > supports the declared interface. ... >> help if someone can point me to some authoritative document or reference ... within customer shops when they mirrored this 'division' to keep their ...
    (microsoft.public.vb.general.discussion)
  • Re: Garbage Collection Eligibility and portability
    ... (in the parlance of compiler writers). ... There isn'tany way to get a given Lisp to act that way. ... that alters exactly when a variable reference to a memory location ceases holding it from collection. ... The other, which I've seen called "Aggressive garbage collection" in some articles on this behavior in C#/.Net, appears to make a memory location eligible the instant the last reference to the location is used. ...
    (comp.lang.lisp)
  • Re: Why we should (not?) have closures after all
    ... Programmers should have tools that can tell them as much as possible about their code's likely behavior. ... The wart can be used anywhere a type is used in declaring a reference ... The compiler does nothing special if a "can be null" reference is ... it would be nice if there was a variant of the "assert" statement that was always enabled and threw IllegalArgumentException instead of AssertionError. ...
    (comp.lang.java.programmer)
  • Re: Late Binding Question
    ... I still don't understand why the compiler thinks this is late bound?? ... I never did get what all the fuss about late binding is? ... "Microsoft.Office.Interop.Excel" reference in the Dot Net tab. ... Obviously the PIAs (primary interop assemblies) are ...
    (microsoft.public.dotnet.languages.vb)