三角形常应变单元matlab程序的编制与使用
三角形单元刚度矩阵matlab

三角形单元刚度矩阵是指在有限元分析中用于描述三角形单元的刚度矩阵。
在有限元分析中,三角形单元是一种常用的离散单元,用于对实际结构进行离散化。
利用三角形单元刚度矩阵,可以对结构进行更精确的力学分析和计算。
1. 三角形单元简介三角形单元是有限元分析中最简单的单元之一。
它由三个节点组成,并且三角形内部的任意一点都可以由这三个节点线性插值得到。
三角形单元在有限元分析中应用广泛,尤其对于不规则结构的离散化具有很好的适用性。
2. 刚度矩阵概述在有限元分析中,结构的刚度矩阵描述了结构对外力的响应。
对于三角形单元而言,其刚度矩阵描述了该单元内部的节点之间的相互作用关系。
刚度矩阵的计算是有限元分析中的关键步骤,它直接影响了分析结果的精度和准确性。
3. 三角形单元刚度矩阵的计算三角形单元刚度矩阵的计算涉及到对单元内部的材料性质、几何形状和边界条件的考虑。
在MATLAB中,可以利用数值计算的工具和函数来进行三角形单元刚度矩阵的计算。
在进行计算时,需要考虑单元的形状函数、单元的形状函数导数和积分点的选择等因素,以确保计算结果的准确性。
4. MATLAB中的三角形单元刚度矩阵计算方法在MATLAB中,可以利用函数库或自定义函数来实现三角形单元刚度矩阵的计算。
通过编写相应的程序,可以根据单元的几何形状和材料性质计算出相应的刚度矩阵。
在计算过程中,需要考虑到MATLAB中的矩阵运算、数值积分和误差控制等技术,以确保计算结果的准确性和稳定性。
5. 刚度矩阵的应用三角形单元刚度矩阵的计算结果可以用于结构的稳定性分析、应力分析、变形分析等方面。
将刚度矩阵与外部载荷相乘,即可求解结构的位移响应。
通过对刚度矩阵的正交分解,还可以得到结构的固有频率和模态形态。
刚度矩阵在工程实践中具有重要的意义。
6. 结语三角形单元刚度矩阵是有限元分析中的重要概念,对于工程结构的分析和计算具有重要的意义。
在MATLAB中,通过编写相应的程序,可以实现对三角形单元刚度矩阵的准确计算。
matlab构造差分三角形

matlab构造差分三角形(原创版)目录1.差分三角形的定义与作用2.MATLAB 中构造差分三角形的方法3.差分三角形的性质与应用正文1.差分三角形的定义与作用差分三角形(Difference Triangle)是一种用于数值计算的结构,主要用于离散差分和求和运算。
在实际应用中,差分三角形可用于数值积分、数值微分、线性方程组求解等。
差分三角形的核心思想是将一个函数在某一区间上的值用一组差分来表示,从而简化问题并降低计算复杂度。
2.MATLAB 中构造差分三角形的方法在 MATLAB 中,我们可以通过以下步骤构造差分三角形:(1)确定计算区间:首先,我们需要确定差分三角形的计算区间,通常用两个端点表示,例如:a 和 b。
(2)选择差分阶数:差分阶数决定了差分三角形的精度,通常选择为奇数。
常见的差分阶数有 1、3、5 等。
(3)编写差分矩阵:根据差分阶数,我们可以编写一个差分矩阵。
以奇数阶差分为例,假设差分阶数为 3,我们可以编写如下的差分矩阵:```matlab% 差分矩阵D = [1 -1 1 -1 1];```(4)计算差分三角形:根据给定的函数和差分矩阵,我们可以计算差分三角形。
以一个简单的函数为例:```matlab% 函数 f(x) = x^2f = @(x) x.^2;```我们可以通过以下代码计算差分三角形:```matlab% 计算差分三角形T = trapezoidal(f, a, b, D);```3.差分三角形的性质与应用差分三角形具有以下性质:(1)线性性质:对于任意两个函数 f(x) 和 g(x),它们的差分三角形之和等于各自差分三角形之和,即 T(f+g) = T(f) + T(g)。
(2)常数性质:对于任意常数 c,它的差分三角形为 c*T(1)。
(3)积分性质:差分三角形可以用于数值积分。
例如,对于函数 f(x),我们可以通过计算差分三角形的和来估计其定积分值。
(4)求解线性方程组:差分三角形还可以用于求解线性方程组。
第04章 三节点平面三角形单元源程序设计

