请教如何只提取某处的液面高度时程图,就像实验放置在水槽中的wave height probe那样
-
1.在paraview中可以提取某时刻的液面高度:contour设置alpha=0.5,做slice然后从spreadsheet中可以看到并且输出液面高度数据, 假定长方体水槽,那么输出数据是xy,x为水槽长度坐标,y为液面高度坐标,如下图:
2.假如只想得到水槽正中间液面高度随时间的变化,比如水槽长1m,按上述办法,可以选取很多时间步,t=0.1s, 0.2s, 0.3s...在每个时间步里做1的操作,把x=0.5m处的y记录下来,最后就能得到所要的水槽正中间x=0.5m处液面高度随时间的变化 y-t;
3.还有的办法是使用sample办法,在水槽中间定义取值的线, 得到每个时间步线上的alpha值,然后处理得到alpha=0.5的点坐标,把点坐标的y取出来,也能得到 y-t, 如CFD Oline2009年的帖子:https://www.cfd-online.com/Forums/openfoam-post-processing/64462-how-monitor-free-surface-elevation-vs-time.html但2,3的操作工作量很大,不知道现在有没有提取工具可以直接提取呢,比如定义水槽中间x=0.5(长度方向), z=0.1(宽度方向)处,在每个时间步里提取alpha=0.5的y值,这样子就很快速能得到y-t。但是没有找到类似的方法,这里请教一下大家,谢谢!
-
@xiezhuoyu 做了测试,interfaceHeight确实好用,可以直接将下述代码放置到controlDict中,即可实现功能,点坐标可以改为自己要监测的位置,
functions { interfaceHeight1 { type interfaceHeight; libs ("libfieldFunctionObjects.so"); alpha alpha.water; locations ((0 0 0) (0.5 0 0) (1.0 0 0)); } }
代码功能解释可参考链接: https://cpp.openfoam.org/v6/classFoam_1_1functionObjects_1_1interfaceHeight.html
希望对大家有帮助,谢谢!