Fluent UDF【2】:學習途徑


要怎樣做才能做到無畏懼編寫任何UDF程序?估計很多與UDF打交道的人都會問到這個問題。
面對UDF文檔中那眾多的宏描述,小伙伴們是不是感覺到茫然無措,不知從何入手。有時候讀別人寫好的程序感覺並不難,然而自己寫的時候總是感覺不對勁。
我們今天就來聊聊UDF到底該怎么學。

關於C語言

Fluent UDF使用C語言,因此要想熟練使用UDF的話,掌握基本的C語言是很有必要的。
市面上C語言的書籍很多,其中有很多的經典教材。然而幾乎每一本C語言的書籍都很厚,里面涉及的內容非常的多,如果不是專門搞程序設計的話,想要精通C語言,勢必需要花費大量的時間。推薦看一些經典的C語言教材。如下面這本。

其實UDF只是利用了C語言很少的一部分,我們利用UDF,只需要掌握C語言的最核心的內容,包括:

  • 基本語法:語法重要性自然不用多說。UDF采用C語言進行編寫,自然必須符合C語言基本語法習慣,否則解釋和編譯都難以通過。C語言的語法很多,可以找一本經典C語言書籍,照着寫一兩個程序基本就熟悉了。
  • 控制結構:包括邏輯控制、循環控制等。雖然說UDF中的控制形式有特別的宏來完成,然而掌握C語言的控制結構更有助於理解UDF中的各種稀奇古怪的循環結構。
  • 數組與指針:這個需要重點理解,在UDF中有很多的內置變量類型是數組或指針,不理解的話后面寫程序會抓破腦袋。指針也是C語言的特色。
  • 函數與宏:搞清楚C語言函數傳值調用與傳址調用的區別。尤其是搞明白傳址調用,在UDF宏中,好多的傳址調用。弄清楚C語言宏定義的方式,這個稍加注意就能夠看懂。
    其他的也沒什么需要去關注的了。

關於UDF代碼編寫

UDF文件可以用任何文本編輯器編寫,記事本、寫字板都可以。當然如果想要有語法高亮效果的話,可以找一些專業的編輯器。像免費的Notepad++,Atom等,還有其他的要錢的軟件如ultraEdit,EditPlus、Sublime text等,都是非常不錯的選擇。
該如何編寫呢?Fluent提供了大量的UDF宏,單單幫助文檔里頭就有好幾百個,當然如果你記憶力超群能夠把這些宏的用法全都記住,自然是很不錯的。但是大多數人估計是記不住的,幸好UDF手冊寫得很詳細,各種宏的用途及其程序實例都很齊全。因此在實際的代碼編寫過程中,最簡單的做法是根據UDF手冊中各種程序實例改寫自己的程序代碼。

UDF的數據操作

UDF的本質工作還是操縱數據,這是所有計算機程序的共性。
那么問題來了。操縱什么數據?數據從哪里來?數據修改之后往哪里去?
很多人覺得UDF難寫,其實是沒搞清楚上面的三個問題。

  • 操縱什么數據?這個是最難的,需要些什么數據,這個問不了別人,只有自己才清楚。這里要說的是,當你把要修改的模型數據拿出來之后,需要將其轉化為用基本物理量進行表達。我們可以通過查詢UDF手冊,看看那些數據獲取宏能夠得到哪些數據。
  • 數據從哪里來?有一些數據是通過宏直接獲取得到,我們姑且將其稱之為基礎數據,如要獲取壓力,單元的壓力可以用C_P宏獲取,面壓力可以用F_P獲取。而有些數據則沒辦法直接通過宏得到,此時我們需要利用基礎數據進行代數運算來得到這些值。
  • 數據往哪里去?操縱完畢的數據自然是要返回給Fluent。令人迷惑的是返回的形式,有些宏采用顯式方式返回,例如在DEFINE_PROFILE宏中,采用F_PROFILE宏返回數據給Fluent。而有些宏則沒有這些顯式的返回形式。此時要仔細查閱UDF手冊中關於宏的描述。還有一些傳址調用也能返回數據。
    其實只要搞清楚了這三個問題,UDF並不是什么很難的東西。

總結

對於UDF程序的編寫工作,總的來說需要注意:

  • UDF手冊是最主要的參考文檔。
  • UDF的核心工作在於數據處理。

更多CFD資料可微信掃描下方二維碼關注微信公眾號。

微信掃碼關注公眾號


免責聲明!

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



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