waterr_firre 2025-06-15 21:32 采纳率: 0%
浏览 14

计算流体力学问题请教

计算流体力学问题请教

您好,我最近也在做计算流体力学课程报告。要求解的也是sod激波管问题。我想请教您几个细节:
我是采用FVS中的Steger-Warming方法对通量进行分裂的,然后我打算采用TVD、GVC、WENO三种方法构造差分格式。您在
https://blog.csdn.net/Nidebear/article/details/109300513”
这篇文章WENO部分提到,对于正通量,应采用正形式WENO,对于负通量,应采用正形式WENO。我想请问,对于TVD、GVC两种差分格式,是不是也要类此正负分开?这两种格式的正负形式分别都是什么?
特别感谢您花时间解答我的问题。我可以给您50元红包以作感谢(接受议价,我不清楚具体需要给您多少)。我的微信号13623218107.如果您方便可以加我微信,我给您报酬。

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-06-15 21:41
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    计算流体力学问题请教

    你好!我很高兴能够帮助你解决计算流体力学问题。

    首先,Steger-Warming方法是一种常用的通量分裂方法,可以用于计算流体力学问题。TVD(Total Variation Diminishing)是一种流体力学中常用的差分方法,可以用于解决激波问题。

    在使用Steger-Warming方法时,你需要注意的是,需要根据具体的物理问题和计算域选择合适的通量分裂方法。同时,也需要注意的是,Steger-Warming方法可能会导致计算结果的不稳定性,因此需要对计算结果进行适当的处理。

    在使用TVD方法时,你需要注意的是,需要根据具体的物理问题和计算域选择合适的差分方法。同时,也需要注意的是,TVD方法可能会导致计算结果的不稳定性,因此需要对计算结果进行适当的处理。

    如果你需要更多的帮助,可以提供更多的信息,例如计算域、边界条件、初始条件等。

    代码示例

    以下是一个使用Steger-Warming方法和TVD方法计算激波问题的简单示例代码:

    % 定义计算域
    x = 0:0.1:1;
    y = 0:0.1:1;
    [X, Y] = meshgrid(x, y);
    
    % 定义初始条件
    rho = 1;
    u = 1;
    v = 0;
    
    % 定义边界条件
    rho_left = 1;
    u_left = 1;
    v_left = 0;
    rho_right = 2;
    u_right = 2;
    v_right = 0;
    
    % 定义时间步长
    dt = 0.001;
    
    % 定义计算步数
    n_steps = 1000;
    
    % 使用Steger-Warming方法对通量进行分裂
    for i = 1:n_steps
        % 计算通量
        flux_x = StegerWarming(rho, u, v, dt);
        flux_y = StegerWarming(rho, u, v, dt);
        
        % 使用TVD方法计算差分
        d_rho = TVD(rho, u, v, dt);
        d_u = TVD(u, u, v, dt);
        d_v = TVD(v, u, v, dt);
        
        % 更新计算结果
        rho = rho + d_rho;
        u = u + d_u;
        v = v + d_v;
    end
    
    % 可视化计算结果
    surf(X, Y, rho);
    

    请注意,这只是一个简单的示例代码,实际计算中需要根据具体的物理问题和计算域进行修改和优化。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月15日