版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、有限元程序设计作业姓名:陆文林 王子昱学号:071053205 071054236班级:07级研究生专业:结构工程院系:土木与建筑学院有限元程序流程图输入单元数 输入结点数根据单元数形成动态数组存储单元及结点信息以及单元截面信息输入非结点荷载数 有形成动态数组存储非结点荷载信息否根据非结点荷载信息判断并形成列向量输入结点荷载数否调用结点及单元信息判断并循环形成总刚形成总荷载列向量输入结点荷载信息并形成结点荷载列向量 有形成动态数组存储结构总刚信息引入支承条件,对总刚及荷载列向量进行处理输入铰结点数及其编号调用结点位移及结点信息和对应单元信息,回代求出并输出单元杆端力解线性方程组,求出结点位移铰
2、结点的处理程序变量说明 NE-存储单元号,单元结点号,两端约束情况nelem-单元数nnode-结点数NM-存储单元弹模,面积,惯性矩,长度,与总体X轴夹角nf-单元自由度nf1-结点自由度 K-结构的总刚度矩阵K0-存储各单元单刚矩阵nelem1-非结点荷载单元数nnode1-有结点荷载结点数k-单元单刚矩阵nnode2-有约束的结点数nnode3-铰结点数 T-单元坐标转换矩阵 Po-非结点荷载列向列量F-单元非结点荷载的固端力nbg-起始结点号nend-终止结点号 NL-单元的非结点荷载信息 LD-单元非结点荷载的大小 Pa-所有单元结点荷载的列向量 LD1-存储各单元荷载信息 P-所有
3、荷载之和列向量NR-存储支座约束的结点号F1-存储各单元的杆端力NLD-存储有结点荷载的结点号 JJ-存储铰结的结点编号 V-返回并存储结点位移列向量 V1-调用各单元的结点位移 源程序/ #include "stdafx.h"#include <iostream.h>#include <math.h>#define PI 3.14159265double mat366,X6;void matmat(int row,int col,double B166,double B266); void matvec(int row, int col,doubl
4、e mat166,double Y16); double matvec(int row, int col,double * mat1,double * Y1,double * V); double gs(int row,int col,double * A, double * B,double * V); int main(int argc, char* argv)double m=1e8;int nelem,nnode,nelem1,nnode1,nnode2,nnode3,nf,nf1;int i1,i2,i3,nbg,nend,nbg1,nend1,nbg2,nend2,nbg3,nen
5、d3,N,N1,N2,n,n1;double L,a,E,A,I,q,T66,T166,k66,mat166;double P16,V16,F16,X16;cout<<"输入单元总数:" cin>>nelem;cout<<"输入结点总数:"cin>>nnode;int * *NE;NE=new int * 5;for(i1=0;i1<nelem;i1+)NEi1=new int 5;cout<<"输入:单元编号,起节点号,止节点号,起点是否刚结(是0,否1),终点是否刚结(是0,
6、否1)"for(i1=0;i1<nelem;i1+)for(i2=0;i2<5;i2+)cin>>NEi1i2;double * *NM;NM=new double * 5;for(i1=0;i1<nelem;i1+)NMi1=new double 5;cout<<"依次输入单元的:弹模,面积,惯性矩,长度,与x轴夹角"for(i1=0;i1<nelem;i1+)for(i2=0;i2<5;i2+)cin>>NMi1i2;nf1=3*nnode; double * K;K=new double *n
7、f1;for(i1=0;i1<nf1;i1+)Ki1=new double nf1;for(i1=0;i1<nf1;i1+)for(i2=0;i2<nf1;i2+)Ki1i2=0.0;nf=6*nelem; double * K0;K0=new double * nf;for(i1=0;i1<nf;i1+)K0i1=new double nf;for(i1=0;i1<nelem;i1+) N=NEi10,N1=6*(N-1),nbg=NEi11,nend=NEi12;nbg1=NEi13,nend1=NEi14;E=NMi10,A=NMi11,I=NMi12;L=
8、NMi13,a=NMi14*PI/180.0;if(nbg1=0)&&(nend1=0)k01=k02=k04=k05=k10=k13=k20=k23=0; k31=k32=k34=k35=k40=k43=k50=k53=0;k00=k33=(E*A)/L,k03=k30=-(E*A)/L;k11=k44=(12*E*I)/pow(L,3);k14=k41=-(12*E*I)/pow(L,3);k12=k21=k15=k51=(6*E*I)/pow(L,2);k24=k42=k45=k54=-(6*E*I)/pow(L,2);k22=k55=4*E*I/L,k25=k52=2*
9、E*I/L;else if(nbg1=0)&&(nend1=1)k01=k02=k04=k05=0;k10= k13=k15=k20=k23=k25=0;k31=k32=k34=k35=0;k40=k43=k45=0;k50=k51=k52=k53=k54=k55=0;k00=k33=(E*A)/L,k03=k30=-(E*A)/L;k11=k44=3*E*I/pow(L,3);k14=k41=-(3*E*I)/pow(L,3);k12=k21=3*E*I/pow(L,2),k24=k42=-3*E*I/pow(L,2);k22=3*E*I/L;else if(nbg1=1)&
10、amp;&(nend1=1)for(i2=0;i2<6;i2+)for(i3=0;i3<6;i3+)ki2i3=0.0;k00=k33=E*A/L,k03=k30=-E*A/L;elsek01=k02=k04=k05=k10=k12=k13=0;k20=k21=k22=k23=k24=k25=0;k31=k32=k34=k35=0;k40=k42=k43=k50=k52=k53=0;k00=k33=(E*A)/L,k03=k30=-(E*A)/L;k11=k44=3*E*I/pow(L,3);k14=k41=-(3*E*I)/pow(L,3); k15=k51=3*E*I/
11、pow(L,2);k45=k54=-3*E*I/pow(L,2),k55=3*E*I/L;for(i2=0;i2<6;i2+)N2=N1+i2;for(i3=0;i3<6;i3+)K0N2i3=ki2i3;for(i2=0;i2<6;i2+)for(i3=0;i3<6;i3+)Ti2i3=0.0;T22=T55=1,T01=T34=-sin(a),T10=T43=sin(a);T00=T11=T33=T44=cos(a);matmat(6,6,T,k);for(i2=0;i2<6;i2+)for(i3=0;i3<6;i3+)T1i2i3=Ti3i2;for(
12、i2=0;i2<6;i2+)for(i3=0;i3<6;i3+)Ti2i3=T1i2i3;for(i2=0;i2<6;i2+) for(i3=0;i3<6;i3+)mat1i2i3=mat3i2i3;matmat(6,6,mat1,T);nbg3=3*(nbg-1),nend3=3*(nend-1);for(i2=0;i2<3;i2+) nbg2=nbg3+i2; for(i3=0;i3<3;i3+) nend2=nbg3+i3; Knbg2nend2+=mat3i2i3; for(i2=0;i2<3;i2+) nbg2=nbg3+i2;for(i3=
13、3;i3<6;i3+) nend2=nend3+i3-3; Knbg2nend2+=mat3i2i3; for(i2=3;i2<6;i2+)nbg2=nend3+i2-3;for(i3=0;i3<3;i3+) nend2=nbg3+i3; Knbg2nend2+=mat3i2i3; for(i2=3;i2<6;i2+)nbg2=nend3+i2-3;for(i3=3;i3<6;i3+)nend2=nend3+i3-3; Knbg2nend2+=mat3i2i3;double * Po; Po=new double nf1;for(i1=0;i1<nf1;i1
14、+)Poi1=0.0; double * * F; F=new double *6;for(i1=0;i1<nelem;i1+)Fi1=new double 6;for(i1=0;i1<nelem;i1+)for(i2=0;i2<6;i2+)Fi1i2=0.0; cout<<"输入有非结点荷载的单元数:"cin>>nelem1;if(nelem1!=0)int * * NL; NL=new int *3; for(i1=0;i1<nelem1;i1+) NLi1=new int3;cout<<"依次输入非
15、结点荷载信息:单元编号,非结点荷载类(均布0,三角形荷载1),荷载在单元上的布设情况(均布0,三角形荷载:起点为零取1,起点为q取2)" for(i1=0;i1<nelem1;i1+) or(i2=0;i2<3;i2+) cin>>NLi1i2; double * LD; LD=new double nelem1; cout<<"依次输入各单元的均布荷载值或三角形荷载的最大值:" for(i1=0;i1<nelem1;i1+) cin>>LDi1; for(i1=0;i1<nelem1;i1+)N=NLi
16、10-1,n=NLi11,n1=NLi12;nbg=NEN1,nend=NEN2,nbg1=NEN3;nend1=NEN4;E=NMN0,A=NMN1,I=NMN2;L=NMN3,a=NMN4*PI/180.0,q=LDi1; for(i2=0;i2<6;i2+) for(i3=0;i3<6;i3+) Ti2i3=0.0; T22=T55=1,T01=T34=-sin(a),T10=T43=sin(a);T00=T11=T33=T44=cos(a);if(n=0)if(nbg1=0)&&(nend1=0)P10=P13=0,P11=P14=q*L/2;P12=q*p
17、ow(L,2)/12,P15=-q*pow(L,2)/12;else if(nbg1=0)&&(nend1=1) P10=P13=P15=0,P11=5*q*L/8;P14=3*q*L/8,P12=q*pow(L,2)/8;else if (nbg1=1)&&(nend1=0)P10=P12=P13=0,P11=3*q*L/8;P14=5*q*L/8,P15=-q*pow(L,2)/8;elseP10=P12=P13=P15=0,P11=q*L/2,P14=q*L/2;else if(n1=1) if(nbg1=0)&&(nend1=0) P10
18、=P13=0,P11=3*q*L/20,P14=7*q*L/20; P12=q*pow(L,2)/30,P15=-q*pow(L,2)/20; else if(nbg1=0)&&(nend1=1) P10=P13=P15=0,P11=9*q*L/40; P14=11*q*L/40,P12=7*q*pow(L,2)/120; else if (nbg1=1)&&(nend1=0) P10=P12=P13=0,P11=q*L/10; P14=2*q*L/5,P15=-q*pow(L,2)/15; else P10=P12=P13=P15=0,P11=q*L/6,P1
19、4=q*L/3;elseif(nbg1=0)&&(nend1=0) P10=P13=0,P11=7*q*L/20,P14=3*q*L/20; P12=q*pow(L,2)/20,P15=-q*pow(L,2)/30; else if(nbg1=0)&&(nend1=1) P10=P13=P15=0,P11=2*q*L/5; P14=q*L/10,P12=q*pow(L,2)/15; else if (nbg1=1)&&(nend1=0) P10=P12=P13=0,P11=11*q*L/40; P14=9*q*L/40,P15=-7*q*pow(
20、L,2)/120; else P10=P12=P13=P15=0,P11=q*L/3,P14=q*L/6;for(i2=0;i2<6;i2+)FNi2=P1i2;matvec(6,6,T,P1);for(i2=0;i2<6;i2+)P1i2=-Xi2;nbg3=3*(nbg-1),nend3=3*(nend-1);for(i2=0;i2<3;i2+)nbg2=nbg3+i2;Ponbg2+=P1i2;for(i2=3;i2<6;i2+)nbg2=nend3+i2-3;Ponbg2+=P1i2;double * Pa; Pa=new double nf1;for(i1=0
21、;i1<nf1;i1+)Pai1=0.0;cout<<"输入有结点荷载的结点数:"cin>>nnode1;if(nnode1!=0)int * NLD;NLD=new int nnode1;cout<<"输入有结点荷载的结点序号:"for(i1=0;i1<nnode1;i1+)cin>>NLDi1;double * LD1; LD1=new double *3;for(i1=0;i1<nnode1;i1+)LD1i1=new double 3;cout<<"按以上结点
22、号顺序依次输入各结点的结点荷载的:x轴方向力,y轴方向力,弯矩"for(i1=0;i1<nnode1;i1+)for(i2=0;i2<3;i2+) cin>>LD1i1i2;for(i1=0;i1<nnode1;i1+)N=NLDi1-1,nbg3=3*N;for(i2=0;i2<3;i2+) nbg2=nbg3+i2; Panbg2=LD1i1i2;delete NLD;for(i1=0;i1<nnode1;i1+)delete LD1i1;delete LD1;double * P; P=new double nf1;for(i1=0;i
23、1<nf1;i1+)Pi1=Poi1+Pai1;delete Po;delete Pa;cout<<"输入支座约束的结点数:"cin>>nnode2;int * NR;NR=new int nnode2;cout<<"输入有支座约束的结点号:"for(i1=0;i1<nnode2;i1+)cin>>NRi1;for(i1=0;i1<nnode2;i1+)N=NRi1-1;for(i2=0;i2<3;i2+)nbg=3*N+i2;Knbgnbg=m*Knbgnbg,Pnbg=0;cou
24、t<<"输入铰结点数:" cin>>nnode3;if(nnode3!=0)int * JJ;JJ=new int nnode3;cout<<"输入铰结点的结点号:"for(i1=0;i1<nnode3;i1+)cin>>JJi1;for(i1=0;i1<nnode3;i1+)nbg=3*JJi1-1;Knbgnbg=m,Pnbg=0;delete JJ;double * V; V=new double nf1;gs(nf1,nf1,K,P,V);delete NR;cout<<&q
25、uot;单元号"<<" "<<"IN"<<" "<<"IQ"<<""<<"IM"<<" "<<"JN"<<" "<<"JQ"<<" "<<"JM"<<endl;for(i1=0;i1<ne
26、lem;i1+) N=NEi10,N1=6*(N-1),nbg=NEi11;nend=NEi12,a=NMi14*PI/180.0;nbg1=3*(nbg-1),nend1=3*(nend-1);for(i2=0;i2<6;i2+)for(i3=0;i3<6;i3+)Ti2i3=0.0;T22=T55=1,T01=T34=sin(a),T10=T43=-sin(a);T00=T11=T33=T44=cos(a);for(i2=0;i2<3;i2+) nbg2=nbg1+i2;V1i2=Vnbg2;for(i2=3;i2<6;i2+)nend2=nend1+i2-3;V1
27、i2=Vnend2;matvec(6,6,T,V1);for(i2=0;i2<6;i2+)nbg2=N1+i2;for(i3=0;i3<6;i3+)ki2i3=K0nbg2i3;for(i2=0;i2<6;i2+)X1i2=Xi2;matvec(6,6,k,X1);for(i2=0;i2<3;i2+)nbg2=N-1;F1i2=Fnbg2i2;for(i2=3;i2<6;i2+)nbg2=N-1;F1i2=Fnbg2i2;for(i2=0;i2<6;i2+)F1i2=Xi2+F1i2;cout<<N<<" "for
28、(i2=0;i2<6;i2+)cout<<F1i2<<" "cout<<endl;return 0;void matmat(int row,int col,double B166,double B266) int i1,i2,i3;for(i1=0;i1<row;i1+)for(i2=0;i2<col;i2+)mat3i1i2=0.0;for(i3=0;i3<col;i3+)mat3i1i2+=B1i1i3*B2i3i2; void matvec(int row, int col,double mat166,dou
29、ble Y16) int i1,i2;for(i1=0;i1<row;i1+)Xi1=0.0;for(i2=0;i2<col;i2+)Xi1+=mat1i1i2*Y1i2; double matvec(int row, int col,double * mat1,double * Y1,double * V) int i1,i2;for(i1=0;i1<row;i1+)Vi1=0.0;for(i2=0;i2<col;i2+)Vi1+=mat1i1i2*Y1i2; return * V;double gs(int row,int col,double * A, doubl
30、e * B,double * V) int i1,i2,i3,irow;double db,db1;double * k1;k1=new double col;for(i1=0;i1<row;i1+) for(i2=i1;i2<col;i2+)k1i2=Ai1i2;irow=i1;db=fabs(Ai1i1);for(i2=i1+1;i2<row;i2+)if(db<fabs(Ai2i1)db=fabs(Ai2i1);irow=i2;if(db=0.0)cout<<"对角线元素为零,方程组无解."return false;for(i2=i1;i2<col;i2+)Ai1i2=Airowi2;Airowi2=k1i2;db=Ai1i1; db1=Bi1;Bi1=Birow;Birow=db1;for(i2=i1;i2<col;i2+) Ai1i2/=db;Bi1/=db;for(i2=i1+1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- fpga 网络协议书分析
- 客厅地毯清洁解决方案创新创业项目商业计划书
- 复古铁艺烛台创新创业项目商业计划书
- 垃圾发电预防性试验创新创业项目商业计划书
- 广播电视节目互动平台创新创业项目商业计划书
- 搪瓷制品生产效率提升创新创业项目商业计划书
- 2025年4月自考中级财务会计试题(+答案)
- 部编人教版六年级上册语文第11课《故宫博物院》教案
- 人教版(2024)八年级上册英语Unit 3语篇词汇和语境词汇练习题(无答案)
- 2025年机器人在养老服务中的社会接受度
- 【MOOC】《中西方名家名作赏析》(河南工业大学)章节期末慕课答案
- 2025云南文山市卫生健康系统选调工作人员10人( 第1号)笔试考试参考题库及答案解析
- 广药集团校招试题及答案
- 银行消防安全培训资料
- 厂房公共抗震支架施工方案
- 调相机本体安装施工方案
- 社区工会创意活动方案
- 雨刮器基础知识培训课件
- 模具企业员工管理手册样本
- 2025福建厦漳泉城际铁路有限责任公司筹备组社会招聘10人考试参考题库及答案解析
- 个人房屋贷款合同样本
评论
0/150
提交评论