【Fluent UDF】F_PR0FILE(f, t, i) expression is not assignable问题与解决

一、问题背景

下面这个是设置温度边界的UDF代码。

#include "udf.h"

DEFINE_PROFILE(Inlet_Temp, t, i)
{
    
    
    face_t f;

    begin_f_loop(f, t)
        {
    
    
            real time=RP_Get_Real("flow-time");
            
            if(time<7200 || time==7200)
            {
    
    
                F_PROFILE(f, t, i) = 288+0.025*time;
            }
            else if(time>7200 && time<18000 && time==18000)
            {
    
    
                F_PROFILE(f, t, i) = 468;
            }
            else if(time>18000 && time<28800 && time==28800)
            {
    
    
                F_PR0FILE(f, t, i) = 468 - (time-18000)/60;
            }
            else 
                F_PROFILE(f, t, i) = 288;
        }
    end_f_loop(f, t)
}

在使用2022的内置fluent编译器编译时,出现了下面的错误【F_PR0FILE(f, t, i) expression is not assignable】

D:\PROGRA~2\ANSYSI~1\v221\fluent\ntbin\clang\10\Include\10.0.18362.0\shared\basetsd.h(322,12): warning: cast to 'void * __ptr32' from smaller integer type 'unsigned long' [-Wint-to-void-pointer-cast]
    return((void * POINTER_32) (unsigned long) (ULONG_PTR) p);
           ^
temp_inlet.c(21,36): error: expression is not assignable
                F_PR0FILE(f, t, i) = 468 - (time-18000)/60;
                ~~~~~~~~~~~~~~~~~~ ^
1 warning and 1 error generated.
scons: *** [temp_inlet.obj] Error 1

在这里插入图片描述

二、解决办法

(赋值)表达式不能赋值。

一般有两种原因。

第一种是赋值表达式不是一个变量;

第二种是因为表达式含糊不清,这往往是因为编程人员不熟悉语言运算符的运算顺序,而导致无法构成有效赋值表达式的错误。

显然我这里的代码不存在第二种错误,因为等号右边太简单了。

如果仔细观察,我们可以发现F_PR0FILE这里是一个数字0,而不是字母O,显然拼写有误。

改成F_PROFILE,就编译正确了。只有警报,没有错误。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PSpiritV/article/details/129490629