24小时热门版块排行榜    

查看: 2877  |  回复: 8

木风10086

新虫 (小有名气)

[交流] UDF的问题 已有2人参与

UDF的内容如下:
#include "udf.h"
#include <stdio.h>
#include "dynamesh_tools.h"

static int nozzle_tid = 10;
static real g_c = 9.81;
static real loc = 0.0;

static real initial_weight = 10.0;
static real burn_rate = 0.0;

static real current_time = -1.0;
static real thrust_prev = 0.0;
static real missile_velocity = 0.0;

static real
missile_weight (real time)
{
  return (initial_weight - burn_rate * time);
}

DEFINE_ON_DEMAND(reset_velocity)
{
  missile_velocity = 0.0;
  thrust_prev      = 0.0;
  current_time     = -1.0;
}

DEFINE_CG_MOTION(missile_1dof, dt, cg_vel, cg_omega, time, dtime)
{
#if 1
  FILE *fp;
#endif

  /* reset velocities */
  NV_S (cg_vel, =, 0.0);
  NV_S (cg_omega, =, 0.0);


  if (!Data_Valid_P ())
    return;

/* Give rocket time to establish thrust for specified time */
  if (time < 0.1)
    Message (" NO MOTION YET: TIME LESS THAN 0.1 SECONDS ";

  if (time < 0.1)
    return;  

  /* update missile velocity only if we are at
     the next new time level */
  if ((time - 0.1*dtime) > current_time)
    {
      Domain *domain;
      Thread *t;
      face_t f;
      real force0, force1, force;
      real area, total, v_avg, dv;
      real w0, w1, mass_flow;

      /* update time stamp */
      current_time = time;

      /* get nozzle exit thread (from predefined thread id) */
      domain = THREAD_DOMAIN (DT_THREAD ((Dynamic_Thread *)dt));
      if (NULLP (t = Lookup_Thread (domain, nozzle_tid)))
        return;

      /* compute average exit velocity (weighted by area) */
      v_avg = 0.0;
      total = 0.0;
      begin_f_loop (f, t)
        {
          area = NV_MAG (F_AREA_CACHE (f, t));

#if RP_3D
          v_avg += area * ND_MAG (F_U (f, t), F_V (f, t), F_W (f, t));
#else
          v_avg += area * ND_MAG (F_U (f, t), F_V (f, t), 0.0);
#endif
          total += area;
        }


      end_f_loop (f, t)
      v_avg /= total;       

/* subtract off missile_velocity to get relative velocity */
/* ???      v_avg = v_avg - missile_velocity;        */
       
      /* compute thrust from mdot and v_e
         note: assume nozzle_exit is type mass-flow-exit  */
      if (THREAD_VAR(t).mfi.flow_spec == MASS_FLOW_TYPE)
        mass_flow = THREAD_VAR(t).mfi.mass_flow;
      else
        {
          real mass_flow;

          /* if mass_flux given as profile, then sum up
             area * mass_flux over face thread, else, mass_flux
             is constant */
          if (IS_PROFILE (THREAD_VAR (t).mfi.mass_flux))
            {
              begin_f_loop (f, t)
                mass_flow = NV_MAG (F_AREA_CACHE (f, t)) *
                            F_VAR (f, t, THREAD_VAR (t).mfi.mass_flux);
              end_f_loop (f, t)                                  
            }
          else
            {
              mass_flow = THREAD_VAR(t).mfi.mass_flux.constant * total;
            }
#if RP_2D
          if (rp_axi)
            mass_flow *= 2.0 * M_PI;
#endif
        }
      force = v_avg * F_VAR (0, t, THREAD_VAR(t).mfi.mass_flux) / total;
      
      /* compute change in velocity (use trapezoidal rule) */
      w0 = missile_weight (time - dtime);
      force0 = (thrust_prev - w0 * g_c) / w0;
      w1 = missile_weight (time);
      force1 = (force - w1 * g_c) / w1;
      dv = MAX (0.0, 0.5 * dtime * (force0 + force1));

      missile_velocity += dv;
      
      loc += missile_velocity * dtime;
      thrust_prev = force;

#if 1
  if( (fp=fopen("silo.dat","a") !=NULL )
    {
      float check = F_FLUX(f,t)+F_GRID_FLUX(f,t);
      fprintf(fp,"%f    %f    %f     %f    %f   %f \n",
              time,missile_velocity,loc,v_avg,F_FLUX(f,t),F_GRID_FLUX(f,t));
      fclose(fp);
    }
#endif
      
      Message ("time = %12.5e, x_vel = %12.5e, force = %12.5e, loc(m)= %1.5e\n",
               time, missile_velocity, 0.5*(force0 + force1), loc);
    }
  
  /* set missile velocity */
  cg_vel[0] = missile_velocity;
}
编译型UDF,build后的提示如下:
silo.c
..\..\src\silo.c(94) : error C2440: “=”: 无法从“Profile”转换为“real”
连着出了好几个问题,现在都已经晕乎了,求助!!!!!
回复此楼

» 猜你喜欢

心情不爽!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木风10086

新虫 (小有名气)

这么快就沉了,赶紧自己顶一下
心情不爽!
2楼2015-11-03 16:48:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ls315920

新虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
貌似遇到大神,赶紧拜拜。。。
虚心学习
3楼2015-11-03 18:44:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木风10086

新虫 (小有名气)

大家给点建议吧,应该主要是     if (THREAD_VAR(t).mfi.flow_spec == MASS_FLOW_TYPE)
        mass_flow = THREAD_VAR(t).mfi.mass_flow;
      else
这一句中的=两边有问题,但是不知道该怎么解决。
心情不爽!
4楼2015-11-04 11:42:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木风10086

新虫 (小有名气)

自己继续顶吧,实在头大。
心情不爽!
5楼2015-11-04 15:55:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木风10086

新虫 (小有名气)

遇到问题还是靠自己解决,靠论坛什么的实在是不靠谱。
心情不爽!
6楼2015-11-05 08:53:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
mass_flow = THREAD_VAR(t).mfi.mass_flow;这个有问题

THREAD_VAR(t).mfi.mass_flow的意思是,通俗的说THREAD_VAR(t)列表下的mfi列表下的mass_flow的变量取值,如果我没有记错的话(手头没有UDF,没法查询),这个变量的返回值不是可用于计算的值,而是fluent自定义的变量类型。
7楼2015-11-05 12:21:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木风10086

新虫 (小有名气)

引用回帖:
7楼: Originally posted by 死天 at 2015-11-05 12:21:16
mass_flow = THREAD_VAR(t).mfi.mass_flow;这个有问题

THREAD_VAR(t).mfi.mass_flow的意思是,通俗的说THREAD_VAR(t)列表下的mfi列表下的mass_flow的变量取值,如果我没有记错的话(手头没有UDF,没法查询),这 ...

对,确实是这个,我也是找了好久,在文件里一个个找,最后发现就是这个的问题。在老版本的时候能用,现在的不行了。我不知道想用这个量的话该怎么办,我现在是用别量通过公式反算这个量了,直接提取还是不会。
心情不爽!
8楼2015-11-11 15:10:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
8楼: Originally posted by 木风10086 at 2015-11-11 15:10:00
对,确实是这个,我也是找了好久,在文件里一个个找,最后发现就是这个的问题。在老版本的时候能用,现在的不行了。我不知道想用这个量的话该怎么办,我现在是用别量通过公式反算这个量了,直接提取还是不会。...

THREAD_VAR(t).mfi.mass_flow只是个返回值,调用该值,下面应该有个函数来通过该值直接调用库
9楼2015-11-11 18:42:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 木风10086 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料学调剂 +6 提神豆沙包 2026-02-28 6/300 2026-03-01 10:49 by sunny81
[考研] 0856化工专硕求调剂 +5 董boxing 2026-03-01 5/250 2026-03-01 10:41 by sunny81
[考博] 博士自荐 +4 kkluvs 2026-02-28 4/200 2026-03-01 10:19 by 馥安馥安
[考研] 0856求调剂285 +6 吕仔龙 2026-02-28 6/300 2026-03-01 10:03 by wang_dand
[硕博家园] 博士自荐 +6 科研狗111 2026-02-26 10/500 2026-03-01 10:02 by 科研狗111
[考研] 高分子化学与物理调剂 +4 好好好1233 2026-02-28 8/400 2026-03-01 09:26 by 好好好1233
[考研] 290求调剂 +6 材料专硕调剂; 2026-02-28 7/350 2026-03-01 09:21 by L135790
[考研] 284求调剂 +5 天下熯 2026-02-28 5/250 2026-03-01 08:49 by ms629
[考研] 298求调剂 +5 axyz3 2026-02-28 5/250 2026-03-01 06:45 by 刘兵
[考研] 材料调剂 +4 爱擦汗的可乐冰 2026-02-28 4/200 2026-03-01 00:38 by 猫猫球alter
[考研] 304求调剂 +3 52hz~~ 2026-02-28 5/250 2026-03-01 00:00 by 52hz~~
[考研] 化工专硕348,一志愿985求调剂 +4 弗格个 2026-02-28 6/300 2026-02-28 22:00 by wang_dand
[考博] 26申博 +4 想申博! 2026-02-26 4/200 2026-02-28 21:37 by limorning
[考研] 311求调剂 +8 南迦720 2026-02-28 8/400 2026-02-28 21:30 by gaoxiaoniuma
[考研] 085600材料工程一志愿中科大总分312求调剂 +8 吃宵夜1 2026-02-28 10/500 2026-02-28 20:27 by L135790
[考研] 276求调剂 +3 路lyh123 2026-02-28 4/200 2026-02-28 19:45 by 路lyh123
[考研] 0856材料求调剂 +10 hyf hyf hyf 2026-02-28 11/550 2026-02-28 18:50 by 无际的草原
[考研] 0856调剂 +3 刘梦微 2026-02-28 3/150 2026-02-28 13:22 by houyaoxu
[考研] 304求调剂 +5 曼殊2266 2026-02-28 6/300 2026-02-28 12:44 by 迷糊CCPs
[硕博家园] 【博士招生】太原理工大学2026化工博士 +4 N1ce_try 2026-02-24 8/400 2026-02-26 08:40 by N1ce_try
信息提示
请填处理意见