分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
在VFP中如何编写主程序?在编写主程序时应注意什么事项?
解析:
设置运行环境
Set Talk Off &&关闭命令显示
Set Escape Off &&禁止运行的程序在按 Esc 键后被中断
Set Exclusive Off &&数据库表以共享方式打开
Set Deleted On &&过滤掉已带删除标记的记录
Set Safety Off &&指定在改写已有的文件时不显示对话框
Set Date Ansi &&设定日期的年份为 4 位数
Set Century On &&指定日期表达式的显示格式为YYMMDD
SET MARK TO [-] &&指定日期的分隔符为"-"
SET SECONDS ON &&日期时间表达式的显示秒钟部分
SET HOURS TO 12 &&指定日期时间表达式的显示为12小时格式
Set Optimize ON &&启用或废止 Rushmore 优化。
Set ENGINEBEHAVIOR 70
Set DECIMALS TO 8 &&指定小数点位数,默认为2位
Clear &&清除主窗口
Clear All &&清除变量
开始进行程序的事务处理 *** 作
Public pcSys
pcSys=Sys(5)+Sys(2003)
Set Default To pcSys
Set Path To Class,Form,Poto,Menu,Prg,Report
DO form frmbegin &&运行启动画面表单frmBegin,名称自己改,
READ events
DO form frmlogin &&运行主界面表单frmlogin,名称自己改,
READ events
保存,名称自己安,然后设置为主文件
你提出的问题我之前刚好做过,使用有限元方法来进行桁架结构分析。
Matlab编程实现平面杆单元分析
首先,明确Matlab程序要实现的5个重要模块分别为:单元刚度矩阵的求解、单元组装、节点位移的求解、单元应力的求解、节点力的求解。下面给出这5个模块的实现。
1. 单元刚度矩阵求解
定义函数Bar2D2Node_Stiffness,该函数计算单元的刚度矩阵,输入d性模量E,横截面积A,两个节点坐标输出单元刚度矩阵k(4X4)。具体代码如下:
function k=Bar2D2Node_Stiffness(E,A,x1,y1,x2,y2)
L=sqrt((x2-x1)(x2-x1)+(y2-y1)(y2-y1));
x=acos((x2-x1)/L);
C=cos(x);
S=sin(x);
k=EA/L[CC CS -CC -CS; CS SS -CS -SS;
-CC -CS CC CS; -CS -SS CS SS];
2. 单元组装
定义函数Bar2D2Node_Assembly,该函数进行单元刚度矩阵的组装,输入单元刚度矩阵k,单元的节点编号i、j。输出整体刚度矩阵KK,具体代码如下:
function z = Bar2D2Node_Assembly(KK,k,i,j)
DOF(1)=2i-1;
DOF(2)=2i;
DOF(3)=2j-1;
DOF(4)=2j;
for n1=1:4
for n2=1:4
KK(DOF(n1),DOF(n2))= KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
z=KK;
3. 节点位移的求解
定义函数Bar2D2Node_Disp(KK,num,p),该函数输入KK为总体刚度矩阵;num为活动自由度编号数组;p为活动自由度方向上的节点力;输出节点位移列阵。具体代码如下:
function u = Bar2D2Node_Disp(KK,num,p)
k=KK(num,num)
u=k\p
4. 单元应力的求解
定义函数函数Bar2D2Node_Stress(E,x1,y1,x2,y2,u),该函数计算单元的应力输入d性模量E,第一个节点坐标(x1,y1),第二个节点坐标(x2,y2)单元节点位移矢量u,返回单元应力标量stress 。具体代码如下:
L=sqrt((x2-x1)(x2-x1)+(y2-y1)(y2-y1));
x=acos((x2-x1)/L);
C=cos(x);
S=sin(x);
stress=E/L[-C -S C S]u;
5. 计算节点力
定义函数Bar2D2Node_Forces(KK,q),该函数用于计算节点力,KK为刚度矩阵,q为节点位移阵列
function P= Bar2D2Node_Forces(KK,q)
q=zeros(8,1);
q(num)=u;
P=KKq;
至此,基于Matlab的杆单元有限元分析的程序设计已经完成,遇到实际问题时可以直接调用这些函数就可以解决问。
经典算例
如图所示的结构,各个杆的d性模量和横截面积都为 , 。试基于MATLAB平台求解该结构的节点位移、单元应力以及支反力。
四杆桁架结构
解答:对该问题进行有限元分析的过程如下
(1) 结构的离散化与编号
对该结构进行自然离散,节点编号和单元编号如上图所示
(2)计算各单元的刚度矩阵(基于国际标准单位)
输入d性模量E、横截面积A,各点坐标。然后分别针对单元1,2,3和4,调用4次Bar2D2Node_Stiffness,就可以得到单元的刚度矩阵。
对应的主程序中代码:
E=295e11;A=00001;x1=0;y1=0;x2=04;y2=0;x3=04;y3=03;x4=0;y4=03;
k1=Bar2D2Node_Stiffness (E,A,x1,y1,x2,y2)
k2=Bar2D2Node_Stiffness (E,A,x2,y2,x3,y3)
k3=Bar2D2Node_Stiffness (E,A,x1,y1,x3,y3)
k4=Bar2D2Node_Stiffness (E,A,x4,y4,x3,y3)
(3) 建立整体刚度方程
由于该结构共有4个节点,因此,设置结构总的刚度矩阵为KK(8×8),先对KK清零,然后四次调用函数Bar2D2Node _Assembly进行刚度矩阵的组装。相关主程序代码为:
KK=zeros(8,8);
KK=Bar2D2Node_Assembly (KK,k1,1,2);
KK=Bar2D2Node_Assembly (KK,k2,2,3);
KK=Bar2D2Node_Assembly (KK,k3,1,3);
KK=Bar2D2Node_Assembly (KK,k4,4,3)
(4)边界条件的处理及刚度方程的求解
由图可以看出,被约束的自由度有:节点1的x,y方向自由度,节点2的y方向自由度,4节点的x、y方向两个自由度。则活动自由度编号为3,5,6活动自由度对应的节点载荷F3=20000N,F5=0N,F6=25000N,采用高斯消去法进行求解,对应的代码为:
num=[3,5,6];%可活动的自由度编号
p=[20000;0;-25000];
u=Bar2D2Node_Disp(KK,num,p)
(5)支反力的计算
在得到整个结构的节点位移后,由原整体刚度方程就可以计算出对应的支反力。这部分对应的主程序的代码如下:
q=zeros(8,1);
q(num)=u;%节点位移阵列
P=Bar2D2Node_Forces(KK,q)
(6)单元应力的计算
先从整体位移列阵q中提取出单元的位移列阵,然后,调用计算单元应力的函数Bar2D2Node_ElementStress,就可以得到各个单元的应力分量。
u1=[q(1);q(2);q(3);q(4)]
stress1=Bar2D2Node_Stress(E,x1,y1,x2,y2,u1)
u2=[q(3);q(4);q(5);q(6)]
stress2=Bar2D2Node_Stress(E,x2,y2,x3,y3,u2)
u3=[q(1);q(2);q(5);q(6)]
stress3=Bar2D2Node_Stress(E,x1,y1,x3,y3,u3)
u4=[q(7);q(8);q(5);q(6)]
stress4=Bar2D2Node_Stress(E,x4,y4,x3,y3,u4)
(7)计算结果的整理
通过主程序的运行得计算结果。
主程序
%计算各单元的刚度矩阵(以国际标准单位)
E=295e11;
A=00001;
x1=0;
y1=0;
x2=04;
y2=0;
x3=04;
y3=03;
x4=0;
y4=03;
k1=Bar2D2Node_Stiffness (E,A,x1,y1,x2,y2)
k2=Bar2D2Node_Stiffness (E,A,x2,y2,x3,y3)
k3=Bar2D2Node_Stiffness (E,A,x1,y1,x3,y3)
k4=Bar2D2Node_Stiffness (E,A,x4,y4,x3,y3)
%建立整体刚度方程
%由于该结构共有4个节点,因此,结构总的刚度矩阵为KK(8×8),先对K清零,然后四次调用函数Bar2D2Node _Assembly进行刚度矩阵的组装。
KK=zeros(8,8);
KK=Bar2D2Node_Assembly (KK,k1,1,2);
KK=Bar2D2Node_Assembly (KK,k2,2,3);
KK=Bar2D2Node_Assembly (KK,k3,1,3);
KK=Bar2D2Node_Assembly (KK,k4,4,3)
%边界条件的处理及刚度方程求解
num=[3,5,6];%可活动的自由度编号
p=[20000;0;-25000];
u=Bar2D2Node_Disp(KK,num,p)
%支反力的计算
q=zeros(8,1);
q(num)=u;%节点位移阵列
P=Bar2D2Node_Forces(KK,q)
%各单元的应力计算
u1=[q(1);q(2);q(3);q(4)];
stress1=Bar2D2Node_Stress(E,x1,y1,x2,y2,u1)
u2=[q(3);q(4);q(5);q(6)];
stress2=Bar2D2Node_Stress(E,x2,y2,x3,y3,u2)
u3=[q(1);q(2);q(5);q(6)];
stress3=Bar2D2Node_Stress(E,x1,y1,x3,y3,u3)
u4=[q(7);q(8);q(5);q(6)];
stress4=Bar2D2Node_Stress(E,x4,y4,x3,y3,u4)
说的可能有些罗嗦,注意其中有5个function,和最后一个主程序,计算的时候直接运行主程序就可以了。希望能帮助到你。
(1)AddrBookexe 瑞星短信通信地址簿,主要用于保存一些短信联系人的信息。
(2)CCenterexe 瑞星信息中心,就是杀毒软件主界面右边的那个窗口。
(3)Makebootexe 瑞星DOS启动盘制作工具
(4)BackRavexe 瑞星硬盘安装备份程序
(5)InBuildexe 瑞星内嵌式查杀设置
(6)LangSetexe 瑞星安装语言选择
(7)Ravexe 瑞星杀毒软件主程序
(8)RAVDOSEXE 瑞星杀毒软件DOS32版主程序
(9)RavHDBakexe 硬盘数据备份
(10)RavMonexe 计算机监控SHELL程序--实时监控程序(就是任务栏的小绿伞)
(11)RavMonDexe 计算机监控SERVICE程序--负责为多用户打开小伞,增强保护小伞不被关闭
(12)RavStoreexe 瑞星病毒隔离系统
(13)RavStubexe 瑞星登陆前病毒扫描
(14)RavTimerexe 瑞星计数器--负责定时升级等一类的事情
(15)RavXpexe xp系统多用户环境处理--多帐号系统每个人都有监控
(16)RegCleanexe 瑞星注册表修复工具--修复注册表用的
(17)RegGuideexe 瑞星产品注册向导
(18)RsAgentexe 瑞星助手--那个可爱的小狮子
(19)ScanBDexe 瑞星系统安全漏洞扫描程序
(20)setupexe 安装主程序(也可用于卸载、修复瑞星)
(21)SmartUpexe 智能升级程序
(22)RavCopyexe 升级程序--升级和文件下载全靠它
(23)RsMsgexe 瑞星短信通
(24)ravtaskexe 瑞星的定时杀毒程序
以上就是关于VFP的主程序如何编写全部的内容,包括:VFP的主程序如何编写、跪求 求解某一桁架或者刚架(随便某一问题的都可以,简单点的也可以)的MATLAB程序,要详细的程序、瑞星杀毒软件在电脑里的进程名是啥子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)