如何多进程并行加载OpenFOAM网格数据

时间:2025-03-30 09:24:18

如何多进程并行加载OpenFOAM网格数据

NumberOfFaces !!面元总数
NumberOfCells !!体元总数


nodelist数据

每隔256个面元,记录一下offset值(快速定位+控制offset内存使用量)
以256为粒度,进程并行加载faces.nodelist数据(pread/MPI_File_read_at)

faces.nodelist.offset(NumberOfFaces/256) !!integer(8),bytes=NumberOfFaces/32
faces.nodelist.values                    !!integer(4),bytes~=10*4*NumberOfFaces 

owner/neighbor数据

每隔256个体元(c1/owner,owner有重复),记录offset(快速定位+控制offset内存使用量)
以256为粒度,进程并行加载owner/neighbor数据(pread/MPI_File_read_at)

faces.owner.offset(NumberOfCells/256)  !!integer(8),bytes=NumberOfCells/32
faces.owner                            !!integer(4),bytes=NumberOfFaces*4
faces.neighbor                         !!integer(4),bytes=NumberOfFaces*4 

进程间交换网格数据

//网格数据交换逻辑