当前位置: 首页 > news >正文

网站页面组成部分外贸网站 流量

网站页面组成部分,外贸网站 流量,在凡科网申请的网站设置网页访问密码,网站改版 更换域名Gmsh有限元网格剖分(Python)—点、直线、平面的移动和旋转 最近在学习有限元的网格剖分算法#xff0c;主要还是要参考老外的开源Gmsh库进行#xff0c;写一些博客记录下学习过程#xff0c;方便以后回忆嘞。 Gmsh的官方英文文档可以参考#xff1a;gmsh.pdf 但咋就说主要还是要参考老外的开源Gmsh库进行写一些博客记录下学习过程方便以后回忆嘞。 Gmsh的官方英文文档可以参考gmsh.pdf 但咋就说这里面东西太多了不太适合初学者去看因此分享下自己学习的过程吧。 此次记录基于下面博客的内容 Gmsh有限元网格剖分(Python)—任意点、直线、平面的创建 目录 Gmsh有限元网格剖分(Python)---点、直线、平面的移动和旋转1、点、直线、平面的移动1.1 点的移动1.2 线的移动1.3 面的移动1.4 总结 2、点、直线、平面的旋转2.1、点的旋转2.2、线的旋转2.3、线的旋转-旋转图形中的线2.4、面的旋转 1、点、直线、平面的移动 1.1 点的移动 在Gmsh有限元网格剖分(Python)—任意点、直线、平面的创建的代码中额外创建一个点并连线 point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)绘制得到的结果如下 使用下面的命令对新创建的点进行平移其中 ------ [(0, point5_tag)]0是代表移动的是0维的点point5_tag是要移动的点的编号 ------dx、dy、dz是向各个方向平移的距离 kernel.translate([(0, point5_tag)], dx1, dy0, dz0)geo引擎 如果我们使用gmsh自带的kernel gmsh.model.geo引擎可以看到平移后的线依旧连接创建的线会和点一起移动 occ引擎 如果我们使用Open CASCADE的kernel gmsh.model.occ引擎可以看到平移后的线不动只移动单个点 全部代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.translate([(0, point5_tag)], dx1, dy0, dz0)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize() 1.2 线的移动 线的移动基于同样的函数其解释和代码如下 ------ [(1, line5_tag)]1是代表移动的是1维的线line5_tag是要移动的点的编号 ------dx、dy、dz是向各个方向平移的距离 kernel.translate([(1, line5_tag)], dx1, dy0, dz0)occ引擎 如果我们使用Open CASCADE的kernel gmsh.model.occ引擎可以看到实际中线被平移了 geo引擎 如果我们使用gmsh自带的kernel gmsh.model.geo引擎线的移动会改变原有的和线连接的结构总之就是结构全部耦合在一块了 全部代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.translate([(1, line5_tag)], dx1, dy0, dz0)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize() 1.3 面的移动 面的移动基于同样的函数其解释和代码如下将平面向上移动 ------ [(2, surface_tag)]2是代表移动的是2维的面surface_tag是要移动的面的编号 ------dx、dy、dz是向各个方向平移的距离 kernel.translate([(2, surface_tag)], dx0, dy0, dz1)occ引擎 如果我们使用Open CASCADE的kernel gmsh.model.occ引擎可以看到实际中单独的这个面被平移了其余结构没有变化 geo引擎 如果我们使用gmsh自带的kernel gmsh.model.geo引擎面的移动会改变原有的和线连接的结构 代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.translate([(2, surface_tag)], dx0, dy0, dz1)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize() 1.4 总结 kernel gmsh.model.geo时对形状的编辑耦合比较严重 kernel gmsh.model.occ时各个图形隔离度高推荐使用occ引擎 2、点、直线、平面的旋转 2.1、点的旋转 使用下面的函数进行旋转 kernel.rotate([(0, point5_tag)], 1, 1, 0, 0, 0, 1, -math.pi / 2)其中 ------ [(0, point5_tag)]0是代表移动的是0维的点point5_tag是要移动的点的编号 ------1, 1, 0参数代表旋转选择的中心点在坐标(1,1,0) ------0, 0, 1参数代表选择所绕的轴是Z轴 ------(-math.pi / 2)参数表示是顺时针旋转90° occ引擎 如果我们使用Open CASCADE的kernel gmsh.model.occ引擎可以看到只有点被旋转过去了 geo引擎 如果我们使用gmsh自带的kernel gmsh.model.geo引擎可以看到点和点所在的线全部被旋转了 全部代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.rotate([(0, point5_tag)], 1, 1, 0, 0, 0, 1, -math.pi / 2)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize()2.2、线的旋转 使用下面的函数进行旋转 kernel.rotate([(1, line5_tag)], 1, 1, 0, 0, 0, 1, -math.pi / 2)其中 ------ [(1, line5_tag)]1是代表移动的是1维的线line5_tag是要移动的线的编号 ------1, 1, 0参数代表旋转选择的中心点在坐标(1,1,0) ------0, 0, 1参数代表选择所绕的轴是Z轴 ------(-math.pi / 2)参数表示是顺时针旋转90° occ引擎 如果我们使用Open CASCADE的kernel gmsh.model.occ引擎可以看到线和线上的点被成功旋转90° geo引擎 如果我们使用gmsh自带的kernel gmsh.model.geo引擎可以看到线和线上的点被成功旋转90°此时使用两个3维引擎效果是一致的 全部代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.rotate([(1, line5_tag)], 1, 1, 0, 0, 0, 1, -math.pi / 2)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize() 2.3、线的旋转-旋转图形中的线 但是上面我们旋转的线是单独的一根独立的线如果我们选择旋转现有的构成图形的线两个引擎会不会有什么区别呢旋转的目标是下面这个我们想将其逆时针旋转90° occ引擎-实际上是复制并旋转这是为了保持原结构不变 geo引擎-原来边的对应关系也全部改变了逻辑关系比较复杂 代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.rotate([(1, line2_tag)], 0, 1, 0, 0, 0, 1, math.pi / 2)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 # gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize() 2.4、面的旋转 使用下面的函数进行旋转 kernel.rotate([(2, surface_tag)], 0, 0, 0, 0, 0, 1, math.pi / 4)其中 ------ [(2, surface_tag)]1是代表移动的是2维的面surface_tag是要移动的面的编号 ------0, 0 0参数代表旋转选择的中心点在坐标(0,0,0) ------0, 0, 1参数代表选择所绕的轴是Z轴 ------(math.pi / 4)参数表示是逆时针旋转45° occ引擎-可以看到原来的正方形向左滚了45°但是线的位置不变 geo引擎-可以看到原来的正方形向左滚了45°且那线也跟着一起走了结构是耦合的 代码 import mathimport gmsh import sysgmsh.initialize() # 新建模型命名为t1t1指的是整个结构 gmsh.model.add(my_t2)kernel gmsh.model.geo mesh_size 5e-1 point1_tag kernel.addPoint(0, 0, 0, meshSizemesh_size) point2_tag kernel.addPoint(0, 1, 0, meshSizemesh_size) point3_tag kernel.addPoint(1, 0, 0, meshSizemesh_size) point4_tag kernel.addPoint(1, 1, 0, meshSizemesh_size) line1_tag kernel.addLine(point1_tag, point2_tag) line2_tag kernel.addLine(point2_tag, point4_tag) line3_tag kernel.addLine(point4_tag, point3_tag) line4_tag kernel.addLine(point3_tag, point1_tag) curve_loop_tag kernel.addCurveLoop([line1_tag, line2_tag, line3_tag, line4_tag]) surface_tag kernel.addPlaneSurface([curve_loop_tag])point5_tag kernel.addPoint(1, 2, 0, meshSizemesh_size) line5_tag kernel.addLine(point4_tag, point5_tag)kernel.rotate([(2, surface_tag)], 0, 0, 0, 0, 0, 1, math.pi / 4)# GMSH模型同步 kernel.synchronize() # 创建点集合命名为My point gmsh.model.addPhysicalGroup(2, [surface_tag], nameMy Surface)# 2维网格剖分 # gmsh.model.mesh.generate(2) # 保存一下 gmsh.write(my_t1.msh) # 默认启动gui界面 if -nopopup not in sys.argv:gmsh.fltk.run() # 结束gmsh gmsh.finalize()
http://www.tj-hxxt.cn/news/130363.html

相关文章:

  • 安徽集团网站建设wordpress找回密码链接失效
  • 怎样制作一个自己的网站如何提升网站的收录量
  • 化妆品商城网站建设做ps的素材哪个网站
  • 如何在各个购物网站之间做差价市场营销最有效的手段
  • 网网站建设公司网站建设 制作公司
  • 网站开发手把手门户网站建设课程设计
  • 网站建设策划方美工素材网站
  • 上海艺佳建设发展有限公司网站wordpress 文章空格
  • 大连网站制作赞ls15227国家工商网官网登录入口
  • 人才招聘网站建设方案crm外贸管理软件
  • 如何创建网站?wordpress 媒体库外链
  • 网站信息安全建设方案江苏苏中建设集团股份有限公司网站
  • 创建网站app网站建设要考虑哪些内容
  • c 做网站的六大对象店名logo设计在线生成免费
  • 校园网站建设网站工信部icp备案是什么意思
  • 音乐网站建设目标北京网站开发设计
  • 洪都建设集团有限公司网站设计图网址
  • 赶集网网站建设分析自建域名
  • 淄博圻谷网站建设制作安丘做网站的
  • 济南网站建设yigeseo用网站制作自己app软件
  • 高端响应式网站建设青海网站开发公司
  • 榆次做企业网站专业vi机构
  • pc端网站布局仙桃网站制作网站设计
  • 心理网站免费建设网页设计要用什么软件
  • 企业网站用什么做网站设置的参数
  • 甘肃省住房与城乡建设厅网站首页莱芜新闻直播
  • 可以直接进入网站的正能量移动网站有哪些
  • c to c网站开发网络设计目标及设计思想
  • 网站服务器部署宁波黄页网
  • 赣州做网站什么价格网页设计素材与效果图