斜线上的元素也都改为0。
3. 对向量{P}修改:第IZ行元素应改为0。
0 0
10 0
0 0
100
子框图6:
支杆码I由1到NZ循环
支杆相应的位移分量IZ
IZC(I)
AKZ*(IZ,I)
1
列码J由2到IDD循环
AKZ*(IZ,J)
0
IZ >IDD ?
是
J0
IDD
J0
否 IZ
列码J由2到J0循环
aij aiJ
J j i 1
akk akl;
l 1
aki akL
L i k 1
akj akM
M j k 1 J i k
所以(C)式变为(消元公式)
a (k) iJ
aiJ
akL akl
akM ;
l 1; k 1,2, n 1 im k d 1;i k 1, k 2,im
b (k) i
P(2 * IE) P(2 * JE) P(2 * ME)
P(2 * IE)+PE P(2 *JE)+PE P(2 * ME)+PE
{p} 置零
把结 点载 荷送 到 {p}
把自 重引 起的 等效 结点 载荷 累加 到 {p}
子框图6:引入约束条件
按前述约束条件引入方法,将结构的支杆引入对矩阵
[AKz]*和结点载荷向量{P}进行修改。 设第I号支杆对应的位移码为IZ,现在分别说明对
子框图2 开 始
输入节点个数NJ,单元个数NE支杆个数 NZ,结点载荷个数NPJ,半带宽IDD
位移分量个数NJ2=NJX2
输入其他数据
输入问题类型代码L*M
输入弹性模量EO,泊松比AMU, 容重ALOU,单元厚度TE
有限元实验2-三角形单元的形函数性质

实验三:三角形单元的形函数性质验证
一、 实验目的
1、加深对平面三角形单元有限元分析过程的理解;
2、掌握平面三角形单元形函数矩阵的求解过程和性质。
二、 实验要求
1、明确形函数矩阵的含义和求法;
2、根据题目要求,给出具体的计算过程;
3、编制相应的matlab 计算程序并调试运行。
三、 实验内容
用有限元法求图示平面三角形单元的形函数。
已知节点i,j,m 在xoy 平面中。
用所编程序验证形函数特性:
1、在单元任一点上,三个形函数之和等于1;
2、形函数N i 在i 点的函数值为1,在j 点及m 点的函数值为零;
3、三边上任一点的形函数与第三个顶点的坐标无关。
四、 实验提示
1、()() 21,y c x b a y x N i i i i ++∆=
,其中下标i , j , m 轮换; 2、()()m i j m i j i m m j j i y x y x y x y x y x y x ++++=∆2
1 -21; 3、j m i m m i j m m j i x x c y y b y x y x a -=-=-=;;,其中下标i , j , m 轮换。
matlab plot 填充的三角形

