Gmsh 入门01

#include <set>

#include <gmsh.h>


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

}

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值