资源描述
单击以编辑,母版标题样式,单击以编辑母版文本样式,第二级,第三级,第四级,第五级,*,Chap.7,典型有限单元程序设计,本章重点和应掌握的内容,用,FORTRAN,语言编程的方法和特点。,2.,一个典型有限单元程序的流程图与程序设计的步骤和特点。,3.,一个典型有限单元程序的使用方法和例题。,7.1,“,有限元程序设计”课程的意义和目的,1.,有限元数值分析技术本身要求工程设计研究人员掌握有限元数值分析技术。现代计算力学的真正成熟和实用化,已在各种力学中得到了广泛的应用。比如:已成为工程结构分析中最得以收敛的技术手段,现代功用大致有:,1),现代结构论证。对结构设计从内力,位移等方面进行优劣评定,从而进行结构优化设计。,2,)可取代部份实验,局部实验,+,有限元分析,是现代工程设计研究方法的大特点。新材料本构关系,需要设计用户子程序。,3,)非线性分析(弹塑、疲劳、断裂等)需要有限元迭代计算。作为核心的计算工具。用户应了解求解过程,以便控制。,4).,有限元数值分析本身包括着理论,+,技术实现(本身功用所绝定的)有限元数值分析本身包括着泛函理论,+,分片插值函数,+,程序设计。,2.,有限元分析的技术实现(近十佘年的事)更依赖于计算机程序设计,有限元分析的技术取得的巨大的成就,从某种意义上说,得益于计算机硬件技术的发展和程序设计技术的发展,这两者的依赖性在当代表现得更加突出。(如可视化技术),从学习的角度,不仅要学习理论,而且要从程序设计设计角度对这些理论的技术实现有一个深入的了解,应当致力于掌握这些技术实现能力,从而开发它,发展它。(理论本身还有待于进一步完美相应的程序设计必须去开发),3.,程序设计不仅是实现有限元数值分析的工具和桥梁,而且在以下诸方面也有意义:,1).,精通基本概念,深化理论认识;,2).,锻炼实际工程分析,实际动手的能力;,3).,获得以后工作中必备的工具。(作业,+,老师给元素库),目的:通过讲述有限元程序设计的技术与技巧,便能达到自编自读的能力。,总描述:,理论,+,算法,+,数据结构,(程序设计的意义),理论:有限元算法,构造,步骤,解的等外性,收敛性,稳定性,误差分析,算法;指求解过程的技术方法,含两方面的含义;,a.,有限元数值分析算法,,b,与数据结构有关的算法(总刚稀疏存贮,提取,节点优化编号等),数据结构:指各向量矩阵存贮管理与实现,辅助管理结构(指针,数据记录等),7.2,课程特点,1 1,.,结构化程序设计方法,a,),TopDown(,自上面下,),系统性强,选择性强,.,b).Critical Component First (,关键部份优先,),先抓主要矛盾,分清重,缓急,.,c).,独立调试,总体联调,(,软件设计的社会化作业,),2,2.,程序设计要点,a).,自觉有意识地设计一个良好的程序结构,做到,:,易读,易懂,易管理,易修改,易发展,.,b).,做到逻辑清晰,说明完整,.,c).,要有工艺设计概念有框图,有步骤,.,33.,结构化程序设计原则,a).,尽可能通用性好,适应各种规模的复杂问题,b).,整体精炼,清晰;避免,GOTO,。,c).,省机时,省存贮,计算精度高,(算法上下功夫,注意技巧),d).,输入数据少,格式简单。,e).,输出结果简明,忌讳打印过多(与具体调试过程不一样)。,f).,易读易维护,易发展。,4.,有限元力学模型的分级管理,有限元程序对力学模型的数据按,一级:结构级(有点广义,不仅指具体结构,也指模型题目的规模),二级:单元级,三级:节点级,基本关系,5,.,描述参数,A.,节点描述参数,(1).,节点位置,(,总体坐标系下的坐标,).,(2).,节点局部坐标,(,按节点的约束方向制定的特殊坐标系,x,,,y,,,z,v,如斜支撑,),(3).,节点的性质,(,自由,固定,指定位移,从属其它节点,).,(4).,节点力,:(,F,x,F,y,F,z,M,x,M,y,M,z,),(5).,节点位移,:(u,v,w,x,y,z,),B.,单元描述参数,(,1,)结构描述参数:,单元总数,节点总数,单元娄型总数,结构材料种娄数,节点自由度数,(,控制题目规模,),(2).,材料特性参数定义:,E,G,D,(3).,节点的几何刚度参数,(,即面积,A,板厚,H,梁抗弯模量,I),(4).,单元的局部坐标,.(,用于应力分析等,如图形曲面,),(5).,单元的节点编号,(6).,单元的几何矩阵,(,节点变形与应力关系矩阵,),(7).,单元刚度矩阵,K,(8).,单元的应力,应变向量,(,有限元分析多用向量,而不用矩阵,(,张量,),K,=,A,K,e,其中,:,A,表示单元刚度装配算子,4,.,节点荷载组装,7.3,基本公式,1.,单元刚度计算公式,3.,单元节点荷载计算,2.,单元刚阵组合,位移约束关系,:,总刚方程解,:,应变计算,:,应力计算,:,支撑反力计算,:,输入边界条件,(,对称条件,),形成各荷载工况的节点荷载阵,总刚分解,回代求出位移及输出,计算应变、应力,形成单元刚阵,单刚向总刚投放,坐标变换,输入原始参数,计算总刚规模,形成总刚方程,向总节点荷载阵投放,形成单元荷载阵,调整几何、弹性矩阵,调整单元位移列阵,7.4,有限元分析的模块组织,7.5,结构分析的原始输入数据,1.,题目名称,2.,题目规模,节点数目:,NPOIN,单元数目:,NELEM,节点数据节点坐标:,COORD,(,NP,,,1,),3.,单元节点编号:,LNODS,(,IELEM,,,1,)、,LNODS,(,IELEM,,,2,),材料特性:,PROPS(numat,1)(,弹性摸量,E),PROPS(numat,2)(,泊松比,),单元几何参数:,I,、,RI,(,惯矩),4,.,单元节点约束代码,:x,方向约束,10;y,方向约束,01;x,和,y,方向都约束,11.,5.,荷载数据 外荷载作用点,坐标及大小,详见:,“,线弹性有限元程序使用说明,”,一、什么是,Fortran,Fortran,是,Formular Translation,的缩写,是一门比较古老的语言,但是更适合于科学计算,由于大家都学习过,C,,,所以下面我就把,Fortran,与,C,在科学计算方面做一下简单的比较:,1,Fortran,具有内建的复数数据类型,Complex,,,这样的好处是一些内部函数,比如,sin,,,可以直接对复数操作。,2,Fortran,数组从下标默认情况下是从,1,开始,与一般矩阵的下标相同,7.6,Fortran,语言回顾,3,Fortran,没有指针,这虽然使一些数据结构无法实现,但是有利于编译器进行自动的代码优化,一般来说,,Fortran,的程序比,c,程序的执行效率要高一些。当然目前的,fortran90,已经提供了指针,我认为主要的作用是实现一些数据结构。,4,变量采用的是静态存储变量,在调用子过程或函数时,参数传递通过引用方式传递,节省了复制变量的时间,二、书写风格,Fortran,的老版本是,fortran77,,,教材上面的程序就是,f77,格式,而新版本是,fortran90,,是,f77,的一个超集,这两种标准我都讲一讲,主要是因为我们既要看得懂老程序,同时自己写程序时最好还是按新标准去写。,编译器推荐用,Compaq Visual Fortran 6.5,,,支持,f77,和,f90,对于,cvf6.5,,,Fortran,书写风格目前有两种,一种是,f77,的固定格式,(fixed form),后缀一般是,.f,,,另一种是,f90,新的自由格式,(free form),,,后缀一般是,.f90,1.,固定格式编程,:,program main,c,计算,abc,的平均值,real,a,b,c,aver,averag,read(*,*)a,b,c,aver1=,averag(a,b,c,),write(*,*)aver,end,function,averag(x,y,z,),average=(x+y+z)/3.0,end,2.,自由格式编程,:,program main,implict,none !,强制变量声明,!,是注释符,real:a=1,b=2,c=3 !,定义并赋值,write(*,*)a,b,&!&,是换行符,c,end,三、变量,变量名不区分大小写,变量可以不用声明而直接使用,也可以声明,但是变量的声明必须在所有可执行语句之前。常有六种类型声明语句,f90 f77integer,(,1,),:x integer*1 x-27x27-1integer,(,2,),:y integer*2 y-215y215-1integer:z integer z -232z,高级),例如:,2.1+(17/5)=2.1+3=2.1+3.0=5.1,2.,逻辑表达式关系运算符:,Fortran 77 Fortran 90.,gt,.,ge,.=.lt.le.0)then,elseif(a,0)then,else,endif,2,Do,循环,f77,格式,f90,格式,do 100,,,I=1,10 do I,1,,,10,100,contiune,enddo,do 200 while(I.lt.100)do while(I100),200 continue,enddo,3,Case,循环,f90,中的新加入,integer day,read(*,*)day,selectcase(day,),case(1),write(*,*),mon,case(2),write(*,*),tues,case(3),write(*,*)wend,case default,write(*,*)wrong!,endselect,用,FORTRAN,语言编制,该程序的主要特点是采用结构化设计方法,即采用模块化方法,把各个主要有限元模拟步骤分别用独立的子程序来实现,而后主要的子程序又依靠辅助子程序来完成次级运算。一个辅助子程序可以为一个以上的主要子程序所调用,主要子程序最后由一个主程序控制。结构化程序条理清楚,具有易读易维护的优点。主要分为三大模块:,1.,前处理,即有限元模型的建立。主要包括输入初始数据,形成有限元网格、节点约束的确定及边界节点的形成等。,2.,求解。采用三角分解方法进行刚度矩阵组装和求解,,3.,后处理。根据得到的节点位移,计算单元应变、应力并输出和变形网格。,7.7,程序结构和特点,4.,子模块(子程序),subroutine,a.,特点:独立性强,只要输入输出接口,象一个黑匣子,与外界无关。,b.,作用:完成一个独立的功能(求应力,矩阵分解,投放等),格式:,subroutine,或,function(ip,1,ip,2,rp,1,rp,2,io,1,io,2,ro,1,ro,2,).(,其中,ip1,ip2,rp1,rp2,是输入形参,,io1,io2.rp1,rp2,是输出形参,),INITIAL,数组初始化,INPUT,输入几何尺寸、边界条件和材料性能常数,开 始,SOLVER,求解线性方程组,STRESS,求解应力,教学,程序结构,SUBROUTINE SFR2(ETASP,EXISP),INCLUDE COEFEM,C-,-,-C,EVALUATES SHAPE FUNCTIONS AND THEIR DERIVATIVES FOR LINEAR,QUADRATIC LAGRANGIAN AND SERENDIPITY ISOPARAMETRIC 2-D ELEMENTS.,C-,-,-,-,-C,S=EXISP,T=ETASP,IF(NNODE.GT.4)GOTO 10,ST=S*T,SHAPE(1)=(1.0-T-S+ST)*0.25,SHAPE(2)=(1.0-T+S-ST)*0.25,SHAPE(3)=(1.0+T+S+ST)*0.25,SHAPE(4)=(1.0+T-S-ST)*0.25,C,C
展开阅读全文