完整版基于VB的矩阵位移法的fortrans的可视化开发本科毕业论文.docx
《完整版基于VB的矩阵位移法的fortrans的可视化开发本科毕业论文.docx》由会员分享,可在线阅读,更多相关《完整版基于VB的矩阵位移法的fortrans的可视化开发本科毕业论文.docx(35页珍藏版)》请在冰豆网上搜索。
完整版基于VB的矩阵位移法的fortrans的可视化开发本科毕业论文
泰山学院
本科毕业论文(设计)
基于vb的矩阵位移法Fortran程序可视化开发
所在学院机械与工程学院
专业名称土木工程
申请学士学位所属学科工科
年级2010级
指导教师姓名、职称李琦讲师
完成日期2014年月日
摘要
综合VisualBasic语言的良好界面开发和矩阵位移法的Fortran的强大语言运算功能,基于VisualBasic6.0对矩阵位移法Fortran语言进行混合编程开发,可使矩阵位移法Fortran语言运算的前后处理过程可视化。
用VB设计界面,将矩阵位移法Fortran程序编译成可执行程序,运算开始前,打开程序输入所要计算的杆系结构的原始参数,VB和Fortran间的所有数据都通过磁盘文件进行交换,用VB程序中的shell函数异步方式启动可执行程序经行运算,计算结果显示在VB界面上。
整个运行过程中,Fortran程序都在后台进行运行,用磁盘文件进行交换海量数据也很经济,效率非常的高。
基于VB的矩阵位移法Fortran的可视化开发出的程序,继承了Fortran的强大运算功能和VB的良好界面,也避免了Fortran程序在DOS环境下运行时输入数据容易出错和计算结果输出繁琐的缺点。
方便非专业的编程人员灵活运用计算机进行杆件结构的矩阵位移法运算。
关键词:
VisualBasic语言;矩阵位移法;Fortran语言;可视化
Abstract
IntegratedVisualBasiclanguageinterfacedevelopmentandgoodmatrixdisplacementmethodofFortranlanguagepowerfulcomputingcapabilities,basedonVisualBasic6.0forthematrixdisplacementmethodmixedFortranprogramminglanguagedevelopment,beforeandafterthetreatmentprocesscanFortranlanguagecomputingmatrixdisplacementmethodofvisualization.DesigninterfacewithVB,Fortranmatrixdisplacementmethodwillbecompiledintoanexecutableprogram,beforetheoperationbegan,theoriginalinputparametertoopentheprogramtocalculatethetrussstructure,alldatabetweenVBandFortranareexchangedviaadiskfile,VBprogramshellfunctionasynchronouslyexecutableprogramstartedbythelineoperator,theresultisdisplayedontheVBinterface.Throughouttheoperation,Fortranprogramsrunninginthebackground,hugeamountsofdatatobeexchangedwithadiskfileisalsoveryeconomical,efficiencyisveryhigh.VB-basedmatrixdisplacementmethodFortranvisualizationdevelopedprogram,inheritedagoodinterfaceFortranpowerfulcomputingcapabilitiesandVB,butalsoavoidsthedisadvantagesoftheinputdataFortranprogramrunningunderDOSenvironmentpronetoerrorandcalculatetheresultingoutputtedious.Non-professionalprogrammerstofacilitateflexibleuseofcomputermatrixdisplacementmethodcalculationrodstructure.
Keywords:
VisualBasiclanguage;matrixdisplacementmethod;Fortranlanguage;visualization
目录
1绪论1
1.1研究的目的和意义1
1.2基于VB的矩阵位移法Fortran的可视化开发研究的方法概述2
1.3本文的主要工作2
2简介矩阵位移法程序化的实现4
2.1基本信息的输入4
2.1.1结构的几何形状及材料特性数据5
2.1.2结构的约束情况数据5
2.1.3荷载情况数据6
2.2刚度矩阵6
2.2.1单元刚度矩阵6
2.2.2总刚度矩阵7
2.2.3边界条件的处理7
2.2.4非结点荷载的等效8
2.2.5建立求解刚度方程8
2.2.6计算杆端力8
2.3矩阵位移法Fortran程序11
3基于VB6.0的矩阵位移法Fortran的可视化开发14
3.1基于VB6.0的矩阵位移法Fortran的混合编程及可视化开发14
3.1.1基于VB6.0的Fortran混合编程的两种方法及对比14
3.1.2基于VB6.0的矩阵位移法Fortran的可视化开发18
3.2应用实例20
平面刚架计算程序举例和简要说明20
1绪论
1.1研究的目的和意义
矩阵位移法在结构力学中用于解决杆系结构的位移和内力的重要方法,它以位移法为理论基础。
矩阵位移法的基本方法是:
以结点位移为基本未知量,将要分析的结构离散成一个组件,然后通过分析单元和组装单元,简单列出刚度方程,得到了杆端力和结点位移。
其实质是一种位移法的延伸,是将矩阵运算运用到位移法中,使之可以编制成数值计算的计算机程序。
借助计算机强大的运算能力,使难以完成大量的未知变量来解决,容易实现。
因为矩阵位移法编程的存在,让更多的结构力学问题变得简单,能够解决更复杂的问题。
矩阵位移法通常使用Fortran语言编写的计算机程序。
Fortran语言起源于1950年代,是最早适用于科学计算的计算机语言。
Fortran语言的高度标准化、易于程序交换和交易优化,而且具有非常精确的数据结构。
虽然经过多年的发展,应用Fortran语言有了很大发展。
并与C++语言相比,Fortran编程具有C++所有的重要功能。
然而,Fortran语言有其本身无法克服的缺点。
图形处理能力弱,人机界面交换僵硬,而且应该运行在DOS环境下,黑色的屏幕和可怜的兼容性都无法满足需求。
相对于编程人员不熟悉,使用起来更费力又容易出错。
矩阵位移法只在Fortran语言计算结果,及其复杂的计算过程和结果图形表达不好,应用和推广方面非常不利。
VisualBasic是微软开发协助开发环境的事件驱动编程语言,它来自BASIC编程语言,是现今全球使用人数最多的编程语言。
VB的图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻松创建ActiveX控件,也很容易地使用DAO、RDO、ADO连接数据库。
程序员可以很容易地使用VB组件来快速创建应用程序。
经过多年的发展,VB6.0已经很成熟,是一个基于Windows平台的开发工具,以其灵活简单,易于使用和功能强大,界面友好等优点,获得了非计算机专业的程序员的喜爱。
然而,VisualBasic6.0也有自己的缺点,如计算能力差,执行速度慢等等。
通过基于VisualBasic6.0对矩阵位移法Fortran语言进行开发,实现在Windows环境下运行,同时也实现了既可以延续矩阵位移法Fortran语言高效的计算能力,又矩阵位移法程序界面更友好。
非专业程序员灵活的借助计算机运行矩形位移法,在计算机的帮助下也可以简单和直接的获取计算结果,提高项目运作的工作效率。
1.2基于VB的矩阵位移法Fortran的可视化开发研究的方法概述
基于VB6.0的矩形位移法Fortran的界面化开发设计采用矩阵位移法为基本原理,通过VisualBasic6.0和Fortran混合编程的方法,实现矩阵位移法程序的可视化更优化。
矩阵位移法的Fortran编程经过多年来的不断开发已经非常成熟,是应用非常广泛的矩阵位移法计算程序。
本设计首先把矩阵位移法Fortran编程语言转化成VB6.0可以直接调用的可执行文件,实现在VB6.0中执行矩阵位移法Fortran的运算,再基于VB6.0进行程序可视化的优化。
在第三章中详细说明所用到的VB6.0直接调用Fortran编程语言的可执行文件的方法、VB6.0和Fortran的接口、VB调用用Fortran编译的可执行文件(矩阵位移法Fortran可执行文件)、shell函数异步执行和黑屏的解决方案。
然后对运算结果进行可视化处理。
在WINDOWS平台上,使用VB6.0软件和FORTAN混合编程计算的矩阵位移法,现成的矩形位移法的前后期的运算输入、输出简单明了,结果可以由图像直观的显示出来。
1.3本文的主要工作
本文介绍用VisualBasic6.0为平台,将矩阵位移法Fortran编程语言转换为VisualBasic6.0的可执行,生成VisualBasic6.0的一个子程序。
介绍顺序为矩阵位移法的原理和矩阵位移法编程、VB6.0和Fortran混合编程方法及其对比、基于VB的矩阵位移法Fortran的可视化开发。
(1)矩阵位移法程序化的实现部分讨论了矩阵位移法计算机程序实现过程中注意的几个问题:
基本信息的输入,刚度矩阵,边界条件处理,非结点荷载的等效,建立求解刚度方程,计算杆端力。
提供一些关于如何利用程序解决刚架、桁架、连续梁的位移和内力等问题的帮助
(2)对基于VisualBasic6.0的矩阵位移法Fortran程序进行兼容,制作出可应用的编程程序,并进行可视化前后处理界面。
介绍混合编程的主要方法,对混合编程中出现的每一个问题所需要的解决方案进行简要的描述,对在VisualBasic6.0中对于Fortran程序的调用进行简要说明。
(3)生成基于VB6.0的矩阵位移法Fortran软件,达到程序操作简单,数据以文件形式输入,为检查和修改方便,每项数据都可以清晰的显示出来。
程序在运行时,自动由输入的数据生成图形,通过图中的各种信息可以很容易检验出信息是否出错。
计算结束后,计算结果自动生成图像,达到预测结构承受荷载后的情况。
所生成的程序为exe格式,程序小,对计算机没有特殊要求。
(4)应用基于VisualBasic6.0的矩阵位移法的可视化程序进行例题计算,验证程序的正确性和易用性。
2简介矩阵位移法程序化的实现
随着工程技术和材料等的发展,工程结构向复杂化、大型化的发展,传统的结构力学运算和分析方法很难进行大型复杂的结构分析任务。
上世纪六十年代,随着计算机技术的快速发展和在结构计算方面的应用,矩阵位移法程序化得到了广泛的发展应用,使的结构力学运算和分析可以用计算机来运行,非常的简单方便。
矩阵位移法在结构力学中用于解决杆系结构的位移和内力的重要方法,它以位移法为理论基础。
矩阵位移法的基本方法是:
以结点位移为基本未知量,将要分析的结构离散成一个组件,然后通过分析单元和组装单元,简单列出刚度方程,得到了杆端力和结点位移。
其实质是一种位移法的延伸,是将矩阵运算运用到位移法中,使之可以编制成数值计算的计算机程序。
借助计算机强大的运算能力,使难以完成大量的未知变量来解决,容易实现。
因为矩阵位移法编程的存在,让更多的结构力学问题变得简单,能够解决更复杂的问题。
这里介绍实现矩阵位移法计算机程序话的思路和方法
2.1基本信息的输入
使用矩阵位移法解决问题时,首先要进行结构的离散化,这一步是需要手动完成的。
首先用结点将结构进行划分,得到一系列的结点和单元,按顺序(一般用顺时针)对结点和单元进行编号(如图1,2)。
这样就可以用数字和编号描述结点坐标,单元的材料特性、所取截面的特征、支撑信息和所受荷载信息等等,为矩阵位移法分析、计算和程序应用提供信息。
需要向程序提供数据有以下信息:
2.1.1结构的几何形状及材料特性数据
这部分包括所选取的结点数量、坐标的位置、单元数、单位编号,单元的截面性质和单元的弹性模量。
由于铰结点不能确定,因此相对转动的位置不确定,需要以上在同一位置处编不只一个号,如图1中3、4号结点。
一般根据要输入结点和单元编号的顺序依次输入。
需要注意的是,在连续梁和框架分析不考虑轴向变形,经常对程序不做任何改动,而是在数据输入相应的结构单元设置为更大的值,可以扩大lOOO倍;没有弯曲变形的桁架,可以设置为O。
2.1.2结构的约束情况数据
结构的约束情况数据包括:
约束的数量、约束处结点和方向,桁架的每个结点,包括自由端,也可视为角度位移O,如图中的5、6结点,不需要修改源程序来提高程序的通用性。
2.1.3荷载情况数据
荷载分为结点荷载和非结点荷载。
在输入时,两者各有差别。
结点荷载需要输入荷载力作用的结点、方向和大小。
而非结点荷载则需输入荷载作用单元编号、荷载的类型、荷载的作用位置,大小和方向。
2.2刚度矩阵
2.2.1单元刚度矩阵
单元刚度矩阵分为局部坐标下的单元刚度矩阵和整体坐标下的单元刚度矩阵。
这里,我们把局部坐标下的单元刚度矩规格为统一的基本形式(假设杆的弯矩顺时针为正)
通常条件下,我们在手算时,对于不同的单元刚度矩阵可以简化成不同形式,比如不考虑轴向变形的钢架、有约束的钢架和桁架。
对于提高程序计算速度的意义来说,根据计算机擅长重复的计算,刚度矩阵化简的意义并不不大,而起在编写程序的时候也很麻烦。
所以在电话算中,一般采用统一的单元刚度矩阵。
把一个单元设置为两个结点,表示成i、j。
单元的局部坐标系中可将沿i、j的方向默认为局部坐标x方向,这样在单元信息输入时就自动定义了各单元的局部坐标。
至于整体坐标可取水平方向为x方向。
然后由局部矩阵向整体刚度矩阵调成。
根据生成的局部坐标的单元刚度矩阵后向整体坐标的刚度矩阵转换时,只要根据单元基本信息就可以计算出与水平方向的夹角,生成新的刚度矩阵T,做矩阵乘法,就得到了整体坐标下的单元刚度矩阵。
2.2.2总刚度矩阵
总刚度矩阵反映了整个结构的基础上引入边界条件的刚度而形成的整体刚度矩阵法。
根据形成的原因分为先处理法和后处理法。
结构刚度矩阵形成前引入位移条件称为的前处理方法;结构刚度矩阵形成之后引入位移情况称为后处理法。
当程序处理后,通常使用时,采取的后处理法,由单元刚度矩阵对号入座,形成总刚度矩阵。
2.2.3边界条件的处理
具体方法为单独开辟4个列宽的与结构矩阵存储有关结点的约束数据。
第一列存放结点的编号,第二、三、四列存放用1、0表示的控制的结点各方向的约束情况。
比如用l代表有约束,0表示无约束。
固端支座的约束信息就可以表示成1、1、1。
本设计在处理界面时更简化,直接在VB6.0中存储了各种约束条件的数据,分为三列:
约束号、结点号、约束类型(包括固定支座、铰支座、水平辊轴支座、竖直辊轴支座、水平滑移制作、竖直滑移支座)
2.2.4非结点荷载的等效
前边在我们已经提到的数据输入,结构的荷载因为作用位置的不同,分为结点荷载和非结点荷载。
结点荷载在输入时处理起来相对简单,可以直接形成了结点力矢量进行输入计算。
但非结点荷载变化需要处理才可以成为结点荷载的矩阵进行运算。
常用的方法为生成非结点荷载的单独的子程序,用生成子程序求解非结点荷载作用下的单元固端力。
这样处理后,不论杆件两端的约束情况如何,统一看作固定端,用位移法计算杆端支座反力,再将反力反向加在杆端,作为等效结点荷载。
。
非负载共同结点有四种形式,可以采用加载一个程序来解决编码来区分荷载的类型的类型。
在根据荷载作用的结点、位置、大小、方向作为参数来选择计算式,从而求出各单元下的非结点荷载。
这样就可以得到结点荷载和等效的非结点荷载叠加起来的向量为{P}的总负荷。
2.2.5建立求解刚度方程
各结点的位移是刚度方程中的未知量。
刚度方程是一个多元的线性方程组{P}=[K]{},用易于实现程序化的高斯消元法、矩阵分解法进行开发运算。
这样就把复杂,重复的运算用计算机来解决,实现矩阵位移法的程序化。
2.2.6计算杆端力
根据得到的结点位移,利用下列公式就可以求出单元坐标系中单元杆端位移产生的单元杆端力:
注意的是最终结果的确定是根据由单元的非结点荷载产生的单元固端力叠加确定的各单元的杆端力。
公式拓展为:
+
这一步利用矩阵乘法进行运算。
矩阵乘法程序化也很容易实现,这样就把复杂,重复的运算用计算机来解决,实现矩阵位移法的程序化。
例题:
求解图l所示刚架内力的数据输入和结果输出。
输入数据:
3,5,3,l,l“单元数、结点数、特殊点数、结点荷载数目、非结点荷载数目”0.0,0.0,4.0,0.0,0.0,4.0,0.0,4.0,4.0,4.0“各结点坐标(按结点编号顺序输入)”l,3,0.3l2E+07,0.4l6E+05,4,5,0.3l2E+07,0.4l6E+05,2,5,0.3l2E+07,0.4l6E+05“各单元定义,包括单元两端结点编号、的值(按单元编号顺序输入)”l,l,l,l,2,l,l,l,4,3,3,0“约束信息(l代表有约束,0代表无约束)”4.l,30.0“结点荷载信息”l.0,l.0,4.0,-20.0“非结点荷载信息(正负号号代表方向)”结果输出:
NE=3NJ=5NS=3NPJ=lNPF=l
NODALPOINTCOORDINATES
NODEXY
l.0000.0000
24.0000.0000
3.00004.0000
4.00004.0000
54.00004.0000
ELEMENTDATA
NUMBERNODE-INODE-JEAEI
1l3.3l2000E+07.4l6000E+05
245.3l2000E+07.4l6000E+05
325.3l2000E+07.4l6000E+05
SPECISLNODALPOINTDATA
NUMBERXXYYZZ
1lll
2lll
4330
NODALPOINTLOADDATA
NODEPX-PY-PZ
4.l30.0000
NO-NODALPOINTLOADDATA
NUMBERCLASSRANGELOAD
l.l.4.000-20.000
DISPLACEMENTSOFNODES
ELEMENT
NUMBERVSATA
l.000000E+00.000000E+00.000000E+00
2.000000E+00.000000E+00.000000E+00
3.94l2l2E-02.l99973E-04.288852E-02
4.94l2l2E-02.l99973E-04-.989866E-03
5.935873E-02-.l99973E-04200973E-02
ELEMENTTHRUSE/SHEAR/MOMENT
ELEMENT
NUMBERTHRUSESHEARMOMENT
1Nl=-l5.5979Ql=68.3536Ml=-ll3.4l46
N2=l5.5979Q2=ll.6464M2=.0000
2Nl=4l.6464Ql=-l5.5979Ml=.0000
N2=-4l.6464Q2=l5.5979M2=62.39l5
3N1=15.5979Q1=41.6464M1=-104.1939
N2=-15.5979Q2=-41.6464M2=-62.3915
2.3矩阵位移法Fortran程序
矩阵位移法中的整体刚度方程为
{F}=
(1)
式中为nn方阵,是杆系的整体刚度矩阵。
n=,s为结点位移的自由度数;m为结点数。
拉伸(压缩)、扭转、s=1;弯曲s=2;弯扭组合s=3;平而析架s=2;平而刚架s=3等等。
{F}为结点载荷列阵;为结点位移列阵。
单元的基本变形有三种:
拉(压)、扭转、弯曲。
一般的变形形式都可以认为是这三种基本变形的组合。
整体刚度矩阵可由单元刚度矩阵叠加而成。
因为拉(压)与扭转的单元刚度矩阵形式相同,这样就只有两种单元刚度矩阵。
整体刚度矩阵形成后,需要把单元刚度矩阵的各元素放到相应位置,在操作时是十分繁琐的。
单元较多时更是让人难以忍受,很容易出错。
所以要进行以下处理。
对于析架、刚架等,各单元轴线方向各异。
在整体坐标中的单元刚度矩阵不能直接写出。
但在以各单元轴线为x轴的局部坐标中的单元刚度矩阵可由基本变形的单元刚度矩阵直接写出,然后得到整体坐标系下的单元刚度矩阵:
(2)
注:
式中为整体坐标中的单元刚度矩阵;
为坐标变换矩阵;
为坐标变换矩阵的转置矩阵;
为局部坐标中单元刚度矩阵。
根据叠加得到整体刚度矩阵.整体刚度方程式
(1)也可写成:
=
(1)
对于实际结构都可以知道有一定数量的结点位移。
假定有p个位移已知,则要在式
(1)中将结点位移的项移到方程的右边并将对应的行由方程中去掉。
这时方程的阶数变为r=n-p.即得到方程
(3)
通过这方程解出未知位移,再加上已知位移就得到了所有结点位移。
再将其代入原方程中可解出未知结点力,再加上已知结点力即可得到全部结点力.单元结点力=(4)
式中为单元结点位移,由中相应元素组成。
对于桁架、刚架等应给出局部坐标中的结点力和结点位移
(5)
(6)
由局部坐标中的,-u点力和结点位移就可以进行单元的强度和刚度计算。
将上述过程写成了图1所示的程序,可以解决:
拉伸(压缩)、扭转、弯曲、拉扭组合、拉弯组合、弯扭组合、拉扭弯组合、平面桁架、平面刚架等9个方面的问题。
把已知条件按设定的格式输入就能运算出问题的解。
为了便于数据的输入和修改,已知条件要以文件的形式给出。
3基于VB6.0的矩阵位移法Fortran的可视化开发
3.1基于VB6.0的矩阵位移法Fortran的混合编程及可视化开发
3.1.1基于VB6.0的Fortran混合编程的两种方法及对比
实现VB6.0与Fortran的混合编程主要方法有两种:
第一种,VB直