专利名称:适用于CFD的城市街区三维模型构建和网格划分方法及系统
专利类型:发明专利
专利申请号:CN202111510294.9
专利申请(专利权)人:福州大学
权利人地址:福建省福州市闽侯县福州大学城乌龙江北大道2号福州大学
专利发明(设计)人:邬群勇,孙豪宇,汪小钦
专利摘要:本发明涉及一种适用于CFD的城市街区三维模型构建和网格划分方法及系统。该方法:读取含高度属性特征的建筑物矢量数据文件,以白膜形式构建三维场景;采用空间包含关系获取模拟边界几何内所有建筑物的几何特征及高度属性;构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换;采用参数化设计方法封装ICEM CFD几何模型构建相关命令流,实现城市街区三维模型自动构建;采用参数化设计方法封装ICEM CFD非结构化网格划分相关命令流,实现城市街区三维模型非结构化网格划分。
主权利要求:
1.一种适用于CFD的城市街区三维模型构建和网格划分方法,其特征在于,包括如下步骤:步骤S1、读取含高度属性特征的建筑物矢量数据文件,以白膜形式构建三维场景;采用空间包含关系获取模拟边界几何内所有建筑物的几何特征及高度属性;
步骤S2、构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换;
步骤S3、采用参数化设计方法封装ICEMCFD几何模型构建相关命令流,实现城市街区三维模型自动构建;
步骤S4、采用参数化设计方法封装ICEMCFD非结构化网格划分相关命令流,实现城市街区三维模型非结构化网格划分;
所述步骤S2中,构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换,具体步骤如下:步骤S21、以建筑物对象为并行单元,采用缓存线程池技术实现建筑物对象的CPU并行高斯投影正算,采用锁机制保证坐标转换后的建筑物数据线程安全的存储到集合数据结构中;
步骤S22、以建筑物节点为并行单元,所有地理坐标节点数据以集合数据结构进行存储,GPU线程采用一维网格一维块的组织方式,CUDA核函数中编号为i的GPU线程对集合数据结构中索引为i的节点执行高斯投影正算并将坐标转换后的节点数据存储到集合数据结构中索引为i的位置,依据每个建筑物的节点个数将坐标转换后的建筑物数据存储到集合数据结构中;
所述步骤S3中,采用参数化设计方法封装ICEMCFD几何模型构建相关命令流,实现城市街区三维模型自动构建,具体步骤如下:步骤S31、采用参数化设计方法封装ICEMCFD中切换工作目录、创建点、创建边和创建面的参数化方法,方法返回相应的命令流;
步骤S32、调用切换工作目录参数化方法切换工作目录到指定文件系统路径;
步骤S33、对于建筑物Bi遍历其组成节点的空间笛卡尔坐标,调用创建点参数化方法,获取ICEMCFD创建建筑物顶点的命令,以输出流的形式将其写入*.rpl文件;
步骤S34、对于建筑物Bi组织步骤S33创建的顶点,调用创建边参数化方法,获取ICEMCFD创建建筑物边的命令,以输出流的形式将其写入*.rpl文件;
步骤S35、对于建筑物Bi组织步骤S34创建的边,调用创建面参数化方法,获取ICEMCFD创建建筑物面的命令,以输出流的形式将其写入*.rpl文件;
步骤S36、重复执行步骤S33‑S35实现所有建筑物命令自组织;采用系统进程调用方法,ICEMCFD后台执行自组织命令文件*.rpl,实现城市街区三维模型自动构建;
所述步骤S4中,采用参数化设计方法封装ICEMCFD非结构化网格划分相关命令流,实现城市街区三维模型非结构化网格划分,具体步骤如下:步骤S41、采用参数化设计方法封装ICEMCFD中创建计算域、删除所有点和线,设置网格尺寸大小、保存几何模型、非结构化网格计算、光顺网格、保存网格、导出网格文件的参数化方法,方法返回相应的命令;
步骤S42、采用输出流形式将参数化方法返回的命令写入*.rpl文件,采用系统进程调用方法,ICEMCFD后台执行自组织命令文件*.rpl,实现城市街区三维模型非结构化网格划分。
2.一种适用于CFD的城市街区三维模型构建和网格划分系统,其特征在于,包括:数据加载模块,城市建筑物几何特征及属性数据存储shapefile空间数据格式文件中,利用三维GIS技术加载数据到三维场景;
CFD模拟区域交互模块,用于从三维场景中绘制CFD模拟边界,并基于空间包含关系获取模拟区域内所有建筑物数据的几何特征及高度属性特征;
模拟区域数据坐标转换模块,基于构建的CPU/GPU并行高斯投影算法实现交互模块中选择的建筑物地理坐标数据转为适用于CFD三维模型构建的空间笛卡尔坐标数据;
所述模拟区域数据坐标转换模块,具体实现如下:
以建筑物对象为并行单元,采用缓存线程池技术实现建筑物对象的CPU并行高斯投影正算,采用锁机制保证坐标转换后的建筑物数据线程安全的存储到集合数据结构中;
以建筑物节点为并行单元,所有地理坐标节点数据以集合数据结构进行存储,GPU线程采用一维网格一维块的组织方式,CUDA核函数中编号为i的GPU线程对集合数据结构中索引为i的节点执行高斯投影正算并将坐标转换后的节点数据存储到集合数据结构中索引为i的位置,依据每个建筑物的节点个数将坐标转换后的建筑物数据存储到集合数据结构中;
三维模型快速构建及网格划分命令流自组织模块,基于参数化设计方法实现适用于CFD模拟的三维模型及网格划分命令流的自组织;
所述三维模型快速构建及网格划分命令流自组织模块,具体实现如下:
采用参数化设计方法封装ICEMCFD中切换工作目录、创建点、创建边和创建面的参数化方法,方法返回相应的命令流;
调用切换工作目录参数化方法切换工作目录到指定文件系统路径;
对于建筑物Bi遍历其组成节点的空间笛卡尔坐标,调用创建点参数化方法,获取ICEMCFD创建建筑物顶点的命令,以输出流的形式将其写入*.rpl文件;
对于建筑物Bi组织步骤S33创建的顶点,调用创建边参数化方法,获取ICEMCFD创建建筑物边的命令,以输出流的形式将其写入*.rpl文件;
对于建筑物Bi组织步骤S34创建的边,调用创建面参数化方法,获取ICEMCFD创建建筑物面的命令,以输出流的形式将其写入*.rpl文件;
重复执行实现所有建筑物命令自组织;采用系统进程调用方法,ICEMCFD后台执行自组织命令文件*.rpl,实现城市街区三维模型自动构建;
网格文件导出模块,采用系统进程调用方法,ICEMCFD后台执行自组织的命令流文件,将命令流运行结果*.msh文件存储到指定文件系统位置;
所述网格文件导出模块,具体实现如下:
采用参数化设计方法封装ICEMCFD中创建计算域、删除所有点和线,设置网格尺寸大小、保存几何模型、非结构化网格计算、光顺网格、保存网格、导出网格文件的参数化方法,方法返回相应的命令;
采用输出流形式将参数化方法返回的命令写入*.rpl文件,采用系统进程调用方法,ICEMCFD后台执行自组织命令文件*.rpl,实现城市街区三维模型非结构化网格划分。 说明书 : 适用于CFD的城市街区三维模型构建和网格划分方法及系统技术领域[0001] 本发明属于流体动力学与地理信息科学交叉学科的耦合领域,涉及一种适用于CFD的城市街区三维模型构建和网格划分方法及系统,具体涉及三维地理场景构建及建筑物几何特征和高度属性获取,CPU与GPU并行的高斯投影算法实现地理坐标快速投影转换,快速构建适用于CFD城市街区模拟的三维模型及非结构化网格划分的参数化设计方法。背景技术[0002] CFD是近代流体力学,数值数学和计算机科学结合的产物,利用CFD建立研究对象的计算模型,将流体动力学应用于模型上进行计算,可以分析研究流体在该模型上的动力学和热力学行为。随着CFD的快速发展,基于CFD的城市街区相关的数值模拟成为研究热点,但是具有复杂建筑物结构的城市街区三维模型的构建及网格划分占用研究人员大量的时间,导致模拟计算不具有实时性,且对于一些很难完成三维模型构建的复杂城市街区大多采用简化三维模型也导致模拟的局限性问题。发明内容[0003] 本发明的目的在于上述CFD模拟计算的城市街区三维模型构建复杂,耗时巨大,导致模拟实时性差及相关研究受限的不足,提供一种适用于CFD的城市街区三维模型构建和网格划分方法及系统。[0004] 为实现上述目的,本发明的技术方案是:一种适用于CFD的城市街区三维模型构建和网格划分方法,包括如下步骤:[0005] 步骤S1、读取含高度属性特征的建筑物矢量数据文件,以白膜形式构建三维场景;采用空间包含关系获取模拟边界几何内所有建筑物的几何特征及高度属性;[0006] 步骤S2、构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换;[0007] 步骤S3、采用参数化设计方法封装ICEMCFD几何模型构建相关命令流,实现城市街区三维模型自动构建;[0008] 步骤S4、采用参数化设计方法封装ICEMCFD非结构化网格划分相关命令流,实现城市街区三维模型非结构化网格划分。[0009] 在本发明一实施例中,所述步骤S2中,构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换,具体步骤如下:[0010] 步骤S21、以建筑物对象为并行单元,采用缓存线程池技术实现建筑物对象的CPU并行高斯投影正算,采用锁机制保证坐标转换后的建筑物数据线程安全的存储到集合数据结构中;[0011] 步骤S22、以建筑物节点为并行单元,所有地理坐标节点数据以集合数据结构进行存储,GPU线程采用一维网格一维块的组织方式,CUDA核函数中编号为i的GPU线程对集合数据结构中索引为i的节点执行高斯投影正算并将坐标转换后的节点数据存储到集合数据结构中索引为i的位置,依据每个建筑物的节点个数将坐标转换后的建筑物数据存储到集合数据结构中。[0012] 在本发明一实施例中,所述步骤S3中,采用参数化设计方法封装ICEMCFD几何模型构建相关命令流,实现城市街区三维模型自动构建,具体步骤如下:[0013] 步骤S31、采用参数化设计方法封装ICEMCFD中切换工作目录、创建点、创建边和创建面的参数化方法,方法返回相应的命令流;[0014] 步骤S32、调用切换工作目录参数化方法切换工作目录到指定文件系统路径;[0015] 步骤S33、对于建筑物Bi遍历其组成节点的空间笛卡尔坐标,调用创建点参数化方法,获取ICEMCFD创建建筑物顶点的命令,以输出流的形式将其写入*.rpl文件;[0016] 步骤S34、对于建筑物Bi组织步骤S33创建的顶点,调用创建边参数化方法,获取ICEMCFD创建建筑物边的命令,以输出流的形式将其写入*.rpl文件;[0017] 步骤S35、对于建筑物Bi组织步骤S34创建的边,调用创建面参数化方法,获取ICEMCFD创建建筑物面的命令,以输出流的形式将其写入*.rpl文件;[0018] 步骤S36、重复执行步骤S33‑S35实现所有建筑物命令自组织;采用系统进程调用方法,ICEMCFD后台执行自组织命令文件(*.rpl),实现城市街区三维模型自动构建。[0019] 在本发明一实施例中,所述步骤S4中,采用参数化设计方法封装ICEMCFD非结构化网格划分相关命令流,实现城市街区三维模型非结构化网格划分,具体步骤如下:[0020] 步骤S41、采用参数化设计方法封装ICEMCFD中创建计算域、删除所有点和线,设置网格尺寸大小、保存几何模型、非结构化网格计算、光顺网格、保存网格、导出网格文件的参数化方法,方法返回相应的命令;[0021] 步骤S42、采用输出流形式将参数化方法返回的命令写入*.rpl文件,采用系统进程调用方法,ICEMCFD后台执行自组织命令文件*.rpl,实现城市街区三维模型非结构化网格划分。[0022] 本发明还提供了一种适用于CFD的城市街区三维模型构建和网格划分系统,包括:[0023] 数据加载模块,城市建筑物几何特征及属性数据存储shapefile空间数据格式文件中,利用三维GIS技术加载数据到三维场景;[0024] CFD模拟区域交互模块,用于从三维场景中绘制CFD模拟边界,并基于空间包含关系获取模拟区域内所有建筑物数据的几何特征及高度属性特征;[0025] 模拟区域数据坐标转换模块,基于构建的CPU/GPU并行高斯投影算法实现交互模块中选择的建筑物地理坐标数据转为适用于CFD三维模型构建的空间笛卡尔坐标数据;[0026] 三维模型快速构建及网格划分命令流自组织模块,基于参数化设计方法实现适用于CFD模拟的三维模型及网格划分命令流的自组织;[0027] 网格文件导出模块,采用系统进程调用方法,ICEMCFD后台执行自组织的命令流文件,将命令流运行结果(*.msh文件)存储到指定文件系统位置。[0028] 相较于现有技术,本发明具有以下有益效果:本发明能够克服现有CFD模拟计算的城市街区三维模型构建复杂,耗时巨大,导致模拟实时性差及相关研究受限的不足,实现了快速构建适用于CFD城市街区模拟的三维模型及非结构化网格划分。附图说明[0029] 图1是本发明一种适用于CFD模拟计算的城市街区三维模型快速构建和网格划分方法整体流程示意图;[0030] 图2是建筑物组成要素示意图。[0031] 图3是建筑物地理坐标CPU并行投影算法流程示意图;[0032] 图4是建筑物地理坐标GPU并行投影算法流程示意图;[0033] 图5是城市街区三维模型自动构建方法流程示意图;[0034] 图6是某个建筑物构建的完整自组织命令流示意图;[0035] 图7是城市街区模拟区域示意图;[0036] 图8是城市街区模拟区域三维模型自动构建结果图;[0037] 图9是城市街区模拟区域三维模型非结构化网格划分构建局部结果图。具体实施方式[0038] 下面结合附图,对本发明的技术方案进行具体说明。[0039] 本发明一种适用于CFD的城市街区三维模型构建和网格划分方法,包括如下步骤:[0040] 步骤S1、读取含高度属性特征的建筑物矢量数据文件,以白膜形式构建三维场景;采用空间包含关系获取模拟边界几何内所有建筑物的几何特征及高度属性;[0041] 步骤S2、构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换;[0042] 步骤S3、采用参数化设计方法封装ICEMCFD几何模型构建相关命令流,实现城市街区三维模型自动构建;[0043] 步骤S4、采用参数化设计方法封装ICEMCFD非结构化网格划分相关命令流,实现城市街区三维模型非结构化网格划分。[0044] 本发明还提供了一种适用于CFD的城市街区三维模型构建和网格划分系统,包括:[0045] 数据加载模块,城市建筑物几何特征及属性数据存储shapefile空间数据格式文件中,利用三维GIS技术加载数据到三维场景;[0046] CFD模拟区域交互模块,用于从三维场景中绘制CFD模拟边界,并基于空间包含关系获取模拟区域内所有建筑物数据的几何特征及高度属性特征;[0047] 模拟区域数据坐标转换模块,基于构建的CPU/GPU并行高斯投影算法实现交互模块中选择的建筑物地理坐标数据转为适用于CFD三维模型构建的空间笛卡尔坐标数据;[0048] 三维模型快速构建及网格划分命令流自组织模块,基于参数化设计方法实现适用于CFD模拟的三维模型及网格划分命令流的自组织;[0049] 网格文件导出模块,采用系统进程调用方法,ICEMCFD后台执行自组织的命令流文件,将命令流运行结果(*.msh文件)存储到指定文件系统位置。[0050] 以下为本发明具体实现过程。[0051] 运行电脑为WIN1064位操作系统,CPU与GPU硬件相关参数信息如下表所示:[0052][0053] 请参照图1算法流程,本发明提供一种适用于CFD模拟计算的城市街区三维模型快速构建和网格划分方法。以如图7所示,福州市某区域为模拟研究区域,该研究区域内有659个建筑物,4237个底面顶点,具体实施方式如下:[0054] 步骤S1、读取含高度属性的建筑物矢量数据文件,以白膜形式构建三维场景。采用空间包含关系获取模拟边界几何内所有建筑物的几何特征及高度属性。本发明简化建筑物是由顶点、边、面组成的规则立方体,建筑物相关组成要素如图2所示,其中建筑物顶点包括顶面顶点和底面顶点,顶面顶点坐标的高度维即为高度属性值,而底面顶点坐标的高度维值为0。[0055] 步骤S2、构建CPU/GPU并行的高斯投影转换算法,实现模拟边界内建筑物几何特征的地理坐标到空间笛卡尔坐标的快速转换。[0056] 1、参照图3所示,以建筑物对象为并行单元,采用缓存线程池技术实现建筑物对象的CPU并行高斯投影正算,采用锁机制保证坐标转换后的建筑物数据线程安全的存储到集合数据结构中。如图7所示模拟区域采用CPU串行算法实现投影正算耗时4162.576秒(69.4分钟),采用CPU并行算法实现投影正算耗时314.871秒(5.2分钟),效率提升近13.3倍。[0057] 2、参照图4所示,以建筑物节点为并行单元,所有地理坐标节点数据以集合数据结构进行存储,GPU线程采用一维网格一维块的组织方式,CUDA核函数中编号为i的GPU线程对集合数据结构中索引为i的节点执行高斯投影正算并将坐标转换后的节点数据存储到集合数据结构中索引为i的位置,依据每个建筑物的节点个数将坐标转换后的建筑物数据存储到集合数据结构中。如图7所示模拟区域采用GPU并行算法实现投影正算耗时170.277秒(2.8分钟),相比CPU串行效率提升近25倍,相比CPU并行效率提升2倍,这是相当可观的效率提升,大大缩短了计算耗时。[0058] 步骤S3、参照图5所示,采用参数化设计方法封装ICEMCFD几何模型构建相关命令流,实现城市街区三维模型自动构建。[0059] 1、采用参数化设计方法封装ICEMCFD中切换工作目录、创建点、创建边和创建面的参数化方法,方法返回相应的命令流。[0060] 2、调用切换工作目录参数化方法切换工作目录到指定文件系统路径。[0061] 3、对于建筑物Bi遍历其组成节点的空间笛卡尔坐标,调用创建点参数化方法,获取ICEMCFD创建建筑物顶点的命令,以输出流的形式将其写入*.rpl文件,顶点命名规则为building_i_pnt_j(其中i和j为数值,代表第i个建筑物的第j个顶点),j取值从1开始按照顺时针方向从顶面顶点到底面顶点依次递增。[0062] 4、对于建筑物Bi依据步骤S33创建顶点的命令规则,调用创建边参数化方法,获取ICEMCFD创建建筑物边的命令,以输出流的形式将其写入*.rpl文件,边的命名规则为building_i_crv_j(其中i和j为数值,代表第i个建筑物的第j条边),j取值从1开始按照顺时针方向从顶面边到底面边再到外围边依次递增。[0063] 5、对于建筑物Bi依据步骤S34创建边的命令规则,调用创建面参数化方法,获取ICEMCFD创建建筑物面的命令,以输出流的形式将其写入*.rpl文件,面的命名规则为building_i_srf_j(其中i和j为数值,代表第i个建筑物的第j个面)[0064] 6、重复执行步骤3‑5实现所有建筑物命令自组织,图6展示某个建筑物构建的完整自组织命令。采用系统进程调用方法,ICEMCFD后台执行自组织命令文件(*.rpl),实现城市街区三维模型自动构建。图7研究区域自动生成城市街区三维模型结果如图8所示。[0065] 步骤S4、采用参数化设计方法封装ICEMCFD中创建计算域、删除所有线、设置网格尺寸大小、保存几何模型、非结构化网格计算、光顺网格、保存网格、导出网格文件的参数化方法,方法返回相应的命令。采用输出流形式将参数化方法返回的命令写入*.rpl文件,采用系统进程调用方法,ICEMCFD后台执行自组织命令文件*.rpl,实现城市街区三维模型非结构化网格划分。图7研究区域自动生成城市街区三维模型的局部网格划分结果如图9所示。[0066] 以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
专利地区:福建
专利申请日期:2021-12-11
专利公开日期:2024-07-26
专利公告号:CN114139471B