EDEM推出了新的版本2018,F(xiàn)luent也推出了新的版本19.0,因此它們之間的耦合代碼需要重新編譯。 耦合源代碼包含內(nèi)容如下圖所示。 路徑下有一個(gè)批處理文件Windows_coupling_compilation.cmd,打開文件看一看。 該批處理文件結(jié)構(gòu)很簡(jiǎn)單,包含兩部分內(nèi)容:
compile_lib_edem_coupling.py進(jìn)行編譯 用文本編輯器打開set_edem_env_vars.cmd,其中內(nèi)容如下圖所示。 其中第6行如下圖所示,可以看到官方提供源代碼中包含的EDEM版本包含2.6, 2.7, 2017.0, 2017.1, 2017.2,并不包含2018。 這里直接添加2018. 用文本文件打開set_fluent_env_vars.cmd,該批處理文件用于設(shè)置Fluent相關(guān)的環(huán)境變量。 文件第6行輸入Fluent版本,如下圖所示,并無(wú)19.0版本。 直接添加Fluent19.0版本。
按提示輸入信息。 情況不妙,貌似出了錯(cuò)誤。錯(cuò)誤提示如下圖所示。 提示找不到文件IEDEMCouplingV2_3_0.h。按道理來(lái)講,該文件應(yīng)該存在于EDEM安裝目錄下D:\Program Files\DEM Solutions\EDEM 2018\src\Api\Coupling中,不過(guò)打開該文件夾,如下圖所示。 其中并沒(méi)有IEDEMCouplingV2_3_0.h,只有一個(gè)IEDEMCoupling.h,因此需要修改。搜索編譯文件夾中包含IEDEMCouplingV2_3_0.h的文件,搜索結(jié)果如下圖所示。
修改此頭文件,如下圖所示。
重新編譯試試。這下obj文件編譯成功。在D:\edem_coupling_build\edem_cfd_adaptor_build\win64下多處了5個(gè)obj文件。 然而編譯并沒(méi)有完成。在D:\edem_coupling_build\lib_edem_coupling文件夾下并沒(méi)有編譯形成的win64文件夾。 嘗試運(yùn)行命令python tools\compile_lib_edem_coupling.py,該命令用于編譯UDF。 文件編譯需要利用到Python,關(guān)于Python的配置過(guò)程,可自行百度。確保在命令行中輸入python可以啟動(dòng)python解釋器。 結(jié)果出來(lái)如圖所示的信息。 這什么鬼,剛才明明添加了2018了呀。別急,打開tools文件夾下文件compile_lib_edem_coupling.py,定位到下圖所示的192行位置,可以看到缺少2018版本信息,這里將其添加上。 這類文件存在與D:\Program Files\DEM Solutions\EDEM 2018\lib,可以看到EDEM2018應(yīng)該添加信息EDEMCouplingClient4.lib。添加信息后的結(jié)果如下圖所示。
一個(gè)函數(shù)錯(cuò)誤,在文件D:\edem_coupling_build\lib_edem_coupling\src\compute_particle_forces.c的第44行與第127行中的init_tracked_particle函數(shù)有問(wèn)題。打開看一看。 看第44行,這什么鬼,相同的函數(shù),這一行的參數(shù)數(shù)量居然比上下兩個(gè)參數(shù)多了一個(gè)。(表示程序猿可以拿來(lái)祭天了)。不放心的話,還是看一看init_tracked_particle函數(shù)的聲明先。該函數(shù)聲明位于D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dpm\dpm_mem.h,打開看一看。在該文件的250行發(fā)現(xiàn)函數(shù)聲明,仔細(xì)數(shù)一數(shù)參數(shù)數(shù)量,發(fā)現(xiàn)文件compute_particle_forces.c的第44行與第127行中的init_tracked_particle函數(shù)確實(shí)多了個(gè)參數(shù)。 這里決定將其刪除。第44行刪除參數(shù)后如下圖所示。 127行執(zhí)行相同操作。
編譯完成后,在D:\edem_coupling_build\lib_edem_coupling\win64文件夾下會(huì)生成一系列文件,如下圖所示。 到Fluent中測(cè)試一下UDF能否被加載。
到此收工。下次找個(gè)簡(jiǎn)單的案例測(cè)試一下。 ![]() |