fluent吧 关注:19,480贴子:98,841
  • 2回复贴,共1

使用udf进行局部初始化

只看楼主收藏回复

本人新手,以下若有问题还请指正
使用workbench进行fluent模块与其他模块双向耦合时遇到了一个问题,就是在fluent中初始化后,再局部初始化以区分水气两相,可以正常生效,但是进入系统耦合,计算完毕后发现只有水没有气体相,也就是局部初始化未生效
b站有两相流双向耦合的案例教程,我对比了发现设置一样,但是我局部初始化始终未生效,试了2019和2024都不行
问了deepseek让我用udf,可以在系统初始化的同时进行局部初始化,研究了一天找到了解决的方法



IP属地:北京来自Android客户端1楼2025-11-24 18:06回复
    #include "udf.h"
    #include "sg_mphase.h"
    #ifndef C_VOF
    #define C_VOF(c,t) C_STORAGE_R(c,t,SV_VOF_N)
    #endif
    DEFINE_INIT(set_phase_by_coordinates, domain)
    {
    cell_t c;
    int cell_count = 0;
    real x_min = 0.0, x_max = 1.0;
    real y_min = 0.0, y_max = 1.0;
    real z_min = 0.0, z_max = 1.0;
    Message("Starting domain-based initialization...\n");
    // 获取混合物域(通常是domain 1)
    Domain *mix_domain = DOMAIN_SUPER_DOMAIN(domain);
    if (mix_domain == NULL)
    {
    mix_domain = domain; // 如果已经是顶级域,使用当前域
    }
    Message("Using domain ID: %d\n", DOMAIN_ID(mix_domain));
    // 遍历混合物域中的所有混合物线程
    Thread *mix_thread;
    thread_loop_c(mix_thread, mix_domain)
    {
    if (!FLUID_THREAD_P(mix_thread)) continue;
    Message("Processing mixture thread ID: %d\n", THREAD_ID(mix_thread));
    // 尝试获取相线程
    Thread *pri_phase = THREAD_SUB_THREAD(mix_thread, 0);
    Thread *sec_phase = THREAD_SUB_THREAD(mix_thread, 1);
    if (pri_phase == NULL || sec_phase == NULL)
    {
    Message(" Cannot get phase threads - may not be multiphase\n");
    continue;
    }
    Message(" Successfully got phase threads\n");
    // 初始化区域内的单元格
    int thread_cell_count = 0;
    begin_c_loop(c, mix_thread)
    {
    real xc[ND_ND];
    C_CENTROID(xc, c, mix_thread);
    if (xc[0] >= x_min && xc[0] <= x_max &&
    xc[1] >= y_min && xc[1] <= y_max &&
    (ND_ND == 2 || (xc[2] >= z_min && xc[2] <= z_max)))
    {
    C_VOF(c, sec_phase) = 1.0;
    C_VOF(c, pri_phase) = 0.0;
    thread_cell_count++;
    }
    }
    end_c_loop(c, mix_thread)
    cell_count += thread_cell_count;
    Message(" Initialized %d cells\n", thread_cell_count);
    }
    Message("Completed: %d cells initialized\n", cell_count);
    }


    IP属地:北京来自Android客户端2楼2025-11-24 18:10
    收起回复