找回密码
 注册
查看: 3213|回复: 8

UDF救助

[复制链接]
发表于 2010-12-15 10:20:01 | 显示全部楼层 |阅读模式

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

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

x
二维喷管入口总温,总压随时间变化如下:
T(t)=300+150000*t        (0≤t≤0.02)
T(t)=3300

P(t)=200000+30000000*t  (0≤t≤0.02)
P(t)=800000

求DEFINE-PROLIFE     UFD  程序。
 楼主| 发表于 2010-12-15 19:19:41 | 显示全部楼层
各位高手,没人懂这个吗?浪子兄呢?
发表于 2010-12-16 08:45:37 | 显示全部楼层
没大看懂你这个分段函数的意思:
T(t)=300+150000*t        (0≤t≤0.02)
T(t)=3300
t>0.02,T就一直=3300,还是什么意思?
发表于 2010-12-23 10:52:24 | 显示全部楼层

回复 1# lihua_0629 的帖子

如果没猜错的话,下面的程序应该有帮助。
不过,我想说的是,这个程序,直接看帮助就可以找到,我只是简单修改了一下,建议提问前自己多做些功课。
#include "udf.h"

#define TA 300.
#define TB 150000.
#define TC 3300.

DEFINE_PROFILE(T, t, nv)
{
  face_t f ;

  real flow_time = RP_Get_Real("flow-time");

  if (flow_time <= 0.2 )
    {

      begin_f_loop(f,t)
       {
         F_PROFILE(f,t,nv) = TA + TB. * flow_time ;
       }
      end_f_loop(f,t)
     }
  else
    {
   
      begin_f_loop(f,t)
        {
          F_PROFILE(f,t,nv) = TC ;
        }
      end_f_loop(f,t)
     }
}
发表于 2010-12-28 14:27:51 | 显示全部楼层
znon兄,你这个udf,把if……else语句写在begin……end这一个loop中不是更简单吗?
发表于 2010-12-28 15:51:15 | 显示全部楼层

回复 5# 浪子轻狂 的帖子

语言上应该是更简单,我是把UDF帮助中的例子简单改了一下,改完后,我也想把时间判断写在loop中,后来想是不是这样效率会高一些。
要是判断写在里面,循环内每次都需要判断一下;这样写,判断一下时间后,直接计算。
不知道我理解的对不对,请多指导。
发表于 2010-12-28 16:17:41 | 显示全部楼层
一个是内部判断,一个是外部判断。过程都是:判断时间+遍历循环,效率不会有什么差异吧。当然,没做过测试,个人习惯,我都是写里面,有空多交流!
发表于 2010-12-28 16:32:03 | 显示全部楼层
我也没有测试,以后多交流。
发表于 2011-1-22 00:21:17 | 显示全部楼层
浪子的提法 要 更好一些,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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