什么是离散化网格

什么是离散化网格,第1张

对于连续的物理系统的数学描述,如航天飞机周围的空气的流动,水坝的应力集中等等,通常是用偏微分方程来完成的。为了在计算机上实现对这些物理系统的行为或状态的模拟,连续的方程必须离散化,在方程的求解域上(时间和空间)仅仅需要有限个点,通过计算这些点上的未知变量既而得到整个区域上的物理量的分布。有限差分,有限体积和有限元等数值方法都是通过这种方法来实现的。这些数值方法的非常重要的一个部分就是实现对求解区域的网格剖分。网格剖分技术已经有几十年的发展历史了。到目前为止,结构化网格技术发展得相对比较成熟,而非结构化网格技术由于起步较晚,实现比较困难等方面的原因,现在正在处于逐渐走向成熟的阶段。下面就简要介绍一些这方面的情况。 11结构化网格从严格意义上讲,结构化网格是指网格区域内所有的内部点都具有相同的毗邻单元。结构化网格生成技术有大量的文献资料[1,2,3,4]。结构化网格有很多优点: 1它可以很容易地实现区域的边界拟合,适于流体和表面应力集中等方面的计算。 2网格生成的速度快。 3网格生成的质量好 4数据结构简单 5对曲面或空间的拟合大多数采用参数化或样条插值的方法得到,区域光滑,与实际的模型更容易接近。它的最典型的缺点是适用的范围比较窄。尤其随着近几年的计算机和数值方法的快速发展,人们对求解区域的复杂性的要求越来越高,在这种情况下,结构化网格生成技术就显得力不从心了。结构化网格的生成技术只要有:代数网格生成方法。主要应用参数化和插值的方法,对处理简单的求解区域十分有效。 PDE网格生成方法。主要用于空间曲面网格的生成。 12非结构化网格同结构化网格的定义相对应,非结构化网格是指网格区域内的内部点不具有相同的毗邻单元。即与网格剖分区域内的不同内点相连的网格数目不同。从定义上可以看出,结构化网格和非结构化网格有相互重叠的部分,即非结构化网格中可能会包含结构化网格的部分。非结构化网格技术从六十年代开始得到了发展,主要是弥补结构化网格不能够解决任意形状和任意连通区域的网格剖分的缺欠到90年代时,非结构化网格的文献达到了它的高峰时期由于非结构化网格的生成技术比较复杂,随着人们对求解区域的复杂性的不断提高,对非结构化网格生成技术的要求越来越高从现在的文献调查的情况来看,非结构化网格生成技术中只有平面三角形的自动生成技术比较成熟(边界的恢复问题仍然是一个难题,现在正在广泛讨论),平面四边形网格的生成技术正在走向成熟。而空间任意曲面的三角形、四边形网格的生成,三维任意几何形状实体的四面体网格和六面体网格的生成技术还远远没有达到成熟。需要解决的问题还非常多。主要的困难是从二维到三维以后,待剖分网格的空间区非常复杂,除四面体单元以外,很难生成同一种类型的网格。需要各种网格形式之间的过度,如金字塔形,五面体形等等。 非结构化网格技术的分类,可以根据应用的领域分为应用于差分法的网格生成技术(常常成为grid generation technology)和应用于有限元方法中的网格生成技术(常常成为mesh generation technology),应用于差分计算领域的网格要除了要满足区域的几何形状要求以外,还要满足某些特殊的性质(如垂直正交,与流线平行正交等),因而从技术实现上来说就更困难一些。基于有限元方法的网格生成技术相对非常自由,对生成的网格只要满足一些形状上的要求就可以了。非结构化网格生成技术还可以从生成网格的方法来区分,从现在的文献资料所涉及的情况来看,主要有以下一些生成方法:对平面三角形网格生成方法,比较成熟的是基于Delaunay准则的一类网格剖分方法(如Bowyer-Watson Algorithm和Watson’s Algorithm)和波前法(Advancing Front Triangulation)的网格生成方法。另外还有一种基于梯度网格尺寸的三角形网格生成方法,这一方法现在还在发展当中。基于Delannay准则的网格生成方法的优点是速度快,网格的尺寸比较容易控制。缺点是对边界的恢复比较困难,很可能造成网格生成的失败,对这个问题的解决方法现在正在讨论之中。波前法(Advancing Front Triangulation)的优点是对区域边界拟合的比较好,所以在流体力学等对区域边界要求比较高的情况下,常常采用这种方法。它的缺点是对区域内部的网格生成的质量比较差,生成的速度比较慢。曲面三角形网格生成方法主要有两种,一种是、直接在曲面上生成曲面三角形网格;另外一种是采用结构化和非结构化网格技术偶合的方法,即在平面上生成三角形网格以后再投影到空间的曲面上,这种方法会造成曲面三角形网格的扭曲和局部拉长,因此在平面上必须采用一定的修正技术来保证生成的曲面网格的质量。平面四边形网格的生成方法有两类主要的方法。一类是间接法,即在区域内部先生成三角形网格,然后分别将两个相邻的三角形合并成为一个四边形。生成的四边形的内角很难保证接近直角。所以在采用一些相应的修正方法(如Smooth, add)加以修正。这种方法的优点是首先就得到了区域内的整体的网格尺寸的信息,对四边形网格尺寸梯度的控制一直是四边形网格生成技术的难点。缺点是生成的网格质量相对比较差,需要多次的修正,同时需要首先生成三角形网格,生成的速度也比较慢,程序的工作量大。另外一类是直接法,二维的情况称为铺砖法(paving method)。采用从区域的边界到区域的内部逐层剖分的方法。这种方法到现在已经逐渐替代间接法而称为四边形网格的主要生成方法。它的优点是生成的四边形的网格质量好,对区域边界的拟合比较好,最适合流体力学的计算。缺点是生成的速度慢,程序设计复杂。空间的四边形网格生成方法到现在还是主要采用结构化与非结构化网格相结合的网格生成方法。三维实体的四面体和六面体网格生成方法现在还远远没有达到成熟。部分四面体网格生成器虽然已经达到了使用的阶段,但是对任意几何体的剖分仍然没有解决,现在的解决方法就是采用分区处理的办法,将复杂的几何区域划分为若干个简单的几何区域然后分别剖分再合成。对凹区的处理更是如此。六面体的网格生成技术主要采用的是间接方法,即由四面体网格剖分作为基础,然后生成六面体。这种方法生成的速度比较快,但是生成的网格很难达到完全的六面体,会剩下部分的四面体,四面体和六面体之间需要金字塔形的网格来连接。现在还没有看到比较成熟的直接生成六面体的网格生成方法。其它的网格生成方法:二维到三维投影的网格生成方法:对比较规则的三维区域,首先在平面上生成三角形或四边形网格然后在Map到三维的各个层面,连接各个层面就生成了三维的网格剖分。这种方法目前应用非常广泛。

