OpenFOAM v10:如何仅通过命令行将仿真数据导出为.csv文件
在OpenFOAM v10中通过命令行导出仿真数据为CSV文件的方法
完全可行,无需打开Paraview GUI,以下是两种常用实现方式:
方法一:使用OpenFOAM自带的sample工具
纯OpenFOAM工具链实现,无需依赖Paraview:
- 在案例的
system目录下创建sampleDict配置文件,内容如下:
sampleDict { type surfaces; libs ("libsampling.so"); writeControl timeStep; writeInterval 1; surfaces ( fullMeshData { type patch; patches (internalMesh); interpolationScheme cellPoint; outputFormat csv; fields (U p); } ); }
- 在案例根目录运行命令,指定要导出的时间步:
sample -time 50
执行完成后,数据会生成在postProcessing/surfaces/50目录下,包含fullMeshData_U.csv和fullMeshData_p.csv。若需要将U和p合并为单个CSV(和你手动导出的格式一致),可以用Shell脚本合并,示例:
paste -d ',' postProcessing/surfaces/50/fullMeshData_U.csv postProcessing/surfaces/50/fullMeshData_p.csv | awk 'NR==1{print "\"Points:0\",\"Points:1\",\"Points:2\",\"U:0\",\"U:1\",\"U:2\",\"p\""} NR>1{print $1","$2","$3","$4","$5","$6","$10}' > merged_output.csv
方法二:使用Paraview批处理模式(pvbatch)
导出格式和手动操作Paraview的结果完全一致,无需额外处理:
- 创建Python脚本
export_csv.py,内容如下:
from paraview.simple import * # 加载当前目录的OpenFOAM案例 foam_case = OpenFOAMReader(FileName="./") foam_case.CaseType = "Reconstructed Case" # 并行分解案例改为"Decomposed Case" foam_case.MeshRegions = ["internalMesh"] foam_case.PointArrays = ["U", "p"] # 切换到目标时间步 foam_case.UpdatePipeline(50.0) # 导出为CSV,设置精度 SaveData("simulation_output.csv", proxy=foam_case, Precision=5)
- 在案例根目录运行命令:
pvbatch export_csv.py
执行后会在当前目录生成simulation_output.csv,格式与你手动导出的完全匹配。
内容的提问来源于stack exchange,提问作者Krisztian Szabo
相关产品推荐
相关产品推荐

