当前位置: 首页 > 工具软件 > Gmsh > 使用案例 >

GMSH 使用 Tutorial-2

毋树
2023-12-01

Tutorial-2

将改方法使用传入参数后就像使用 gmsh 一样使用参数执行文件

	gmsh::initialize(argc, argv);

gmsh 还提供了复制实体的方式,通过传入{维度,tag}, 向某个方向的 dx dy dz 偏移来复制实体

	gmsh::model::geo::translate({{0, 5}}, -0.02, 0, 0);

gmsh 还可以使得实体绕某点以某向量旋转

	gmsh::model::geo::rotate({{0, 5}}, 0, 0.3, 0, 0, 0, 1, -M_PI / 4);

gmsh 还可以直接使用 copy 进行复制,效果等同于使用 translate 方法将在 y 轴方向右移 0.05 复制一个实体,返回复制实体的 {dim, tag}

	std::vector<std::pair<int, int> > ov;
  	gmsh::model::geo::copy({{0, 3}}, ov);
  	gmsh::model::geo::translate(ov, 0, 0.05, 0);

Volume 体是 gmsh 定义的第四种实体,就行需要定义定于曲线循环来构建面,需要定义曲面环(又称之为 shells 壳)来构建体

 	std::vector<double> xyz;
  	gmsh::model::getValue(0, 5, {}, xyz); # 复制坐标
  	
	gmsh::model::geo::addLine(4, 100, 110);
	...
	
	gmsh::model::geo::addCurveLoop({115, -111, 3, 110}, 118);
	gmsh::model::geo::addPlaneSurface({118}, 119);
	...

	gmsh::model::geo::addSurfaceLoop({127, 119, 121, 123, 125, 11}, 128);
	gmsh::model::geo::addVolume({128}, 129);

通过 extrude 方法,我们可以从二维面上沿着 dx,dy,dz 方向拉伸出一个体积

	std::vector<std::pair<int, int> > ov2;
  	gmsh::model::geo::extrude({ov[1]}, 0, 0, 0.12, ov2);

通过 mesh::setSize 可以再次设定 mesh 生成的网格大小

	gmsh::model::geo::mesh::setSize({{0, 103}, {0, 5}}, lc * 3);

添加物理组后只会在物理组上生成网格

  	gmsh::model::addPhysicalGroup(3, {129, 130}, 1);
  	gmsh::model::setPhysicalName(3, 1, "The volume");
  	gmsh::model::geo::synchronize();
  	gmsh::model::mesh::generate(3);
  	gmsh::write("t2.msh");

另外文档说明了可以生成 “平面几何” 的文件,在某些情况下有用

	gmsh::write("t2.geo_unrolled"); # Built-in 内核
	gmsh::write("t2.brep"); # OpenCASCADE 内核

参考

GMSH 教程

 类似资料: