Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 输出力系数关于速度和压力的偏导

输出力系数关于速度和压力的偏导

已定时 已固定 已锁定 已移动 OpenFOAM
4 帖子 2 发布者 1.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • I 离线
    I 离线
    ice_flow
    写于 最后由 编辑
    #1

    各位老师,我在openfoamv2206环境下希望输出升力系数关于压力和速度的偏导数。文章中的解析公式是这样的
    1510826c-0e35-41b6-9ef3-c71739e1ca85-image.png

    但是我们实际计算中,基本是按照数值积分的方法获得的升力系数,所以我的想法是通过修改src/functionObjects/forces里的的计算来输出这个值。

    void forces::calculateDerivatives()
    {
        scalar deltaU = 1e-6; // 自定义增量
        scalar deltaP = 1e-6; // 自定义增量
    
        // 存储基值
        volVectorField U_baseline = film_.U();
        volScalarField p_baseline = film_.p();
    
        // 计算基力
        vector forceBaseline = this->calcForces();
    
        // 扰动速度并计算力
        film_.U() += vector(deltaU, 0, 0); // 例如:扰动 x 方向的 U
        vector forcePerturbedU = this->calcForces();
        film_.U() = U_baseline; // 恢复原始速度
    
        // 扰动压力并计算力
        film_.p() += deltaP;
        vector forcePerturbedP = this->calcForces();
        film_.p() = p_baseline; // 恢复原始压力
    
        // 计算导数
        vector dFdU = (forcePerturbedU - forceBaseline) / deltaU;
        vector dFdp = (forcePerturbedP - forceBaseline) / deltaP;
    
        Info << "dF/dU: " << dFdU << endl;
        Info << "dF/dp: " << dFdp << endl;
    }
    
    void forces::execute()
    {
        // 执行现有力的计算
        this->calcForces();
        
        // 调用导数计算
        this->calculateDerivatives();
    }
    

    但这样的方法并不能编译通过,想请教有其他方案或者更好的方法吗,谢谢大家。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #2

    编程风格整的挺好,就是不能这么写。你参考这个 http://dyfluid.com/code.html 下面的代码需要放到算例文件的controlDict中执行:

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    I 1 条回复 最后回复
  • I 离线
    I 离线
    ice_flow
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳
    谢谢李老师,我查看了这个链接,好像没有输出导数的。
    我这里希望输出升力系数Cl关于压力p和速度U 的偏导,不是单纯的计算升力系数。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 李东岳 编辑
    #4

    你那个公式里面,没看到导数。你的导数什么样的。

    哦我看到了。你的$r$, $\zeta$不清楚是什么变量。主要是你主楼的代码写法不对。如果你的代码思路对的话,你要改一下用type coded;

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]