1、1读有限元程序笔记1. ALLOCATABLE:COORD(:,:),PROPS(:,:,:) !声明两个可变大小的数组, COORD(:,:)是二维数组,PROPS(:,:,:)是三维数组。2. Fortran 程序行首为 C 代表改行为注释,不会被编译3. 全局变量(common) ,不同的程序之间,也就是在不同的函数之间或者是主程序跟函数之间,除了可以通过传递参数的方法来共享内存,还可以通过“全局变量”来让不同程序中声明出来的变量使用相同的内存位置。4. Dimensional 维的,viscoplastic 塑性的,elastic 有弹力的,finite 有限的,element 元素,
2、program 程序。5. THREE DIMENSIONAL ELASTIC-VISCOPLASTIC FINITE ELEMENT PROGRAM 三维弹塑性有限元程序6. Module 可以用来封装程序模块,通常是用来把程序中,具备相关功能的函数及变量封装在一起。程序在开始定义了一个 module 模块,在模块中定义了MXKKK=50000000,MXGSJ=1000 ,MXGSJ=1000 三个常量(PARAMETER 表示常量) ,并且每个常量都赋了值。在 module 模块中定义了 NELEM,NPOIN,NPROP,MXDFN,NSTEP,IDEVP,IDDP,LTYPE以及 N
3、FIX1,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
4、(:,:,:),DJEMX(:,:,:,:)以及 CREMX(:,:,:),CJEMX(:,:,:,:)以及 MELEM(:,:),MPROP(:),ISSOR(:,:),NNDEX(:)以及 MPFIX(:,:),MPSJ(:),MMATP(:),MPIV(:)以及 TSTIF(:)以及 ADISP(:),TDISP(:),ALOAD(:)以及 PSNBR(:,:,:),PSNBJ(:,:)以及 PSTNR(:,:,:),PSTNJ(:,:)以及 STRSP(:,:),STRSJ(:,:)这些维数确定但是大小不确定的可变大小的数组,ALLOCATABLE 表示可变大小的数组变量。 Modul
5、e 的程序代码要编写在最前面,整个程序在主程序以及子程序中都使用了 MODULE DIMDATA。模块 module 的名字是DIMDATA,表示模块里面定义的变量都是内容不确定或者大小不确定的,需要后面补充。7. RESIZE 调整大小的意思,采用子程序 SUBROUTINE RESIZE(KELEM,KPOIN,KPROP,KFIX1),子程序名称 RESIZE(KELEM,KPOIN,KPROP,KFIX1)括号里面的 KELEM,KPOIN,KPROP,KFIX1 是指定四个变量用来接收传递进来的参数,名字可以完全自定,不需要跟呼叫时所放入的变量 名称有任何联系。子程序的目的是把 mo
6、dule 模块里面的可变大小的数组变量的维数与大小都确定下来,相应的数组变量的内存大小也就确定下来了。在子程序 SUBROUTINE RESIZE(KELEM,KPOIN,KPROP,KFIX1)里面要用到 module 模块里面的变量,要在子程序开始声明之前就使用 USE DIMDATA 的描述来使用这个 module。8. 在声明时,只能使用常数来赋数组的大小,常数包括填入数字或者使用声明为 parameter 的常数。9.2这段程序作用是给各个数组内容赋予初值。这段程序代码的作用是配置数组的内存空间大小。ALLOCATE(A(STUDENTS) ! 配置内存空间 10主程序并不一定要放在
7、整个程序代码的最开头,它可以安排在程序中的任意位置,可以先写子程序再写主程序。PROGRAM FEM3 v04 是主程序开头,主程序没有放在最开头,放在中间了。但是 module的程序代码需要编写在整个程序的最前面。11.3Module 模块截图。12.这些语句用于赋予数组的初值。13. ALLOCATE MEMORY OK!配置内存完毕14. CARRIAGECONTROL=FORTRAN的字段用来指定所要开启的文件名称,“6” 的作用是给后面的文件指定一个代码。主程序 PROGRAM FEM3 v04 里面调用了很多个主程序,每一个主程序都有一个特定的功能。主程序 PROGRAM FEM3
8、 v04 里面调用了 COPYRIGHT、READDATA、GAUSINDEX、4INISTRESS、GAUSTRAN、FORMLOAD、ELASMATX、STFINDEX 、FORMSTIF、ITERATION 、OUTRESULT、WRITE2TECPLOT,每调用一个子程序后在调用一个子程序 SHOWTIME。子程序SHOWTIME 在前述每个子程序被调用后调用,与它们混合调用。此语局意思是“停止计算完成的”15. iteration 迭代,copyright 版权, readdata 读取数据,index 索引,gausindex 高斯索引,INISTRESS 初始应力,dimensi
9、on 维度,16. 这是第一个子程序 COPYRIGHT, 这个字段定义了一个一维数组 CH(),数组大小为 10,数组 CH()是 CHARACTER 类型数组, 意思就是数组 CH()里面的每一个变量是CHARACTER(字符串)类型变量。 表示数组 CH()内每一个变量都是CHARACTER(字符串)类型变量,数组内每一个变量大小都是 71。后面给出了数组里面每一个变量的值。WRITE(*,*) (CH(I),I=1,7)语句表示在默认位置(也就是电脑屏幕)上不用特定格式输出数组的内容,还用了一个简单循环(CH(I),I=1,7)。17.5这是主程序里面调用的第二个子程序 SUBROUT
10、INE READDATA, 定义了一个字符串类型变量 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, S
11、CALE,DSCALE 这些变量,在子程序SUBROUTINE READDATA 里面使用 USE DIMDATA 语句就可以在子程序里面直接使用前面 module 模块里面定义的变量,不需要再子程序里面重复定义。此语句以 C 作为开头,表明此句是注释。使用 read 来读取代号为 10 的文件 CORE04.DAT 中的文本到 NELEM,NPOIN,NPROP,NFIX1 这些变量中。在子程序 SUBROUTINE READDATA 里面又调用了READELEM、READNODE、READMATER、READBOND 这四个子程序,嵌套调用子程序。READELEM 读单元,READNODE
12、 读结点,READBOND 读结合处。618.这是子程序 SUBROUTINE READELEM 的内容。关闭代号是“1005”的文件。这是子程序 SUBROUTINE READNODE 的内容。7以上两个图片合并就是一个子程序 SUBROUTINE READMATER 的截图。8子程序独立地拥有属于自己的变量声明,也就是说在子程序与其它子程序之间,子程序与子程序之间所声明变量彼此是不相干的,即使在主程序与其它的子程序中使用了同样的变量名称,它们也是彼此没有关系的不同变量。主程序跟子程序是两种不同的程序,不同程序之间可以各自拥有属于自己的变量声明以及自己的行代码定义。material 材料,c
13、onstant 常数,input 输入,READMATER 读取材料参数,rock岩石,PROPS 后盾,1-E 表示弹性,2-POISSON RATIO 表示泊松比,4-FRICTION ANGLE 表示摩擦角,5-UNIT WEIGHT 表示材料容重, 6-DILATAION 表示材料的膨胀系数, 7-GAMA 表示材料的通用性质,TRANSFERRED 传递,JOINT 节点,DIP 倾斜角,INTERVAL 间隔,TENSILE STRENGTH 抗拉强度。此部分用于定义材料的性能参数与定义节点的性能参数。此语句把“MATERIAL CONSTANT=” 字符串写入代码是20 的文件中
14、。代码是 20 的文件名称是 CHECK.OUT,代码为 10 的文件名称是 CORE04.DAT,代码为1005 的文件名称是 CHNAME。一行程序代码的最后如果是符号&,代表下一行程序会和这一行连接;如果一行程序代码的开头是符号& ,代表它会和上一行程序连接。此句是逻辑判断语句,.GT.判断是否“大于” (Greater Than)。输出变量的值到代码为 20 的文件中去,输出格式代码是 12.代码 12 的内容为 ,设置输出格式,对应书本第 50 面。CRITERION 标准,准则,尺度。 INNER CONE 内切圆,INNER OUTER CONE 内接圆(内角点外接)。注释语句。
15、OUTER OUTER CONE 外接圆(外角点外接)。不理解这个字段的意思,Fortran 语法没有看懂。9这个没有怎么看懂它是什么意思,不太理解,对于语法与内容本身都不甚理解。子程序 SUBROUTINE READBOND 的字段,表示这个子程序是关于约束信息,边界条件信息都写在子程序里面了。CONSTRAINTS n. 数 约束;10限制;约束条件(constraint 的复数形式), DOF(Degree of Freedom)自由度,DOF CONSTRAINTS 自由度限制。BOUNDARY CONDITION FINISHED 边界条件完成,boundary 边界,conditi
16、on 条件。19. GAUSINDEX 高斯索引INDEX MATRIX OF GAUSS STRESSES FOR JOINT, BOLT 强调对于接合处,螺栓的高斯索引矩阵20INISTRESS 初始应力;INITIAL STRESS 初始应力,预应力;VISCOPLASTIC STRAIN 粘塑性应变, 判断是否“小于”(Little Than)。GOTO 跳转命令,跳转到行代码指定的那一行去执行。11这个子程序的内容就是关于初始应力的。代码是 46 的文件就是 STRSS.IN。20. 12SHAPE FUNCTION & DERIVATIVES TO LOCAL COORDINATE
17、S 形函数与导数的局部坐标。GAUSTRAN 高斯转换。 DERIVATIVES 导数,LOCAL COORDINATES OF NODES ICM 在 节点局部坐标系,DERIVATIVES OF SHAPE FUNCTION TO GLOBAL COORDINATES 形函数在全局坐标中的导数。GAUSS TRANSFORMATION MATRIX FINISHED 高斯变换矩阵完成CALCULATE THE VALUE OF SHAPE FUNCTIONS AT GAUSS-P 在 gauss-p 计算形函数的值LOCAL (DERIV) OF SHAPE FUNCTIONS ON GA
18、USS POINT 在高斯点上形状函数的局部(衍生物)JACOBIAN OF GAUSS POINT DJ 高斯点的雅可比矩阵CAUTION 提醒 INVERSE 逆向的 INVERSE JACOBIAN OF GAUSS POINT G 高斯点 G 的雅可比逆矩阵21.13在 SUBROUTINE FORMLOAD 子程序里面调用 SUBROUTINE OUT_LOAD 子程序。14后面某一个位置会调用这个子程序。LOAD MATRIX 荷载矩阵,NODE 节点 ,FORCE 力, POINTLOAD 集中载荷, 15LOAD VECTOR FINISHED 荷载向量完成INDEX MATR
19、IX OF EQULIBRIUM EQUATION 平衡方程系数矩阵EQUILIBRIUM INDEX FINISHED 平衡系数完成CONCENTRATED LOAD 集中载荷 POINT LOAD FINISHED 点荷载完成VOLUME LOADS 体积力 VOLMLOAD 体积力SURFACE LOAD FINISHED 面荷载完成 SEEPAGE LOAD 渗透力WEIGHT OF WATER 水的重量 THERMAL LOADS 温度力ELASTIC MATRIX OF ELEMENT 弹性矩阵的元素Fortran77 使用 do 会比较麻烦一点,它不使用 end do 来结束循环
20、,而是使用行号来结束循环,程序代码要在 do 的后面写清楚这个循环到哪一行程序代码结束。Fortran77 中,经常使用 CONTINUE 这个命令来结束循环,因为 CONTINUE 这个命令没有实际的用途,刚好可以拿来封装使用。Fortran77 很多时候也可以用 end do,而不是使用行号来封装循环。16TRANSFORMATION MATRIX OF JOINT 节点的变换矩阵FORM ELASTIC MATRIX OF ROCK AND JOINT 岩石和接合处形成弹性矩阵FORM EQUIVALENT ELASTIC MARIX OF JOINTED ROCK 形成节理岩石的等效弹
21、性矩阵FORM ELASTIC MATRIX OF JOINTED ROCK 形成节理岩石的弹性矩阵INITIALIZE THE INDEX ARRAY OF STIFFNESS MATRIX 初始化索引数组的刚度矩阵DEALLOCATE 解除分配 ITERATION 迭代ELASTIC STIFFNESS MATRIX 弹性刚度矩阵RHEOLOGICAL CALCULATION 流变计算CALCULATE THE STRESS INCREMENT OF BOLTED JOINTED ROCK MASS 计算螺栓连接岩体的应力增量TOTAL STRAIN INCREMENT 总应变增量ELAS
22、TIC STRAIN INCREMENT 弹性应变增量CALCULATE THE RESIDUL FORCE OF LAST STEP 计算最后一步残余力CALCULATE THE YIELD FUNCTION OF ROCK MASS 计算岩体的屈服函数VISCOPLASTIC STRESS OF (BOLTED) ROCK AND (BOLTED) JOINT 岩石和接合处的粘塑性应力THE CONSTANT VALUE OF STRESS AND STRESS DEVIATOR 压力的常数值和压力偏差CONVERGENCE CRITERION 集合标准OUTPUT THE RESULT
23、输出结果OUTPUT DISP AND STRSS ON NODES 输出位移和节点上的力OUTPUT STRESS AND VISCOPLASTIC STRAIN 输出应力和塑性应变OUTPUT DISPLACEMENT 输出替代OUTPUT STRESS AND VISCOPLASTIC STRAIN OF ROCK 岩石的应力和塑性应变输出17OUTPUT STRESS AND VISCOPLASTIC STRAIN OF JOINT 输出应力和连接处的塑性应变VARIABLES 可变的 QUADRILATERAL 四边形 TETRAHEDRON 四面体 BRICK8 节点六面体THE SINGULAR COEFFICIENT MATRIX 奇异系数矩阵gravityCORE 重心18