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.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • I 离线
    I 离线
    ice_flow
    写于 最后由 编辑
    #1

    各位老师好,

    我在处理不可压缩能量守恒时,希望通过分析能量守恒中的各项变化来分析能量流动方向,但是碰到几个问题,请大家指导。

    参考《计算流体力学基础及其应用》推导能量方程:

    流体微团的能量变化率=流入的净热流+体积力功率+表面力功率

    体积力

    可以表示为

    6dc331e6-811a-4f40-97c9-ef0ee554662c-image.png

    表面力

    分为正压力和切应力,只考虑一个方向的分量
    c68c4073-d31f-4898-af9a-a82b0a05691e-image.png
    综合三个方向,简化表示为
    ac18d943-5c50-4b36-8a35-464671b1bd05-image.png
    其中第一项表示可逆的做功过程,第二项为粘性耗散。进一步的这两项各可以拆为两项
    d8c0614c-dde7-4803-a193-289e3406a9ef-image.png

    净热流

    分为热源(辐射等)和传导
    bb7cbb38-d7fb-4421-abab-6486263d1e4e-image.png

    能量变化率

    这里取守恒形式,将物质导数展开
    6c234b11-b983-47ef-8e27-20c58902a001-image.png
    所以总的能量方程可写为
    a5620838-c269-4090-b486-85407f635677-image.png
    现在考虑不可压缩流动中,没有外力和热源及温度变化,方程退化为如下形式
    e72e4470-2b65-4998-a858-67a4229aefb4-image.png
    将其化简并展开
    d38c4607-c71e-450d-95c7-33389fb94620-image.png
    这里我们比较动量方程和连续性方程
    57ec8284-53ba-4092-b663-dad4e42c6f51-image.png
    可以消掉能量方程的部分,得到如下表达
    279a02a9-4418-49b1-9c9c-71d5551bd5c6-image.png
    也就是说不可压缩流动中,如果不考虑温度变化,粘性耗散项没有作用是能量守恒的基础。

    那么当我们考虑这样一个具体问题,不可压缩的圆柱涡激振动,能量守恒的物理意义应该如何表达,是否可以写成如下形式
    c0d3956f-c446-4986-a0e4-b3691510587a-image.png
    在全场积分即
    4bbd9597-2f1d-4433-9d63-c54f3e37618f-image.png

    我的问题是:
    1.这个积分式子的物理意义是
    计算域内的能量变化率=所有边界压力功率+所有边界剪切应力功率

    还是说

    计算域内的能量变化率=所有控制体积上的压力功率+所有控制体积上的剪切应力功率

    2.这样就不存在分析各项变化来找到能量流动方向了,主要希望分析流场和结构间的能量流动方向。

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

    计算域内的能量变化率=所有边界压力功率+所有边界剪切应力功率

    计算域内的能量变化率=所有控制体积上的压力功率+所有控制体积上的剪切应力功率

    这个是一样的。这也是FVM是守恒的原因。

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

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

    谢谢老师回复,我通过代码输出每个时间步对应的量,发现并没有守恒性。如果理论推导没有问题,可能代码的对应出错了,麻烦帮我看一下:

    // 计算速度场的梯度  
        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;
    	
    	// 计算域内的能量变化率(仅考虑动能)
        volScalarField kineticEnergy = 0.5 * rho * magSqr(U);
    
        scalar totalKineticEnergyOld = 0.0;
        scalar totalKineticEnergyNew = 0.0;
    
        forAll(kineticEnergy, cellI)
        {
            totalKineticEnergyOld += kineticEnergy.oldTime()[cellI] * mesh.V()[cellI];
            totalKineticEnergyNew += kineticEnergy[cellI] * mesh.V()[cellI];
        }
    
        scalar energyChangeRate = (totalKineticEnergyNew - totalKineticEnergyOld) / runTime.deltaTValue();
    
        Info << "Total Kinetic Energy (old): " << totalKineticEnergyOld << " J" << endl;
        Info << "Total Kinetic Energy (new): " << totalKineticEnergyNew << " J" << endl;
        Info << "Kinetic Energy Change Rate in the domain: " << energyChangeRate << " W" << endl;
    
            runTime.printExecutionTime(Info);
        }
    
    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #4

    信息量太大不好debug,我怀疑是不是正负号写反了。对单一网格离散和对整个计算域离散每个面的面矢量方向不一样。

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

    1 条回复 最后回复

  • 登录

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