• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            Fluent中的UDF詳細中文教程(7)

            更新時間:2024-03-15 00:16:11 閱讀: 評論:0

            2024年3月15日發(作者:慘無人道的意思)

            Fluent中的UDF詳細中文教程(7)

            第七章 UDF的編譯與鏈接

            編寫好UDF件(詳見第三章)后,接下來則準備編譯(或鏈接)它。

            在7.2或7.3節中指導將用戶編寫好的UDF如何解釋、編譯成為共享目

            標庫的UDF。

            _ 第 7.1 節: 介紹

            _ 第 7.2 節: 解釋 UDF

            _ 第 7.3 節: 編譯 UDF

            7.1 介紹

            解釋的UDF和編譯的UDF其源碼產生途徑及編譯過程產生的結果代碼

            是不同的。編譯后的UDF由C語言系統的編譯器編譯成本地目標碼。這

            一過程須在FLUENT運行前完成。在FLUENT運行時會執行存放于共享庫

            里的目標碼,這一過程稱為“動態裝載”。

            另一方面,解釋的UDF被編譯成與體系結構無關的中間代碼或偽碼。

            這一代碼調用時是在內部模擬器或解釋器上運行。與體系結構無關的

            代碼犧牲了程序性能,但其UDF可易于共享在不同的結構體系之間,

            即操作系統和FLUENT版本中。如果執行速度是所關心的,UDF文件可

            以不用修改直接在編譯模式里運行。

            為了區別這種不同,在FLUENT中解釋UDF和編譯UDF的控制面板其形式

            是不同的。解釋UDF的控制面板里有個“Compile按鈕”,當點擊

            “Compile按鈕”時會實時編譯源碼。編譯UDF的控制面板里有個“Open

            按鈕”,當點擊“Open按鈕” 時會“打開”或連接目標代碼庫運行

            FLUENT(此時在運行FLUENT之前需要編譯好目標碼)。

            當FLUENT程序運行中鏈接一個已編譯好的UDF庫時,和該共享庫相關

            的東西都被存放到ca文件中。因此,只要讀取ca文件,這個庫會

            自動地鏈接到FLUENT處理過程。同樣地,一個已經經過解釋的UDF文

            件在運行時刻被編譯,用戶自定義的C函數的名稱與內容將會被存放

            到用戶的ca文件中。只要讀取這個ca文件,這些函數會被自動編

            譯。

            注:已編譯的UDF所用到的目標代碼庫必須適用于當前所使用的計算

            機體系結構、操作系統以及FLUENT軟件的可執行版本。一旦用戶的

            FLUENT升級、操作系統改變了或者運行在不同的類型的計算機,必須

            重新編譯這些庫。

            UDF必須用DEFINE宏進行定義,DEFINE宏的定義是在udf.h文件中。因

            此,在用戶編譯UDF之前,udf.h文件必須被放到一個可被找到的路徑,

            或者放到當前的工作目錄中。

            udf.h文件放置在:

            path

            //fluent6.

            +x

            /src/udf.h

            其中path是Fluent軟件的安裝目錄,即目錄。X代表了你

            所安裝的版本號。

            通常情況下,用戶不應該從安裝默認目錄中復制udf.h文件。編譯器

            先在當前目錄中尋找該文件,如果沒找到,編譯器會自動到/src目錄

            下尋找。如果你升級了軟件的版本,但是沒有從你的工作目錄中刪除

            舊版本的udf.h文件,你則不能訪問到該文件的最新版本。在任何情

            況下都不應該改變udf.h文件。

            7.2 UDF解釋

            這一節介紹編譯經過解釋的UDF的步驟。一旦經過解釋的UDF被編譯,

            用戶自定義的C函數的名稱與內容將會被存放到ca文件中。只要讀

            取這個ca文件,這些函數便會自動被編譯。

            編譯被解釋的UDF的一般程序如下:

            1. 如果用戶沒有在網絡Windows計算機上使用并行的FLUENT版本,則

            需要確定UDF的C源碼和ca文件與當前工作目錄一致。具體步驟見

            7.2.2節。

            ! 如果源碼不在當前工作目錄,則用戶編譯UDF時,用戶必須在解釋

            UDF的控制面板里輸入文件的完全路徑,而不是只輸入文件名。

            2. 在當前工作目錄下運行FLUENT。

            3. 讀取(或建立)ca文件。

            4. 打開“Interpreted UDFs panel”,編譯UDF(如vprofile.c)。

            圖7.2.1 解釋的UDF的控制面板

            (a) 在“Source File Name”下輸入C源碼的文件名(如vprofile.c)。

            ! 如果自定義的C源碼不在工作目錄中,用戶必須輸入完全的自定義

            的C函數路徑。

            當寫入ca文件時,自定義源碼的名稱(或源碼的完全路徑)會存放

            到ca文件中。

            (b) 在“CPP Command Name”指定為C的預處理程序。當然也有其它

            有效的ANSI C預處理程序,包括gcc -E和cc –E。詳細檢查所用

            的計算機系統管理。

            (c) 如果自定義函數局部變量數不引起棧的溢出,則保持“Stack

            Size”的默認值為1000。此時,所設 “Stack Size” 的數要遠

            遠大于局部變量用的數。

            (d) 選擇“Display Asmbly Listing”,則當函數編譯匯編碼的清

            單會出現在窗口的控制臺內。這一選項會保存于ca文件,當用

            戶接著運行FLUENT時匯編碼會自動顯示。

            (e) 如果用戶使用“Fluent Inc”提供的C預處理程序,選擇“U

            Contributed CPP”。

            (f) 點擊“Compile”編譯UDF。

            自定義C程序的名稱和內容會存入于所寫的ca文件。只要編譯UDF,

            匯編碼會出現在控制窗口,所示范例如下。

            (g) 編譯結束點擊“Clo”。

            ! 如果在一次模擬中使用多于一個的UDF,用戶需要將這些函數連接

            在一個C文件中,例如all.c。然后用“Interpreted UDFs”面板編

            譯連接的文件。這些函數可以作為邊界條件、源項及特性等。

            7.2.2 基于Windows并行網絡的目錄結構

            在基于Windows網絡上使用并行FLUENT版本需要專門的方法組織用戶

            文件。具體步驟如下:

            1. 在“”目錄下創建一個名為“udf” 的可寫子目錄。

            2. 在udf目錄下創建子目錄(如myudf),將UDF的C

            源碼存放于這個目錄下。如果在同一串下多個用戶運行工作,每

            個用戶在udf目錄下創建自己的子目錄(如

            abcudf和xyzudf)。

            ! 因為源碼不在當前工作目錄下,所以在編譯UDF時必須在

            “Interpreted UDFs”面板中輸入文件的完全路徑。例如,編譯

            example.c文件時,輸入如下:

            myudfexample.c

            應輸入用戶所安裝FLUENT的計算機名(如myrver)。

            3. 確定所建立的ca文件在當前工作目錄下。

            7.2.3 調試解釋的UDF

            編譯UDF時出錯信息會出現在控制窗口中。用戶有可能因錯誤滾動太

            快不能看到所用的出錯信息。因此調試UDF時用戶想關掉“Display

            Asmbly Listing”。

            如果在調試UDF的過程中一直打開“Interpreted UDFs”面板,由于

            在獨立窗口進行編輯,編譯按鈕則會不斷重復編譯。然后,直到無出

            錯信息調試和編譯才會結束。

            下面介紹一個出錯例子,即在“Interpreted UDFs”控制面板中,編

            譯被解釋過的UDF時指定了錯誤的源文件。上面曾介紹過如果僅僅從

            當前工作目錄下啟動FLUENT,在“Interpreted UDFs”控制面板中鍵

            入用戶的C源碼的文件名,則ca文件和C源碼被指定于當前工作目錄

            下。如果用戶編譯的C源碼與工作目錄是不同的路徑,用戶必須輸入C

            源碼所在的完整路徑。否則會出現以下的錯誤信息:

            gcc: vprofile.c: No such file or directory

            gcc: No input files

            Error: vprofile.c: line 1: syntax error.

            如果編譯UDF寫完ca文件后,接著移動C源碼到不同位置,會在接著

            運行FLUENT的過程中產生同樣的錯誤信息。

            為了避免錯誤,只需要在“Interpreted UDFs”控制面板中的“Source

            File Name”下輸入完全的路徑名,然后點擊“Compile”。此時寫ca

            文件會保存C源碼的新路徑。

            7.3 編譯UDF

            這一節介紹如何鏈接編譯好的UDF。這一過程需要使用C編譯器。大部

            分UNIX的操作系統提供了C編譯器。如果在PC機上運行,需要安裝VC++

            編譯器(如微軟C++、v6.0或更高的版本)。一旦編譯好的UDF庫文件

            在FLUENT運行時鏈接到FLUENT處理過程,和共享庫相關的東西會保存

            到ca文件。因此,只要讀取ca文件,編譯的庫文件會自動鏈接到

            FLUENT處理過程。在控制窗口將會出現鏈接狀態的報告如下:

            Opening library "libp1/ultra/2d/"...

            p1_adjust

            energy_source

            p1_source

            p1_diffusivity

            p1_bc

            Done.

            7.3.1 一般程序

            編譯和鏈接一個編譯好的UDF的一般程序如下所示:

            1. 在當前工作目錄下,建立專門的目錄結構(見7.3.2節)。

            2. 編譯用戶的UDF和修建共享庫(見7.3.3節)。

            3. 在當前工作目錄下運行FLUENT。

            4. 讀取(或建立)ca文件(確信ca文件在當前工作目錄下)。

            5. 鏈接共享庫到FLUENT(見7.3.4節)。

            7.3.2 建立目錄結構

            對于UNIX系統和Windows系統來說,目錄結構是不同的。下面分別介

            紹在兩種系統下如何建立目錄結構。

            UNIX系統

            對于UNIX系統下編譯的UDF來說,和2兩個

            文件在編譯UDF庫被需要。makefile文件包含了用戶自定義部分,在

            這部分允許輸入用戶源函數和FLUENT的安裝路徑。這些文件的完整路

            徑如下:

            path

            //fluent6.

            +x

            /src/

            path

            //fluent6.

            +x

            /src/2

            其中

            path是用戶直接安裝

            的路徑,

            x是用戶安裝

            Fluent

            本的相應數(如,

            fluent6.0為0)。

            ! FLUENT安裝后所釋放的2文件名為。

            下面介紹建立共享庫所要求的目錄結構。通過下面的例子來介紹目錄

            結構的建立,如圖7.3.1所示。

            圖7.3.1 為編譯好的UDF建立庫目錄的樣本(UNIX)

            需要注意的是在圖7.3.1所示的目錄結構為FLUENT的兩種版本:二維

            單精度串型和二維單精度平行。

            !不要在目錄(2d,2d host,等等)下存放任何文件。當編譯用戶庫

            (見7.3.3節)時,圖7.3.1中所示的文件會自動存放。

            1. 在當然工作目錄下,創建一個儲存用戶庫的目錄(如libudf)。

            2. 從以上所示目錄下復制2到用戶目錄(如libudf),

            且改名為Makefile。

            3. 在用戶創建的庫目錄下,建立一個儲存用戶源碼、命名為src的源

            碼目錄。

            4. 復制用戶源碼(如udfexample.c)到所建的/src目錄下。

            5. 從以上所示目錄下復制到用戶的/src目錄,并且命

            名為makefile。

            6. 鑒別FLUENT所運行的計算機的體系機構。

            (a) 開始FLUENT程序。

            (b) 向上滾動FLUENT的控制窗口到“Starting”信息處,鑒定FLUENT

            的體系機構。

            (c) 退出FLUENT程序。

            ! 如果體系機構是irix6.5,需要在makefile進行額外的修改。

            7. 為體系機構所建不同版本下創建目錄(如ultra/2d和ultra/3d)。

            存在的版本如下所示:

            z single-precision rial 2D or 3D: 2d or 3d

            z double-precision rial 2D or 3D: 2ddp or 3ddp

            z single-precision parallel 2D or 3D: 2d_node and

            2d_host or 3d_node and 3d_host

            z double-precision parallel 2D or 3D: 2ddp_node and

            2ddp_host or 3ddp_node and 3ddp_host

            ! 需要注意:不管計算節點的數量,用戶必須為每個并行版本的求解

            器(如在三維下有兩個目錄,二維雙精度版本下有兩個目錄,等等)

            創建兩個調試目錄。

            !不要在目錄(2d,2d host,等等)下存放任何文件。當編譯用戶庫

            (見7.3.3節)時,圖7.3.1中所示的文件會自動存放。

            Windows系統

            對于Windows系統下編譯的UDF來說,makefile_和ur_

            兩個文件在編譯UDF庫被需要。ur_文件中包含了用戶自定義

            部分,在這部分允許輸入用戶源函數及其它信息。

            為了建立共享庫所要求的目錄結構,需要按照上面所講的操作步驟進

            行。通過下面的例子來介紹目錄結構的建立,如圖7.3.2所示。

            需要注意的是在圖7.3.2所示的目錄結構為FLUENT的兩種版本:二維

            單精度串型和二維單精度并行。

            圖7.3.2 為編譯好的UDF建立庫目錄的樣本(Windows)

            1. 在當前工作目錄下,創建一個儲存用戶庫的目錄(如libudf)。

            2. 在用戶創建的庫目錄下,建立一個儲存用戶源碼、命名為src的源

            碼目錄。

            3. 復制用戶源碼(如udfexample.c)到所建的/src目錄下。

            4. 建立所使用體系機構的目錄,如基于Windows的Intel系統使用的

            目錄為ntx86。

            5. 針對所用的體系機構建立不同版本的目錄(如ntx862d)。存在

            的版本如下所示:

            z single-precision rial 2D or 3D: 2d or 3d

            z double-precision rial 2D or 3D: 2ddp or 3ddp

            z single-precision parallel 2D or 3D: 2d_node and

            2d_host or 3d_node and 3d_host

            z double-precision parallel 2D or 3D: 2ddp_node and

            2ddp_host or 3ddp_node and 3ddp_host

            ! 需要注意:不管計算節點的數量,用戶必須為每個并行版本的求解

            器(如在三維下有兩個目錄,二維雙精度版本下有兩個目錄,等等)

            創建兩個調試目錄。

            6.復制makefile_和ur_到相應版本所建的目錄下,如

            2d。

            ! 對于并行的版本來說,一定要復制這兩個文件到主機和節點目錄,

            即如圖7.3.2所示的2d_node and 2d_host目錄。

            這兩個文件的完整路徑如下:

            path

            ent6.

            +x

            srcmakefile_

            path

            ent6.

            +x

            srcur_

            其中

            path是用戶直接安裝

            的路徑,

            x是用戶安裝

            Fluent

            本的相應數(如,

            fluent6.0為0)。

            ! 確定makefile_和ur_為最新版本所用文件。如果安

            裝新的FLUENT 6版本,必須復制新的makefile_和

            ur_到相應的創建目錄。

            7. 重命名makefile_為makefile。

            7.3.3 編譯和創建用戶共享庫

            下面分別介紹UNIX和Windows系統下如何編譯和創建共享庫。

            UNIX系統

            在建立目錄并存放文件到相應位置后,便能開始編譯和創建共享庫。

            1. 在用戶的src目錄下編輯文件makefile,設置參數如下:

            z SOURCES = 編譯好的用戶自定義函數

            z FLUENT INC = 用戶的安裝路徑

            下面是一個makefile的例子:

            #-----------------------------------------------------

            ------#

            # makefile for ur defined functions.

            #

            #-----------------------------------------------------

            ------#

            #-----------------------------------------------------

            ------#

            # Ur modifiable ction.

            #-----------------------------------------------------

            ------#

            SOURCES= udfexample.c

            FLUENT_INC= /path/

            #-----------------------------------------------------

            ------#

            # Build targets (do not modify below this line).

            #-----------------------------------------------------

            ------#

            .

            .

            2. 如果體系機構是irix6.5,還需要在makefile中進行附加變化。

            (a) 找到makefile文件中找到下面的命令行

            CFLAGS_IRIX6R10= -KPIC -ansi -fullwarn -O -n32

            (b) 改變“-ansi”為“-xansi”,即

            CFLAGS_IRIX6R10= -KPIC -xansi -fullwarn -O -n32

            對于其它的體系機構不需要進行以上變動。

            3. 在工作目錄(如libudf)下,執行make命令,包含前一步(在7.3.2

            節)確定的體系機構(如ultra),即

            make "FLUENT ARCH=ultra"

            控制窗口顯示信息為:

            # linking to ../../src/udfexample.c in ultra/2d

            # linking to ../../src/makefile in ultra/2d

            # building library in ultra/2d

            # linking to ../../src/udfexample.c in ultra/3d

            # linking to ../../src/makefile in ultra/3d

            # building library in ultra/3d

            以上面的makefile為例,用戶自定義函數udfexample.c被編譯和存放

            于版本所指定的共享庫中,如在圖7.3.1中所示的2d,

            2d_host和2d_node。雖然在這個例子中只用了一個C函數,但是用戶

            在“SOURCES = in the makefile”下可通過空格分隔多個源文件。

            Windows系統

            在建立目錄并存放文件到相應位置后,便能開始編譯和創建共享庫。

            1. 用文本文件編譯ur_文件,設置參數為:

            z SOURCES =編譯好的用戶自定義函數。在每個文件前加前綴

            $(SRC),如 一個函數為$(SRC)udfexample.c,兩個函數

            為$(SRC)udfexample.c $ (SRC)udfexample2.c)。

            z VERSION =所用版本,即如圖7.3.2所示2d,3d,2ddp,3ddp,

            2d host,2d node,3d host,3d node,2ddp host,2ddp node,

            3ddp host,或3ddp node。

            z PARALLEL NODE =并行連接庫。對于求解器的一系列版本無指

            定的并行連接庫。可能的輸入為:

            -{ none: rial

            -{ smpi: parallel using shared memory (for

            multiprocessor machines)

            -{ vmpi: parallel using shared memory or network with

            vendor MPI software

            -{ net: parallel using network communicator with

            RSHD software

            ! 如果使用的是并行求解器,需要復制兩個ur_文件(一個

            是主目錄的,一個是節點目錄),并且指定兩個文件適當的SOURCE,

            VERSION, and PARALLEL NODE。

            下面給出ur_文件的一個例子:

            對于指定多個用戶定義函數只需要在SOURCES下輸入它們,并用空格

            分開即可。

            2. 在MS-DOS 命令提示窗口,鍵入nmake建立目錄,如

            libudfntx862d。

            需要注意的是如果創建存在問題,通過鍵入nmake clean來進行完

            整的重建。

            7.3.4 連接共享庫到FLUENT可執行文件

            按照7.3.3小節所示的unix或windows環境下的步驟編譯共享庫后,就

            可以將其連接到FLUENT程序中。將共享庫連接到FLUENT程序中的步驟

            如下:

            1. 從當前工作目錄下啟動FLUENT。

            2. 讀取(或設置)ca文件。(確認此ca文件保存在當前的工作

            目錄下。)

            3. 連接共享庫到FLUENT執行文件中。

            (a) 如果共享庫保存在當前工作目錄中,在Library Name對話框中

            輸入相對路徑(例如, libudf), 否則輸入完整路徑,(例如,

            ~myhome/myfiles/libudf).

            !注意,如果存放共享庫的目錄不在當前的工作目錄或其子目錄下,

            一定要輸入完整的路徑名。

            (b) 單擊Open按鈕,這會將共享庫連接到FLUENT執行文件中。求

            解器會自動搜索相應的結構格式和版本。一旦共享庫連接到

            FLUENT執行文件以及ca文件被寫入以后,此連接關系就被保存

            在ca文件中。因此,無論何時將ca文件讀入FLURENT,此共

            享庫都會被自動連接。

            7.3.5 編譯和連接共享庫時常見的錯誤

            指定庫的名稱

            僅當從當前的工作目錄下運行FLUENT并且共享庫的目錄是當前工作

            目錄的子目錄時,才可以在Compiled UDFs 面板上直接輸入共享庫的

            目錄(例如libudf)。如果被使用的共享庫不在上述位置上,連接此共

            享庫時,必須提供其完整的路徑。否則會出現以下錯誤:

            Opening library "libudf/ultra/3d/"...

            Error: open_udf_library: couldn't open library:

            libudf/ultra/3d/

            如果將共享庫移至其他的位置,而要讀入的ca文件又包含此共享庫

            的連接,也會出現上述錯誤信息。

            解決方法

            為了解決這個問題,可以在Library Name in the Compiled UDFs 面

            板上輸入共享庫的完整路徑,然后單擊Open按鈕。雖然同樣的錯誤信

            息仍將出現,但是新的路徑會保存在ca文件中。重新讀入ca文件

            就會得到正確的連接。

            使用不同版本的FLUENT

            如果采用一個版本的FLUENT(例如6.0.1)編譯UDF,而試圖采用另一個

            不同的版本(例如6.0.2)讀入ca文件時,會出現以下錯誤:

            Error: open_udf_library: library version 6.0.1 incompatible

            with solver version 6.0.2

            解決辦法

            用新版本的FLUENT重新編譯UDF,然后再次讀入ca文件。

            Fluent中的UDF詳細中文教程(7)

            本文發布于:2024-03-15 00:16:11,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1710432971161012.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:Fluent中的UDF詳細中文教程(7).doc

            本文 PDF 下載地址:Fluent中的UDF詳細中文教程(7).pdf

            標簽:文件   目錄   編譯
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产精品无码作爱| 国产成人亚洲精品狼色在线| 色欲国产一区二区日韩欧美| 伊在人亚洲香蕉精品区| 亚洲男人电影天堂无码| 五月丁香激激情亚洲综合| 国产福利在线观看免费第一福利| 东京热人妻无码一区二区av| 国产精品视频一区二区亚瑟| 狠狠综合久久综合88亚洲| 两个人看的www高清免费中文| 熟女熟妇乱女乱妇综合网| 一本大道无码av天堂| 视频二区国产精品职场同事| 97久久超碰亚洲视觉盛宴| 国产成版人视频网站免费下| 大地资源免费视频观看| 欧洲中文字幕一区二区| 亚洲av无码之国产精品网址蜜芽| 亚洲一码二码三码精华液| 久久美女夜夜骚骚免费视频| 在线 欧美 中文 亚洲 精品| 精品 无码 国产观看| 又爽又大又黄a级毛片在线视频| 国产成人精品97| 亚洲 校园 欧美 国产 另类| 国产精品女人毛片在线看| 西西人体大胆444WWW| 91福利精品老师国产自产在线| 无码人妻精品一区二区三区下载| 久久99精品久久久久久欧洲站| 精品不卡一区二区三区| 狠狠久久五月综合色和啪| 九九热精品在线视频观看| 丰满人妻无码| 国产熟女激情一区二区三区| 草草浮力影院| 日韩熟女乱综合一区二区| 亚欧洲乱码视频在线专区| 久久99热只有视精品6国产| 老司机精品成人无码AV|