基于MATLAB平面桁架有限元分析研究_李远瑛
- 格式:pdf
- 大小:650.44 KB
- 文档页数:5
matlab桁架结构有限元计算(最新版)目录一、引言二、MATLAB 与桁架结构有限元计算的概述1.MATLAB 简介2.桁架结构有限元计算的基本流程三、MATLAB 在桁架结构有限元计算中的应用实例1.铝制起重机垂直和水平部分的有限元分析2.基于 MATLAB 的三维桁架有限元分析3.五杆桁架有限元分析四、MATLAB 在桁架结构有限元计算中的优势与局限1.优势2.局限五、结论正文一、引言在工程领域中,桁架结构由于其优越的力学性能和简单的结构形式,被广泛应用于桥梁、起重机、输电塔等大型工程项目中。
为了确保桁架结构的安全和稳定,对其进行有限元分析是必不可少的。
而 MATLAB 作为一种强大的数学软件,可以方便地进行有限元计算。
本文将介绍如何利用MATLAB 进行桁架结构有限元计算。
二、MATLAB 与桁架结构有限元计算的概述1.MATLAB 简介MATLAB(Matrix Laboratory)是一款广泛应用于科学计算、数据分析和可视化的软件。
它基于矩阵计算,可以方便地处理大量数据,并提供了丰富的函数库和工具箱。
2.桁架结构有限元计算的基本流程桁架结构有限元计算的基本流程包括以下几个步骤:(1)建立有限元模型:根据实际问题,建立桁架结构的有限元模型,包括节点、单元、约束和载荷等。
(2)组装刚度矩阵:根据有限元模型,组装桁架结构的刚度矩阵。
(3)施加边界条件和载荷:对桁架结构施加边界条件和载荷。
(4)求解:利用求解器求解桁架结构的内力、应力和应变等问题。
(5)后处理:对计算结果进行数据结构化保存,以便进行后期处理和分析。
三、MATLAB 在桁架结构有限元计算中的应用实例1.铝制起重机垂直和水平部分的有限元分析某铝制起重机的垂直和水平部分由铝制成,杨氏模量为 e70,gpa,横截面为 2 cm。
对角桁架构件由钢制成,杨氏模量为 e210,gpa,横截面为3 cm。
结构承受荷载 p6000,n。
假设两个支撑节点固定(即 x 和 y 位移为 0)。
MATLAB在平面桁架计算中的应用作者:王鹏周琪琛姚姗姗来源:《卷宗》2016年第10期摘要:本文基于平面桁架有限元分析的基本原理,利用MATLAB语言编程对有外荷载作用的平面桁架进行有限元分析,结果表明,通过MATLAB软件对平面桁架受力分析的结果与精确解吻合。
本文介绍的方法,在平面桁架有限元中具有普遍的适用性,对复杂的平面桁架结构有限元分析有一定的参考价值。
关键词:平面桁架;MATLAB;有限元分析MATLAB是以矩阵为基本的运算单元,可以灵活地进行矩阵运算、图形绘制、编程开发等,具有编程效率高、可移植性强、计算速度快等特点;有限元分析法是根据变分原理求解数学及物理问题的数值计算方法,它是随着近年来计算机技术的迅速发展而得到的广泛应用。
本文以解决一个实际的平面桁架问题为例,运用有限元分析法,并利用MATLAB软件进行编程计算来演示MATLAB软件在平面桁架中的应用。
接下来,首先介绍解决平面桁架问题的有限元分析方法。
1 平面桁架有限元分析的基本原理在用有限元法对平面桁架受力分析中,平面桁架元是分析的基本单元,它是一种二维有限元,每个平面桁架元有2个节点和3个参数,参数分别为长度L、弹性模量E和横截面积A,当假设桁架元与正方向总体X轴逆时针倾斜θ角时,并令C=Cos(θ),S=Sin(θ),则单元刚度矩阵可表示为:在有限元分析中,通过单元分析,建立单元刚度矩阵k,然后再将单元刚度矩阵通过刚度集成规则集合成结构的整体刚度矩阵K,对于一个有n个节点的结构而言,其整体的刚度矩阵K为2n×2n的矩阵,在实际MATLAB软件操作中,并不需要编写函数程序,而是直接调用相应的函数即可,正是因为这样,在用MATLAB软件进行桁架受力分析时,可以大大提高效率,节省时间。
整体刚度矩阵的函数名称为PlaneTrussAssemble。
一旦得到刚度矩阵K,就可以列出方程:式中,U代表节点的位移矢量,F是结构节点的荷载矢量,这两个边界条件需要手动赋值,然后利用高斯消元法便可求解上述方程组,一旦求解出为止的位移和支反力,就可以利用方程:求解单元的节点力。
matlab桁架结构有限元计算摘要:一、引言- 介绍MATLAB在桁架结构有限元计算中的应用- 说明本文的主要内容和结构二、有限元计算原理- 有限元方法的背景和基本原理- 有限元方法在桁架结构分析中的应用三、MATLAB实现桁架结构有限元计算- MATLAB的基本操作和编程基础- 使用MATLAB进行桁架结构有限元计算的步骤和示例四、MATLAB桁架结构有限元计算的应用- 分析不同桁架结构的特点和计算结果- 探讨MATLAB在桁架结构有限元计算中的优势和局限五、结论- 总结MATLAB在桁架结构有限元计算中的应用和优势- 展望MATLAB在桁架结构分析中的未来发展方向正文:一、引言随着计算机技术的不断发展,有限元方法已经成为工程界解决复杂问题的重要手段。
MATLAB作为一款功能强大的数学软件,可以方便地实现桁架结构的有限元计算。
本文将介绍MATLAB在桁架结构有限元计算中的应用,并详细阐述其操作方法和计算原理。
二、有限元计算原理1.有限元方法的背景和基本原理有限元法是一种数值分析方法,通过将连续的求解域离散为离散的单元,将复杂的问题转化为求解单元的线性或非线性方程组。
有限元方法具有适应性强、精度高、计算效率高等优点,广泛应用于固体力学、流体力学、传热等领域。
2.有限元方法在桁架结构分析中的应用桁架结构是一种由杆件组成的结构,其节点只有三个自由度。
有限元方法可以有效地分析桁架结构的强度、刚度和稳定性,为工程设计提供理论依据。
三、MATLAB实现桁架结构有限元计算1.MATLAB的基本操作和编程基础MATLAB是一种功能强大的数学软件,可以进行矩阵运算、绘制图形、编写程序等操作。
在MATLAB中,用户可以通过编写脚本文件或使用图形界面进行各种计算和分析。
2.使用MATLAB进行桁架结构有限元计算的步骤和示例(1) 建立桁架结构模型:根据实际结构绘制桁架的节点和杆件,确定各节点的三自由度。
(2) 离散化:将桁架结构离散为有限个单元,每个单元包含若干个节点。
np=3; ne=2; nload=1; nb=4; nu=0;% np为节点数,ne为单元数,nload为外力数,nb为约束数,nu 为泊松比np2=np*2; np3=np2-nb;% np2为不受约束时自由度是节点的两倍 ,np3为不受约束的节点自由度个数K=sym(zeros(np2,np2));% 定义受整体刚度空数组F=sym(zeros(np2,1));% 定义节点外力空数组KK=sym(zeros(np3,np3));% 预置自由度刚度空数组FF=sym(zeros(np3,1));% 预置自由度外力空数组syms h A P E L% 定义未知正常数为变量xy=[0,h;sqrt(3)*h,0;0,0];% 节点横纵坐标数组AA=[A;A];% 单元杆件面积load=[2,2,-P];% 荷载数组bound=[1,1,0;1,2,0;3,1,0;3,2,0];% 边界条件数组IJ=[1,2;3,2];% 各杆单元节点编号DW=zeros(1,4);for ie =1:neip=IJ(ie,1);jp=IJ(ie,2);DW(1)=ip*2-1; DW(2)=ip*2; DW(3)=jp*2-1; DW(4)=jp*2; % 给单元节点横纵方向编号x1=xy(ip,1); x2=xy(jp,1); y1=xy(ip,2); y2=xy(jp,2); % 杆单元节点x,y坐标L=sqrt((x2-x1)^2+(y2-y1)^2);% 杆单元长度c=(x2-x1)/L; s=(y2-y1)/L;% c为余弦, s为正弦T=[c,s,0,0;-s,c,0,0;0,0,c,s;0,0,-s,c];% 坐标转换矩阵(将局部坐标转换为整体坐标)A1=AA(ie);ke=[E*A1/L,0,-E*A1/L,0;0,0,0,0;-E*A1/L,0,E*A1/L,0;0,0,0,0];k=T.'*ke*T;% 将局部坐标下单元刚度转换为整体坐标下单元刚度 (转置后面加.可以去掉结果中的虚数)for i =1:4i1=DW(i);for j =1:4j1=DW(j);K(i1,j1)=K(i1,j1)+k(i,j);% 集成整体刚度矩阵endendendfor i =1:nloadi1=(load(i,1)-1)*2+load(i,2);F(i1,1)=F(i1,1)+load(i,3);% 将荷载按节点方向代码累加,计入外力荷载endFuu=sym(zeros(np2,1));% 节点位移NR=zeros(np2,1);for i =1:nbi1=(bound(i,1)-1)*2+bound(i,2);NR(i1)=-i1;% 将有约束的节点的横纵节点编号挑出来变为负数uu(i1)=bound(i,3);% 有约束的四个方向位移为0endj=0;for i =1:np2i1=NR(i);if i1==0j=j+1;NR(i)=j;endend% 此循环目的是为了将没有约束的节点以及方向挑出来for i =1:np2i1=NR(i);if i1>0FF(i1)=F(i);end% 将没有约束的节点方向的外力储存下来for j =1:np2j1=NR(j);if (i1>0 & j1>0)KK(i1,j1)=K(i,j);end% 将没有约束的节点的刚度储存下来endendKKFFfor i =1:np2i1=NR(i);for j =1:np2j1=NR(j);if (i1>0 & j1<0)jj1=abs(j1);FF(i1)=FF(i1)-K(i,jj1)*uu(jj1);end% 由于有约束方向的位移为0,所以无位移的地方FF[i1]不变endendu=sym(zeros(np2,1));u=KK\FF% 求解线性方程for i =1:np2i1=NR(i);if i1>0uu(i)=u(i1);end% 将求解的无约束方向的位移放进总的位移数组相应的位置中去enduudisp('位移')for ip =1:npstr=[ip;uu(ip*2-1);uu(ip*2)];disp(str)% 输出节点位移endfor ie =1:neip=IJ(ie,1);jp=IJ(ie,2);DW(1)=ip*2-1; DW(2)=ip*2; DW(3)=jp*2-1; DW(4)=jp*2; x1=xy(ip,1); x2=xy(jp,1); y1=xy(ip,2); y2=xy(jp,2);L=sqrt((x2-x1)^2+(y2-y1)^2);c=(x2-x1)/L; s=(y2-y1)/L;T=[c,s,0,0;-s,c,0,0;0,0,c,s;0,0,-s,c];A1=AA(ie);ke=[E*A1/L,0,-E*A1/L,0;0,0,0,0;-E*A1/L,0,E*A1/L,0; 0,0,0,0];d=sym(zeros(4,1));for i=1:4d(i)=uu(i);endde=T*d;% 将整体坐标位移转换为局部坐标位移Fe=ke*de;% 杆单元力for j=1:4N=Fe((ie-1)*2+1);% 杆单元轴力sigma=N/A1;enddisp('单元,轴力,应力')str=[ie;N;sigma];disp(str)endF3=K*uu;R=F3-F;disp('支反力');for i =1:nbi1=(bound(i,1)-1)*2+bound(i,2);str=[bound(i,1);bound(i,3);simplify(R(i1))]; disp(str)end。
前处理程序clear;clcXY = [1, 0, 02, 2, 03, 2, -2]; %XY为N行3列,N为节点总数ELB = [1, 1, 2, 12, 2, 3, 1]; %ELB为MB行4列,MB为单元总数b = 4.5e-2;h = 2e-1; %截面宽b和高hA1 = b*h;IZ1 = 3e-5; %惯性矩EAIZ = [200e9, A1, IZ1]; %弹性模量与截面积和惯性矩ELPQ = [1, 1, -2e4, 22, 1, -1e4, 2]; %ELPQ第一列为受载荷单元号,第二列为长度C(见下表),三列为载荷大小,四列为载荷类型SU = [1,02, 03,0]; %SU第一列为已知节点位移对应的方程号,第2列为节点位移数值,约束即等于0子程序1function [PO, ii, jj] = dxjd(ELB, XY, ELPQ1)PO = zeros(6,1);k = ELPQ1(1);jj = ELB(k, 3);dxy = [XY(ii, 2), XY(ii, 3)XY(jj, 2), XY(jj, 3)];DY = dxy(2,2) - dxy(1,2);DX = dxy(2,1) - dxy(1,1);L = sqrt(DX^2 + DY^2);C = ELPQ1(2);Q = ELPQ1(3);type = ELPQ1(4);switch typecase 1PO(2) = PO(2) + 0.5*Q*C*(2-2*C^2/L^2 + C^3/L^3);PO(3) = PO(3) + Q*C^2*(6-8*C/L+3*C^2/L^2)/12;PO(5) = PO(5)+Q*C-PO(2);PO(6) = PO(6) - Q*C^3*(4-3*C/L)/12/L;case 2D = L - C;PO(2) = PO(2) + Q*(L+2*C)*D^2/L^3;PO(3) = PO(3) + Q*C*D^2/L^2;PO(5) = PO(5) + Q-PO(2);PO(6) = PO(6) + Q*D*C^2/L^2;case 3D = L - C;PO(1) = PO(1) + Q*D/L;PO(4) = PO(4) + Q*C/L;case 4PO(2) = PO(2) + 7*Q*L/20;PO(3) = PO(3) + Q*L^2/20;PO(5) = PO(5) + 3*Q*L/20;PO(6) = PO(6) + Q*L^2/30;end子程序2function [KE, T] = ketb(dxy, E, A, IZ)DY = dxy(2,2) - dxy(1,2);DX = dxy(2,1) - dxy(1,1);L = sqrt(DX^2 + DY^2);S = DY/L;C = DX/L;a1 = IZ/L;a2 = a1/L;a3 = E/L;KE = a3*[A, 0, 0, -A, 0, 0 0, 12*a2, 6*a1, 0, -12*a2, 6*a10, 6*a1, 4*IZ, 0, -6*a1, 2*IZ-A, 0, 0, A, 0, 00, -12*a2, -6*a1, 0, 12*a2, -6*a10, 6*a1, 2*IZ, 0, -6*a1, 4*IZ]; t = [C, S, 0; -S, C, 0; 0, 0, 1];t1 = zeros(3,3);T = [t, t1; t1, t];end子程序function KZ = kztb(XY, ELB, EAIZ)[N,M] = size(XY);KZ =zeros(9, 9);[MB, m] = size(ELB);for k = 1 :2ii = ELB(k, 2);jj = ELB(k, 3);LTB = ELB(k, 4);dxy = [XY(ii,2), XY(ii,3)XY(jj,2), XY(jj,3)];E = EAIZ(LTB, 1);A = EAIZ(LTB, 2);IZ = EAIZ(LTB, 3);[KE, T] = ketb(dxy, E, A, IZ);CN = [3*ii-2, 3*ii-1, 3*ii, 3*jj-2, 3*jj-1, 3*jj];KE = (T')*KE*T;for i = 1:6for j = 1:6KZ(CN(i), CN(j)) = KZ(CN(i), CN(j)) + KE(i, j);endendend子程序function U = weiyi(KZ, P, SU)[LR, m] = size(SU);for k =1:LRi = SU(k, 1);P(i) = 1e10*SU(k, 2);KZ(i,i) = 1e10*KZ(i, i);endU = KZ\P;end子程序function P = ydx(XY, ELB, EAIZ, ELPQ)[N, m] = size(XY)P = zeros(3*N, 1)[LPQ, m] = size(ELPQ)for j = 1:LPQELPQ1 = ELPQ(j, :)k = ELPQ(j, 1)[PO, ii, jj] = dxjd(ELB, XY, ELPQ1)LTB = ELB(k, 4);dxy = [XY(ii,2), XY(ii,3)XY(jj,2), XY(jj, 3)];E = EAIZ(LTB, 1);A = EAIZ(LTB, 2);IZ = EAIZ(LTB, 3);[KE, T] = ketb(dxy, E, A, IZ );PO = (T')*PO;CN = [3*ii-2, 3*ii-1, 3*ii, 3*jj-2, 3*jj-1, 3*jj]for i = 1:6P(CN(i)) = P(CN(i)) + PO(i);endend后处理程序clc;[N, M] = size(XY);DU = zeros(N,4);for i = 1:NDU(i,1) = i;DU(i,2) = U(3*i-2);DU(i,3) = U(3*i-1);DU(i,4) = U(3*i);end[MB, M] = size(ELB);for i = 1:MBP1(i, 1) = i;end'节点号水平位移竖直位移转角'DU主程序>>GJINPUT;>>KZ = kztb(XY, ELB,EAIZ);>>P = ydx(XY, ELB, EAIZ, ELPQ);>>U = weiyi(KZ, P, SU);>>GJOUTPUT;运行结果:ans ='节点号水平位移竖直位移转角' DU =1.0000 -0.0000 -0.0000 -0.00002.0000 -0.0000 -0.0111 -0.01003.0000 -0.0231 -0.0111 -0.0125。
有限单元法平面桁架静力分析有限元程序#define NODE_NUM 300#define ELE_NUM 200#include<stdlib.h>#include<stdio.h>#include<math.h>int nj,ne,nm,nz,npj,jm[ELE_NUM][3],nzc[60],nj2,bw;float xy[NODE_NUM][4],EA[5],p[NODE_NUM],pj,F[ELE_NUM]; float ek[5][5];double **K,*f;int BAND2(int n,int m,double **K,double *f);double **TwoArrayAlloc(int,int);void TwoArrayFree(double**);FILE *outfile;/*-----------------------------*/double **TwoArrayAlloc(int r,int c){double *x,**y;int n;x=(double*)calloc(r*c,sizeof(double));y=(double**)calloc(r,sizeof(double*));for(n=0;n<=r-1;++n)y[n]=&x[c*n];return(y);}/*--------------------------------*/void TwoArrayFree(double **x){free(x[0]);free(x);}/*--------------------------------*/int BAND2(int n,int m,double **K,double *f) /*解方程函数*/ {int i,j,t,ij,ji,it,jt,tm,m1;double s,w;m1=m+1;for(i=1;i<=n;i++){if(K[i-1][m1-1]<=0) return(0);w=0.0;if(i>m1) tm=i-m;else tm=1;for(j=tm;j<=i;j++){s=0.0;ij=j-i+m1;for(t=tm;t<=j-1;t++){it=t-i+m1;jt=t-j+m1;s=s+K[i-1][it-1]*K[j-1][jt-1]/K[t-1][m1-1];}K[i-1][ij-1]=K[i-1][ij-1]-s;if(j==i)f[i-1]=f[i-1]-w;elsew=w+K[i-1][ij-1]*f[j-1]/K[j-1][m1-1];}}for(i=n;i>=1;i--){s=0.0;if(i>n-m1) tm=n; else tm=i+m;for(j=i+1;j<=tm;j++){ji=i-j+m1;s=s+K[j-1][ji-1]*f[j-1];}f[i-1]=(f[i-1]-s)/K[i-1][m1-1];}return 1;}/*--------------------------------------------*/void input()/*输入函数*/{int jj,j,i,nh,nl;float dx,dy;FILE *infile;infile=fopen("dat.txt","r");outfile=fopen("out.txt","w");fscanf(infile,"%d%d%d%d%d",&nj,&ne,&nm,&nz,&npj); /*读入控制数据*/fprintf(outfile,"The Num. Of Nodes: %3d\n",nj);/*输出节点数*/fprintf(outfile,"The Num. Of Mem.: %3d\n",ne);/*输出单元数*/fprintf(outfile,"The Num. Of Type Of Section Characteristic: %3d\n",nm);/*输出材料类型数*/fprintf(outfile,"The Num. Of Restriction: %3d\n",nz);/*输出荷载数*/ fprintf(outfile,"The Num. Of Nodal Loads: %3d\n",npj);/*输出荷载数*/for(i=1;i<=nj;i++){for(j=1;j<3;j++)fscanf(infile,"%f",&xy[i][j]);/*读入节点坐标*/}fprintf(outfile,"Coordinates x and y Of Nodes:\n");fprintf(outfile," Node x y\n");for(i=1;i<=nj;i++){fprintf(outfile,"%10d%10.2f%10.2f\n",i,xy[i][1],xy[i][2]);/*输出节点坐标*/}for(i=1;i<=ne;i++){for(j=0;j<3;j++)fscanf(infile,"%d",&jm[i][j]);/*读入单元信息(材料类型、单元左右节点码)*/}fprintf(outfile,"The Nodes Num. Of Mem.:\n");fprintf(outfile," Mem. Type Left Right\n");for(i=1;i<=ne;i++){fprintf(outfile,"%10d%10d%10d%10d\n",i,jm[i][0],jm[i][1],jm[i][2]);/*输出单元信息*/}for(i=1;i<=nm;i++) fscanf(infile,"%f",&EA[i]);/*读入材料刚度*/for(i=1;i<=nm;i++){fprintf(outfile,"nm=%d EA=%f\n",i,EA[i]);/*输出材料刚度*/ }for(i=1;i<=nz;i++) fscanf(infile,"%d",&nzc[i]);/*读入约束位置*/ fprintf(outfile,"The Position Of Restriction: ");for(i=1;i<=nz;i++){fprintf(outfile,"%d ",nzc[i]);/*输出约束位置*/}fprintf(outfile,"\n");nj2=nj*2;/*形成荷载*/for(i=0;i<nj2;i++) p[i]=0.0;for(i=0;i<npj;i++){fscanf(infile,"%d%f",&jj,&pj);/*读入荷载位置、荷载大小*/ p[jj]=pj;}fclose(infile);}/*-------------------------------------------------------------------------*/int bwidth()/*求半带宽函数*/{int ie,i,j,min,max,jj,ib,lk,m,nn[8];ib=0;for(ie=1;ie<=ne;ie++){m=abs(jm[ie][1]-jm[ie][2]);if(m>ib) ib=m;/*找出单元左右节点码之差的最大值*/ }return 2*ib+2;/*返回半带宽*/}/*-------------------------------------------------------------------------------*/ void stiff(int ie) /*形成单刚函数*/{int i,j,k,m,n;float dx,dy,dz,l,cx,cy,cz,ea;i=jm[ie][1];/*单元左节点号*/j=jm[ie][2];/*单元右节点号*/m=jm[ie][0];/*单元材料类型号*/dx=xy[j][1]-xy[i][1];/*单元左右节点横坐标之差*/dy=xy[j][2]-xy[i][2];/*单元左右节点纵坐标之差*/l=sqrt(dx*dx+dy*dy);/*单元长度*/cx=dx/l;/*求余弦*/cy=dy/l;/*求正弦*/ea=EA[m]/l;/*fprintf(outfile,"%d%10.2f\n",ie,l);*/ek[1][1]=ek[3][3]=cx*cx*ea;/*求单刚*/ek[2][2]=ek[4][4]=cy*cy*ea;ek[2][1]=ek[1][2]=ek[3][4]=ek[4][3]=cx*cy*ea;ek[4][1]=ek[1][4]=ek[3][2]=ek[2][3]=-cx*cy*ea;ek[1][3]=ek[3][1]=-cx*cx*ea;ek[2][4]=ek[4][2]=-cy*cy*ea;}/*-----------------------------------------------------------------------------*/ int ekzk(int ie)/*集成总刚度*/{int i1,j1,i,j,i2,j2,ii,jj,ji;for(i1=1;i1<=2;i1++){for(i2=1;i2<=2;i2++){i=2*(i1-1)+i2;ii=2*(jm[ie][i1]-1)+i2;for(j1=1;j1<=2;j1++){for(j2=1;j2<=2;j2++){j=2*(j1-1)+j2;jj=2*(jm[ie][j1]-1)+j2;ji=bw+jj-ii;if(ji<=bw) K[ii-1][ji-1]=K[ii-1][ji-1]+ek[i][j];}}}}}/*---------------------------------------------------------------------------*/ void force()/*求单元轴力函数*/{int i,j,ie,m;float dx,dy,dz,l,cx,cy,cz,ea,w[7];fprintf(outfile,"============dyzl==================\n");for(ie=1;ie<=ne;ie++){i=jm[ie][1];j=jm[ie][2];m=jm[ie][0];w[1]=f[2*i-2];w[2]=f[2*i-1];w[3]=f[2*j-2];w[4]=f[2*j-1];dx=xy[j][1]-xy[i][1];dy=xy[j][2]-xy[i][2];l=sqrt(dx*dx+dy*dy);cx=dx/l;cy=dy/l;ea=EA[m]/l;dx=w[3]-w[1];/*左右节点水平位移之差*/dy=w[4]-w[2];/*左右节点竖直位移之差*/l=ea*(cx*dx+cy*dy);/*求单元轴力*/F[ie]=1;fprintf(outfile," %d %10.4f\n",ie,l);/*输出单元号、单元轴力*/ }}/*--------------------------------------------------------------------------------------*/ void main(){int ie,i,j,ii,jj,i1,j1;float p1,p2,p3;input();bw=bwidth();K=TwoArrayAlloc(nj2,bw);f=(double*)calloc(nj2,sizeof(double));if(f==NULL) exit(1);for(i=0;i<nj2;i++) f[i]=p[i+1];for(ie=1;ie<=ne;ie++){stiff(ie);ekzk(ie);}for(i=1;i<=nz;i++)/*约束处理(后处理的0、1置换法)*/{j=nzc[i]-1;for(i1=0;i1<bw-1;i1++){K[j][i1]=00.00;/*将有约束处的行置0*/ii=j+i1+1;if(ii<nj2) K[ii][bw-i1-2]=00.00;/*将有约束处的列置0*/ }K[j][bw-1]=1.00;/*将对角线元素置1*/f[j]=0;}/*fprintf(outfile,"========================zk======================\n");for(i=0;i<nj2;i++){for(j=0;j<bw;j++){fprintf(outfile,"%6.2f",K[i][j]);}fprintf(outfile,"\n");}*/fprintf(outfile,"============jdhz=================\n");for(i=0;i<nj2;i++){fprintf(outfile,"%d %6.2f\n",i+1,f[i]);/*输出节点力*/}if(!BAND2(nj2,bw-1,K,f)){printf("Failed!\n"); exit(0);}fprintf(outfile,"=========jdwy==========\n");fprintf(outfile," x y\n");for(ii=0;ii<nj;ii++){p1=f[2*ii];p2=f[2*ii+1];fprintf(outfile,"%2d %14.5f %14.5f\n",ii+1,p1,p2);/*输出节点位移*/ }force();fclose(outfile);}。
matlab桁架结构有限元计算
在MATLAB中,进行桁架结构的有限元计算可以按照以下步
骤进行:
1. 定义节点和单元:根据实际问题的几何形状和拓扑关系,定义桁架结构的节点和单元。
节点是桁架结构的连接点,单元是连接节点的构件。
2. 定义材料属性和截面属性:根据实际问题的材料和截面要求,定义桁架结构的材料属性和截面属性。
材料属性包括弹性模量和泊松比等,截面属性包括截面面积和惯性矩等。
3. 组装刚度矩阵:根据节点和单元的几何形状和材料属性,计算每个单元的局部刚度矩阵,然后根据单元和节点的连接关系,将局部刚度矩阵组装成整体刚度矩阵。
4. 施加边界条件:根据实际问题的边界条件,将边界节点的位移固定为零,或施加位移或力的约束条件。
5. 求解位移和反力:使用求解线性方程组的方法,求解位移和反力。
可以使用MATLAB中的线性方程组求解函数(如'\''运
算符)来计算。
6. 计算应力和应变:根据位移和节点的几何形状,计算节点上的应变,然后根据材料属性,计算节点上的应力。
以上步骤涵盖了桁架结构的有限元计算的基本流程,具体实现时需要根据实际问题进行适当的调整和扩展。
运用ANSYS进行平面刚架模拟建模及误差分析摘要有限单元法(或称有限元法)是在当今工程分析中获得最广泛应用的数值计算方法。
由于它的通用性和有效性,受到工程技术界的高度重视。
伴随着计算机科学和技术的快速发展,现已成为计算机辅助设计和计算机辅助制造的重要组成部分。
ANSYS软件是目前世界范围内增长最快的计算机辅助工程(CAE)软件,能与多数计算机辅助设计软件接口,实现数据的共享和交换。
本文主要分析平面刚架在均布荷载作用下模拟的有限元模型计算与手工计算之间的误差。
关键字:ANSYS软件有限元平面刚架PIANE STEEL FRAME WITH ANSYS SIMULATION MODELINGAND ERROR ANALYSISABSTRACTFinite element method (or finite element method) is the most widely used in modern engineering analysis of numerical calculation method. Because of its versatility and effectiveness, attaches great importance to by the engineering and technology. Along with the rapid development of computer science and technology, has now become a computer aided design and computer aided manufacturing is an important part .At present,the software of ANSY is the fastest growing computer aided engineering (CAE) software on the world, interfacing with the majority of computer aided design software, realizing the sharing and exchange of data. This paper mainly analyzes the model of planar frame software of ANSYS.KEYWARDS:software of ANSYS,finite element,planar frame1 有限元法简介有限元法是一种高效能、常用的数值计算方法。
基于MATLAB有限元法结构分析黄辉【摘要】利用MATLAB易于编程和强大的数值计算功能的优点,使用一种全新的方法进行有限元结构分析.结合一个实例,利用编写的M函数文件,求得节点的位移和反力,并绘出单元的内力图,经实践证明该方法简便、可行、实用.【期刊名称】《湖南交通科技》【年(卷),期】2010(000)003【总页数】3页(P53-54,136)【关键词】结构分析;MATLAB;有限元;刚度矩阵【作者】黄辉【作者单位】湖南省永州市交通局,湖南,永州,425006;中南大学,土木建筑学院,湖南,长沙,410075【正文语种】中文【中图分类】U4410 引言目前在工程技术领域内常用的数值模拟方法包括有限单元法、边界单元法、离散单元法和有限元差分法等。
但就实用性和应用的广泛性而言,主要还是有限单元法。
MATLAB是当今国际科技领域内具有较大影响力及活力的软件。
它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。
它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。
工程人员通过自己编写的M函数文件或调用MATLAB提供的工具箱,可以高效求解较复杂的工程问题,并对系统进行动态仿真和数值计算结果的图形输出。
在一般的结构问题分析中,平面梁元(Beam Element)是使用较多的二维有限元之一。
本文以平面梁元为例探讨有限元法在MATLAB中的应用。
平面梁元的系数有弹性模量E、惯性矩I和长度L。
每个梁元有2个节点,并且假定它是水平的。
梁元有4个自由度——每个节点有2个自由度(横位移和转角)。
约定位移向上为正,转角逆时针方向为正。
对一个有n个节点的结构而言,其整体刚度矩阵K的维数为2 n×2 n。
忽略轴向形变,单元刚度矩阵k给定如式(1)[1-3]。
1 MATLAB有限元分析1.1 运用MATLAB进行有限元方法解决实际问题的步骤[2]运用MATLAB进行有限元方法解决实际问题的6个步骤简述如下:1)离散化域:将一个表示结构或连续体的求解域离散为若干个不同的有限大小和形状的子域(单元),子域和子域之间通过节点进行连接(手动进行离散);2)写出单元刚度矩阵:用MATLAB写出域内每个单元的单元刚度矩阵;3)集成整体刚度矩阵:用MATLAB使用直接刚度法集成整体刚度矩阵;4)引入边界条件:引入支座、外加荷载和位移等边界条件(手动进行实现);5)求解方程:分解(手动进行)整体刚度矩阵并用高斯消去法(MATLAB)求解方程组;6)后处理:根据求得的结构节点位移矢量,求解支反力、单元节点力和单元应力。
基于matlab的空间三维桁架结构受力分析通用程序设计李罡
【期刊名称】《喀什师范学院学报》
【年(卷),期】2005(026)003
【摘要】介绍了空间三维桁架结构受力分析的有限元方法,运用matlab强大的数学计算功能,解决刚度矩阵的组集和约束条件的处理等问题,编制了通用的求解程序.该程序可以求解任意工作条件下的空间三维桁架的受力问题.
【总页数】4页(P35-38)
【作者】李罡
【作者单位】北京航空航天大学,能源与动力工程学院,北京,100083
【正文语种】中文
【中图分类】O342
【相关文献】
1.基于Solid Edge的三维模型通用参数化程序设计方法 [J], 李世国;何建军
2.基于Solid Edge的三维模型通用参数化程序设计方法 [J], 李世国
3.基于MATLAB/Simulink的通用质点外弹道程序设计 [J], 崔瀚
4.基于Lingo和Matlab的空间桁架结构联合优化设计 [J], 李姣玉;何建军
5.基于Matlab与三维空间几何变换的车辆动态包络线获取方法研究 [J], 户攀攀;刘建新;蔡久凤;刘志伟
因版权原因,仅展示原文概要,查看原文内容请购买。