ImageVerifierCode 换一换
格式:DOCX , 页数:97 ,大小:40.40KB ,
资源ID:24136767      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24136767.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PffAll源程序.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PffAll源程序.docx

1、PffAll源程序Pff_All源程序Pff_All源程序共包含七个cpp源文件:Shell.cpp、pff.cpp、pff_nuv.cpp、pff_nu.cpp、pff_2DTr.cpp、pff_3DTr.cpp和pff_GlBm.cpp,它们分别对应外壳调用程序及类型1至类型6(参见2.6节)的杆件结构静力分析程序。这七个源文件必须插入到同一个Visual C+ 6.0工程中进行编译连接,才能获得完整的可执行程序。将源文件插入工程的具体操作方法,请参见附录A。除外壳源文件外,其余六个源文件经过少量修改,均可作为独立的静力分析程序进行编译连接。具体修改方法有如下两步:1. 去除头文件引用声明

2、后,文件指针声明行前的“extern”,即该行变为“FILE *fpin, *fpout;”;2. 将主文件名中“main”后的数字删除。下面分文件列出七个cpp源文件的代码。一Shell.cpp/* 杆件结构静力分析程序 */* (先处理法) */#include stdio.h#include math.h#include stdlib.hFILE *fpin, *fpout;extern int main1();extern int main2();extern int main3();extern int main4();extern int main5();extern int ma

3、in6();void main() int stype; printf(请选择结构类型nn); printf(类型1 - 平面刚架n); printf(类型2 - 无结点线位移的连续梁或刚架n); printf(类型3 - 无结点水平线位移的连续梁或刚架n); printf(类型4 - 平面桁架n); printf(类型5 - 空间桁架n); printf(类型6 - 交叉梁系nn); scanf(%d,&stype); if(stype6) printf(非法输入!请重试。n); return; printf(你已选择类型%d。n,stype); switch(stype) case 1:

4、main1(); break; case 2: main2(); break; case 3: main3(); break; case 4: main4(); break; case 5: main5(); break; case 6: main6(); break; 二pff.cpp/* 第1类:平面刚架静力分析程序 */* (先处理法) */#include stdio.h#include math.h#include stdlib.hextern FILE *fpin, *fpout;static const int ARRSIZE=50; /数组大小static const int

5、JDOF=3; /结构坐标系下的结点自由度static const int JPE=2; /每单元结点数/一级子程序原型声明static int input(int ne,int nj,int np,int nf,double *x,double *y,int (*ij)JPE, double *a,double *zi,int (*jn)JDOF,double (*pj)3,double (*pf)4);static int tsm(int ne, int nj, int n, double e, double *x, double *y, int (*ij)JPE, double *a,

6、double *zi, int (*jn)JDOF, double (*tk)JDOF*ARRSIZE);static int jlp(int ne, int nj, int n, int np, int nf, double *x, double *y, int (*ij)JPE, int (*jn)JDOF, double (*pj)3, double (*pf)4, double *p);static int gauss(double (*a)JDOF*ARRSIZE, double *b, int n);static int mvn(int ne, int nj, int n, int

7、 nf, double e, double *x, double *y, int (*ij)JPE, double *a, double *zi, int (*jn)JDOF, double (*pf)4, double *p);/二级子程序原型声明static int lsc(int m, int ne, int nj, double *x, double *y, int (*ij)JPE, double *bl,double *si, double *co);static int elv(int m, int ne, int nj, int (*ij)JPE,int (*jn)JDOF,

8、int *lv);static int esm(int m, int ne, double e, double *a, double *zi, double bl, double si, double co, double ekJPE*JDOFJPE*JDOF);static int eff(int i, double (*pf)4, int nf, double bl, double *fo);/* 主程序读取总体信息,调用一级子程序进行计算 */int main1() char indat30, outdat30; int ne,nj,n,np,nf; double e; double x

