
發(fā)布
注冊(cè)
/
登錄UDF編譯錯(cuò)誤的案例
四十九、Fluent UDF編譯正確的流程
進(jìn)行UDF編譯</strong></p><p><br></p><p>在環(huán)境變量配置成功的情況下,再進(jìn)行自己書寫的UDF的編譯。</p><p>這一步還可能會(huì)遇到很多問題。由于環(huán)境變量已經(jīng)配置成功,<strong>因此遇到的問題一定是UDF本身的問題,可能是書寫不規(guī)范,也可能是語法問題。</strong></p><p> </p><p>還有可能,UDF編譯通過,但是一點(diǎn)計(jì)算就會(huì)出現(xiàn)下圖這種錯(cuò)誤</p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/8tJMdLVYZyibppJHEe1k9RtYNJ2XIABF4zWoicH4L7cicpmllksIWsVkzdMLTPXNcxKZWgHzvoNPHwakapkEhzX4g/640?wx_fmt=png" width="100%"></p><p>或者出現(xiàn)received a fatal signal (aborted).</p><p> </p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/8tJMdLVYZyibppJHEe1k9RtYNJ2XIABF4V7fmKF0yIEHj5LcA8bO9M250RG7PmqKpbvEFRb2hv86icQmksDibgTNA/640?wx_fmt=png" width="100%"></p><p>總之錯(cuò)誤總是千奇百怪,防不勝防。但當(dāng)使用的多了,會(huì)發(fā)現(xiàn)常見的錯(cuò)誤原因就那幾個(gè),多注意排查即可。這部分下篇文章會(huì)進(jìn)行敘述。
展開 Fluent軟件的UDF編譯環(huán)境修改
Fluent軟件的UDF編譯環(huán)境修改
使用Fluent軟件的UDF前需安裝Ansys和Visual studio軟件。
此處以Ansys19.0 和Visual studio 2012為例,在Ansys19.0安裝位置找到udf.bat文件。
用記事本打開udf.bat,找到圖示位置:
在后面添加:
set MSVC_DEFAULT=此處填Visual studio12.0安裝位置
if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%
if not "%MSVC%" == "" goto msvc_env120
:msvc_env120
set MSVC_VERSION=120
call "%MSVC%\VC\vcvarsall.bat" amd64
goto ms_c_end
保存即可在Fluent軟件中使用UDF。
展開 fluent 14.0 udf編譯問題
最近使用fluent14.0 udf的時(shí)候編譯總是出現(xiàn)問題,經(jīng)過在網(wǎng)上查找資料,自己摸索終于解決了。
UDF程序編譯常見問題,以及解決辦法!
圖1
如何修改:設(shè)置好環(huán)境變量,再次編譯就可以成功加載。
環(huán)境變量設(shè)置目前較為成熟和成功方法,經(jīng)過多次給網(wǎng)友調(diào)試,總結(jié)認(rèn)為按路徑設(shè)置環(huán)境變量是最好的方法,成功率百分之百!這里切記修改環(huán)境變量不是在系統(tǒng)變量中修改??!
設(shè)置如下:
圖2
主要找到編譯器安裝路徑下得include\lib\path就可以設(shè)置成功。具體見教程vs2010、2013環(huán)境變量設(shè)置。
另外需要注意是:由于程序字符格式問題,這種情況多為復(fù)制黏貼幫助文檔或者其他地方程序,直接黏貼在編譯器或者text文本里得,導(dǎo)致沒有完全編譯,加載過程時(shí)報(bào)錯(cuò),找不到liubuf.dll文件。
解決辦法:
編譯不成功原因是由于程序本身格式問題,編譯器不識(shí)別,多為復(fù)制黏貼過來程序。這時(shí)候可以將其復(fù)制黏貼到可以編譯成功程序里,即可解決問題。
2編譯過程中,由于書寫有誤,導(dǎo)致程序報(bào)錯(cuò)。
圖3
這樣錯(cuò)誤要根據(jù)報(bào)錯(cuò)提示進(jìn)行修改,千萬要注意看報(bào)錯(cuò)提示,再進(jìn)行逐行修改,事半功倍。
例如:第13行缺少分號(hào),增加分號(hào) 即可。
圖4
具體調(diào)整見技術(shù)鄰視頻。
3由于程序結(jié)構(gòu)問題,導(dǎo)致報(bào)錯(cuò),received a fata segmental?
例如:在邊界上進(jìn)行面循環(huán)時(shí),我們卻想去獲得網(wǎng)格上參數(shù)值,例如C_U(c,t)網(wǎng)格速度值,這樣就是不合理得,會(huì)出現(xiàn)分割錯(cuò)誤。同時(shí),對(duì)于C_VOF(c,t)體積分?jǐn)?shù)這樣宏,一定要注意它的指針問題,否則你會(huì)出現(xiàn)常見錯(cuò)誤。
4由于程序函數(shù)宏格式問題,導(dǎo)致缺少“}”,size of“0”,
圖5
程序本身沒有錯(cuò)誤,但是編譯就是報(bào)錯(cuò)!這時(shí)比較讓人著急,找不到頭緒!
解決辦法:這時(shí)只需要找一個(gè)能編譯程序,復(fù)制黏貼過去。如果還不行,就說明你的函數(shù)是不是哪個(gè)地方寫錯(cuò)了,要進(jìn)行仔細(xì)檢查!
展開 
SDK 解決FLUENT 中udf 編譯問題 終極大法
錯(cuò)誤原因與解決方法:fluent udf在compiled時(shí)出現(xiàn)錯(cuò)誤:'nmake' 不是內(nèi)部或外部命令
對(duì)比了兩臺(tái)主機(jī)上的環(huán)境變量 Path、 lib 以及 include 之后發(fā)現(xiàn)可以正常運(yùn)行udf的舊的主機(jī)(A)與新的主機(jī)(B)之間的差別,發(fā)現(xiàn)Path等并沒有太多異常,甚至A上幾乎沒有添加環(huán)境變量。于是采用下方案
解決方案:
從Microsoft 官網(wǎng)下載 軟件開發(fā)補(bǔ)丁: NET Framework 2.0 Software Development Kit (SDK) (x64)
安裝補(bǔ)丁
從開始快捷鍵中 以管理員身份運(yùn)行 SDK 命令行,SDK Command Prompt
命令行中 切換至fluent 啟動(dòng)項(xiàng)位置,運(yùn)行fluent
切換fluent工作目錄至case 目錄,運(yùn)行。
udf 可以成功運(yùn)行
在SDK 運(yùn)行代碼為:
——————————————————
隨后,刪除了libudf之后 以正常方式打開case之后仍然失敗。
不刪除libudf,正常方式打開case之后成功。
因此推斷 在編譯過程中有點(diǎn)問題,可能還是VS與 fluent 之間配合不好。 在編譯完成之后udf即可正常運(yùn)行
附上一張圖片和參考方案來源
How can I manage to compile my UDF with Windows 7 64bit?
This problem sometimes looks similar to the one concerning the missing 'nmake'.
展開 fluent中udf無法編譯系列(part2)——basetsd.h文件
fluent中出現(xiàn)下圖的提示:
解決方法:
1.打開計(jì)算機(jī)->屬性->高級(jí)系統(tǒng)設(shè)置
2.新建變量VS110COMNTOOLS,屬性值設(shè)置為C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
3.打開編譯VC\bin目錄下的vcvars32.bat文件,在第一行添加下列語句:
@echo Setting environment for using Microsoft Visual Studio 2012 x64 tools
@SET VSINSTALLDIR=c:\Program Files\Microsoft Visual Studio 11.0
@SET VCINSTALLDIR=c:\Program Files\Microsoft Visual Studio 11.0\VC
@SET FrameworkDir32=c:\Windows\Microsoft.NET\Framework
@SET FrameworkVersion32=v4.0.30319
@SET Framework35Version=v3.5
并注釋掉下列語句:
::@call :GetVSCommonToolsDir
::@if "%VS110COMNTOOLS%"=="" goto error_no_VS110COMNTOOLSDIR
::@call "%VS110COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
展開 fluent中udf無法編譯系列(part1)——xcopy和nmake
進(jìn)行udf文件的build,初學(xué)者容易出現(xiàn)下面的提示:
那么,來解決一下這些問題吧~~
1、fluent運(yùn)行UDF時(shí)的出現(xiàn)'xcopy' 不是內(nèi)部或外部命令.....
這是系統(tǒng)下面xcopy.exe文件丟失,只需要把xcopy復(fù)制到安裝目錄下面的bin文件夾里就行了
解決方法:從C:\Windows\System32拷貝到xcopy.exe
放到: D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin文件里面
(需要注意的是,每臺(tái)電腦的Microsoft Visual Studio 的安裝目錄和版本不同,xcopy.exe放在自己電腦的Microsoft Visual Studio 里面的vc下的bin文件里面就可以了)
2、 nmake不是內(nèi)部命令或外部命令,也不是可運(yùn)行程序.....
展開 fluent中udf無法編譯系列(part3)——kernel132.lib文件
LINK: fatal erro LNK1104: cannot open file 'kernel132.lib'
命令行下使用cl編譯的時(shí)候,竟然提示:fatal error LNK1104: 無法打開文件“kernel32.lib”,所幸在IDE里面運(yùn)行沒有問題。
【問題解決】
Try1)查了一下環(huán)境變量的庫路徑(LIB),Program Files\Microsoft Visual Studio 9.0\VC\lib是在的;查lib目錄,果然找不到kernel32.lib文件。
Try2)vs2008的SDK路徑應(yīng)該是這個(gè):C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib。(注意:無論安裝目錄在哪里,都在C盤)
Try3)在環(huán)境變量LIB添加上述SDK目錄,cl,成功!或者將kernel32.lib直接copy到vc的lib目錄下也是可以的
解決辦法還是修改環(huán)境變量,提示不能打開
'kernel132.lib',我們就想辦法找到他并把它添加到環(huán)境變量里lib里,我的電腦里'kernel132.lib'在C:\Program files\Microsoft SDKs\Windows\v6.0A\Lib\kernel32.lib,于是把這個(gè)路徑添加到lib這個(gè)環(huán)境變量里,問題就解決了
展開 單片機(jī)編譯器KEIL的常見錯(cuò)誤匯總(中英對(duì)照)
error 1:Out of memory 內(nèi)存溢出
error 2:Identifier expected 缺標(biāo)識(shí)符
error 3:Unknown identifier 未定義的標(biāo)識(shí)符
error 4:Duplicate identifier 重復(fù)定義的標(biāo)識(shí)符
error 5:Syntax error 語法錯(cuò)誤
error 6:Error in real constant 實(shí)型常量錯(cuò)誤
error 7:Error in integer constant 整型常量錯(cuò)誤
error 8:String constant exceeds line 字符串常量超過一行
error 10:Unexpected end of file 文件非正常結(jié)束
error 11:Line too long 行太長
error 12:Type identifier expected 未定義的類型標(biāo)識(shí)符
error 13:Too many open files 打開文件太多
error 14:Invalid file name 無效的文件名
error 15:File not found 文件未找到
error 16:Disk full 磁盤滿
error 17:Invalid compiler directive 無效的編譯命令
error 18:Too many files 文件太多
error 19:Undefined type in pointer def 指針定義中未定義類型
error 20:Variable identifier expected 缺變量標(biāo)識(shí)符
error 21:Error in type 類型錯(cuò)誤
error 22:Structure too large 結(jié)構(gòu)類型太長
展開 ABAQUS路面材料使用修正burgers模型時(shí)總是出現(xiàn)編譯錯(cuò)誤
C 瞬態(tài)溫度場下修正Burgers模型UMAT子程序源代碼
C
C 給狀態(tài)變量數(shù)組賦初值為零,調(diào)用ABAQUS子程序SDVINI
C GIVE STATEV THE INITIAL VALUE OF ZERO
C
SUBROUTINE SDVINI(STATEV,COORDS,NSTATV,NCRDS,NOEL,NPT,LAYER,KSPT)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION STATEV(NSTATV),COORDS(NCRDS)
C
DO K=1,NSTATV
STATEV(K)=0.0
END DO
C
RETURN
END
C 瞬態(tài)溫度場下修正Burgers模型UMAT子程序
C UMAT FOR MODIFIED BURGERS MODEL
C
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,
1 DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,
2 CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,
3 PNEWDT,CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION STRESS(NTENS),STATEV(NSTATV),DDSDDE
展開 關(guān)于umat在VS編譯過程中出現(xiàn)的錯(cuò)誤
或者這個(gè)錯(cuò)誤應(yīng)該怎么解決呢