matlab plot 填充的三角形我们需要明确绘制填充的三角形需要哪些元素:顶点坐标。
假设我们选择以下三个顶点作为示例:A(1,1),B(3,1),C(2,3)。
我们需要在MATLAB中定义这三个顶点的坐标。
可以使用以下代码来定义这三个点的坐标:A = [1,1];B = [3,1];C = [2,3];接下来,我们可以使用MATLAB的`fill`函数来绘制填充的三角形。
`fill`函数需要接受一个顶点坐标的矩阵作为输入,并使用这些坐标绘制一个填充的图形。
以下是使用`fill`函数绘制填充的三角形的代码:fill([A(1),B(1),C(1)],[A(2),B(2),C(2)],'b');在上述代码中,`[A(1),B(1),C(1)]`表示三个顶点的x坐标,`[A(2),B(2),C(2)]`表示三个顶点的y坐标,`'b'`表示填充颜色为蓝色。
我们可以将上述代码放在一个MATLAB脚本文件中,并运行该脚本文件来绘制填充的三角形。
绘制结果如下图所示:在绘制的图形中,我们可以看到一个填充的三角形,顶点分别为A(1,1),B(3,1),C(2,3)。
填充颜色为蓝色。
除了填充颜色,我们还可以使用其他颜色来填充三角形。
MATLAB提供了很多内置的颜色名称,例如红色('r'),绿色('g'),黄色('y'),等等。
我们可以根据需要选择不同的颜色来填充三角形。
我们还可以使用MATLAB的`hold on`函数来保持当前图形,并在同一图形上绘制多个填充的三角形。
以下是一个示例代码,演示如何绘制多个填充的三角形:A1 = [1,1];B1 = [3,1];C1 = [2,3];A2 = [4,4];B2 = [6,4];C2 = [5,6];fill([A1(1),B1(1),C1(1)],[A1(2),B1(2),C1(2)],'r');hold on;fill([A2(1),B2(1),C2(1)],[A2(2),B2(2),C2(2)],'g');在上述代码中,我们首先定义了两个不同的三角形的顶点坐标(A1、B1、C1和A2、B2、C2),然后分别使用`fill`函数绘制这两个三角形,并分别使用红色和绿色来填充。
abaqus三角形单元创建

abaqus三角形单元创建
带有3个节点的三角形是最基础的二维有限元单元。
相比起其他单元,3节点三角形最大的特点是应变和应力在单元上的分布是相同的,所以也被称为Constant Strain Triangular (CST) 单元。
本文介绍如何通过用户自定义单元子程序UEL在ABAQUS环境中开发CST单元。
单元为平面应变单元,对标ABAQUS中的CPE3。
由于ABAQUS不支持显示用户自己开发的单元,所以需要通过UMAT辅助显示UEL计算得到的结果。
大致的流程为:
(1)在input中定义两种单元,一种是用户自己开发的“真”单元(UEL),另一种是“假”单元(abaqus内置的单元,但是材料用UMAT),用于后处理显示。
这两种单元享用相同的节点标号,但是有不同的单元标号;
(2)在UEL和UMAT中都定义COMMON block,比如: common/KUSER/ UVAR;
(3)UEL计算得到结果,将需要显示的结果赋值给SVARS (UEL中的场变量);
(4)在UEL中把SVARS 的数值赋予UVAR;
(5)UMAT中的SDV接收UVAR,另外需要写一个弹性的本构,弹性模量 E 可以设置得很小.。
现行三角元有限元MATLAB源程序

傻瓜运行程序,全自动过程首先建立一个数据输入的M文件:syms o;p=1;E=210e6;%输入弹性模量;NU=0.3;%输入泊松比;t=0.025;%输入材料厚度;x=[0,0.5;0.25,0.5;0.125,0.375;0,0.25;0.25,0.25;0.125,0.125;0,0;0.25,0;0.375,0.125;0.5,0.25;0.5,0]; %输入每个结点的坐标值;ff=[1,3,2;1,4,3;3,5,2;3,4,5;4,6,5;4,7,6;5,6,8;6,7,8;5,8,9;5,9,10;8,11,9;9,11,10];%输入每个单元的信息;F=[o;o;0;0;0;0;o;o;0;-12.5;0;0;o;o;0;0;0;0;0;0;0;0];%输入总体结点载荷矢量,其中未知量用符号变量'o'表示;U=[0;0;o;o;o;o;0;0;o;o;o;o;0;0;o;o;o;o;o;o;o;o];%输入总体结点位移矢量,其中未知量用符号变量'o'表示;然后建立一个运行程序的M文件:K=zeros(2*size(x),2*size(x));%生成初始整体刚度矩阵;sigma=zeros(size(ff),3);%生成初始单元应力矩阵;s=zeros(size(ff),3);%生成初始单元主应力应力及主应力方向角矩阵;for i=1:size(ff)%i表示第i个单元;kk=LinearTriangleElementStiffness(E,NU,t,x(ff(i,1),1),x(ff(i,1),2),x(ff(i,2),1),x(ff(i,2),2),x(ff(i,3), 1),x(ff(i,3),2),p);%计算每个单元的单元刚度矩阵;K=LinearTriangleAssemble(K,kk,ff(i,1),ff(i,2),ff(i,3));%集成整体刚度矩阵;end%根据每个单元的单元刚度矩阵,循环集成整体刚度矩阵;k=K;for i=1:size(U)if U(i)==0F(i)=0;k(i,:)=0;k(:,i)=0;k(i,i)=1;elseendend%将未知的结点载荷及其对应的总体刚度的行和列定义为0,并定义对应的i行i列为1;U=k\F;F=K*U;%计算总体结点载荷矢量for i=1:size(ff)l=ff(i,1);m=ff(i,2);n=ff(i,3);uu=[U(2*l-1);U(2*l);U(2*m-1);U(2*m);U(2*n-1);U(2*n)];%建立单元结点位移矢量;ss=LinearTriangleElementStresses(E,NU,x(ff(i,1),1),x(ff(i,1),2),x(ff(i,2),1),x(ff(i,2),2),x(ff(i,3),1), x(ff(i,3),2),p,uu);%计算单元应力;sss=LinearTriangleElementPStresses(ss);%计算单元主应力和主应力方向角;sigma(i,1)=double(ss(1,1));sigma(i,2)=double(ss(2,1));sigma(i,3)=double(ss(3,1));%将每个单元应力赋值到单元应力矩阵sigma中;s(i,1)=double(sss(1,1));s(i,2)=double(sss(2,1));s(i,3)=double(sss(3,1));%将每个单元主应力和主应力方向角赋值到单元主应力应力及主应力方向角矩阵s中;endU=double(U);F=double(F);uu=double(uu);K%以下程序输出结点信息到‘节点信息.txt’中;fid=fopen('C:\Documents and Settings\LXY\桌面\节点信息.txt','wt');fprintf(fid,'\n%s\n','-------------------------------------------------------节点信息----------------------------------------------------------');fprintf(fid,'\n%s\n',' 节点号x坐标y坐标x位移y位移水平支反力垂直支反力');for i=1:size(x)fprintf(fid,'%10d%18.8f%18.8f%18.8f%18.8f%18.8f%18.8f\n',i,x(i,1),x(i,2),U(2*(i-1)+1),U(2*(i-1)+2),F(2*(i-1)+1),F(2*(i-1)+2));endfclose(fid);%以下程序输出单元信息到‘单元信息.txt’中;fid=fopen('C:\Documents and Settings\LXY\桌面\单元信息.txt','wt');fprintf(fid,'\n%s\n','---------------------------------------------------------------单元信息----------------------------------------------------------------------');fprintf(fid,'\n%s\n',' 单元号结点1 结点2 结点3 x方向拉应力y方向拉应力剪应力主应力方向角'); for i=1:size(ff)fprintf(fid,'%10d%18.8f%18.8f%18.8f%18.8f%18.8f%18.8f%18.8f\n',i,ff(i,1),ff(i,2),ff(i,3),sigma( i,1),sigma(i,2),sigma(i,3),s(i,3));endfclose(fid);。
matlab函数文件的编写和调用

