• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

تشخیص زبان برنامه نویسی

anf-b

Registered User
تاریخ عضویت
20 نوامبر 2005
نوشته‌ها
901
لایک‌ها
15
محل سکونت
4 8 15 16 23 42 [R@sht]
با سلام دوستان عزیز
بنده برای پروژه برنامه نویسی برای درس 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
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
با سلام دوستان عزیز
بنده برای پروژه برنامه نویسی برای درس 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

بله فرترن هست
 

anf-b

Registered User
تاریخ عضویت
20 نوامبر 2005
نوشته‌ها
901
لایک‌ها
15
محل سکونت
4 8 15 16 23 42 [R@sht]
ممنون اما چرا بعد از do کلمه end do و بعد از if کلمه end if نوشته نشده؟ در ضمن continue به چه معناست؟
ممنون
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
CONTINUE یعنی ادامه بده
البته من به این زبان برنامه نویسی مسلط نیستم
ولی عموما شرط های یک خطی دیگه نیازی به اعلام پایان شرط نیست
همان یک خط به عنوان شرط محسوب میشه
 
بالا