9、ARRSIZE,yARRSIZE,aARRSIZE,ziARRSIZE,pjARRSIZE3, pfARRSIZE4; double pJDOF*ARRSIZE,tkJDOF*ARRSIZEJDOF*ARRSIZE; int ijARRSIZEJPE,jnARRSIZEJDOF; printf(请输入原始数据文件名:n); scanf(%s,indat); if(fpin=fopen(indat,r)=NULL) printf(无法打开原始数据文件!n); return(1); printf(请输入结果数据文件名:n); scanf(%s,outdat); if(fpout=fopen(out

10、dat,w)=NULL) printf(无法打开结果数据文件!n); return(1); fscanf(fpin,%d,%d,%d,%d,%d,%lg,&ne,&nj,&n,&np,&nf,&e); fprintf(fpout,平面刚架静力分析程序nn); fprintf(fpout,总体信息n); fprintf(fpout, NE=%d NJ=%d N=%d NP=%d NF=%d E=%lgn,ne,nj,n,np,nf,e); input(ne,nj,np,nf,x,y,ij,a,zi,jn,pj,pf); tsm(ne,nj,n,e,x,y,ij,a,zi,jn,tk); jlp(

11、ne,nj,n,np,nf,x,y,ij,jn,pj,pf,p); gauss(tk,p,n); mvn(ne,nj,n,nf,e,x,y,ij,a,zi,jn,pf,p); fclose(fpin); fclose(fpout); printf(n计算结束!n); printf(请查看结果数据文件“%s”。n,outdat); return(0);/* 读取并输出原始数据 */static int input(int ne,int nj,int np,int nf,double *x,double *y,int (*ij)JPE,double *a,double *zi,int (*jn)J

12、DOF,double (*pj)3,double (*pf)4) int i,j; for(i=0;inj;i+) fscanf(fpin,%lg,%lg,&xi,&yi); fprintf(fpout,n结点坐标信息表n); fprintf(fpout, 结点号 x yn); for(i=0;inj;i+) fprintf(fpout, %-4d %-7lg %-7lgn,i+1,xi,yi); /0基调整 for(i=0;ine;i+) fscanf(fpin,%d,%d,%lg,%lg,&iji0,&iji1,&ai,&zii); fprintf(fpout,n单元信息表n); fpri

13、ntf(fpout, 单元号 始结点号i 末结点号j 横截面积A 截面惯性矩ZIn); for(i=0;ine;i+) fprintf(fpout, %-4d %-4d %-4d %-7lg %-7lgn, i+1,iji0,iji1,ai,zii); /0基调整 for(i=0;inj;i+) for(j=0;jJDOF;j+) fscanf(fpin,%d,&jnij); fprintf(fpout,n结点位移分量统一编码表n); fprintf(fpout, 结点号 u方向 v方向 ceta方向n); for(i=0;inj;i+) fprintf(fpout, %-4d,i+1); /

14、0基调整 for(j=0;j0) for(i=0;inp;i+) for(j=0;j3;j+) fscanf(fpin,%lg,&pjij); fprintf(fpout,n结点荷载表n); fprintf(fpout, 结点号 方向代码XYM 荷载大小n); for(i=0;inp;i+) for(j=0;j0) for(i=0;inf;i+) for(j=0;j4;j+) fscanf(fpin,%lg,&pfij); fprintf(fpout,n非结点荷载表n); fprintf(fpout, 单元号 荷载类型 荷载大小 荷载位置参数cn); for(i=0;inf;i+) for(j

15、=0;j4;j+) fprintf(fpout, %-7lg, pfij); fprintf(fpout,n); return(0);/* 计算单元长度,夹角alph的正余弦值 */static int lsc(int m, int ne, int nj, double *x, double *y, int (*ij)JPE, double *bl,double *si, double *co) int i,j; double dx,dy; i=ijm0-1,j=ijm1-1; /0基调整 dx=xj-xi; dy=yj-yi; *bl=sqrt(dx*dx+dy*dy); *si=dy /

16、*bl; *co=dx / *bl; return(0);/* 形成单元定位向量 */static int elv(int m, int ne, int nj, int (*ij)JPE,int (*jn)JDOF,int *lv) int i,j,k; i=ijm0-1,j=ijm1-1; /0基调整 for(k=0;kJDOF;k+) lvk=jnik; lvk+JDOF=jnjk; return(0);/* 计算整体坐标系下的单元刚度矩阵 */static int esm(int m, int ne, double e, double *a, double *zi, double bl,

17、double si, double co, double ekJPE*JDOFJPE*JDOF) int i,j; double c1,c2,c3,c4,s1,s2,s3,s4,s5,s6; c1=e*am/bl; c2=2.0*e*zim/bl; c3=3.0*c2/bl; c4=2.0*c3/bl; s1=c1*co*co+c4*si*si; s2=(c1-c4)*si*co; s3=c3*si; s4=c1*si*si+c4*co*co; s5=c3*co; s6=c2; ek00=s1; ek01=s2; ek02=-s3; ek03=-s1; ek04=-s2; ek05=-s3;

