找回密码
 注册
查看: 3281|回复: 5

如何根据网格节点的计算值插值得到空间内任意点的值?

[复制链接]
发表于 2012-12-26 10:12:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
大家好:
      最近我想自己编个小程序统计Fluent的时域计算结果。(例如,时域计算结果的平均值,统计周期等)。我想统计空间内某一条线上的值,但是线上没有网格节点,所以我想能不能根据线上节点附近的网格节点值插值得到该点的值。我开始尝试使用加权平均的方法(权重为节点到该点的距离的倒数),但是最终得到的结果不太光滑。和CFD-POST中统一直线上的插值结果相比,我用的加权平均法显得不光滑。我想找到一种插值方法能达到CFD-POST中插值的效果。
      望各位高手给予指点。谢啦!

PS:怎么在这论坛里上传图片啊?
未命名.jpg
发表于 2012-12-26 13:46:11 | 显示全部楼层

回复 1# jinzhao_110 的帖子

你这个问题应该是利用离散点绘制连续曲线,你用三次样条做吧,就是用三次样条插值方式,用matlab绘制。做出来的会很光滑。也可以用其他的方式。看一下曲线插值的内容,有很多种。

不过,我觉得光滑性不是主要问题,主要是你计算的结果是正确的。理论上讲,你用样条差值,采用的阶数越高,应该越接近真实曲线。但是,对于实际问题,我建议你做两个或三个对比case,分别用不同大小的网格(都满足网格独立解),用粗的网格插取密的网格中心点的值,进行对比。这样选取出来的插值法最为准确。
 楼主| 发表于 2012-12-26 16:34:33 | 显示全部楼层

回复 2# fty0083 的帖子

谢谢你的回复:
    我想做的事情跟“根据离散点绘制连续曲线”有点区别。Fluent计算结果保存成文本文件都是网格节点或者网格中心的数据值(例如每个节点的pressure和velocity等)。我想要提取计算空间中某条直线上若干点的pressure和velocity数据,来跟实验数据进行对比(实验结果是在计算空间中一条直线上的若干点采集的)。但是这条直线不经过任何计算网格节点,所以我想通过距离这条直线比较近的那些网格节点的数据值来估计这条线上的数据值。
    我估计,我想做的事情可能跟“多元函数插值”有关(猜测的)。但是我看过几本数值分析的书,上面讲插值的部分都只介绍了一元函数的插值方法(拉格朗日,埃米尔特插值等,还有三次样条)。
     请问你了解 “三元函数插值方法”,或者其他的方法吗?
发表于 2012-12-26 22:40:52 | 显示全部楼层

回复 3# jinzhao_110 的帖子

我没做过三元函数差值,你看看matlab里面关于插值的问题吧,应该有很成熟的工具箱。

此外,我是这么想你这个问题的,对于一种函数关系z=f(x,y),dz=(f'x)dx+(f'y)dy。
Z0=f(x0,y0),若Z1=Z0+dz,则 Z1=Z0+(f'x)dx+(f'y)dy=f(x0,y0)+(f'x)dx+(f'y)dy,那么这里关键是如何给定(f'x)和(f'y)。最为直接的应该是可以通过二维泰勒公式,这个你可以查一下。那么如果,你是在找不到的话,应该用泰勒级数差值,这样的结果应该能不错,阶数也可以自己去控制。不过可能会比较麻烦。
 楼主| 发表于 2012-12-27 19:39:16 | 显示全部楼层

回复 4# fty0083 的帖子

谢谢你再次回复。
    经过你的指点,我打算尝试一下用三元函数的泰勒展开来进行插值。
谢啦
发表于 2012-12-27 22:57:53 | 显示全部楼层

回复 5# jinzhao_110 的帖子

今天看了一下matlab,里面有二元函数插值,建议你看一下,matlab里面都有它使用插值的具体方法。用泰勒展开做是很基础的工作了,我看matlab用最小二乘法什么的都可以做,你可以学习一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表