专栏/有限元分析(2)-几何体

有限元分析(2)-几何体

2022年05月29日 06:35--浏览 · --点赞 · --评论
粉丝:62文章:12

一、前沿

根据有限元分析(1)讲解的几何体创建,我们只创建了一个长方形。比较简单,本次主要在长方形基础上,拓展形状,使形状更加复杂。

1. 有限元分析(1)形状如下

图1 有限元基础(1)代码画的长方形

统计信息:

图2 图1图形的统计数据

二、构建新的形状

构建的新形状如下:

图3 在图1基础上构建体
图4 图3数据统计:两个体;14个面;30条线;20个点

三、代码

Include "t1.geo";

Point(5) = {0, .4, 0, lc};
Line(5) = {4, 5};
// 点5, 向x轴负方向移动0.02大小
Translate {-0.02, 0, 0} { Point{5}; }
// {0, .4, 0, lc} --> {-0.02, .4, 0, lc}

// 点5 绕着点3 转轴为z 旋转 -Pi/4 角度
Rotate{{0,0,1}, {0,0.3,0}, -Pi/4} { Point{5}; }
// 点3 {0,0.3,0}  转轴z {0,0,1}  转动角 -Pi/4

// 首先复制点3;然后沿着y轴移动0.05
Translate {0, 0.05, 0} { Duplicata{ Point{3}; } }

Line(7) = {3, 6};
Line(8) = {6, 5};
Curve Loop(10) = {5,-8,-7,3};
Plane Surface(11) = {10};

// 首先my_new_surfs是一个列表(方括号)
// 列表存储的是 两个新表面的标签 my_new_surfs[0], my_new_surfs[1]
my_new_surfs[] = Translate {0.12, 0, 0} { Duplicata{ Surface{1,11}; } };
Printf("New surfaces '%g' and '%g'", my_new_surfs[0], my_new_surfs[1]);

Point(100) = {0., 0.3, 0.12, lc};
Point(101) = {0.1, 0.3, 0.12, lc};
Point(102) = {0.1, 0.35, 0.12, lc};
xyz[] = Point{5}; // Get coordinates of point 5
Point(103) = {xyz[0], xyz[1], 0.12, lc};
Line(110) = {4, 100}; Line(111) = {3, 101};
Line(112) = {6, 102}; Line(113) = {5, 103};
Line(114) = {103, 100}; Line(115) = {100, 101};
Line(116) = {101, 102}; Line(117) = {102, 103};
Curve Loop(118) = {115, -111, 3, 110}; Plane Surface(119) = {118};
Curve Loop(120) = {111, 116, -112, -7}; Plane Surface(121) = {120};
Curve Loop(122) = {112, 117, -113, -8}; Plane Surface(123) = {122};
Curve Loop(124) = {114, -110, 5, 113}; Plane Surface(125) = {124};
Curve Loop(126) = {115, 116, 117, 114}; Plane Surface(127) = {126};
Surface Loop(128) = {127, 119, 121, 123, 125, 11};
Volume(129) = {128};

Extrude {0,0,0.12} { Surface{my_new_surfs[1]}; }
//Extrude {0,0,0.12} { Surface{my_new_surfs[0]}; }
//Extrude {0,0,0.12} { Surface{1}; }
MeshSize {103, 105, 109, 102, 28, 24, 6, 5} = lc*3;
Physical Volume("The volume", 1) = {129,130};

四、重点解释

1. Include "t1.geo";

代表将 "t1.geo" 文件中的内容复制到此文件

2. translate 【从这边 搬运 到那边

Translate {-0.02, 0, 0} { Point{5}; }

具体含义:将点5,从原处 搬运到 另外一处, 搬运规则:沿着x轴负方向移动0.02个单位

3. Rotate 【使旋转,转动】

Rotate{{0,0,1}, {0,0.3,0}, -Pi/4} { Point{5}; }

具体含义:将点5 Point{5},进行旋转;规则:旋转轴为Z轴{0,0,1};旋转中心为 {0,0.3,0};旋转角度为 -Pi/4

4. Duplicata 【复制】

Translate {0, 0.05, 0} { Duplicata{ Point{3}; } }

复制点3;然后移动

5. Extrude 【(被)挤压出】

也可以理解为拉伸;创建体

Extrude {0,0,0.12} { Surface{my_new_surfs[1]}; }

将表面my_new_surfs[1]沿着z轴移动0.12后,挤压出体

 五、网格分析

图5 划分的3D网格

六、总结

经过前两节,我们基本上能够创建复杂的几何体,创建几何体的步骤:

点 -- 线(环) -- 面(面环) -- 体

Point -- Line -- Curve Loop -- Plane Surface -- Surface Loop -- Volume

上述建模方式虽然繁琐,但是我们能够知道更多的细节,也是看问题的一种方式。

此外:我们本节还学习了【移动】【旋转】【复制】【挤压】等命令,辅助建模,将如虎添翼。后续将创建更加复杂的模型。

参考文献

  1.  Gmsh官方文档的代码"t2.geo"

  2.  有限元基础(1)



投诉或建议