你提出的问题我之前刚好做过,使用有限元方法来进行桁架结构分析。

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,和最后一个主程序,计算的时候直接运行主程序就可以了。希望能帮助到你。

F2803离散数学与程序设计是计算机专业。

离散数学是为计算机专业量身打造的一门数学,极大地突出了计算机专业的逻辑性、条理性、抽象性,其实不在于知识本身,为编程提供了良好的理论基础和解决问题的一般条件。

由于数字电子计算机是一个离散结构,它只能处理离散的或离散化了的数量关系, 因此,无论计算机科学本身,还是与计算机科学及其应用密切相关的现代科学研究领域,都面临着如何对离散结构建立相应的数学模型。

学科内容

集合论部分:集合及其运算、二元关系与函数、自然数及自然数集、集合的基数。

图论部分:图的基本概念、欧拉图与哈密顿图、树、图的矩阵表示、平面图、图着色、支配集、覆盖集、独立集与匹配、带权图及其应用。

代数结构部分:代数系统的基本概念、半群与独异点、群、环与域、格与布尔代数。

组合数学部分:组合存在性定理、基本的计数公式、组合计数方法、组合计数定理。

1、有限元法(finite element method)是一种高效能、常用的数值计算方法。科学计算领域,常常需要求解各类微分方程,而许多微分方程的解析解一般很难得到,使用有限元法将微分方程离散化后,可以编制程序,使用计算机辅助求解。有限元法在早期是以变分原理为基础发展起来的,所以它广泛地应用于以拉普拉斯方程和泊松方程所描述的各类物理场中(这类场与泛函的极值问题有着紧密的联系)。

2、有限差分法,微分方程的定解问题就是在满足某些定解条件下求微分方程的解。在空间区域的边界上要满足的定解条件称为边值条件。

定解问题往往不具有解析解,或者其解析解不易计算。所以要采用可行的数值解法。有限差分方法就是一种数值解法,它的基本思想是先把问题的定义域进行网格剖分,然后在网格点上,按适当的数值微分公式把定解问题中的微商换成差商。从而把原问题离散化为差分格式,进而求出数值解。此外,还要研究差分格式的解的存在性和唯一性、解的求法、解法的数值稳定性、差分格式的解与原定解问题的真解的误差估计、差分格式的解当网格大小趋于零时是否趋于真解即收敛性,等等。

以上就是关于什么是离散化网格全部的内容,包括:什么是离散化网格、跪求 求解某一桁架或者刚架(随便某一问题的都可以,简单点的也可以)的MATLAB程序,要详细的程序、F2803 离散数学与程序设计是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9838366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存