今天在用batch模式编译UDF时,出现了错误:
UDF Error at Node 0: Error code: 126
bat文件:
@echo off @set PATH=C:/Program Files/ANSYS Inc/v202/fluent/ntbin/win64/;%PATH% @call udf.bat @ cd %cd% rd /s /q libudf @ fluent -wait 2ddp -t2 -i 0Run.jou exit |
jou文件:
/file read-case EnergySource.cas.gz |
其中,cas文件用到了能量源项UDF,
udf文件中,在一个半椭圆区域内施加能量源项,
需要在cas中定义User Defined Memory,即其中的C_UDMI(c,t,1)
#include "udf.h" //#include <stdio.h> double x1,y1,x2,y2,x3,y3,x4,y4; double AA=0.003; //椭圆长轴长度 double BB=0.001; //椭圆长轴长度 double SS=0.062; //椭圆中心x坐标 double TT=0.010932273; //椭圆中心y坐标 double angle=10; //椭圆长轴与x轴夹角 double emax=5e7; //能量源项强度 DEFINE_SOURCE(energy_source,c,t,dS,eqn) {double theta; double temp1,temp2,temp3; double source,px,py,pz,zmax; double x[ND_ND]; C_CENTROID(x,c,t); px=x[0]; py=x[1]; theta=angle*3.141592657/180.0; temp1=((px-SS)*cos(theta) + (py-TT)*sin(theta))*((px-SS)*cos(theta) + (py-TT)*sin(theta)); temp2=((px-SS)*sin(theta) - (py-TT)*cos(theta))*((px-SS)*sin(theta) - (py-TT)*cos(theta)); temp3=temp1/(AA*AA) + temp2/(BB*BB); if (temp3 <=1.0) { source=emax; C_UDMI(c,t,1)=source; } dS[eqn]=0.0; return source; } |
在Unreal Commander中双击bat文件运行fluent,并调用jou文件,读取cas文件。
由于cas文件中包含了能量源项,会自动编译。
Checking the existence of compiled "libudf" UDF library for current platform. If needed will attempt auto-compilation... Make sure that UDF source files are in the directory that contains your case and data files. If you have an existing libudf directory, please remove this directory to ensure that latest files are used. Will now auto-compile UDF library "libudf". Copied C:\Temp\Test\CompressionExpansion\Unsteady\Test/.\EnergySource.c to libudf\\src Creating user_nt.udf file for 2ddp_host ... (system "copy "C:\PROGRA~1\ANSYSI~1\v202\fluent"\fluent20.2.0\src\udf\makefile_nt.udf "libudf\\win64\2ddp_host\makefile" ") 已复制 1 个文件。 (chdir "libudf")(chdir "win64\\2ddp_host")# Generating ud_io1.h EnergySource.c # Generating udf_names.c because of makefile EnergySource.obj udf_names.c # Linking libudf.dll because of makefile user_nt.udf udf_names.obj EnergySource.obj Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. 正在创建库 libudf.lib 和对象 libudf.exp Creating user_nt.udf file for 2ddp_node ... (system "copy "C:\PROGRA~1\ANSYSI~1\v202\fluent"\fluent20.2.0\src\udf\makefile_nt.udf "libudf\\win64\2ddp_node\makefile" ") 已复制 1 个文件。 (chdir "libudf")(chdir "win64\\2ddp_node")# Generating ud_io1.h EnergySource.c # Generating udf_names.c because of makefile EnergySource.obj udf_names.c # Linking libudf.dll because of makefile user_nt.udf udf_names.obj EnergySource.obj Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. 正在创建库 libudf.lib 和对象 libudf.exp Done. *******: Opening library "C:\\Temp\\Test\\CompressionExpansion\\Unsteady\\Test\\libudf"... Error at Node 0: Error code: 126 |
正常在倒数第二行会有加载信息。
例如下面的红字部分
正在创建库 libudf.lib 和对象 libudf.exp Done. *******: Opening library "C:\\Temp\\Test\\CompressionExpansion\\Unsteady\\Test\\libudf"...Done. *******: Opening library "C:\\Temp\\Test\\CompressionExpansion\\Unsteady\\Test\\libudf"... energy_source Done. Building... mesh |
网上也有其它的类似情况 link
但不适用于我的问题。
我用fluent单独打开,并读取jou文件,
没有问题。
我一度怀疑
fluent版本
使用bat打开fluent时的udf环境变量
UDF编写有问题,没有做专门的并行处理
电脑运行时间太长了,需要重启
visual studio 2010的版本太老了,不匹配
我也想不起还猜测过什么。。。
搞了一上午,结果发现问题出在Unreal Commander
具体原因我也不知道。
但是只要不在Unreal Commander环境下双击运行
就一切正常。
汗颜。。。
转载本文请联系原作者获取授权,同时请注明本文来自姚程科学网博客。
链接地址:https://wap.sciencenet.cn/blog-531760-1285435.html?mobile=1
收藏