
發布
注冊
/
登錄C++/Fortran
關注創建者:trytodo 創建時間:2021-04-20

C++/Fortran的實例教程
Fortran被稱為數學家語言,在計算效率方面有著得天獨厚的優勢,但因為許多歷史遺留問題以及發展問題,Fortran工程的開發和維護比較困難。隨著這些年編譯器和相應標準的發展,C++的運行效率已經與Fortran旗鼓相當,而在開發和維護問題上,大型應用軟件幾乎都采用C++編寫框架底層,優勢自不必說。再者,受國內教學環境的影響,大多數人在編程這塊也只能是對C++算得上熟悉了。這里,筆者將給出使用C++編寫Abaqus用戶子程序的方法,并不是替代Fortran,而是給用戶多一種選擇。采用本文中的方法,用戶將無需再安裝Fortran編譯器。
從編程角度看本文方法的實現原理比較簡單。以UMAT為例,Abaqus在提交計算任務后會將用戶指定的for文件或者obj文件編譯成為standardU.dll,然后連同安裝目錄下的standard.exe一起拷貝到臨時目錄下,然后運行standard.exe進行計算。在計算進行到用戶自定義材料時,Abaqus會自動去standardU.dll里尋找umat函數,也就是用戶指定源文件里的umat函數。因此,如果用C++寫出一個函數能夠讓standard.exe識別為 umat函數,并且接口變量一致,那么用戶自然就可以用C++寫出umat的用戶子程序。至于如何讓standard.exe認為就是umat函數,附件給出了具體的實現方法。
C++編寫用戶子程序實現方法.pdf
展開 目前大部分求解器開發使用C/C++/Fortran語言
1.2 實現基本功能;
要能對最簡單的例子進行計算,并得到正確的結果。需要做的工作:
能生成標準求解器的輸入文件,比如Nastran,Ansys,HFSS,Fluent等的求解器輸入文件,例子的計算結果要與這些標準求解器計算的結果做比較。
標準求解器輸入文件的解析器。用來解析輸入文件,作為開發求解器的輸入數據。
比較標準求解器的計算結果和開發的求解器結果。
這階段的主要目的是保證算法的
正確性
。開發時為了提高效率,可以借助Matlab軟件: 用Matlab完成原型的開發,直到計算結果正確。在此基礎上再將Matlab翻譯成 C++/Fortran。這樣在早起可以將精力集中在算法驗證上。需要注意的是盡量進行模塊化開發。
1.3. 完成求解器原型;
這里需要介紹一下Matlab軟件,基本介紹看百度,主要說一下Matlab混合編程。Matlab有工具是可以把M文件翻譯成C++的,不推薦。主要介紹如何把C++/Fortran文件編譯成Matlab文件。這個功能很有用,當進行模塊化開發的時候,C++/Fortran完成模塊功能,然后編譯成Mex文件,作為Matlab的模塊使用。這樣可以逐步將Matlab翻譯成C++/Fortran,提高開發效率。
小結:
1>需要開發一種標準求解器文件的解析器。
2>需要熟練使用標準CAE軟件進行仿真,熟悉求解器輸入文件和計算結果
4>開發的求解器要能正確計算經典的Benchmark例子
原型開發決定了開發的可行性,如果這階段的任務無法完成,需要加強研發的投入。
2.
展開 掌握C、C++或Fortran語言的基本編程;
5. 具有良好的邏輯思維能力和文檔撰寫能力和交流協調能力;
6. 具備Modelica編程能力的優先考慮。
崗位職責:
1. 負責基于
Modelica語言的模型設計、開發、測試和驗證工作;
2. 負責相應系統模型集成與調試工作;
3. 參與項目外部交流對接工作;
4. 負責項目中各類技術文檔編制。
熱流建模仿真工程師
任職資格:
1. 熱流相關專業,碩士及以上學歷;
2. 掌握熱力學、傳熱學、流體力學、兩相流等專業知識,了解工業熱能系統相關的業務背景知識;
3. 會熟練使用一款以上熱流體建模仿真軟件;
4. 掌握C、C++或Fortran語言的基本編程;
5. 具有良好的邏輯思維能力和文檔撰寫能力和交流協調能力;
6. 具備Modelica編程能力的優先考慮。
崗位職責:
1. 負責基于
Modelica語言的模型設計、開發、測試和驗證工作;
2. 負責相應系統模型集成與調試工作;
3. 參與項目外部交流對接工作;
4.
展開 4
子程序編寫流程
(1)需要 include的頭文件
對于Fortran編寫的子程序,每一個以FORTRAN編寫的用戶子程序必須包括一個下面的聲明,作為參數列表后的第一個聲明:
Abaqus/Standard中 :
include'aba_param.inc'
Abaqus/Explicit中:
include'vaba_param.inc'
如果變量在主要用戶子程序和后續子程序之間交換,則應當在所有子程序中指定上面的包括聲明來保持精度。
對于C和C++編寫的子程序,每一個C 和 C++用戶子程序必須包括聲明:
#include < aba_for_c.h >
此文件包含FORTRAN-C接口互用的宏。
文件aba_param. inc、vaba_param.inc和 aba_for_c.h由 Abaqus安裝程序在系統上安裝,并且包含重要的安裝參數。這些聲明告訴Abaqus執行程序將用戶子程序編譯并且鏈接到Abaqus 余下的部分,來自動地包括aba_param. inc或者vaba_param. inc 文件。因為Abaqus將知道它們在哪里,所以不需要用戶找到此文件并將它復制到任何特定的目錄。
(2)命名約定
如果用戶子程序調用其他子程序(非用戶子程序)或使用 COMMON 塊傳遞信息,則此類子程序或 COMMON 塊應以字母 K 開頭,因為該字母在 Abaqus 中絕不會用于任何子程序或 COMMON 塊的名稱開頭。
展開 該軟件主要依賴了多種語言的編譯器,如C/C++,Fortran,Python等,因此安裝過程容易出現各種小問題。本教程一一對各個依賴軟件進行詳細安裝講解,確保能夠順利安裝使用。
另外,安裝過程耗時耗力,需要快速上手使用的朋友,也可以下載我分享的可直接使用的鏡像文件,即可開始仿真計算。