18、ek11=s4; ek12=s5; ek13=-s2; ek14=-s4; ek15=s5; ek22=2.0*s6; ek23=s3; ek24=-s5; ek25=s6; ek33=s1; ek34=s2; ek35=s3; ek44=s4; ek45=-s5; ek55=2.0*s6; for(i=0;iJPE*JDOF-1;i+) for(j=i+1;jJPE*JDOF;j+) ekji=ekij; return(0);/* 集成总刚 */static int tsm(int ne, int nj, int n, double e, double *x, double *y, int

19、(*ij)JPE,double *a, double *zi, int (*jn)JDOF, double (*tk)JDOF*ARRSIZE) double ekJPE*JDOFJPE*JDOF; int lvJPE*JDOF; int i,j,l,k,m; double bl,si,co; for(i=0;in;i+) for(j=0;jn;j+) tkij=0.0; for(m=0;mne;m+) lsc(m,ne,nj,x,y,ij,&bl,&si,&co); esm(m,ne,e,a,zi,bl,si,co,ek); elv(m,ne,nj,ij,jn,lv); for(l=0;lJ

20、PE*JDOF;l+) i=lvl; if(i!=0) for(k=0;kJPE*JDOF;k+) j=lvk; if(j!=0) tki-1j-1=tki-1j-1+eklk; /0基调整 return(0);/* 计算单元固端力 */static int eff(int i, double (*pf)4, int nf, double bl, double *fo) int no; double q,c,b,c1,c2,c3; int j; no=int(pfi1); q=pfi2; c=pfi3; b=bl-c; c1=c/bl; c2=c1*c1; c3=c1*c2; for(j=0;

21、jJPE*3;j+) foj=0.0; switch(no) case 1: fo1=-q*c*(1.0-c2+c3/2.0); fo2=-q*c*c*(0.5-2.0*c1/3.0+0.25*c2); fo4=-q*c*c2*(1.0-0.5*c1); fo5=q*c*c*c1*(1.0/3.0-0.25*c1); return(0); case 2: fo1=-q*b*b*(1.0+2.0*c1)/bl/bl; fo2=-q*c*b*b/bl/bl; fo4=-q*c2*(1.0+2.0*b/bl); fo5=q*c2*b; return(0); case 3: fo1=6.0*q*c1*

22、b/bl/bl; fo2=q*b*(2.0-3.0*b/bl)/bl; fo4=-6.0*q*c1*b/bl/bl; fo5=q*c1*(2.0-3.0*c1); return(0); case 4: fo1=-q*c*(0.5-0.75*c2+0.4*c3); fo2=-q*c*c*(1.0/3.0-0.5*c1+0.2*c2); fo4=-q*c*c2*(0.75-0.4*c1); fo5=q*c*c*c1*(0.25-0.2*c1); return(0); case 5: fo0=-q*c*(1.0-0.5*c1); fo3=-0.5*q*c*c1; return(0); case 6:

23、 fo0=-q*b/bl; fo3=-q*c1; return(0); return(0);/* 计算综合结点荷载列阵 */static int jlp(int ne, int nj, int n, int np, int nf, double *x, double *y,int (*ij)JPE, int (*jn)JDOF, double (*pj)3, double (*pf)4, double *p) int i,j,k,l,m; double bl,si,co; int lvJPE*JDOF; double fo6,peJPE*JDOF; for(i=0;i0) for(i=0;i0

24、) for(i=0;inf;i+) m=int(pfi0)-1; /0基调整 lsc(m,ne,nj,x,y,ij,&bl,&si,&co); eff(i,pf,nf,bl,fo); elv(m,ne,nj,ij,jn,lv); pe0=-fo0*co+fo1*si; pe1=-fo0*si-fo1*co; pe2=-fo2; pe3=-fo3*co+fo4*si; pe4=-fo3*si-fo4*co; pe5=-fo5; for(j=0;jJPE*JDOF;j+) l=lvj; if(l!=0) pl-1=pl-1+pej; /0基调整 return(0);/* Gauss消去法解方程 *

25、/static int gauss(double (*a)JDOF*ARRSIZE, double *b, int n) int i,j,k; double a1; for(k=0;kn-1;k+) for(i=k+1;in;i+) a1=aki/akk; for(j=k+1;j-1;i-) /0基调整 for(j=i+1;jn;j+) bi=bi-aij*bj; bi=bi/aii; return(0);/* 输出结点位移;计算并输出单元杆端力 */static int mvn(int ne, int nj, int n, int nf, double e, double *x, double *y,int (*ij)JPE, double *a, double *zi, int (*jn)JDOF, double (*pf)4,double *p) int i,j,l,m,ii; int lvJPE*JDOF; double bl,si,co; double fo6,dJPE*JDOF,fdJPE*JDOF,f6; double ekJPE*JDOFJPE*JDOF; fprintf(fpout,n结点位移表n); fprintf(fpout, 结点号 u v cetan); fo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1