如何插值让一个point量等于cell center



  • 大家好,目前遇到一个难题,希望有经验的朋友帮忙解释一下,谢谢。

    const objectRegistry& mesh();
    const volVectorField& U =  mesh().lookupObject<volVectorField>("U");
    const volVectorField& centers = U.mesh().C();
    const point pos; 
    
    pointVectorField pos =  volPointInterpolation::interpolate(centers);
    

    像上面显示的,我调用了mesh的方程,得到每个cell的center。然后想令一个point形式的pos等于这个centers。由于field的类型不同,不知道该怎么做,希望得到帮助。


  • 管理员

    #include "volPointInterpolation.H"
    
    const objectRegistry& mesh();
    const volVectorField& U =  mesh().lookupObject<volVectorField>("U");
    const volVectorField& centers = U.mesh().C();
    
    const volPointInterpolation& pInterp = volPointInterpolation::New(mesh);
    pointVectorField pU(pInterp.interpolate(centers));
    


  • @李东岳 谢谢李老师的回复。我试了一下,但是出现了error,麻烦你给再看一下。

    9452bc11-2dfb-4f00-a344-e4d60bd3b418-image.png

    还有一个问题,您最后的pU是随意命名的,还是只指代速度U?我只是想把碰撞的点固定在网格中心,谢谢。


  • 管理员

    @zhe pU随意命名的。你估计应该用mesh()

    我只是想把碰撞的点固定在网格中心

    这符合物理么?



  • @李东岳 谢谢李老师,我试过mesh(),还是过不了。这相当于一种以cell为计算单位的简化。在一些粒子数量级较大的情况下,可以应用。


Log in to reply
 


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