FORTRAN教学程序文档格式.docx
- 文档编号:18652405
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:61
- 大小:29.77KB
FORTRAN教学程序文档格式.docx
《FORTRAN教学程序文档格式.docx》由会员分享,可在线阅读,更多相关《FORTRAN教学程序文档格式.docx(61页珍藏版)》请在冰豆网上搜索。
OPEN(1,FILE=FNAME,STATUS='
OLD'
FORM='
FORMATTED'
)
C***READCONTROLDATAFROMUNIT1.
READ(1,975)TITLE
975FORMAT(A75)
CALLINPUT
CLOSE
(1)
C**Performingtheelementsassemblyandequationssolution
CALLSOLVER
CALLSTRESS
OPEN(21,FILE='
XS.DAT'
STATUS='
UNKNOWN'
OPEN(22,FILE='
YS.DAT'
OPEN(23,FILE='
ZS.DAT'
OPEN(24,FILE='
SH.DAT'
OPEN(25,FILE='
MS.DAT'
OPEN(26,FILE='
MT.DAT'
OPEN(29,FILE='
DP.DAT'
OPEN(31,FILE='
RS.DAT'
OPEN(32,FILE='
LS.DAT'
OPEN(40,FILE='
XY.DAT'
WRITE(*,*)'
Nowoutputingthedatasondisk...'
CALLOUTDAT
CLOSE(21)
CLOSE(22)
CLOSE(23)
CLOSE(24)
CLOSE(25)
CLOSE(26)
CLOSE(29)
CLOSE(31)
CLOSE(32)
CLOSE(40)
STOP'
ProgramEFEMfinished!
END
SUBROUTINEINPUT
C---------------------------------------------------------------------C
CTHISSUB.READALLINPUT-DATASFROMDISK--UNIT3.C
CHARACTER*12ZFS
READ(1,912)ZFS
IF(ZFS.NE.'
CONTROLDATA'
.AND.ZFS.NE.'
Controldata'
)WRITE(*,*)
.'
Warning:
CONTROLDATA...?
READ(1,*)NPOIN,NPOXY,NPOLA,NELEM,NVFIX,NTYPE,NNODE,NMATS,
&
NGAUS,NCHAN,MAXTN
WRITE(*,30)NPOIN,NPOXY,NPOLA,NELEM,NVFIX,NTYPE,NNODE,NMATS,
30FORMAT(1X,'
NPOIN='
I4,4X,'
NPOXY='
NPOLA='
NELEM='
NVFIX='
I4/1X,'
NTYPE='
NNODE='
NMATS='
I4,4X,'
NGAUS='
NCHAN='
MAXTN='
I3///
2X,'
Pressanykeytocontinue...'
READ(*,*)
NDIME=2
NDOFN=NDIME
NEVAB=NDOFN*NNODE
NTOTG=NELEM*NGAUS*NGAUS
NTOTV=NPOIN*NDOFN
NSTRE=3
IF(NTYPE.EQ.3)NSTRE=4
NSTR1=NSTRE
IF(NTYPE.EQ.2)NSTR1=4
C***READTHEELEMENTNODALCONNECTIONS,ANDTHEPROPERTYNUMBERS.
ELEMENTDEFI'
Elementdefi'
ELEMENTDEFINITIONDATA...?
CWRITE(*,*)'
***ELEMENTDEFINITION&
PROPERTYNo.***'
CWRITE(*,40)
C40FORMAT(2X,'
Ele.'
4X,'
Mat.No.'
8X,'
Nodalconnection'
NNODEL=NNODE
IF(NNODE.EQ.9)NNODEL=8
DO50IELEM=1,NELEM
READ(1,*)NUM,MATNO(NUM),(LNODS(NUM,I),I=1,NNODEL)
CWRITE(*,60)NUM,MATNO(NUM),(LNODS(NUM,I),I=1,NNODEL)
50CONTINUE
60FORMAT(2X,I4,6X,I4,5X,9I5)
C***READSOMENODALCOORDINATES,FINISHINGWITHTHELASTNODEOFALL.
DO61IPOIN=1,NPOIN
DO61IDOFN=1,NDOFN
61COORD(IPOIN,IDOFN)=0.0
DO63IPROP=1,NPROP
DO63IMATS=1,NMATS
63PROPS(IMATS,IPROP)=0.0
COORDINATED'
Coordinated'
COORDINATEDATA...?
CIF(NTYPE.LE.2)THEN
CWRITE(*,70)
C70FORMAT(1X,'
NODE'
6X,'
X'
9X,'
Y'
5X,'
5X,
C&
CELSE
CWRITE(*,80)
C80FORMAT(1X,'
R'
Z'
CENDIF
IF(NPOXY.LE.0)GOTO90
DO100KP=1,NPOXY
100READ(1,*)IP,(COORD(IP,IDOFN),IDOFN=1,NDOFN)
90IF(NPOLA.LE.0)GOTO120
DO110KP=1,NPOLA
READ(1,*)IP,RADIUS,ANGLE
A1=0.0174532925*ANGLE
COORD(IP,1)=RADIUS*DCOS(A1)
110COORD(IP,2)=RADIUS*DSIN(A1)
C***INTERPOLATECOORDINATESOFMID-SIDENODES.
120CALLSBDEXY
CWRITE(*,913)(KP,(COORD(KP,J),J=1,NDOFN),KP=1,NPOIN)
C913FORMAT(3(1X,I4,1X,2F10.3))
C**Readtheconstraineddata.
CALLFIXDAT
IF(NCHAN.GT.0)CALLTRALOC
C**SETUPGAUSSIANINTEGRATIONCONSTANTS.
CALLGAUSSQ
C***READTHEDIFFERENTELEMENTMATERIALPROPERTIES.
NPROP=4
MATERIALPRO'
Materialpro'
Materialpro...?
CWRITE(*,180)
C180FORMAT(16X,'
*****ELEMENTPROPERTIES*****'
DO190IMATS=1,NMATS
READ(1,*)NUMAT
READ(1,*)(PROPS(NUMAT,IPROP),IPROP=1,NPROP)
WRITE(*,920)NUMAT,(PROPS(NUMAT,IPROP),IPROP=1,NPROP)
920FORMAT(2X,'
Material'
I2,'
:
/10X,
Young`sModulus='
F18.4/10X,
Poisson`sratio='
F12.5,/10X,
Thickness='
F14.4/10X,
Density='
F14.4/)
IF(NTYPE.EQ.1.AND.PROPS(NUMAT,3).EQ.0.0)PROPS(NUMAT,3)=1.0
190CONTINUE
C****CALLTHESUBWHICHCOMPUTESTHECONSISTENTLOADVECTORS
C***FOREACHELEMENTAFTERREADINGTHERELEVANTINPUTDATA.
CALLLOADPS
RETURN
SUBROUTINESBDEXY
CTHISSUBINTERPOLATESTHEMIDESIDENODESOFSTRAIGHTC
CSIDESOFELEMENTSANDTHECENTRALNODEOF9NODEDELEMENTSC
IF(NNODE.EQ.4)RETURN
IF(NNODE.EQ.8)GOTO20
C**IfNNODE=9,generating9thpointforeachelement.
DO10IELEM=1,NELEM
IF(LNODS(IELEM,9).GT.0)GOTO10
NPOIN=NPOIN+1
LNODS(IELEM,9)=NPOIN
10CONTINUE
C**Loopovereachelement.
20DO100IELEM=1,NELEM
C**Loopovereachelementedge.
NNOD1=9
IF(NNODE.EQ.8)NNOD1=7
DO70INODE=1,NNOD1,2
IF(INODE.EQ.9)GOTO80
C**Computethenodenumberofthefirstnode.
NODST=LNODS(IELEM,INODE)
IGASH=INODE+2
IF(IGASH.GT.8)IGASH=1
C**Computethenodenumberofthelastnode.
NODFN=LNODS(IELEM,IGASH)
MIDPT=INODE+1
C**Computethenodenumberoftheintermediatenode.
NODMD=LNODS(IELEM,MIDPT)
TOTAL=DABS(COORD(NODMD,1))+DABS(COORD(NODMD,2))
IF(TOTAL.GT.1.E-10)GOTO70
C**Ifthecoordinatesoftheintermediatenodearebothzero
C**interpolatebyastraightline.
DO60IDOFN=1,NDOFN
60COORD(NODMD,IDOFN)=(COORD(NODST,IDOFN)+COORD(NODFN,IDOFN))*0.5
70CONTINUE
GOTO100
80LNODE=LNODS(IELEM,INODE)
TOTAL=DABS(COORD(LNODE,1))+DABS(COORD(LNODE,2))
IF(TOTAL.GT.1.0E-10)GOTO100
LNOD1=LNODS(IELEM,1)
LNOD3=LNODS(IELEM,3)
LNOD5=LNODS(IELEM,5)
LNOD7=LNODS(IELEM,7)
DO90IDOFN=1,NDOFN
90COORD(LNODE,IDOFN)=(COORD(LNOD1,IDOFN)+COORD(LNOD3,IDOFN)+
COORD(LNOD5,IDOFN)+COORD(LNOD7,IDOFN))*0.25
100CONTINUE
SUBROUTINEFIXDAT
CTHISSUB.READTHEFIXEDDATAFOREACHWORKINGCASE.C
DIMENSIONIFFGS(MTOTV)
EQUIVALENCE(LM(1,1,1),IFFGS
(1))
NODEFIXEDD'
Nodefixedd'
NODEFIXEDDATA...?
CIF(NTYPE.LE.2)WRITE(*,910)
CIF(NTYPE.EQ.3)WRITE(*,930)
C910FORMAT(3X,'
NODECODE'
7X,'
X-FIXED'
3X,'
Y-FIXED'
C930FORMAT(3X,'
R-FIXED'
Z-FIXED'
DO10IV=1,NVFIX
READ(1,*)NOFIX(IV),IFFGS(IV),(DPRED(IV,IDOFN),IDOFN=1,NDOFN)
C**SORTFORFIXEDPOINT
DO20IV=1,NVFIX-1
IP=IV
DO30JV=IV+1,NVFIX
30IF(NOFIX(IP).GT.NOFIX(JV))IP=JV
NGASH=NOFIX(IV)
NOFIX(IV)=NOFIX(IP)
NOFIX(IP)=NGASH
NGASH=IFFGS(IV)
IFFGS(IV)=IFFGS(IP)
IFFGS(IP)=NGASH
PRGH1=DPRED(IV,1)
PRGH2=DPRED(IV,2)
DPRED(IV,1)=DPRED(IP,1)
DPRED(IV,2)=DPRED(IP,2)
DPRED(IP,1)=PRGH1
DPRED(IP,2)=PRGH2
20CONTINUE
C**OUTPUTTHEFIXEDPOINT
CDO50IV=1,NVFIX
C50WRITE(*,970)NOFIX(IV),IFFGS(IV),(DPRED(IV,IDOFN),IDOFN=1,NDOFN)
C**SETUPFIXEDCODEFOREACHDOF.
DO70IVFIX=1,NVFIX
IVPRE=IFFGS(IVFIX)
KPOIN=NOFIX(IVFIX)
IF(IVPRE.EQ.1)THEN
ID(2,KPOIN)=1
ELSEIF(IVPRE.EQ.10)THEN
ID(1,KPOIN)=1
ELSEIF(IVPRE.EQ.11)THEN
ENDIF
970FORMAT(2X,I4,3X,I4,3X,2F10.4,5X,I4,3X,I4,3X,2F10.4)
SUBROUTINELOADPS
CThissubevaluatestheconsistentnodalforcesforeachelementC
DIMENSIONDGASH
(2),NOPRS(4),POINT
(2),PRESS(4,2),PGASH
(2),
ELCOD(2,9)
TWOPI=6.283185308
DO10IEVAB=1,NEVAB
10ELOAD(IELEM,IEVAB)=0.0
C***READDATDCONTROLLINGLOADINGTYPESTOBEINPUTTED.
READ(1,9)ZFS
9FORMAT(A12)
IF(ZFS.NE.'
LOADINGDATA'
Loadingdata'
Warning:
Loadingdata?
C**OLDCODE:
READ(1,*)NPLOD,NGRAV,NEDGE,NTEMP
CWRITE(*,919)NPLOD,NGRAV,NEDGE,NTEMP
C919FORMAT(2X,'
NPLOD='
I4,3X,'
NGRAV='
NEDGE='
I4,3X,
NTEMP='
I4)
C***READNODALPOINTLOADS.
IF(NPLOD.EQ.0)GOTO500
NCOUNT=0
20READ(1,*)LODPT,(POINT(IDOFN),IDOFN=1,NDOFN)
NCOUNT=NCOUNT+1
CWRITE(*,931)LODPT,(POINT(IDOFN),IDOFN=1,NDOFN)
C931FORMAT(2X,I5,2F10.3)
C***ASSOCIATETHENODALPOINTLOADSWITHANELEMENT.
DO30IELEM=1,NELEM
DO30INODE=1,NNODE
NLOCA=IABS(LNODS(IELEM,INODE))
30IF(LODPT.EQ.NLOCA)GOTO40
40CONTINUE
DO50IDOFN=1,NDOFN
NGASH=(INODE-1)*NDOFN+IDOFN
50ELOAD(IELEM,NGASH)=POINT(IDOFN)
IF(NCOUNT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FORTRAN 教学 程序