C++/Fortran的相關專題、標簽、搜索
C++/Fortran的最新內容
揭秘國產CFD——風雷軟件并行架構升級的圖2" width="1080"></p><h2>一、背景概述:突破自主可控的CFD性能瓶頸</h2><p class="ql-align-justify"> 風雷軟件(PHengLEI)作為我國自主研發的通用CFD平臺,具備結構/非結構/混合網格的全域求解能力,其核心數據結構PHArray通過C++模擬Fortran多維數組特性,兼顧工程代碼的兼容性
非線性、隱式/顯式動力學等算法研發
任職要求:
1.力學、航空航天、數學、機械、化機、土木水利等相關專業,碩士及以上學歷
2.具有5年及以上結構數值仿真軟件研發經驗者優先考慮
3.熟悉有限元理論,掌握非線性有限元算法、隱式/顯式動力學算法等相關知識
4.具有ANSYS/Nastran/Abaqus等仿真軟件應用經驗者優先考慮
5.熟悉VisualStudio開發環境,熟練使用C+
3) 如果分析異常中止,但DAT文件、MSG文件和STA文件的結尾沒有相關提示,這可能不是模型本身的問題,而是由其他原因引起的分析失敗(如環境變量設置錯誤、子程序運行異常、C++或Fortran編譯語言未正確安裝等)。此時應檢查LOG文件(*.log)中的錯誤信息。
熟悉二次開發工具如Python,Visual C++,Fortran等并完成過項目的優先;
4.
有基礎的中英文口頭和書面溝通能力;
5.
具備獨立學習和解決問題的能力;
6.
具有嚴謹與積極主動的工作態度,優良的團隊合作能力;
7.
適應客戶現場支持/講解工作(適應出差工作)。
崗位職責:
1.
C++\Fortran\Java等語言的代碼導入和Java\Python語言的API調用;
架構式建模:模型庫基于MBSE思想開發,層次清晰、便于協同集成、方案選型、追溯與驗證。
2
模型中包含子程序
可以通過指定一個C、C++或者FORTRAN 源碼或者包含子程序的預編譯目標文件,在一個模型中包括一個或者多個用戶子程序。
如控制系統用的比較多的是Matlab/Simulink、MWorks、動力學系統可能用Adams或者Simpack、液壓領域則是AMESim最為優秀、發動機模型可能會用到Wave-RT 或者GTPower、空調系統會采用Dymola、此外還有很多與復雜系統建模相關的工具例如MapleSim和SimulationX、甚至是C/C++、Fortran 模型等,在進行仿真測試時,需要綜合考慮各個方面的相互影響和交互作用
目前大部分求解器開發使用C/C++/Fortran語言
2 實現基本功能;
要能對最簡單的例子進行計算,并得到正確的結果。需要做的工作:
2.1.能生成標準求解器的輸入文件,比如Nastran,Ansys,HFSS,Fluent等的求解器輸入文件,例子的計算結果要與這些標準求解器計算的結果做比較。
2.2.標準求解器輸入文件的解析器。
Conda 是一個開源的軟件包管理系統和環境管理系統,用于安裝多個版本的軟件包及其依賴關系,并在它們之間輕松切換,Conda支持Python、R、 Ruby、 Lua、 Scala、 Java、 JavaScript、 C/ C++、 FORTRAN等多種語言。
NVIDIA 為 CUDA 平臺(圖 3)提供的語言包括加速標準語言,如 ISO C++、ISO Fortran 和 Python。該平臺還支持基于指令的編程模型,如 OpenACC、OpenMP、CUDA C++ 和 CUDA Fortran。