更新:
之前提供的方法雖然沒有什么問題,但是需要修改的代碼太多,比較麻煩,后來又研究了一下,發現實際上數據自定義輸出這一塊是有現成接口的。
1)輸出網格數據
參考https://www.cnblogs.com/Jay-CFD/p/10786299.html 這篇文章的方法二,利用 ReactionRates 這個變量來儲存和輸出。
2)輸出顆粒數據
利用軟件提供的user scalar tracking功能:
然后只要在需要輸出的變量處,把變量保存到 DES_USR_VAR 中即可,例如,我這里要輸出顆粒Y方向的加速度:
輸出部分在:
這里一般不需要修改,可以看到,DES_USR_VAR(:,:)這個數組第一個元素代表第幾種自定義DEM標量,第二個元素為顆粒編號。
重新編譯運行就可以看到輸出變量了:
------------------------------以下為原文---------------------------------
有時候需要輸出一些自定義的網格或者DEM顆粒信息,比如輸出顆粒的受力,這里舉例顆粒自定義數據的輸出。網格自定義輸出方法類似。
首先用FileLocatorPro(網上很多綠色版),搜索一下代碼里model文件下的關鍵字 PostCohesive,如下:
這個變量是專門用來存儲顆粒粘性力,以供后處理用的,因此只需要仿照里面的代碼添加就可以了。
下面安裝順序逐一添加代碼。
上面代碼是釋放內存空間,對於可分配數組,使用完以后需要手動釋放,需要使用的時候再為其分配空間。
這里由於我要輸出的是顆粒和壁面重合的值,這部分數據在calc_collision_wall_mod.f里計算得到,所以獲取需要輸出的數據這部分比較靈活,需要自己去找到對應的代碼位置。
並且這里需要注意一下,這里由於業務邏輯里,只有靠近壁面的顆粒才會計算重疊的值,其他顆粒在循環的時候直接跳過,所以最好在每次進入循環的開始先將內存區置零。
這里先給顆粒信息分配內存,然后還得調用real_grow函數,因為顆粒數量有可能計算過程中增加。
這里是交換顆粒信息,具體作用還沒細看。
在模塊里定義可分配數組。當然這部分也可以在usr_mod.f里定義,只要記得在使用到的地方use一下就行了。
將內存區置零。
寫出數據。
寫出數據。似乎對於DEM,定義了兩個寫出的函數,區別沒仔細研究,都加上不會錯。
最后重新cmake一下然后編譯即可。有時候自己添加代碼直接make會有些莫名奇妙的報錯,重新cmake一下一般能解決。
最后的效果:
顯示的是顆粒和壁面的重合的值。
對於網格數據,用類似的方法,搜一下VORTICITY這個關鍵字:
按照上面類似的方法操作即可。