版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、泰 山 学 院 本科毕业论文(设计)基于vb的矩阵位移法fortran程序可视化开发所 在 学 院 机械与工程学院 专 业 名 称 土木工程 申请学士学位所属学科 工科 年 级 2010级 学生姓名、学号 韩奇孝 2010170214 指导教师姓名、职称 李琦 讲师 完 成 日 期 2014年 月 日 摘要综合visual basic语言的良好界面开发和矩阵位移法的fortran的强大语言运算功能,基于visual basic 6.0对矩阵位移法fortran语言进行混合编程开发,可使矩阵位移法fortran语言运算的前后处理过程可视化。用vb设计界面,将矩阵位移法fortran程序编译成可执
2、行程序,运算开始前,打开程序输入所要计算的杆系结构的原始参数,vb和fortran间的所有数据都通过磁盘文件进行交换,用vb程序中的shell函数异步方式启动可执行程序经行运算,计算结果显示在vb界面上。整个运行过程中,fortran程序都在后台进行运行,用磁盘文件进行交换海量数据也很经济,效率非常的高。基于vb的矩阵位移法fortran的可视化开发出的程序,继承了fortran的强大运算功能和vb的良好界面,也避免了fortran程序在dos环境下运行时输入数据容易出错和计算结果输出繁琐的缺点。方便非专业的编程人员灵活运用计算机进行杆件结构的矩阵位移法运算。关键词:visual basic语
3、言;矩阵位移法;fortran语言;可视化abstract integrated visual basic language interface development and goodmatrix displacement method of fortran language powerful computing capabilities, based on visual basic 6.0 for the matrix displacement method mixed fortran programming language development, before and after t
4、he treatment process can fortran language computing matrix displacement method of visualization . design interface with vb , fortran matrix displacement method will be compiled into an executable program , before the operation began , the original input parameter to open the program to calculate the
5、 truss structure , all data between vb and fortran are exchanged via a disk file , vb program shell function asynchronously executable program started by the line operator , the result is displayed on the vb interface. throughout the operation , fortran programs running in the background , huge amou
6、nts of data to be exchanged with a disk file is also very economical , efficiency is very high . vb-based matrix displacement method fortran visualization developed program , inherited a good interface fortran powerful computing capabilities and vb , but also avoids the disadvantages of the input da
7、ta fortran program running under dos environment prone to error and calculate the resulting output tedious . non-professional programmers to facilitate flexible use of computer matrix displacement method calculation rod structure. keywords : visual basic language ; matrix displacement method ; fortr
8、an language ; visualization目录1 绪论11.1 研究的目的和意义11.2 基于vb的矩阵位移法fortran的可视化开发研究的方法概述21.3 本文的主要工作22 简介矩阵位移法程序化的实现42.1 基本信息的输入42.1.1 结构的几何形状及材料特性数据52.1.2 结构的约束情况数据52.1.3 荷载情况数据62.2 刚度矩阵62.2.1 单元刚度矩阵62.2.2 总刚度矩阵72.2.3 边界条件的处理72.2.4 非结点荷载的等效82.2.5 建立求解刚度方程82.2.6 计算杆端力82.3 矩阵位移法fortran程序113 基于vb 6.0的矩阵位移法fo
9、rtran的可视化开发143.1 基于vb 6.0 的矩阵位移法fortran的混合编程及可视化开发143.1.1 基于vb 6.0的fortran混合编程的两种方法及对比143.1.2 基于vb 6.0的矩阵位移法fortran的可视化开发183.2 应用实例20平面刚架计算程序举例和简要说明201 绪论1.1 研究的目的和意义 矩阵位移法在结构力学中用于解决杆系结构的位移和内力的重要方法,它以 位移法为理论基础。矩阵位移法的基本方法是:以结点位移为基本未知量,将要分 析的结构离散成一个组件,然后通过分析单元和组装单元,简单列出刚度方程,得 到了杆端力和结点位移。其实质是一种位移法的延伸,是
10、将矩阵运算运用到位移 法中,使之可以编制成数值计算的计算机程序。借助计算机强大的运算能力,使难 以完成大量的未知变量来解决,容易实现。因为矩阵位移法编程的存在,让更多的 结构力学问题变得简单,能够解决更复杂的问题。矩阵位移法通常使用fortran语言编写的计算机程序。fortran语言起源于 1950年代,是最早适用于科学计算的计算机语言。fortran语言的高度标准化、 易于程序交换和交易优化,而且具有非常精确的数据结构。虽然经过多年的发展, 应用fortran语言有了很大发展。并与c+语言相比,fortran编程具有c+所有的重要功能。然而,fortran语言有其本身无法克服的缺点。图形处
11、理能力弱,人机界面交换僵硬,而且应该运行在dos环境下,黑色的屏幕和可怜的兼容性都无法满足需求。相对于编程人员不熟悉,使用起来更费力又容易出错。矩阵位移法 只在fortran语言计算结果,及其复杂的计算过程和结果图形表达不好,应用和推广方面非常不利。visual basic是微软开发协助开发环境的事件驱动编程语言, 它来自basic编程语言,是现今全球使用人数最多的编程语言。vb的图形用户界面(gui)和快速应用程序开发(rad)系统,可以轻松创建activex控件,也很容易地使用dao、rdo、ado连接数据库。程序员可以很容易地使用vb组件来快速创建应用程序。 经过多年的发展,vb 6.0
12、已经很成熟,是一个基于windows平台的开发工具,以其灵活简单,易于使用和功能强大,界面友好等优点,获得了非计算机专业的程序员的喜爱。然而,visual basic 6.0也有自己的缺点,如计算能力差,执行速度慢等等。通过基于visual basic 6.0对矩阵位移法 fortran语言进行开发,实现在windows环境下运行,同时也实现了既可以延续矩阵位移法fortran语言高效的计算能力,又矩阵位移法程序界面更友好。非专业程序员灵活的借助计算机运行矩形位移法,在计算机的帮助下也可以简单和直接的获取计算结果,提高项目运作的工作效率。1.2 基于vb的矩阵位移法fortran的可视化开发研
13、究的方法概述基于vb 6.0的矩形位移法fortran的界面化开发设计采用矩阵位移法为基本原理,通过visual basic 6.0和fortran混合编程的方法,实现矩阵位移法程序的可视化更优化。矩阵位移法的fortran编程经过多年来的不断开发已经非常成熟,是应用非常广泛的矩阵位移法计算程序。本设计首先把矩阵位移法fortran编程语言转化成vb 6.0可以直接调用的可执行文件,实现在vb 6.0中执行矩阵位移法fortran的运算,再基于vb 6.0进行程序可视化的优化。 在第三章中详细说明所用到的vb 6.0直接调用fortran编程语言的可执行文件的方法、vb 6.0和fortran
14、的接口、vb调用用fortran编译的可执行文件(矩阵位移法fortran可执行文件)、shell函数异步执行和黑屏的解决方案。然后对运算结果进行可视化处理。在windows平台上,使用vb 6.0软件和fortan混合编程计算的矩阵位移法,现成的矩形位移法的前后期的运算输入、输出简单明了,结果可以由图像直观的显示出来。1.3 本文的主要工作本文介绍用visual basic 6.0为平台,将矩阵位移法fortran编程语言转换为visual basic 6.0的可执行,生成visual basic 6.0的一个子程序。介绍顺序为矩阵位移法的原理和矩阵位移法编程、vb 6.0和fortran混
15、合编程方法及其对比、基于vb的矩阵位移法fortran的可视化开发。(1)矩阵位移法程序化的实现部分讨论了矩阵位移法计算机程序实现过程中注意的几个问题:基本信息的输入,刚度矩阵,边界条件处理,非结点荷载的等效,建立求解刚度方程,计算杆端力。提供一些关于如何利用程序解决刚架、桁架、连续梁的位移和内力等问题的帮助(2)对基于visual basic 6.0的矩阵位移法fortran程序进行兼容,制作出可应用的编程程序,并进行可视化前后处理界面。介绍混合编程的主要方法,对混合编程中出现的每一个问题所需要的解决方案进行简要的描述,对在visual basic 6.0中对于fortran程序的调用进行简
16、要说明。(3)生成基于vb 6.0的矩阵位移法fortran软件,达到程序操作简单,数据以文件形式输入,为检查和修改方便,每项数据都可以清晰的显示出来。程序在运行时,自动由输入的数据生成图形,通过图中的各种信息可以很容易检验出信息是否出错。计算结束后,计算结果自动生成图像,达到预测结构承受荷载后的情况。所生成的程序为exe格式,程序小,对计算机没有特殊要求。(4)应用基于visual basic 6.0的矩阵位移法的可视化程序进行例题计算,验证程序的正确性和易用性。2 简介矩阵位移法程序化的实现随着工程技术和材料等的发展,工程结构向复杂化、大型化的发展,传统的结构力学运算和分析方法很难进行大型
17、复杂的结构分析任务。上世纪六十年代,随着计算机技术的快速发展和在结构计算方面的应用,矩阵位移法程序化得到了广泛的发展应用,使的结构力学运算和分析可以用计算机来运行,非常的简单方便。矩阵位移法在结构力学中用于解决杆系结构的位移和内力的重要方法,它以位移法为理论基础。矩阵位移法的基本方法是:以结点位移为基本未知量,将要分析的结构离散成一个组件,然后通过分析单元和组装单元,简单列出刚度方程,得到了杆端力和结点位移。其实质是一种位移法的延伸,是将矩阵运算运用到位移法中,使之可以编制成数值计算的计算机程序。借助计算机强大的运算能力,使难以完成大量的未知变量来解决,容易实现。因为矩阵位移法编程的存在,让更
18、多的结构力学问题变得简单,能够解决更复杂的问题。这里介绍实现矩阵位移法计算机程序话的思路和方法2.1 基本信息的输入使用矩阵位移法解决问题时,首先要进行结构的离散化,这一步是需要手动完成的。首先用结点将结构进行划分,得到一系列的结点和单元,按顺序(一般用顺时针)对结点和单元进行编号(如图1,2)。这样就可以用数字和编号描述结点坐标,单元的材料特性、所取截面的特征、支撑信息和所受荷载信息等等,为矩阵位移法分析、计算和程序应用提供信息。需要向程序提供数据有以下信息:2.1.1 结构的几何形状及材料特性数据这部分包括所选取的结点数量、坐标的位置、单元数、单位编号,单元的截面性质和单元的弹性模量。由于
19、铰结点不能确定,因此相对转动的位置不确定,需要以上在同一位置处编不只一个号,如图1中3、4号结点。一般根据要输入结点和单元编号的顺序依次输入。需要注意的是,在连续梁和框架分析不考虑轴向变形,经常对程序不做任何改动,而是在数据输入相应的结构单元设置为更大的值,可以扩大looo倍;没有弯曲变形的桁架,可以设置为o。2.1.2 结构的约束情况数据结构的约束情况数据包括:约束的数量、约束处结点和方向,桁架的每个结点,包括自由端,也可视为角度位移o,如图中的5、6结点,不需要修改源程序来提高程序的通用性。2.1.3 荷载情况数据荷载分为结点荷载和非结点荷载。在输入时,两者各有差别。结点荷载需要输入荷载力
20、作用的结点、方向和大小。而非结点荷载则需输入荷载作用单元编号、荷载的类型、荷载的作用位置,大小和方向。2.2 刚度矩阵2.2.1 单元刚度矩阵单元刚度矩阵分为局部坐标下的单元刚度矩阵和整体坐标下的单元刚度矩阵。这里,我们把局部坐标下的单元刚度矩规格为统一的基本形式(假设杆的弯矩顺时针为正)通常条件下,我们在手算时,对于不同的单元刚度矩阵可以简化成不同形式,比如不考虑轴向变形的钢架、有约束的钢架和桁架。对于提高程序计算速度的意义来说,根据计算机擅长重复的计算,刚度矩阵化简的意义并不不大,而起在编写程序的时候也很麻烦。所以在电话算中,一般采用统一的单元刚度矩阵。把一个单元设置为两个结点,表示成i、
21、j。单元的局部坐标系中可将沿i、j 的方向默认为局部坐标x 方向,这样在单元信息输入时就自动定义了各单元的局部坐标。至于整体坐标可取水平方向为x 方向。然后由局部矩阵向整体刚度矩阵调成。根据生成的局部坐标的单元刚度矩阵后向整体坐标的刚度矩阵转换时,只要根据单元基本信息就可以计算出与水平方向的夹角,生成新的刚度矩阵t,做矩阵乘法,就得到了整体坐标下的单元刚度矩阵。2.2.2 总刚度矩阵 总刚度矩阵反映了整个结构的基础上引入边界条件的刚度而形成的整体刚度矩阵法。根据形成的原因分为先处理法和后处理法。结构刚度矩阵形成前引入位移条件称为的前处理方法;结构刚度矩阵形成之后引入位移情况称为后处理法。当程序
22、处理后,通常使用时,采取的后处理法,由单元刚度矩阵对号入座,形成总刚度矩阵。2.2.3 边界条件的处理具体方法为单独开辟4个列宽的与结构矩阵存储有关结点的约束数据。第一列存放结点的编号,第二、三、四列存放用1、0表示的控制的结点各方向的约束情况。比如用l 代表有约束,0表示无约束。固端支座的约束信息就可以表示成1、1、1。本设计在处理界面时更简化,直接在vb 6.0中存储了各种约束条件的数据,分为三列:约束号、结点号、约束类型(包括固定支座、铰支座、水平辊轴支座、竖直辊轴支座、水平滑移制作、竖直滑移支座)2.2.4 非结点荷载的等效前边在我们已经提到的数据输入,结构的荷载因为作用位置的不同,分
23、为结点荷载和非结点荷载。结点荷载在输入时处理起来相对简单,可以直接形成了结点力矢量进行输入计算。但非结点荷载变化需要处理才可以成为结点荷载的矩阵进行运算。常用的方法为生成非结点荷载的单独的子程序,用生成子程序求解非结点荷载作用下的单元固端力。这样处理后,不论杆件两端的约束情况如何,统一看作固定端,用位移法计算杆端支座反力,再将反力反向加在杆端,作为等效结点荷载。非负载共同结点有四种形式,可以采用加载一个程序来解决编码来区分荷载的类型的类型。在根据荷载作用的结点、位置、大小、方向作为参数来选择计算式,从而求出各单元下的非结点荷载。这样就可以得到结点荷载和等效的非结点荷载叠加起来的向量为p的总负荷
24、。2.2.5 建立求解刚度方程各结点的位移是刚度方程中的未知量。刚度方程是一个多元的线性方程组p = k ,用易于实现程序化的高斯消元法、矩阵分解法进行开发运算。这样就把复杂,重复的运算用计算机来解决,实现矩阵位移法的程序化。2.2.6 计算杆端力根据得到的结点位移,利用下列公式就可以求出单元坐标系中单元杆端位移产生的单元杆端力:注意的是最终结果的确定是根据由单元的非结点荷载产生的单元固端力叠加确定的各单元的杆端力。公式拓展为:+这一步利用矩阵乘法进行运算。矩阵乘法程序化也很容易实现,这样就把复杂,重复的运算用计算机来解决,实现矩阵位移法的程序化。 例题:求解图l 所示刚架内力的数据输入和结果
25、输出。 输入数据: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, -
26、20.0 “非结点荷载信息(正负号号代表方向)”结果输出:ne = 3 nj = 5 ns = 3 npj = l npf = l nodal point coordinates node x y l .0000 .0000 2 4.0000 .0000 3 .0000 4.0000 4 .0000 4.0000 5 4.0000 4.0000element datanumber node - i node - j ea ei 1 l 3 .3l2000e + 07 .4l6000e + 05 2 4 5 .3l2000e + 07 .4l6000e + 05 3 2 5 .3l2000e +
27、 07 .4l6000e + 05specisl nodal point data number xx yy zz 1 l l l 2 l l l 4 3 3 0nodal point load data node px - py - pz 4.l 30.0000no - nodal point load data number class range load l. l. 4.000 - 20.000displacements ofnodeselement number v sata l .000000e + 00 .000000e + 00 .000000e + 00 2 .000000e
28、 + 00 .000000e + 00 .000000e + 00 3 .94l2l2e - 02 .l99973e - 04 .288852e - 02 4 .94l2l2e - 02 .l99973e - 04 - .989866e - 03 5 .935873e - 02 - .l99973e - 04 200973e - 02element thruse/ shear/moment element number thruse shear moment 1 nl = - l5.5979 ql = 68.3536 ml = - ll3.4l46 n2 = l5.5979 q2 = ll.6
29、464 m2 = .0000 2 nl = 4l.6464 ql = - l5.5979 ml = .0000 n2 = - 4l.6464 q2 = l5.5979 m2 = 62.39l5 3 n1 = 15.5979 q1 = 41.6464 m1 = - 104.1939 n2 = - 15.5979 q2 = - 41.6464 m2 = - 62.39152.3 矩阵位移法fortran程序矩阵位移法中的整体刚度方程为f= (1)式中为nn方阵,是杆系的整体刚度矩阵。n= ,s为结点位移的自由度数;m为结点数。拉伸(压缩)、扭转、s=1;弯曲s=2;弯扭组合s=3;平而析架s=2;
30、平而刚架s=3等等。f为结点载荷列阵;为结点位移列阵。 单元的基本变形有三种:拉(压)、扭转、弯曲。一般的变形形式都可以认为是这三种基本变形的组合。整体刚度矩阵可由单元刚度矩阵叠加而成。因为拉(压)与扭转的单元刚度矩阵形式相同,这样就只有两种单元刚度矩阵。整体刚度矩阵形成后,需要把单元刚度矩阵的各元素放到相应位置,在操作时是十分繁琐的。单元较多时更是让人难以忍受,很容易出错。所以要进行以下处理。对于析架、刚架等,各单元轴线方向各异。在整体坐标中的单元刚度矩阵不能直接写出。但在以各单元轴线为x轴的局部坐标中的单元刚度矩阵可由基本变形的单元刚度矩阵直接写出,然后得到整体坐标系下的单元刚度矩阵: (
31、2)注:式中为整体坐标中的单元刚度矩阵;为坐标变换矩阵;为坐标变换矩阵的转置矩阵;为局部坐标中单元刚度矩阵。根据叠加得到整体刚度矩阵.整体刚度方程式(1)也可写成: = (1) 对于实际结构都可以知道有一定数量的结点位移。假定有p个位移已知,则要在式(1)中将结点位移的项移到方程的右边并将对应的行由方程中去掉。这时方程的阶数变为r=n-p.即得到方程 (3) 通过这方程解出未知位移,再加上已知位移就得到了所有结点位移。再将其代入原方程中可解出未知结点力,再加上已知结点力即可得到全部结点力.单元结点力= (4)式中为单元结点位移,由中相应元素组成。 对于桁架、刚架等应给出局部坐标中的结点力和结点
32、位移 (5) (6) 由局部坐标中的,-u点力和结点位移就可以进行单元的强度和刚度计算。将上述过程写成了图1所示的程序,可以解决:拉伸(压缩)、扭转、弯曲、拉扭组合、拉弯组合、弯扭组合、拉扭弯组合、平面桁架、平面刚架等9个方面的问题。把已知条件按设定的格式输入就能运算出问题的解。为了便于数据的输入和修改,已知条件要以文件的形式给出。3 基于vb 6.0的矩阵位移法fortran的可视化开发3.1 基于vb 6.0 的矩阵位移法fortran的混合编程及可视化开发3.1.1 基于vb 6.0的fortran混合编程的两种方法及对比 实现 vb 6.0 与 fortran 的混合编程主要方法有两种
33、:第一种,vb 直接调用可执行文件( 利用shell函数直接调用fortran编译出来的可执行文件) ;第二种,利 用 动态 链 接 库 dll( dynamic link library) 与fortran混合编程(1)采用vb 6.0直接调用 fortran 可执行文件的方法 利用 vb 6.0编写程序的界面部分, 后将fortran 的应用程序编译成可执行的应用程序。计算时, 由vb 6.0应用程序启动由fortran编译成的可执行文件。在计算结束后, 将计算数据以数字或者图形的形式显示在 vb 6.0 的界面上。程序整个运行过程,fortran 应用程序编译成的可执行文件一直在后台运行
34、,建立连接接口,通过磁盘文件对 vb 6.0和 fortran 之间的所有数据进行交换。具体步骤是先在fortran power station 中编写 fortran 的源程序代码, 并编译成可执行文件。然后在 vb 6.0需要调用时, 利用shell 函数调用就可以了。shell 函数语法如下:shell(pathname, window style )pathname 是可执行文件的程序名, 含有所必需的目录、文件夹、驱动器。windowstyle 表示在程序运行时,fortran窗口的样式。例如, 在vb中调用fortran编译成的可执行文件生成的 work 目录下的计算程序test.
35、exe, 语法如下:call shell ( d: worktest. exe, vbnormalfocus)此方法适合于交互操作不多的情况。shell 函数是以异步方式执行的, 这种执行方式使 vb 6.0程序不能等待 fortran 程序计算结束就继续执行后续的程序, 使最终运算过程错乱,结果非常容易出现错误。(2)调用 fortran 动态链接库 此方法是将fortran的源代码分成若干个子程序或函数, 并编译生成.dll 文件。用vb 6.0编写主程序。在使用时调用编译好的. dll 文件, 从而实现 vb 6.0和fortran的混合编程。创建fortran的动态链接库的源程序必须是
36、子程序或函数, 不能有主程序。还有注意的是,必须明确外部例程的实现机制、调用约定(调用约定就是明确程序如何调用过程, 传递过程以及命名规范)、例程名和参数列表。做到这些,vb 6.0在导入动态链接时才能协调好。调用约定就是明确程序如何调用过程, 传递过程以及命名规范。fortran power station 中三个调用约定: c、st dcall 及缺省约定。而vb6.0只有两个调用约定: 缺省约定、 dcall调用约定。通常, 两种语言统一采用缺省调用约定。具体的声明语句是:! ms att ribut es dllexport : : name变量传递的缺省方式是“传址”。若变量采用数值
37、传递, 需要在参数前添加byval 属性; 而且同时要注意 fortran 和 vb 6.0之间数据类型的对应关系, 具体见表 1。由于 fortran 语言的数组变量是从 1开始 , 而vb 6.0数组变量隐含从 0 开始的。 在数组传递时, 如果使用隐含传递,需要注意数组元素的传递次序。如果事先声明数组的上、下限, 则可以免去许多不必要的麻烦。对于多维数组, vb和fortran都是按列传递的。按照这些规则, 在 vb 对 fortran 动态链接库源文件的调用过程中, 多维数组一般定义为维数和大小都相同的。这样就可使实现传递时, 只对齐数组第一个元素即可。 vb 6.0引用动态链接库前,
38、 必须先用 declare语句在模块级声明外部过程。具体的语法是: public declare sub subname lib “libname”alias “aliasname”( arglist) declare语句的各部分说明如下: public: 用于声明在所有模块中对所有其他过程均合法的过程;sub subname: 指明该过程无返回值;lib“libname”: 指明dll 文件及其路径;alias “aliasname”: 指明被调用过程在 dll中的别名, 这一属性是必须的。aliasname语法及组成部分如下:-subnamen其中, n 为栈的大小, 它是 4 的倍数。a
39、rglist: 当被调用时, 代表被传送到该过程的参数的变量清单。arglist 参数有下列语法和组成部分:byref?byval?argument as typebyref: 指明参数按“传址”方式传递;byval: 指明参数按“传值”方式传递演示程序。fortran 子程序代码:subrout ine arrayt est(n,arr)! at t ributes dllexport: : arr-aytest int eger n,i,j real( 4) arr( 3, 3) do i= 1, 3 do j= 1, 3 arr(i,j) = 10. 1* i+ j end do end
40、 do n= n+ 10 end subrout ine编译生成 exam. dll 文件, 将文件拷到 c:windowssyst em 子 目录下。由于 子程 序arraytest 只有两个 参数, 故它的别 名为arrayt est 8。exam. vbp 是一个vb 程序, 它包含一个窗体 form1. frm; 一个命令按钮 command1 和两个文本框 text1、text2。两个文本框的作用是为了显示返回的结果, 以检验程序是否正确执行。form1. frm 代码如下: private declare sub arrayt est libexam. dll alias arra
41、yt est 8 (xaslong,yas single) private sub command1-click( )dim a as long dim ab( 1t o 3, 1t o 3) as single a= 10 call arrayt est ( a, ab( 1, 1) ) text1.t ext= str(a) text2. t ext= str( ab( 3, 3) ) end sub 运行后 t ext1. text 为 20, t ext2. text 为33. 3, 结果正确。以上程序均在 visual basic 6. 0 和 fortran power stati
42、on 4. 0 环境下运行。(3)两种方法的比较使用动态链接库和vb 6.0直接调用 fortran 编译生成的可执行文件( . exe 文件)这两种方法都可以实现 vb 6.0和fortran的混合编程。但是它们还是有一定区别的, 具体比较如表 2 所示。 介绍了两种方法来实现的fortran用户友好的,在一般情况下,每个国家都有它的优点和缺点:vb直接调用fortran编译的可执行文件是简单的,但这种方法很容易犯错误,不利于大型程序的开发;和强大的使用动态链接库dll,不仅功能齐全,占据一个小磁盘和内存空间,并且比第一种方法更实用。 vb中有操作简便的优点,非常适合非计算机专业的程序员使用
43、。3.1.2 基于vb 6.0的矩阵位移法fortran的可视化开发混合两种语言fortran和vb开发科学计算软件,一般有两种方法:一是用vb界面设计和控制程序, fortran程序被编译为动态链接库,由vb程序调用它。通过实现,对于海量数据的交换是不经济的,而且难以处理传入的数据交换的参数。二是设计用vb 6.0接口, fortran程序会被编译成一个可执行程序,在适当的时候由vb 6.0程序启动它,计算后,结果显示在vb 6.0界面上。整个计算和处理过程,fortran程序一直在后台运行。vb 6.0和fortran间的所有数据都通过磁盘文进行交换,交换海量数据非常经济,效率也非常高。由
44、于有些结构比较复杂,杆件个数比较多,拥有大量的待处理的数据,因此该系统采用了第二种方法。即利用vb 6.0的shell函数来调用fortran应用程序。fortran优化程序同步运行的实现:在vb 6.0界面上设置好界面和按钮,对每个按钮设置好对应的数据库位置,植入可执行文件,用shell函数处理可执行文件运行。输出的数据进行处理,使之形成自动形成表格。运用表格的数据进行再设置,使结果输出数据对应到图像成型中,形成计算后的结果。所需要解决的问题和办法如下:(1) “shell函数是以异步方式执行问题的解决。shell函数是异步执行的,不等fortran程序结束就继续执行后续vb 6.0程序,使
45、vb 6.0得不到最终的数据结果而出错。w in32api提供的进程操作函数可解决上述外壳程序的异步运行问题。实现等待shell程序的执行,从而解决shell函数异步执行的问题。w in32api可提供的api函数为:openprocess、waitforsingleobject、c1osehandle、getexitcodeprocess等。声明的方法为:打开vb界面中【外接程序】/ap i程序,在文件中添加“c: programfilesmicrosoft visual studiocommontools winapi win21api. txt 。声明openprocess和c1oseh
46、 andle或openprocess和getexitcodeprocess(2) 黑屏问题的解决。由于fortran程序在dos环境下运行,在windows平台运行容易进入dos界面而造成黑屏。用shell(pathname,【windows】)函数启动fortran外壳程序,外壳程序的窗口风格由可选参数windowstyle的取值决定,取值为vbhide就能隐藏外壳程序的运行窗口而解决黑屏问题。(3) 优化程序的自动生成和执行。fortran源文件的生成采用文件操作结合print过程和文本框来实现。为减少程序的处理量,将主程序和优化方法子程序事先编译成目标代码,程序仅生成和优化模型有关的目标函数、约束条件子程序文件和优化参数数据文件。由shell函数启动相关程序生成优化计算程序并执行优化计算,避开了用户的编程和调试过程。 作为结构力学算法可视化系统,最关键的是用户只需要输入架构的最少量信息,由系统自动完成的工作的信息,以直观的方式显示给用户,但用户同时保持该系统的控制不是盲目地接受系统的输出。该系统通过上述方法,不仅解决了数据可视化的现实问题,也实现了fortran和vb之间无缝连接,为系统的后处理创造了条件。fortran和vb数据交换如图4所示的:3.2 应用实例 平面刚架计算程序举例和简要说明 程序名:fem2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《自然科学概论》2022-2023学年第一学期期末试卷
- 淮阴师范学院《中学德育与级管理》2021-2022学年第一学期期末试卷
- 淮阴工学院《项目投资与融资1》2022-2023学年第一学期期末试卷
- DB4117-T+407-2024晚播绿豆生产技术规程
- DB2106-T 020-2024丹东市建成区园林树木养护技术规程
- 2021-2022学年-有答案-江苏省连云港市某校八年级(上)期中地理复习试卷
- 煤炭加工煤炭锅炉安全监控技术考核试卷
- 淀粉行业的市场开拓与拓展机遇研究考核试卷
- 农药制造原材料的合理配置与管理考核试卷
- 搪瓷制品的商业推广与市场营销考核试卷
- 永久避难硐室避险安全知识课件
- 女性的情绪及压力管理
- 腰椎骨折查房护理课件
- 养生祛病一碗汤
- 中国手机租赁行业市场发展前景研究报告-智研咨询发布
- 预防接种工作规范(2023年版)解读课件
- 老年慢性支气管炎的健康宣教
- 大国工匠技能报国课件
- 制冷与空调设备运行操作作业
- 《劳动教育通论》劳动的环境:社会与市场中的劳动
- 防火墙端口日志分析与审计
评论
0/150
提交评论