KOF*_*KOF 9 c++ parsing config mesh configuration-files
我正在为特定的流体问题编写CFD解算器。到目前为止,每次运行模拟时都会生成网格,并且当更改几何形状和流体属性时,需要重新编译程序。
对于单元数较少的小型问题,它工作得很好。但是对于细胞数超过一百万的情况,需要非常频繁地更改流体性质,效率很低。
显然,我们需要将模拟设置数据存储在配置文件中,并将几何信息存储在格式化的网格文件中。
% Dimension: 2D or 3D
N_Dimension= 2
% Number of fluid phases
N_Phases= 1
% Fluid density (kg/m3)
Density_Phase1= 1000.0
Density_Phase2= 1.0
% Kinematic viscosity (m^2/s)
Viscosity_Phase1= 1e-6
Viscosity_Phase2= 1.48e-05
...
Run Code Online (Sandbox Code Playgroud)
% Dimension: 2D or 3D
N_Dimension= 2
% Points (index: x, y, z)
N_Points= 100
x0 y0
x1 y1
...
x99 y99
% Faces (Lines in 2D: P1->p2)
N_Faces= 55
0 2
3 4
...
% Cells (polygons in 2D: Cell-Type and Points clock-wise). 6: triangle; 9: quad
N_Cells= 20
9 0 1 6 20
9 1 3 4 7
...
% Boundary Faces (index)
Left_Faces= 4
0
1
2
3
Bottom_Faces= 6
7
8
9
10
11
12
...
Run Code Online (Sandbox Code Playgroud)
将配置和网格信息写入格式化的文本文件很容易。问题是,如何将这些数据有效地读入程序?我想知道是否有任何易于使用的c ++库来完成此工作。
作为仅获得可容忍的东西的第一个迭代解决方案-接受@JosmarBarbosa的建议,并为您的数据类型使用已建立的格式-可能还会有免费的开源库供您使用。一个例子是亚琛工业大学开发的OpenMesh。它支持:
- 表示任意多边形(一般情况)和纯三角形网格(提供更有效的专用算法)
- 顶点,半边,边缘和面的显式表示。
- 快速邻居访问,尤其是单环邻居(请参见下文)。
- [定制]
但是,如果您确实需要加快网格数据的读取速度,请考虑执行以下操作:
最后,您可以避免完全显式读取,而对每个数据文件使用内存映射。看到
注意事项: