Gmsh 入门01

#include 

#include 


int main(int argc, char** argv)
{
	gmsh::initialize();		// gmsh 初始化
	gmsh::model::add("t1");	 // add 增加一个 叫 t1 model

	double lc = 1e-2;

	// 创建 [0, 1] X [0, 1] 的正方形区域
	// 创建矩形区域的四个顶点
	gmsh::model::geo::addPoint(0, 0, 0, lc, 1);		// x, y, z, meshSize, tag = 1
	gmsh::model::geo::addPoint(1, 0, 0, lc, 2);		// x, y, z, meshSize, tag = 2
	gmsh::model::geo::addPoint(1, 1, 0, lc, 3);		// x, y, z, meshSize, tag = 3
	gmsh::model::geo::addPoint(0, 1, 0, lc, 4);		// x, y, z, meshSize, tag = 4

	// 创建边
	gmsh::model::geo::addLine(1, 2, 1);				// 1 号边 [1, 2]
	gmsh::model::geo::addLine(2, 3, 2);				// 2 号边 [3, 2]
	gmsh::model::geo::addLine(3, 4, 3);				// 3 号边 [3, 4]
	gmsh::model::geo::addLine(4, 1, 4);				// 4 号边 [4, 1]


	// 创建 surface 实体

	gmsh::model::geo::addCurveLoop({ 4, 1, 2, 3 }, 1); // addCurveLoop 函数用于定义曲线的循环,以便后续生成曲面。
	// 其中 4 1 2 3 // 如果第二条边定义为 3, 2, 节点顺序, 则 4 1 -2 3

	gmsh::model::geo::addPlaneSurface({ 1 }, 1);	// {1} 闭合曲面的集合 1 号曲面,标记为 tag =1

	// 同步几何模型
	gmsh::model::geo::synchronize();

	// 创建物理组并分配标签
	gmsh::model::addPhysicalGroup(1, { 1, 2, 4 }, 5);			 // 1 维物理组,包括曲线 1、2 和 4,标签为 5	// 1 2 4 三条边 tag= 5
	gmsh::model::addPhysicalGroup(2, { 1 }, -1, "My surface");   // 2 维物理组,包括面 1,标签为 -1,名称为 "My surface"; // 将面 1 tag = -1


	gmsh::model::mesh::generate(2);	// 生成二维网格

	// 保存生成的网格文件
	gmsh::write("t1.msh");			// 保存 t1 mesh
	
	// 检查是否需要显示 Gmsh GUI
	std::set<std::string> args(argv, argv + argc);
	if (!args.count("-nopopup"))	 显示 Gmsh GUI
		gmsh::fltk::run();

	gmsh::finalize();				// 结束 Gmsh

}

Gmsh 入门01_第1张图片
Gmsh 入门01_第2张图片

你可能感兴趣的:(图像图形处理,算法)