anf-b
Registered User
با سلام دوستان عزیز
بنده برای پروژه برنامه نویسی برای درس Finite Element باید یک کدی که در زیر مینویسم رو در یک زبان مثل فورترن بنویسم اما متاسفانه نمیدونم این چه زبانی هست
یکی از دوستان گفتند که این هم خودش فورترن هست اما میخواستم از شما متخصصین عزیز هم این سوال رو بپرسم تا مطمئن بشم
با تشکر
بنده برای پروژه برنامه نویسی برای درس Finite Element باید یک کدی که در زیر مینویسم رو در یک زبان مثل فورترن بنویسم اما متاسفانه نمیدونم این چه زبانی هست
یکی از دوستان گفتند که این هم خودش فورترن هست اما میخواستم از شما متخصصین عزیز هم این سوال رو بپرسم تا مطمئن بشم
با تشکر
کد:
PLANE STRESS AND STRAIN ANALYSES USING ISOPARAMETRC RECTANGULAR ELEMENT. PROGRAM BY DR.J.RAAMACHANDRAN.
DIMENSION S(100,20),Q(100),CO(50,2)
DIMENSION EM(8,8),XY(4,2)T(3,8)ED(8)
DIMENSION TJ(2,2),DL(2,4),C(3,8)ES(3)
WRITE(*,*) "GIVE NO. OF NODES"
READ(*,*) NP
WRITE(*,*) "GIVE NO. OF ELEMENTS"
READ(*,*)NE
WRITE(*,*) "GIVE NO. SETS OF PROPERTIES"
READ(*,*) NS
WRITE(*,*) "GIVE NO. OF BOUNDARY NODES"
READ(*,*) NB
WRITE(*,*) "GIVE NO. OF LOADED NODES"
READ(*,*) NL
NT=2*NP
WRITE(*,*) "GIVE YOUNGS MODULUS"
READ(*,*) E
WRITE(*,*) "GIVE POISSON RATIO"
READ(*,*) PR
WRITE(*,*) "GIVE THICKNESS"
READ(*,*) TH
WRITE(*,*)"GIVE NODAL COORDINATES: NODE, X,Y"
DO 1 I=1,NP
READ(*,*) I, CO(I,1),CO(I,2)
CONTINUE
NW=0
WRITE(*,*)"GIVE ELEMENT NODE NO. IN A/C WISE DIRECTION"
DO 4 I=1,NE
READ(*,*) NN(I,1),NN(I,2),NN(I,3),NN(I,4)
WRITE(*,*) I,NN(I,1),NN(I,2),NN(I,3),NN(I,4)
DO 3 J1=1,4
DO 2 J2=J1,4
NW1=ABS(NN(I,J1)-NN(I,J2))
IF(NW1.GT.NW) NW=NW1
CONTINUE
CONTINUE
CONTINUE
NW=NW*2+2
DO(1,1)=E*TH/(1-PR*PR)
D(2,2)=D(1,1)
D(1,2)=PR*D(1,1)
D(2,1)=D(1,2)
D(3,2)=0.5*(1-PR)*D(1,1)
D(3,2)=0.0
D(1,3)=0.0
D(2,3)=0.0
D(3,1)=D(1,3)
DO 6 I=1,NT
Q(I)=0.0
DO 5 J=1,20
S(I,J)=0.0
CONTINUE
CONTINUE
DO 17 N=1,NE
DO 8 I=1,8
DO 7 J=1,8
EM(I,J)=0.0
CONTINUE
CONTINUE
S3=SQRT(1/3)
DO 12 II=1,4
A=S3
B=A
IF(II.EQ.1) A=-A,B=-B
IF(II.EQ.2) B=-B
IF(II.EQ.4) A=-A
CALL SUB CALC
DJ=ABS(DJ)
DO 11 I=1,8
DO 10 J=1,8
DO 9 K=1,3
EM(I,J)=EM(I,J)+C(K,I)*t(K,J)*DJ
CONTINUE
CONTINUE
CONTINUE
CONTINUE
DO 16 I=1,4
IN=NN(N,I)
DO 15 J=1,4
JN=NN(N,J)
DO 14 IL=1,2
IE=(I-1)*2+IL
NR=(IN-1)*2+IL
DI 13 JL=1,2
JE=(J-1)*2+JL
NC=(JN-1)*2+JL
NCB=NC-NR+1
S(NR,NCB)=S(NR,NCB)+EM(IE,JE)
CONTINUE
CONTINUE
CONTINUE
CONTINUE
WRITE(*,*) "ELEMENT",N
CONTINUE
WRITE(*,*) "NODAL LOADS"
WRITE(*,*)"NODE QX QY"
DI 18 I=1,NL
READ(*,*) N,Q(2*N-1),Q(2*N)
WRITE(*,*) N,Q(2*N-1),Q(2*N)
CONTINUE
WRITE(*,*)"GIVE BOUNDARY CONDITIONS"
WRITE(*,*)"NODE U V"
DO 19 I=1,NB
READ(*,*)N,NU,NV
WRITE(*,*)N,NU,NV
K=2*N-1
IF(NU.EQ.1) S(K,1)=S(K,1)*PF
IF(NV.EQ.1) S(K+1,1)=S(K+1,1)*PF
CONTINUE
DO 25 L=1,NP
ND=(NP-L+1)*2
IF(ND.GT.(NW-2)) LM=NW
DO 24 I=1,2
LM=LM-1
IP=2*(L-1)+I
X=S(IP,1)
Q(IP)=Q(IP)/X
DO 20 J=1,LM
RM(J)=S(IP,J+1)
CONTINUE
DO 21 JJ=1,LM+1
S(IP,JJ)=S(IP,JJ)/X
CONTINUE
DO 23 K=1,LM
NR=IP+K
NC=LM-K+1
X=RM(K)
Q(NR)=Q(NR)-X*Q(IP)
DO 22 J=1,NC
JP=J+K
S(NR,J)=S(NR,J)-X*S(IP,JP)
CONTINUE
CONTINUE
CONTINUE
CONTINUE
I=NT
Q(NT)=Q(NT)/S(NT,1)
I=I-1
IF(LM.LT.(NW-1)) LM=LM+1
DO 27 J=1,LM
Q(I)=Q(I)-S(I,J+1)*Q(I+J)
CONTINUE
IF(I.GT.1) GOTO 26
WRITE(*,*)"NODAL DISPLACEMENTS"
WRITE(*,*)"ELEMENT U V"
DO 29 I=1,NP
WRITE(*,28) I,Q(2*I-1),Q(2*I)
FORMAT(3X,I4,10X,F10.4,10X,F10.4)
CONTINUE
WRITE(*,*)"ELEMENT STRESSES"
WRITE(*,*)"ELE. NO. SIGMA-X SIGMA-Y SIGMA-XY"
DO 34 N=1,NE
A=0.0
B=0.0
CALL SUB CALC
DO 30 I=1,4
K=NN(N,1)
ED(2*I-1)=Q(2*K-1)
ED(2*I)=Q(2*K)
CONTINUE
DO 32 I=1,3
ES(I)=0.0
DO 31 J=1,8
ES(I)=ES(I)+T(I,J)*ED(J)
CONTINUE
CONTINUE
WRITE(*,33) N,ES(1),ES(2),ES(3)
FORMAT(2X,I4,10X,3F10.4)
CONTINUE
STOP
END
SUBROUTINE CALC
DO 1 I=1,4
K=NN(N,I)
XY(I,1)=CO(K,1)
XY(I,2)=CO(K,2)
CONTINUE
DL(1,1)=(B-1)/4.0
DL(1,2)=(1-B)/4.0
DL(1,3)=(1+B)/4.0
DL(1,4)=-(1+B)/4.0
DL(2,1)=(A-1)/4.0
DL(2,2)=-(1+A)/4.0
DL(2,3)=(1+A)/4.0
DL(2,4)=(1-A)/4.0
DO 4 I=1,2
DO 3 J=1,2
TJ(I,J)=0.0
DO 2 K=1,4
TJ(I,J)=TJ(I,J)+DL(I,K)*XY(K,J)
CONTINUE
CONTINUE
CONTINUE
DJ=TJ(1,1)*TJ(2,2)-TJ(1,2)*TJ(2,1)
DD=TJ(1,1)
TJ(1,1)=TJ(2,2)/DJ
TJ(2,2)=DD/DJ
TJ(1,2)=-TJ(1,2)/DJ
TJ(2,1)=-TJ(2,1)/DJ
DO 7 I=1,2
DO 6 J=1,4
T(I,J)=0.0
DO 5 K=1,2
T(I,J)=T(I,J)+TJ(I,K)*DL(K,J)
CONTINUE
CONTINUE
CONTINUE
DO 9 I=1,3
DO 8 J=1,8
C(I,J)=0.0
CONTINUE
CONTINUE
DO 10 J=1,4
C(1,2*J-1)=T(1,J)
C(3,2*J)=T(1,J)
C(2,2*J)=T(2,J)
C(3,2*J-1)=T(2,J)
CONTINUE
DO 13 I=1,3
DO 12 J=1,8
T(I.J)=0.0
DO 11 K=1,3
T(I,J)=T(I,J)+D(I,K)*C(K,J)
CONTINUE
CONTINUE
CONTUNUE
RETURN
END