读有限元Fortran程序笔记Word文档下载推荐.docx
《读有限元Fortran程序笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《读有限元Fortran程序笔记Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
5.THREEDIMENSIONALELASTIC-VISCOPLASTICFINITEELEMENTPROGRAM三维弹塑性有限元程序
6.Module可以用来封装程序模块,通常是用来把程序中,具备相关功能的函数及变量封装在一起。
程序在开始定义了一个module模块,在模块中定义了MXKKK=50000000,MXGSJ=1000,MXGSJ=1000三个常量(PARAMETER表示常量),并且每个常量都赋了值。
在module模块中定义了NELEM,NPOIN,NPROP,MXDFN,NSTEP,IDEVP,IDDP,LTYPE以及NFIX1,NPL,NVL,NSL,NHL,NTL,IDCVG,NTOTV,NKK以及DTIME,TOLER,SCALE,DSCALE这些全局变量(common表示全局变量),定义了ICM(3,8),CGAUS
(2),VSHAP(8,8),DERIV(3,8,8)以及POSGP(3),COPG(3),EJ(3,3),EJACI(3,3),R(8,8)这些维数与大小都确定的全局数组变量,定义了COORD(:
)以及STRSG(:
),DJ(:
),CARTD(:
)以及TRANJ(:
),DJRMX(:
)以及DREMX(:
),DJEMX(:
)以及CREMX(:
),CJEMX(:
)以及MELEM(:
),MPROP(:
),ISSOR(:
),NNDEX(:
)以及MPFIX(:
),MPSJ(:
),MMATP(:
),MPIV(:
)以及TSTIF(:
)以及ADISP(:
),TDISP(:
),ALOAD(:
)以及PSNBR(:
),PSNBJ(:
)以及PSTNR(:
),PSTNJ(:
)以及STRSP(:
),STRSJ(:
)这些维数确定但是大小不确定的可变大小的数组,ALLOCATABLE表示可变大小的数组变量。
Module的程序代码要编写在最前面,整个程序在主程序以及子程序中都使用了MODULEDIMDATA。
模块module的名字是DIMDATA,表示模块里面定义的变量都是内容不确定或者大小不确定的,需要后面补充。
7.RESIZE调整大小的意思,采用子程序SUBROUTINERESIZE(KELEM,KPOIN,KPROP,KFIX1),子程序名称RESIZE(KELEM,KPOIN,KPROP,KFIX1)括号里面的KELEM,KPOIN,KPROP,KFIX1是指定四个变量用来接收传递进来的参数,名字可以完全自定,不需要跟呼叫时所放入的变量名称有任何联系。
子程序的目的是把module模块里面的可变大小的数组变量的维数与大小都确定下来,相应的数组变量的内存大小也就确定下来了。
在子程序SUBROUTINERESIZE(KELEM,KPOIN,KPROP,KFIX1)里面要用到module模块里面的变量,要在子程序开始声明之前就使用USEDIMDATA的描述来使用这个module。
8.在声明时,只能使用常数来赋数组的大小,常数包括填入数字或者使用声明为parameter的常数。
9.
这段程序作用是给各个数组内容赋予初值。
这段程序代码的作用是配置数组的内存空间大小。
ALLOCATE(A(STUDENTS))!
配置内存空间
10.主程序并不一定要放在整个程序代码的最开头,它可以安排在程序中的任意位置,可以先写子程序再写主程序。
PROGRAMFEM3v04是主程序开头,主程序没有放在最开头,放在中间了。
但是module的程序代码需要编写在整个程序的最前面。
11.
Module模块截图。
12.
这些语句用于赋予数组的初值。
13.ALLOCATEMEMORYOK!
配置内存完毕
14.
CARRIAGECONTROL='
FORTRAN'
的字段用来指定所要开启的文件名称,“6”的作用是给后面的文件指定一个代码。
主程序PROGRAMFEM3v04里面调用了很多个主程序,每一个主程序都有一个特定的功能。
主程序PROGRAMFEM3v04里面调用了COPYRIGHT、READDATA、GAUSINDEX、
INISTRESS、GAUSTRAN、FORMLOAD、ELASMATX、STFINDEX、FORMSTIF、ITERATION、OUTRESULT、WRITE2TECPLOT,每调用一个子程序后在调用一个子程序SHOWTIME。
子程序SHOWTIME在前述每个子程序被调用后调用,与它们混合调用。
此语局意思是“停止计算完成的”
15.iteration迭代,copyright版权,readdata读取数据,index索引,gausindex高斯索引,INISTRESS初始应力,dimension维度,
16.
这是第一个子程序COPYRIGHT,
这个字段定义了一个一维数组CH(),数组大小为10,数组CH()是CHARACTER类型数组,意思就是数组CH()里面的每一个变量是CHARACTER(字符串)类型变量。
表示数组CH()内每一个变量都是CHARACTER(字符串)类型变量,数组内每一个变量大小都是71。
后面给出了数组里面每一个变量的值。
WRITE(*,*)(CH(I),I=1,7)语句表示在默认位置(也就是电脑屏幕)上不用特定格式输出数组的内容,还用了一个简单循环(CH(I),I=1,7)。
17.
这是主程序里面调用的第二个子程序SUBROUTINEREADDATA,
定义了一个字符串类型变量TITLE,大小为80,意思就是变量TITLE里面可以保存80个字符位置的数据。
打开代号为10的文件CORE04.DAT与打开代号为20的文件CHECK.OUT,
使用read来读取代号为10的文件CORE04.DAT中的文本到字符串变量TITLE中。
使用read来读取代号为10的文件CORE04.DAT中的文本到DTIME,NSTEP,TOLER,IDDP,SCALE,DSCALE这些变量中去。
因为前面module模块里面定义了DTIME,NSTEP,TOLER,IDDP,SCALE,DSCALE这些变量,在子程序SUBROUTINEREADDATA里面使用USEDIMDATA语句就可以在子程序里面直接使用前面module模块里面定义的变量,不需要再子程序里面重复定义。
此语句以C作为开头,表明此句是注释。
使用read来读取代号为10的文件CORE04.DAT中的文本到NELEM,NPOIN,NPROP,NFIX1这些变量中。
在子程序SUBROUTINEREADDATA里面又调用了READELEM、READNODE、READMATER、READBOND这四个子程序,嵌套调用子程序。
READELEM读单元,READNODE读结点,READBOND读结合处。
18.
这是子程序SUBROUTINEREADELEM的内容。
关闭代号是“1005”的文件。
这是子程序SUBROUTINEREADNODE的内容。
以上两个图片合并就是一个子程序SUBROUTINEREADMATER的截图。
子程序独立地拥有属于自己的变量声明,也就是说在子程序与其它子程序之间,子程序与子程序之间所声明变量彼此是不相干的,即使在主程序与其它的子程序中使用了同样的变量名称,它们也是彼此没有关系的不同变量。
主程序跟子程序是两种不同的程序,不同程序之间可以各自拥有属于自己的变量声明以及自己的行代码定义。
material材料,constant常数,input输入,READMATER读取材料参数,rock岩石,PROPS后盾,1-E表示弹性,2-POISSONRATIO表示泊松比,4-FRICTIONANGLE表示摩擦角,5-UNITWEIGHT表示材料容重,6-DILATAION表示材料的膨胀系数,7-GAMA表示材料的通用性质,TRANSFERRED传递,JOINT节点,DIP倾斜角,INTERVAL间隔,TENSILESTRENGTH抗拉强度。
此部分用于定义材料的性能参数与定义节点的性能参数。
此语句把“MATERIALCONSTANT=”字符串写入代码是20的文件中。
代码是20的文件名称是CHECK.OUT,代码为10的文件名称是CORE04.DAT,代码为1005的文件名称是CHNAME。
一行程序代码的最后如果是符号&
,代表下一行程序会和这一行连接;
如果一行程序代码的开头是符号&
,代表它会和上一行程序连接。
此句是逻辑判断语句,.GT.判断是否“大于”(GreaterThan)。
输出变量的值到代码为20的文件中去,输出格式代码是12.代码12的内容为
,设置输出格式,对应书本第50面。
CRITERION标准,准则,尺度。
INNERCONE内切圆,INNEROUTERCONE内接圆(内角点外接)。
注释语句。
OUTEROUTERCONE外接圆(外角点外接)。
不理解这个字段的意思,Fortran语法没有看懂。
这个没有怎么看懂它是什么意思,不太理解,对于语法与内容本身都不甚理解。
子程序SUBROUTINEREADBOND的字段,表示这个子程序是关于约束信息,边界条件信息都写在子程序里面了。
CONSTRAINTSn.[数]约束;
限制;
约束条件(constraint的复数形式),DOF(DegreeofFreedom)自由度,DOFCONSTRAINTS自由度限制。
BOUNDARYCONDITIONFINISHED边界条件完成,boundary边界,condition条件。
19.GAUSINDEX高斯索引
INDEXMATRIXOFGAUSSSTRESSESFORJOINT,BOLT强调对于接合处,螺栓的高斯索引矩阵
20.INISTRESS初始应力;
INITIALSTRESS初始应力,预应力;
VISCOPLASTICSTRAIN粘塑性应变,
判断是否“小于”(LittleThan)。
GOTO跳转命令,跳转到行代码指定的那一行去执行。
这个子程序的内容就是关于初始应力的。
代码是46的文件就是STRSS.IN。
20.
SHAPEFUNCTION&
DERIVATIVESTOLOCALCOORDINATES形函数与导数的局部坐标。
GAUSTRAN高斯转换。
DERIVATIVES导数,
LOCALCOORDINATESOFNODES[ICM][在]节点局部坐标系,
DERIVATIVESOFSHAPEFUNCTIONTOGLOBALCOORDINATES形函数在全局坐标中的导数。
GAUSSTRANSFORMATIONMATRIXFINISHED高斯变换矩阵完成
CALCULATETHEVALUEOFSHAPEFUNC