有限元基础编程 |高阶单元计算环形区域惯性矩

公众号、B站[易木木响叮当]
关注可了解更多的有限元数值仿真技巧。问题或建议,请公众号留言;
如果你觉得木木同学对你有帮助,欢迎赞赏。

本次给大家分享的是:如何使用有限元方法近似估计环形区域惯性矩?

主要围绕以下内容进行展开:

  1. 直角坐标-极坐标-等参元坐标的相互转换;
  2. 采用高斯积分法计算惯性矩积分公式;
  3. 粗网格(两个8节点单元)离散计算域;
  4. 细网格(八个8节点单元)离散计算域。

问题描述

采用高斯积分方法计算如下图所示的环形区域相对 轴的惯性矩,计算公式:

有限元基础编程 |高阶单元计算环形区域惯性矩的图1
环形区域

整个区域数值积分计算

从上面的公式可以直观的看到,该积分是对二维区域进行积分,本小节就针对于高斯积分如何在二维区域进行积分详细展开讲讲,后续读者感兴趣,可基于相同的格式扩展至三维。

针对于环形区域,若使用直角坐标计算,积分上下限比较难取,可在极坐标系下进行较为方便的数值积分,也可以再转换到等参元坐标系下,进行高斯积分方法计算,坐标转换示意图如下图所示:

有限元基础编程 |高阶单元计算环形区域惯性矩的图2
坐标转换示意图

直角坐标系向极坐标系转换:

极坐标系向等参元坐标系转换:

大家看到这个公式可能会感到奇怪,以往的书中没有标明两者之间的转换关系,两者的坐标关系式怎么得来的呢?

细心的伙伴不妨再看一下,等参元系的范围是 ,可将其代入上述表达式,得到环形区域的范围。

极坐标系下的二重积分

在极坐标中,环形区域的微元面积 可以表示为 ,得到惯性矩公式:

可进一步计算,

得到惯性矩的值为

等参元坐标系下的高斯积分

在等参元坐标系下,得到惯性矩公式:

进行高斯积分,可得

高斯点布置 方向有两个高斯积分点, 方向有3个高斯积分点,参考一维情况下三点高斯积分点分布及权重:

阶数 高斯点 权重
1 0.0 2.0
2 0.57735027 1.0
3 0.77459667 0.55555556

0.0 0.88888889

带入后,方程可得:

有限元方法离散计算域

如下图所示,左图将环形区域离散为两个8节点单元,右图将环形区域离散为8个8节点单元。以粗网格模型为例,原环形区域的惯性矩可由离散后的区域的惯性矩相加和所得:

有限元基础编程 |高阶单元计算环形区域惯性矩的图3
有限元逼近

两个单元的惯性矩表示为:

对环形区域内的 坐标,用单元节点形函数插值得到:

微元面积 ,可表示为:

将上式代入后,可得到两个单元的惯性矩:

将上述积分进行离散操作:

其中,8节点平面单元形函数:

高斯积分精度

在进行积分点的选择时,需要保持良好的数值精度,数值分析的教材告诉我们:

假设被积函数 的多项式,应 的高斯求积结果是精确的,在应用 个取样点时,实际上就是用 阶的多项式代替被积函数,数值积分结果的精确程度取决于多项式与被积函数曲线的拟合程度

离散后的公式中,形函数是关于 的二次多项式,雅可比行列式由于“偏导操作”,对于 是一阶线性的,故该积分涉及的到的多项式阶次最高位5阶,需要在每个方向上布置3个积分点

Matlab代码

clc
clear
format long e
%
global geom connec nel nne nnd RI RE
%
RI = 40;   % Internal radius
RE = 70;   % External radius
%
Eight_Q8        % Load input data
% Two_Q8
%
%  Number of Gauss points
%
ngp = 3;           % The polynomials involved are of degree 5
%
samp = gauss(ngp);  % Gauss abscissae and weights 
%
%
Ixx = 0.% Initiliase the second moment of area to zero
%
for k=1:nel
    coord = coord_q8(k,nne, geom, connec);   % Retrieve the coordinates of 
                                             % the nodes of element k
    X = coord(:,1);                          % X coordinates of element k
    Y = coord(:,2);                          % Y coordinates of element k
    for i=1:ngp
        xi = samp(i,1);
        WI = samp(i,2);
        for j =1:ngp
        eta = samp(j,1);
        WJ = samp(j,2);
        [der,fun] = fmquad(samp, i,j);  % Form the vector of the shape functions
                                         % and the matrix of their derivatives
        JAC = der*coord;             % Evaluate the Jacobian 
        DET =det(JAC);                % Evaluate determinant of Jacobian matrix                            
        Ixx =Ixx+ (dot(fun,Y))^2*WI*WJ*DET;
        end
    end
end
Ixx

求解结果如下:

精确解 粗网格 细网格
4211700 4205104 4211281

在使用有限元方法逼近的时候,我们可以看到细化后的网格,得出的数值精度会更高一点,若再进一步细化网格,精度会更高。

但若是模型较大时,一味的为了追求精度而增加网格数量,势必会引起计算成本的增加,计算成本与数值精度的取舍,是个值得思考的问题。



本文的主要参考内容及Matlab代码均来自Amar Khennane编写的《Introduction to Finite Element Analysis Using MATLAB and Abaqus》,想要进一步了解有限元编程的小伙伴可以入手,强烈推荐

完整代码可在公众号后台回复:8节点单元,即可自动获取。

本次分享仅限于此了,欢迎大家点赞收藏转发!


谢谢你看完木木同学的分享,今日份阅读花费的流量+1M哈哈哈哈哈哈有限元基础编程 |高阶单元计算环形区域惯性矩的图4



-End-


易木木响叮当

想陪你一起度过短暂且漫长的科研生活

默认 最新
当前暂无评论,小编等你评论哦!
点赞 1 评论 收藏
关注