matlab函数文件的编写和调用
Matlab函数文件的编写和调用步骤如下:
1. 打开Matlab软件,进入Matlab命令窗口;
2. 输入命令“edit 函数名”,创建新的函数文件,或者在文件浏览器中手动创建一个.m格式的函数文件;
3. 在函数文件中编写函数代码,包括函数名、输入参数、输出参数和函数体等;
4. 使用保存按钮将函数文件保存在Matlab当前的工作目录中;
5. 在Matlab命令窗口中,使用函数名加上输入参数来调用该函数,函数将返回输出参数的值。
例如,编写一个计算两数之和的函数sum:
1. 打开Matlab软件,进入Matlab命令窗口;
2. 输入命令“edit sum”,弹出编辑窗口;
3. 在编辑窗口中输入以下代码:
function c = sum(a, b)
% 计算两个数的和
c = a + b;
end
4. 保存函数文件“sum.m”在Matlab当前的工作目录中;
5. 在Matlab命令窗口中,输入“sum(2, 3)”调用函数,函数将返回5。
需要注意的是,函数文件名必须与函数名相同,并且保存在Matlab当前的工作目录中或其他Matlab可以搜索到的路径中。
调用函数时,输入参数的个数和类型必须与函数定义中的输入参数一致,否则将报错或产生意外结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 1
三角形常应变单元程序的编制与使用 有限元法是求解微分方程边值问题的一种通用数值方法,该方法是一种基于变分法(或变分里兹法)而发展起来的求解微分方程的数值计算方法,以计算机为手段,采用分片近似,进而逼近整体的研究思想求解物理问题。 有限元分析的基本步骤可归纳为三大步:结构离散、单元分析和整体分析。 对于平面问题,结构离散常用的网格形状有三角形、矩形、任意四边形,以三个顶点为节点的三角形单元是最简单的平面单元,它较矩形或四边形对曲边边界有更好的适应性,而矩形或四边形单元较三节点三角形有更高的计算精度。 Matlab语言是进行矩阵运算的强大工具,因此,用Matlab语言编写有限元中平面问题的程序有优越性。本章将详细介绍如何利用Matlab语言编制三角形常应变单元的计算程序,程序流程图见图1。 有限元法中三节点三角形分析结构的步骤如下: 1)整理原始数据,如材料性质、荷载条件、约束条件等,离散结构并进行单元编码、结点编码、结点位移编码、选取坐标系。 2)单元分析,建立单元刚度矩阵。 3)整体分析,建立总刚矩阵。 4)建立整体结构的等效节点荷载和总荷载矩阵 5)边界条件处理。 6)解方程,求出节点位移。 7)求出各单元的单元应力。 8)计算结果整理。计算结果整理包括位移和应力两个方面;位移计算结果一般不需要特别的处理,利用计算出的节点位移分量,就可画出结构任意方向的位移云图;而应力解的 误差表现在单元内部不满足平衡方程,单元 与单元边界处应力一般不连续,在边界上应 力解一般与力的边界条件不相符合。
图1 程序流程图
开始 输入初始数据 生成单刚集成总刚 施加约束信息 生成荷载向量 边界条件处理 计算结点位移 计算单元应力 计算结果整理 结束 - 2
1.1 程序说明 %******************************************************************* % 三角形常应变单元求解结构主程序 %******************************************************************* 功能:运用有限元法中三角形常应变单元解平面问题的计算主程序。 基本思想:单元结点按右手法则顺序编号。 荷载类型:可计算结点荷载。 说明:主程序的作用是通过赋值语句、读取和写入文件、函数调用等完成算法的全过程,即实现程序流程图的程序表达。 %----------------------------------------------------------------------------------------------------- 1 程序准备 format short e %设定输出类型 clear all %清除所有已定义变量 clc %清屏 说明: format short e - 设定计算过程中显示在屏幕上的数字类型为短格式、科学计数法; clear all - 清除所有已定义变量,目的是在本程序的运行过程中,不会发生变量名相同等可能使计算出错的情况; clc - 清屏,使屏幕在本程序运行开始时 %----------------------------------------------------------------------------------------------------- 2 全局变量定义 global NNODE NPION NELEM NVFIX NFORCE COORD LNODS YOUNG POISS THICK global FORCE FIXED global BMATX DMATX SMATX AREA global ASTIF ASLOD ASDISP global FP1 说明: NNODE—单元结点数,NPION—总结点数, NELEM—单元数,NVFIX—受约束边界点数,NFORCE—结点力数,COORD—结构结点坐标数组,LNODS—单元定义数组,YOUNG—弹性模量,POISS—泊松比,THICK—厚度 - 3
FORCE —节点力数组(n,3) n:受力节点数目,(n,1):作用点,(n,2):x方向,(n,3):y方向; FIXED— 约束信息数组(n,3) n:受约束节点数目, (n,1):约束点 (n,2)与(n,3)分别为约束点x方向和y方向的约束情况,受约束为1否则为0 BMATX—单元应变矩阵(3*6), DMATX—单元弹性矩阵(3*3),SMATX—单元应力矩阵(3*6),AREA—单元面积 ASTIF—总体刚度矩阵,ASLOD—总体荷载向量,ASDISP—结点位移向量 FP1—数据文件指针 3 打开文件 FP1=fopen('input.txt','rt'); %打开输入数据文件 存放初始数据 说明: FP1=fopen('input.txt','rt'); - 打开已存在的输入数据文件input.txt,且设置其为只读格式,使程序在执行过程中不能改变输入文件中的数值,并用文件句柄FP1来执行 FP2=fopen('output.txt','wt'); -打开输出数据文件,该文件不存在时,通过此命令创建新文件,该文件存在时则将原有内容全部删除。该文件设置为可写格式,可在程序执行过程中向输出文件写入数据。 %----------------------------------------------------------------------------------------------------- 4 读入程序控制信息 NPION=fscanf(FP1,'%d',1) %结点个数(结点编码总数) NELEM=fscanf(FP1,'%d',1) %单元个数(单元编码总数) NFORCE=fscanf(FP1,'%d',1) %结点荷载个数 NVFIX=fscanf(FP1,'%d',1) %受约束边界点数 YOUNG=fscanf(FP1,'%e',1) %弹性模量 POISS=fscanf(FP1,'%f',1) %泊松比 THICK=fscanf(FP1,'%d',1) %厚度 LNODS=fscanf(FP1,'%d',[3,NELEM])' %单元定义数组(单元结点号) 说明: 建立LNODS矩阵,该矩阵指出了每一单元的连接信息。 矩阵的每一行针对每一单元,共计 NELEM;每一列相应为单元结点号(编码)、按逆时针顺序输入。 命令中,[3,NELEM]’表示读取NELEM行3列数据赋值给LNODS矩阵。 显然,LNODS(i,1:3)依次表示i单元的i,j,k结点号。 COORD=fscanf(FP1,'%f',[2,NPION])' %结点坐标数组 说明: - 4
建立COORD矩阵,该矩阵用来存储各结点x,y方向的坐标值。 从FP1文件中读取全部结点个数NPOIN的坐标值,从1开始按顺序读取。 COORD(i,1:2)表示第i个结点的x,y坐标。 FORCE=fscanf(FP1,'%f',[3,NFORCE])' %结点力数组 说明: (n,3) n:受力结点数目,(n,1):作用点,(n,2):x方向,(n,3):y方向 FIXED=fscanf(FP1,'%d',[3,inf])' %约束信息数组 说明: (n,3) n:受约束节点数目, (n,1):约束点 (n,2)与(n,3)分别为约束点x方向和y 方向的约束情况,受约束为1否则为0 总体说明: 从输入文件FP1中读入结点个数,单元个数,结点荷载个数,受约束边界点数,弹性模量,泊松比,厚度,单元定义数组,结点坐标数组,结点力数组,约束信息数组; 程序中弹性模量仅输入了一个值,表明本程序仅能求解一种材料构成的结构,如:钢筋混凝土结构、钢结构,不能求解钢筋混凝土-钢组合结构。 采用了命令fscanf,其中:’%d’表示读入整数格式,’%f'’表示读入浮点数;1表示读取1个数,[A,B]形式表示读A行B列数组,[A,B]’表示将[A,B]转置,inf表示正无穷。 %----------------------------------------------------------------------------------------------------- 5 调用子程生成单刚,组成总刚并加入约束信息 function ASSEMBLE() %----------------------------------------------------------------------------------------------------- 6 调用子程生成荷载向量 function FORMLOAD() %----------------------------------------------------------------------------------------------------- 7 计算结点位移向量 ASDISP=ASTIF\ASLOD' %----------------------------------------------------------------------------------------------------- 8调用子程计算单元应力 function WRITESTRESS() %******************************************************************* 9 关闭输出数据文件 fclose(FP2);