24小时热门版块排行榜    

查看: 1070  |  回复: 2
【悬赏金币】回答本帖问题,作者113745685将赠送您 50 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

113745685

金虫 (正式写手)

[求助] 求助:UDF的MASS_TRANSFER并行运算的问题!!!

请问各位大佬,我想用UDF实现fluent的一个蒸发冷凝模型,以替代现有的Lee模型(复现论文10.1016/j.ijheatmasstransfer.2019.118763的工作)。程序如下,串行的程序我弄出来了,但是并行的程序我不会搞,每次初始化都提示:MPI Application rank 0 exited before MPI_Finalize() with status 2.  The fl process could not be started.
UDM的内存位置也指定了,但是不知道为什么还是有这个问题,是程序哪里错了吗?如果有大佬能指出问题所在,在下愿意献上50个金币。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
#include "udf.h"

DEFINE_MASS_TRANSFER(liq_gas_source, cell, thread, from_index, from_species_index, to_index, to_species_index)
{
        real m_lg=0.0;
        real T_SAT = 318.0;
        real T_Ti = 16.2;
        real be = 0.1;
        real bc = 10;
#if !RP_HOST
        Thread *gas, *liq;
        liq = THREAD_SUB_THREAD(thread, from_index);
        gas = THREAD_SUB_THREAD(thread, to_index);

        C_UDMI(cell, thread, 1) = 0.;
        C_UDMI(cell, thread, 2) = 0.;

        if (C_T(cell, liq) > T_SAT + T_Ti)
        {
                m_lg = be*C_VOF(cell, liq)*C_R(cell, liq)*(C_T(cell, liq) - T_SAT) / T_SAT;   /*Evaporation*/
                C_UDMI(cell, thread, 1) = m_lg * 2455.e3;
        }

        else if (C_T(cell, liq) > T_SAT&&C_T(cell, liq) < T_SAT + T_Ti)
        {
                if (C_VOF(cell, liq) == 1)
                {
                        m_lg = 0.0;                                          /*Neither evaporation nor condensing*/
                }
                else if (C_VOF(cell, liq) != 1)
                {
                        m_lg = be*C_VOF(cell, liq)*C_R(cell, liq)*(C_T(cell, liq) - T_SAT) / T_SAT;    /*Evaporation*/
                        C_UDMI(cell, thread, 1) = m_lg * 2455.e3;
                }
        }

        else if (C_T(cell, gas) < T_SAT)
        {
                m_lg = bc*C_VOF(cell, gas)*C_R(cell, gas)*(C_T(cell, gas) - T_SAT) / T_SAT;   /*Condensing*/
                C_UDMI(cell, thread, 2) = -m_lg * 2455.e3;
        }
#if RP_NODE
        m_lg = PRF_GRSUM1(m_lg);
#endif
node_to_host_real_1(m_lg);
#endif
                return(m_lg);
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

113745685

金虫 (正式写手)

再更新一次,我找到问题了。UMD应该从C_UDMI(cell, thread, 0)开始,而不是从C_UDMI(cell, thread, 1)开始。
3楼2022-12-06 22:06:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

113745685

金虫 (正式写手)

更新,我改了一下程序。注释掉了和C_UDMI有关的程序,结果就能并行运算了,问题是我在fluent里已经定义了C_UDMI的位置了,为什么还会报错,有没有大佬能解答一下?
----------------------------------------------------------------------------------------------------------------------------------
#include "udf.h"

DEFINE_MASS_TRANSFER(liq_gas_source, cell, thread, from_index, from_species_index, to_index, to_species_index)
{
        real m_lg;
        real T_SAT = 318.0;
        real T_Ti = 16.2;
        real be = 0.1;
        real bc = 10;
        Thread *gas, *liq;
        liq = THREAD_SUB_THREAD(thread, from_index);
        gas = THREAD_SUB_THREAD(thread, to_index);
        m_lg = 0.0;

        /*C_UDMI(cell, thread, 1) = 0.;*/
        /*C_UDMI(cell, thread, 2) = 0.;*/

        if (C_T(cell, liq) > T_SAT + T_Ti)
        {
                m_lg = be*C_VOF(cell, liq)*C_R(cell, liq)*(C_T(cell, liq) - T_SAT) / T_SAT;   /*Evaporation*/
                C_UDMI(cell, thread, 1) = m_lg * 2455.e3;
        }

        else if (C_T(cell, liq) > T_SAT&&C_T(cell, liq) < T_SAT + T_Ti)
        {
                if (C_VOF(cell, liq) == 1)
                {
                        m_lg = 0.0;                                          /*Neither evaporation nor condensing*/
                }
                else if (C_VOF(cell, liq) != 1)
                {
                        m_lg = be*C_VOF(cell, liq)*C_R(cell, liq)*(C_T(cell, liq) - T_SAT) / T_SAT;    /*Evaporation*/
                        /*C_UDMI(cell, thread, 1) = m_lg * 2455.e3;*/
                }
        }

        else if (C_T(cell, gas) < T_SAT)
        {
                m_lg = bc*C_VOF(cell, gas)*C_R(cell, gas)*(C_T(cell, gas) - T_SAT) / T_SAT;   /*Condensing*/
                /*C_UDMI(cell, thread, 2) = -m_lg * 2455.e3;*/
        }

        return(m_lg);
}
2楼2022-12-05 22:39:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[文学芳草园] 伙伴们,祝我生日快乐吧 +15 myrtle 2026-03-10 24/1200 2026-03-15 21:16 by 苏州_逗号
[考研] 268求调剂 +5 一定有学上- 2026-03-14 6/300 2026-03-14 22:20 by 运气yunqi
[考研] 材料与化工(0856)304求B区调剂 +7 邱gl 2026-03-10 11/550 2026-03-14 12:18 by 邱gl
[考研] 一志愿天大化工(085600)调剂总分338 +6 蔡大美女 2026-03-09 6/300 2026-03-14 02:46 by JourneyLucky
[考研] 288求调剂 +14 王晓阳- 2026-03-09 19/950 2026-03-14 02:05 by JourneyLucky
[考研] 一志愿天津大学,英一数二305分求调剂,四六级已过 +8 小小番的茄 2026-03-09 8/400 2026-03-14 01:53 by JourneyLucky
[考研] 云南财经大学信息学院计算机学硕专硕学位点 +3 zjptai 2026-03-10 5/250 2026-03-14 01:23 by 飞行琦
[考研] 招收0805(材料)调剂 +3 18595523086 2026-03-13 3/150 2026-03-14 00:33 by 123%、
[考研] 一志愿湖师大化学289求调剂 +6 XMCMM3.14159 2026-03-10 6/300 2026-03-14 00:28 by JourneyLucky
[考研] 290求调剂 +9 ADT 2026-03-11 9/450 2026-03-13 21:55 by JourneyLucky
[考研] 工科材料085601 279求调剂 +8 困于星晨 2026-03-12 10/500 2026-03-13 15:42 by ms629
[考研] 一志愿211化学学硕310分求调剂 +8 努力奋斗112 2026-03-12 9/450 2026-03-13 15:41 by JourneyLucky
[考研] 285求调剂 +4 ytter 2026-03-12 4/200 2026-03-13 14:48 by jxchenghu
[考研] 321求调剂(食品/专硕) +3 xc321 2026-03-12 6/300 2026-03-13 08:45 by xc321
[考博] 26读博 +4 Rui135246 2026-03-12 10/500 2026-03-13 07:15 by gaobiao
[考研] 0857 资源与环境 285分 +6 未名考生 2026-03-09 6/300 2026-03-11 21:08 by 30660438
[考博] 读博申请 +5 感dd 2026-03-10 7/350 2026-03-11 17:02 by QGZDSYS
[考研] 298求调剂 +3 Vv呀! 2026-03-10 3/150 2026-03-10 22:40 by 剑诗杜康
[考研] 家人们 调剂不迷路 看这里 +8 likeihood 2026-03-09 13/650 2026-03-10 08:09 by likeihood
[考研] 294 英二数二物化 求调剂 +6 米饭团不好吃 2026-03-09 6/300 2026-03-09 23:55 by barlinike
信息提示
请填处理意见