mfix輸出自定義數據


更新:

之前提供的方法雖然沒有什么問題,但是需要修改的代碼太多,比較麻煩,后來又研究了一下,發現實際上數據自定義輸出這一塊是有現成接口的。

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這個關鍵字:

 

 

按照上面類似的方法操作即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM