用gmsh创建一个立方体、物理分组、网格划分

一、建模

首先我们打开gmsh软件界面应该如下所示

如果需要新建一个文件的话,点击File下的New,按以下步骤操作,存成.geo方便以后使用该模型

下面来创建模型,这里以创建一个正方体为例,讲述了三种方法

1.从点到线到面到体

先选择增加点,

点击Point后会出现下面的界面

在此界面输入你需要的点的坐标,每设置完一个点点击Add,可以从这里查看你创建的点的坐标,如果创建过程中不小心输入了错误的坐标也可以从此处删掉,处理完记得点击Reload script保存

接着输入需要创建一个立方体所需要的八个点的坐标,我这里创建的是长宽高为0.5m的立方体

接着将两个点连接起来创建线

点击line之后回到模型选择点,点击你要选择的点,点击之后点变成红色代表选中,先点击一个点之后再点击一个点,即可完成一条线的创建,其他线创建方式也是如此

为避免创建面的时候出现忘记那个面已经创建过,所以建议创建的线足够构成一个一个面时即可创建一个面,然后再接着创建线,可以构成一个面时再创建一个面,依次类推,直至创建完所有的面

点击plane surface,选中创建一个面所需的四条线,选择完毕后按下e(英文状态下)创建的那个面中会出现一个虚线的十字,代表创建成功,如果在此过程中选择错了可按下q进行取消,其他面的创建方式也是一样

六个面创建完成后,点击Volume后选中每个面中心的十字,即可选中该面

六个面选择完毕后,按下e 就会出现一个小圆球,代表创建完成

2.创建一个面延伸成一个体

先按照上面所说的方法创建一个面,

之后点击extrude下的Transform会出现下面的界面,其中DX,DY,DZ表示向X,Y,Z方向延伸的长度,此处我设置DZ=0.5,即向Z轴延伸0.5m,设置完成后选中该面后,按下e后就会出现一个体形状的模型,然后点击Volume即可创建一个体

 3.直接创建一个体,选中Box后会出现下面的界面。其中X,Y,Z是其左下角的坐标,DX,DY,DZ是其长宽高,设置完成后点击Add,然后点击q即可关闭该界面,再点击Volume即可创建一个体

二、设置物理组

点击Physical groups下的surface(这里我选择的是对面进行分组),会跳出以下界面,输入你要设置的物理组名称,我设置的是surface,在模型中选中你需要的面,选择完毕后按下e,物理组即可设置完成,如果所需的物理组大于等于2,后面的设置方法也是如此

三、网格划分

选中Tools下的Options,即可跳出如此下界面,选择Mesh,点击General,即可在这里设置网格的大小,Element size factor 可调整网格的平均大小,下一行则是用于调整网格的最大最小值

按照需要设置你所需要的网格尺寸,以下是我随便设置的,设置完成后关闭此界面

点击Mesh下的2D(因为这里我用到的是2D网格,按自己所需进行设置)

模型就会被剖分成

四、文件保存

保存成.msh文件

建议保存成以下版本,方便后续使用(因为该版本的数据都是按顺序保存的,方便读取)

保存完毕后打开大概是这个样子的

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OCC是一个开源的CAD内核,可用于三维建模,几何计算,网格处理等。而Gmsh是一个开源的三维有限元网格划分软件,可以用于建立复杂的三维几何模型,并将其转化为有限元网格。因此,我们可以使用OCC创建一个三维几何模型,然后使用Gmsh将其转化为有限元网格。 以下是一个基于OCC和Gmsh网格划分的示例代码: ```python # 导入必要的模块 import OCC.Core.BRepPrimAPI as BPA import OCC.Core.STEPControl as STEP import OCC.Core.GProp as GPROP import OCC.Core.BRepGProp as BGPROP import OCC.Core.TopoDS as TOPODS import OCC.Core.TopExp as TOP_EXP import OCC.Core.TopAbs as TOP_ABS import OCC.Core.BRepTools as BREP_TOOLS import OCC.Core.BRepMesh as BREP_MESH import OCC.Core.GProp as GPROP import OCC.Core.TColgp as TCOLGP import OCC.Core.TopAbs as TOP_ABS import OCC.Display.SimpleGui as SG import gmsh # 创建一个立方体模型 my_box = BPA.BRepPrimAPI_MakeBox(10, 20, 30).Shape() # 将模型保存为STEP格式 step_writer = STEP.STEPControl_Writer() step_writer.Transfer(my_box, STEP.STEPControl_AsIs) step_writer.Write('my_box.stp') # 初始化Gmsh gmsh.initialize() # 导入模型 gmsh.model.occ.importShapes('my_box.stp') # 定义网格大小 mesh_size = 0.5 # 划分网格 gmsh.model.mesh.generate(3) # 获取网格 mesh = gmsh.model.mesh.getNodes(), gmsh.model.mesh.getElements() # 关闭Gmsh gmsh.finalize() ``` 在此示例中,我们首先使用OCC创建了一个立方体模型,并将其保存为STEP格式。然后,我们使用Gmsh导入该模型,并使用`gmsh.model.mesh.generate()`方法将其转化为有限元网格。最后,我们使用`gmsh.model.mesh.getNodes()`和`gmsh.model.mesh.getElements()`方法获取网格的节点和元素信息,并将其存储在`mesh`变量中。 请注意,在使用Gmsh之前,我们需要使用`gmsh.initialize()`方法初始化Gmsh,并在使用完毕后使用`gmsh.finalize()`方法关闭Gmsh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值