找回密码
 注册
查看: 3578|回复: 9

UDF重复计算

[复制链接]
发表于 2010-7-13 16:01:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
这个问题困扰很久了,望大虾们一起帮个忙!!!
耦合边界:qe=f(qe)*[T-268-g(qe)],为了方便现在假设q=f(qe)*[T-268-g(qe)]。
式中T是未知数,是壁面温度,要由Fluent计算得到。现在假设一个边界热流qe=-1000,利用宏DEFINE_PROFILE(f,thread,i)编写UDF给定边界热流qe=-1000,开始进行迭代,迭代一次后,通过宏DEFINE_ADJUST来判断qe和q,如果fabs[(qe-q)/q]<=0.005,进入下一次迭代,否则重新给边界赋热流值,重新进行迭代,再判断qe和q。
现在问题是,怎么编写UDF可以通过DEFINE_ADJUST(f,thread,i)改变边界的热流值,使其重新迭代。
发表于 2010-7-14 23:11:47 | 显示全部楼层

回复 1# zhuifeng123 的帖子

直接在ADJUST里判断,然后赋值给qe或q。这个有什么问题么?

请先看看FLUENT帮助文件里UDF 计算流程。
 楼主| 发表于 2010-7-15 13:36:36 | 显示全部楼层

回复 2# mayo_0 的帖子

在ADJUST里判断后,赋边界热流值给Fluent,需要宏DEFINE_PROFILE(f,t,i)=要赋予的值,在ADJUST里好像做不到哦,主要是因为Profile里有个i 要定义,似乎完成不了哦。困惑中,
 楼主| 发表于 2010-7-21 14:55:56 | 显示全部楼层
请问有没有大侠做过此类问题,求教了!!!
 楼主| 发表于 2010-7-22 09:13:14 | 显示全部楼层
请问有没有大侠做过此类问题啊,求教了
 楼主| 发表于 2010-7-27 10:22:52 | 显示全部楼层
请教各位大侠,这个问题Fluent到底可不可以实现,有没有哪位大侠做过类似的问题,出来给指点一下!!
 楼主| 发表于 2010-9-7 15:47:55 | 显示全部楼层

怎么样通过宏DEFINE_ADJUST来改变边界条件的值

我的问题是:
热流边界条件的值是变的,即是变热流边界条件。所以要先假定一个边界热流,之后通过判断来改变边界热流的值。
我该怎么编写UDF呢?
具体是:边界是耦合热流边界,q=f(q),所以先要假设一个边界热流值q=const,迭代一步后,判断fabs[(q-f(q))/q]的值是否小于5%。如果大于5%,就改变热流边界的值,继续计算。
怎么编写UDF,各位大侠,谢谢了!!!
发表于 2010-9-8 11:12:02 | 显示全部楼层
#include "udf.h"
#define WALL1_ID 3  //根据壁面1的实际id修改
real avg_temp=300.0;

DEFINE_ADJUST(wall1_avg_temp, domain)
{
        real NV_VEC(A);
        real sum_T_A=0.0,sum_A=0.0;
        face_t f;
        Thread*f_thread;
        f_thread = Lookup_Thread(domain, WALL1_ID);
        begin_f_loop(f, f_thread)
        {
                F_AREA(A,f,f_thread);
                sum_A+=NV_MAG(A);        // NV_MAG(A) computes the magnitude of the vector A        
                sum_T_A+=NV_MAG(A)*F_T(f, f_thread);
        }
        end_f_loop(f, f_thread)

        avg_temp=sum_T_A/sum_A;    // 温度的面积平均;
}

DEFINE_PROFILE(Wall2_T,t,position)
{
        face_t f;
        begin_f_loop(f,t)
        {
                F_PROFILE(f,t,position) = avg_temp;
        }
        end_f_loop(f,t)
}
别人编的
参考一下,希望对你有用
 楼主| 发表于 2010-9-9 08:17:30 | 显示全部楼层
谢谢你,我试一下。
 楼主| 发表于 2010-10-11 09:47:46 | 显示全部楼层
耦合边界:qe=f(qe)*[T-268-g(qe)],为了方便现在假设q=f(qe)*[T-268-g(qe)]。
式中T是未知数,是壁面温度,要由Fluent计算得到。现在假设一个边界热流qe=-1000,利用宏DEFINE_PROFILE(f,thread,i)编写UDF给定边界热流qe=-1000,开始进行计算,一个时间步长结束后,判断qe和q,如果fabs[(qe-q)/q]<=0.005,进入下一个时间步长迭代,否则重新给边界赋热流值,重新进行第一个时间步长的迭代,再判断qe和q。
现在问题是,怎么编写UDF可以使得Fluent重复进行第一个时间步长的计算。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表