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 不可压缩计算中的能量守恒

openfoam 不可压缩计算中的能量守恒

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

    各位老师好,

    我最近在用openfoam计算一个简单的强迫振动问题,想要验证能量守恒的关系(Loose Leaf for Modern Compressible Flow With Historical Perspective (John Anderson) )。
    0169b426-c28d-4041-8444-6eea04788e1a-image.png

    fba166db-951d-4db9-9b21-97ebaf2a65da-image.png

    因为我是计算不可压缩的问题,所以能量方程有一定简化。这里我等号左侧第一二项为0(没有热量变化和旋转),左侧最后一项也为0(没有外力)

    模型如下:
    图片1.png

    后面通过输出每个时刻的速度压力场处理公式里的各项,但是结果相差很大,可以说完全不守恒。我以为不可压缩问题天然满足能量守恒公式,结果和算例贴在下面。
    5d56cbb9-09c3-40ef-b4b7-730dbf9f387d-image.png c2case.7z

    这个结果相差一个数量级
    我分析有两个原因,一个是选的能量公式 有误,在openfoam里输出每项的时候有误,所以在comsol里验证了一次,结果和openfoam的相差不大136227fe-398e-4fab-854e-314e72e1ca1f-image.png (后面整理了再贴出来)。如何计算质量守恒和能量守恒 | COMSOL 博客

    感觉很奇怪,想请教各位老师。

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

    替代文字

    这个方程,如果看积分项,就是左边第4个,为什么存在压力的速度对流?不可压缩不存在这个

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

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

    @李东岳
    李老师,这个项我理解是应力张量拆开了。

    66c605bc-ed4b-484a-a5c3-d88bda01f71f-image.png

    我计算的这项就是各个边界上的压力和速度通量。
    另外不可压缩不存在这项的话是否意味着计算结果为0,但我算出来是有值的。
    另外我参考comsol里的能量公式,去掉传热部分应该是一致的。
    https://cn.comsol.com/blogs/how-to-calculate-mass-conservation-and-energy-balance

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

    另外不可压缩不存在这项的话是否意味着计算结果为0,但我算出来是有值的。

    不可压这一项是0,方程就不存在这一项。comsol的压力对流存在值?

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

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

    @李东岳

    我是输出各个边界上的速度压力场自己积分的这一项。代码里是B3,按照这样计算是有非零值的,不知道哪里出了问题。```

       // 计算速度场的梯度  
       scalar rho = 1000; // 流体密度  
       const scalar mu = 1e-3; // 粘性系数 
       tmp<volTensorField> gradUTmp = fvc::grad(U);  
       const volTensorField& gradU = gradUTmp();  
    
        // 初始化总的B3和剪切通量  
       scalar totalB3 = 0.0;  
       scalar totalViscousFlux = 0.0;  
    
       // 遍历所有边界patch  
       forAll(mesh.boundaryMesh(), patchI)  
         {  
    
           const polyPatch& patch = mesh.boundaryMesh()[patchI];  
           word patchName = patch.name(); 
           // 如果对特定的patch感兴趣,可以添加条件检查  
           if ((patchName == "front")||(patchName == "back"))  
             {  
               continue; // 跳过名为"front"或"back"的边界  
             }   
     
    
             // 初始化当前patch的B3和剪切通量  
             scalar B3Patch = 0.0;  
             scalar ViscousFluxPatch = 0.0;  
    
             // 循环遍历patch上的所有面  
             forAll(patch, faceId)  
              {  
                const vector& Sf = patch.faceNormals()[faceId]; // 从patch对象获取归一化法向向量  
                scalar faceArea = mag(patch.faceAreas()[faceId]); // 计算面积向量的模长作为实际面积  
      
                const vector& U_boundary = U.boundaryField()[patchI][faceId];  
                const Tensor<double>& faceGradU = gradU.boundaryField()[patchI][faceId];  
     
               // 计算应力张量(包含法向和切向应力)  
               Tensor<double> stressTensor = mu * (faceGradU + faceGradU.T());  
      
               // 计算壁面剪切应力(只保留切向分量)  
               vector wallShearStress = stressTensor & Sf;  
               wallShearStress -= (wallShearStress & Sf) * Sf / (magSqr(Sf) + VSMALL);  
      
               // 壁面剪切应力与速度的点积  
               scalar wallShearStressDotU = wallShearStress & U_boundary;  
      
               const volScalarField& pressure = mesh.lookupObject<volScalarField>("p");  
               scalar p_boundary = pressure.boundaryField()[patchI][faceId];  
               scalar pressureFlux = p_boundary * (U_boundary & Sf);  
      
               // 根据面积加权的壁面剪切应力与速度的点积以及压力与速度的通量  
               ViscousFluxPatch += faceArea * wallShearStressDotU;  
               B3Patch += faceArea * pressureFlux;  
    	 
    		  }
    
    
              // 输出当前边界上的B3和剪切通量  
              Info << "Patch: " << patchName << ", Integrated B3: " << B3Patch << ", Integrated Viscous Flux: " << ViscousFluxPatch << endl;  
    
              // 将当前patch的B3和剪切通量累加到总和中  
              totalB3 += B3Patch;  
              totalViscousFlux += ViscousFluxPatch;  
         }  
    
              // 输出总的B3和剪切通量  
              Info << "Total Integrated B3 on all patches: " << totalB3 << endl;  
              Info << "Total Integrated Viscous Flux on all patches: " << totalViscousFlux << endl;
    
    1 条回复 最后回复
  • I 离线
    I 离线
    ice_flow
    在 中回复了 李东岳 最后由 编辑
    #6

    @李东岳 在 openfoam 不可压缩计算中的能量守恒 中说:

    替代文字

    这个方程,如果看积分项,就是左边第4个,为什么存在压力的速度对流?不可压缩不存在这个

    老师好,这个公式我又重新检查了,对应的是压力梯度项。
    e55ed270-87e3-4e35-bbad-0902ca8ebab2-image.png
    这部分展开后,在不可压缩流动中,右侧第一项确实是0,但是第二项积分应该不为零。同时我也很难理解,这两项积分后通过高斯公式转换为面积分不应该是相同的式子吗,怎么会有不一样的结果呢。

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

    你那个白色图里面的方程。我看还有能量,那个是可压缩的方程吧?

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

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

    @李东岳 对的,普遍的能量方程推导。可压缩的能量方程应当也适用不可压缩吧,推导完成后我按照不可压缩的连续性方程做了简化,具体在这个贴子https://www.cfd-china.com/topic/7284/%E4%B8%8D%E5%8F%AF%E5%8E%8B%E7%BC%A9%E6%B5%81%E5%8A%A8%E4%B8%AD%E7%9A%84%E8%83%BD%E9%87%8F%E6%96%B9%E7%A8%8B?_=1721812009357

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

    不是太理解你的问题。最好能精简一下你的问题是什么

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

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

    @李东岳 好的我简要描述下问题,就是我按照完整的形式推导了不可压缩流动的能量守恒公式。
    4422b726-0b92-4704-82cd-c145d75dcc1c-image.png 但是案例结果并不满足。
    我对这一项有疑问4326e809-66fe-472b-a04c-686c03c3cb2b-image.png
    我在程序里输出是有值的,但是之前的回复中提到不可压缩流动中应当为零。
    这一项是按照下面这个式子,考虑了速度梯度为零,去掉右边第一项积分来的
    e470d379-bbaf-47b1-ba05-c1afb5d0c8d9-image.png
    我发现这个式子中的三项,积分后的形式都是一致的,感到很困惑。

    1 条回复 最后回复

  • 登录

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