在时间上系综平均的functionObject



  • 有大神知道OpenFOAM里面时间上的系综平均怎么弄吗?

    比如我跑一个非稳态的算例,跑到100步停。但是我每次从头开始跑到100步,物理场(比如U)结果都是不一样的(因为用的是蒙特卡洛方法)。
    为了减小统计噪音,我需要这样跑10000次(每次从头开始跑100步),然后把这10000个结果平均一下(10000个U场相加除以10000)。

    有没有什么functionObject可以比较方便的实现这个功能?

    我查到从OF30开始有个fieldValue的functionObject有个 ensemble average选项(的。https://github.com/OpenFOAM/OpenFOAM-3.0.x/blob/4b5e129783d9bea7ea00a617b6ee3b73b0f308e4/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H#L97 ),但是感觉不是我想要的(可能那个是空间上的简单平均,就是不带cell volume加权的平均)。



  • 不知道fieldAverage是不是你需要的functionObject



  • 非常感谢谢你的回复。

    不过我感觉单独这个fieldAverage并不能实现我要的功能。不过后来我的想法是写个functionObject每隔100步就触发一次重置初始场,然后再用一个fieldAverage每隔100步就触发一次,把当前步的场跟之前的average field合起来平均,并且它的window设成1,resetOnOutput设为false。



  • 跑10000次(每次从头开始跑100步),然后把这10000个结果平均一下(10000个U场相加除以10000)。

    为什么不直接跑100次,每次100布,获得100布的速度,然后写个后处理小程序处理一下?这样是不是更简单。虽然看起来比较low:cheeky:



  • @cfd-china 确实很实用,用一次的东西就应该这样搞!:cheeky:


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1