# ICEMGenerator **Repository Path**: weixinchong/icemgenerator ## Basic Information - **Project Name**: ICEMGenerator - **Description**: 高效的ICEM CFD网格划分Replay Script生成工具,通过简单的几何模型创建及组合指令,生成Replay Script以实现全自动的几何建模与网格划分 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2020-10-01 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ICEMGenerator 当前版本号:0.2.6 ### 介绍 高效的ICEM CFD网格划分Replay Script生成工具,通过简单的几何模型创建及组合指令,生成Replay Script以实现全自动的几何建模与网格划分。软件为开源软件,遵守开源协议:MIT。 ### 程序结构 在ICEM CFD中,网格划分的流程大致包括:创建几何模型(点→线→面→体)→创建Part→【创建Block→在Block内网格预划分→由Block创建Mesh】或【直接创建非结构化四面体网格】→设定边界条件→导出网格msh文件。基于此流程,ICEMGenerator库的结构如下: 1. 几何构建相关模块: + **point**模块(pnt):用于创建点的`Point`类,以及创建多个点的`create_points`函数; + **curve**模块(crv):所有线的超类`Curve`类,用于创建线的`Line`类、创建圆环的`Ring`类和创建弧线的`Arc`类,以及辅助创建直线的`lines_from_points`函数、`create_line`函数; + **surface**模块(srf):用于创建面的`Surface`类,以及辅助创建面的`surface_from_points`函数,创建常见几何面的`create_rectangle`函数和`create_circle`函数; + **body**模块:用于创建体,进行体的合并的`Body`类,以及创建常见几何体的`create_cubic`函数、`create_cylinder`函数、`create_circular`函数; 2. **part**模块:用于创建Part,并为Part赋予边界条件的`Part`类 3. **block**模块:用于创建Block,生成Pre-mesh的`Block`类 4. **mesh**模块:用于创建四面体网格TetraMesh,或者基于Block的Pre-mesh生成非结构化网格 5. **global_control**模块:全局控制模块,实现对整个网格划分过程的全局控制,并最终生成完整的网格划分Replay Script 6. **param_check**模块:声明用户自定义异常,检查输入参数的合理性,并对于不合理的参数抛出异常 ### 使用说明 1. 在创建几何模型的过程中,由于各个几何体涉及的**点**、**线**、**面**可能会出现重叠,应使用类的静态方法`create`创建几何对象,例如`Point.create(...)`、`Arc.create(...)`,该方法会检查要创建的几何对象是否已经创建过,如果已创建过,会直接返回已创建的对象,未创建过则创建,从而避免出现重叠的点、线、面;而对于**体**、**Part**和**Block**,由于其不存在重叠问题,故直接使用类的构造方法创建,例如`Body(...)`、`Block(...)`; 2. 几何模型可以从最原始的点开始创建,也可以调用库中已有的函数,如`create_rectangle`函数、`create_cubic`函数直接创建出目标几何体或者其子几何体,然后通过体的`join`方法将这些几何体合并,得到最终的几何模型; 3. 本库虽然定义了`mesh`模块,但使用`Block`创建结构化网格不需要调用`mesh`模块里的函数,因为在`global_control`中会自动由Block生成mesh; 4. **点**、**线**、**面**可以不给出名称,而**体**、**Part**、**Block**必须给出名称; 5. **点**、**线**、**面**默认从`0`开始编号,如果在执行Replay Script之前,已经在启动的ICEM CFD软件中创建过别的几何体,这时候编号为**0~n**的几何对象已经创建过了,无法在创建和引用编号为**0~n**的几何对象,这是可以通过调用`init_all_Id`函数更新起始编号,如不调用,将会默认从**0**开始编号; 6. 完成整个网格划分流程之后,可以通过调用`replay_all`函数一键生成全流程的Replay Script; 7. 如果要用同一个python脚本生成很多个网格的Replay Script,那么在完成一个网格的生成后,需要调用`clear_all`把所有点线面全部清理掉,此时编号也会默认从0开始; 8. 本库设定的默认Fluent应用程序工作路径为C:/Program Files/ANSYS Inc/v190/icemcfd/win64_amd/icemcfd/output-interfaces/fluent6.exe,如果您的FLuent工作路径并非此路径,可以通过调用`update_fluent_dir`函数更改路径,一般来说路径中只有版本号需要修改,也就是v190那里。