读有限元Fortran程序笔记.docx
《读有限元Fortran程序笔记.docx》由会员分享,可在线阅读,更多相关《读有限元Fortran程序笔记.docx(20页珍藏版)》请在冰豆网上搜索。
读有限元Fortran程序笔记
读有限元程序笔记
1.ALLOCATABLE:
:
COORD(:
:
),PROPS(:
:
:
)!
声明两个可变大小的数组,COORD(:
:
)是二维数组,PROPS(:
:
:
)是三维数组。
2.Fortran程序行首为C代表改行为注释,不会被编译
3.全局变量(common),不同的程序之间,也就是在不同的函数之间或者是主程序跟函数之间,除了可以通过传递参数的方法来共享内存,还可以通过“全局变量”来让不同程序中声明出来的变量使用相同的内存位置。
4.Dimensional维的,viscoplastic塑性的,elastic有弹力的,finite有限的,element元素,program程序。
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(:
:
),PROPS(:
:
:
)以及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高斯变换矩阵完成
CALCULATETHEVALUEOFSHAPEFUNCTIONSATGAUSS-P在gauss-p计算形函数的值
LOCAL(DERIV)OFSHAPEFUNCTIONSONGAUSSPOINT在高斯点上形状函数的局部(衍生物)
JACOBIANOFGAUSSPOINT[DJ]高斯点的雅可比矩阵
CAUTION提醒INVERSE逆向的
INVERSEJACOBIANOFGAUSSPOINTG高斯点G的雅可比逆矩阵
21.
在SUBROUTINEFORMLOAD子程序里面调用SUBROUTINEOUT_LOAD子程序。
后面某一个位置会调用这个子程序。
LOADMATRIX荷载矩阵,NODE节点,FORCE力,POINTLOAD集中载荷,
LOADVECTORFINISHED荷载向量完成
INDEXMATRIXOFEQULIBRIUMEQUATION平衡方程系数矩阵
EQUILIBRIUMINDEXFINISHED平衡系数完成
CONCENTRATEDLOAD集中载荷POINTLOADFINISHED点荷载完成
VOLUMELOADS体积力VOLMLOAD体积力
SURFACELOADFINISHED面荷载完成SEEPAGELOAD渗透力
WEIGHTOFWATER水的重量THERMALLOADS温度力
ELASTICMATRIXOFELEMENT弹性矩阵的元素
Fortran77使用do会比较麻烦一点,它不使用enddo来结束循环,而是使用行号来结束循环,程序代码要在do的后面写清楚这个循环到哪一行程序代码结束。
Fortran77中,经常使用CONTINUE这个命令来结束循环,因为CONTINUE这个命令没有实际的用途,刚好可以拿来封装使用。
Fortran77很多时候也可以用enddo,而不是使用行号来封装循环。
TRANSFORMATIONMATRIXOFJOINT节点的变换矩阵
FORMELASTICMATRIXOFROCKANDJOINT岩石和接合处形成弹性矩阵
FORMEQUIVALENTELASTICMARIXOFJOINTEDROCK形成节理岩石的等效弹性矩阵
FORMELASTICMATRIXOFJOINTEDROCK形成节理岩石的弹性矩阵
INITIALIZETHEINDEXARRAYOFSTIFFNESSMATRIX初始化索引数组的刚度矩阵
DEALLOCATE解除分配ITERATION迭代
ELASTICSTIFFNESSMATRIX弹性刚度矩阵
RHEOLOGICALCALCULATION流变计算
CALCULATETHESTRESSINCREMENTOFBOLTEDJOINTEDROCKMASS计算螺栓连接岩体的应力增量
TOTALSTRAININCREMENT总应变增量
ELASTICSTRAININCREMENT弹性应变增量
CALCULATETHERESIDULFORCEOFLASTSTEP计算最后一步残余力
CALCULATETHEYIELDFUNCTIONOFROCKMASS计算岩体的屈服函数
VISCOPLASTICSTRESSOF(BOLTED)ROCKAND(BOLTED)JOINT岩石和接合处的粘塑性应力
THECONSTANTVALUEOFSTRESSANDSTRESSDEVIATOR压力的常数值和压力偏差
CONVERGENCECRITERION集合标准
OUTPUTTHERESULT输出结果
OUTPUTDISPANDSTRSSONNODES输出位移和节点上的力
OUTPUTSTRESSANDVISCOPLASTICSTRAIN输出应力和塑性应变
OUTPUTDISPLACEMENT输出替代
OUTPUTSTRESSANDVISCOPLASTICSTRAINOFROCK岩石的应力和塑性应变输出
OUTPUTSTRESSANDVISCOPLASTICSTRAINOFJOINT输出应力和连接处的塑性应变
VARIABLES可变的QUADRILATERAL四边形TETRAHEDRON四面体
BRICK8节点六面体
THESINGULARCOEFFICIENTMATRIX奇异系数矩阵
gravityCORE重心