五十一、UDF錯(cuò)誤代碼排查
<p><strong>1.UDF錯(cuò)誤代碼排查</strong></p><p><br></p><p>UDF出錯(cuò)如何進(jìn)行錯(cuò)誤排查???</p><p> </p><p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/8tJMdLVYZyibBqSh9oVWicPJ4l8z5fMHmFWuccZW4NDgy7TicOFbibIYfPOo71oeU4qu8qmxU82rNxf5VUd5twKrbw/640?wx_fmt=jpeg" width="100%"></p><p><strong>1.1有錯(cuò)誤信息顯示</strong></p><p><br></p><p>根據(jù)錯(cuò)誤信息定位到具體錯(cuò)誤類型,如代碼錯(cuò)誤、命名錯(cuò)誤、內(nèi)存分配錯(cuò)誤或線程錯(cuò)誤等問題。詳細(xì)可查看<a href="http://mp.weixin.qq.com/s?
展開 五十、UDF常見錯(cuò)誤及報(bào)錯(cuò)信息
如果直接使用thread1,則編譯通過,load通過,但點(diǎn)擊計(jì)算,可能會(huì)報(bào)下圖錯(cuò)誤:Received signal SIGSEGV</p><p> </p><p><img src="https://mmbiz.qpic.cn/mmbiz_png/8tJMdLVYZyib8OGrSVLN1D71GE8ia3iabYtxavwauyKicMicNHg8KyZEKiceib1TQ1qiaVwxl5y8EFYopYWUmicv0SBKTVw/640?wx_fmt=png" width="100%"></p><p> </p><p>這種問題,報(bào)錯(cuò)的信息可能有很多種。但是基本都有一個(gè)特點(diǎn),那就是編譯沒問題、load沒問題,但一點(diǎn)擊計(jì)算又出錯(cuò)。</p><p> </p><p> </p><p><strong>2.6 常見錯(cuò)誤6:UDF被其他cas占用</strong></p><p><br></p><p> </p><p>UDF編譯的過程:選擇UDF后,點(diǎn)擊build,會(huì)生成一個(gè)libudf文件夾。點(diǎn)擊load后,fluent會(huì)直接調(diào)用libudf文件夾下的已經(jīng)編譯好的文件。</p><p><br></p><p><strong>此時(shí)源UDF文件與fluent沒有任何關(guān)系,即使刪除掉源UDF文件,fluent也可以正常運(yùn)行。但是不能刪掉libudf文件,這個(gè)文件會(huì)一直被fluent占用。</strong></p><p> </p><p>注:libudf是編譯過程生成的文件夾名稱,可在點(diǎn)擊build之前,在Library Name處更改此名。
展開