
發布
注冊
/
登錄abaqus 分配內存的案例
ADINA中計算內存的手動分配技巧
在平時caenet論壇和ADINA學習群中,經常有人遇到ADINA求解器自動分配內存失敗,而不能進行計算求解的問題(如cannot allocate the memory)。08年年底的時候,我進行了一次較大規模的計算,也遇到了計算內存分配困難的問題,對相關內容進行查閱和計算調試后,在手動分配內存方面有了一定經驗,現將其整理公布給大家,以供ADINA學友們參考。7 F( L* _* o% j9 G( Z* B0 {! s
7 {4 Q- `. P% ^5 S! P6 Q0 {
但在此需要指出的是,以下經驗總結是基于結構模塊計算得出的,對其它模塊是否適用,實屬未知。并且,希望廣大ADINA學友遇到問題后,更多地去主動思考、查閱資料和解決問題,ADINA英文的help不可怕,稀缺的資料不可怕,最可怕的是一個等待和被動的學習態度。
ADINA中計算內存的手動分配技巧.rar
展開 ADINA中計算內存的手動分配技巧
在平時caenet論壇和ADINA學習群中,經常有人遇到ADINA求解器自動分配內存失敗,而不能進行計算求解的問題(如cannot allocate the memory)。08年年底的時候,我進行了一次較大規模的計算,也遇到了計算內存分配困難的問題,對相關內容進行查閱和計算調試后,在手動分配內存方面有了一定經驗,現將其整理公布給大家,以供ADINA學友們參考。
但在此需要指出的是,以下經驗總結是基于結構模塊計算得出的,對其它模塊是否適用,實屬未知。并且,希望廣大ADINA學友遇到問題后,更多地去主動思考、查閱資料和解決問題,ADINA英文的help不可怕,稀缺的資料不可怕,最可怕的是一個等待和被動的學習態度。
ADINA中計算內存的手動分配技巧.rar
展開 如何高效管理MCU的內存? 6種分配算法對比
本文主要介紹內存的基本概念以及操作系統的內存管理算法。
內存的基本概念
內存是計算機系統中除了處理器以外最重要的資源,用于存儲當前正在執行的程序和數據。內存是相對于CPU來說的,CPU可以直接尋址的存儲空間叫做內存,CPU需要通過驅動才能訪問的叫做外存。
ROM RAM Flash
內存一般采用半導體存儲單元,分為只讀存儲器(ROM,Read Only Memory)、隨機存儲器(RAM,Random Access Memory)ROM一般只能讀取不能寫入,掉電后其中的數據也不會丟失。RAM既可以從中讀取也可以寫入,但是掉電后其中的數據會丟失。內存一般指的就是RAM。
ROM在嵌入式系統中一般用于存儲BootLoader以及操作系統或者程序代碼或者直接當硬盤使用。近年來閃存(Flash)已經全面代替了ROM在嵌入式系統中的地位,它結合了ROM和RAM的長處,不僅具備電子可擦除可編程的特性,而且斷電也不會丟失數據,同時可以快速讀取數據。
兩類內存管理方式
內存管理模塊管理系統的內存資源,它是操作系統的核心模塊之一。主要包括內存的初始化、分配以及釋放。
從分配內存是否連續,可以分為兩大類。
連續內存管理:
為進程分配的內存空間是連續的,但這種分配方式容易形成內存碎片(碎片是難以利用的空閑內存,通常是小內存),降低內存利用率。連續內存管理主要分為單一連續內存管理和分區式內存管理兩種。
展開 干貨|如何高效管理MCU內存? 多種分配算法對比
兩類內存管理方式
內存管理模塊管理系統的內存資源,它是操作系統的核心模塊之一。主要包括內存的初始化、分配以及釋放。
從分配內存是否連續,可以分為兩大類。
連續內存管理:
為進程分配的內存空間是連續的,但這種分配方式容易形成內存碎片(碎片是難以利用的空閑內存,通常是小內存),降低內存利用率。連續內存管理主要分為單一連續內存管理和分區式內存管理兩種。
非連續內存管理:
將進程分散到多個不連續的內存空間中,可以減少內存碎片,內存使用率更高。如果分配的基本單位是頁,則稱為分頁內存管理;如果基本單位是段,則稱為分段內存管理。
當前的操作系統,普遍采用非連續內存管理方式。不過因為分配粒度較大,對于內存較小的嵌入式系統,一般采用連續內存管理。本文主要對嵌入式系統中常用的連續內存管理的分區式內存管理進行介紹。
分區式內存管理
分區式內存管理分為固定分區和動態分區。
固定分區:
事先就把內存劃分為若干個固定大小的區域。分區大小既可以相等也可以不等。固定分區易于實現,但是會造成分區內碎片浪費,而且分區總數固定,限制了可以并發執行的進程數量。
展開 
干貨|如何高效管理MCU的內存? 6種分配算法對比
本文主要介紹內存的基本概念以及操作系統的內存管理算法。
內存的基本概念
內存是計算機系統中除了處理器以外最重要的資源,用于存儲當前正在執行的程序和數據。內存是相對于CPU來說的,CPU可以直接尋址的存儲空間叫做內存,CPU需要通過驅動才能訪問的叫做外存。
ROM RAM Flash
內存一般采用半導體存儲單元,分為只讀存儲器(ROM,Read Only Memory)、隨機存儲器(RAM,Random Access Memory)ROM一般只能讀取不能寫入,掉電后其中的數據也不會丟失。RAM既可以從中讀取也可以寫入,但是掉電后其中的數據會丟失。內存一般指的就是RAM。
ROM在嵌入式系統中一般用于存儲BootLoader以及操作系統或者程序代碼或者直接當硬盤使用。近年來閃存(Flash)已經全面代替了ROM在嵌入式系統中的地位,它結合了ROM和RAM的長處,不僅具備電子可擦除可編程的特性,而且斷電也不會丟失數據,同時可以快速讀取數據。
兩類內存管理方式
內存管理模塊管理系統的內存資源,它是操作系統的核心模塊之一。主要包括內存的初始化、分配以及釋放。
從分配內存是否連續,可以分為兩大類。
連續內存管理:
為進程分配的內存空間是連續的,但這種分配方式容易形成內存碎片(碎片是難以利用的空閑內存,通常是小內存),降低內存利用率。連續內存管理主要分為單一連續內存管理和分區式內存管理兩種。
展開 Abaqus / CAE兩種定義材料分配預定義字段的方法
Abaqus / CAE中的體積分數工具創建專門用于材料分配預定義字段的離散字段。 通過此工具,您可以使用Abaqus / CAE中提供的零件建模技術定義復雜的歐拉材料區域。 有關詳細信息,請參見“體積分數工具”,第28.5節。
基于ABAQUS子程序UAMP編程實現水平井分段多簇壓裂流量動態分配
由于裂縫之間存在應力干擾,各條裂縫內壓力不同導致各裂縫阻力也不相同,流向各條裂縫的注入流量不斷變化并且分配不均勻。圖2為水平井各條裂縫注入流量分配示意圖。
圖2 水平井多段壓裂流量動態分配模型
圖3并聯電阻器相似模型
注入流量動態分配的原理根據Kirchoff第一定律,采用并聯電阻器相似模型模擬了壓裂液在各條裂縫間的分布,如圖3所示。每條裂縫被定義為一個阻力單元,在每個增量過程中,壓裂液在各條裂縫間的分配取決于流入流體的阻力,阻力被定義為裂縫與儲層之間的壓力差。利用ABAQUS平臺的二次開發功能,通過Fortran語言進行用戶子程序UAMP的編程,求解流量分配控制方程。UAMP可用來定義當前幅值隨任意函數的變化,每一個增量步開始前,縫內流體壓力將通過編程指令傳入子程序中,用來求解方程(7)和(8)得到每條裂縫注入速度,求解之后將結果傳遞到ABAQUS主程序中繼續求解流—固耦合方程。
在最初始的階段,各條裂縫都會注入等量的壓裂液。但隨著裂縫的擴展,在應力干擾的作用下壓力阻力發生變化,下一階段會吸收不同分量的壓裂液,隨著泵送的持續進行,大裂縫的擴展速度將會加快,小裂縫的擴展速度將會相對減慢,導致它們的形態出現差異。
三、有限元模型:
本模型基于前述理論分析,根據平面應變假設,利用擴展有限元法(XFEM)建立三條裂縫同步擴展數值模型,見圖4。模型尺寸為400m×200m,四周位移邊界固定,地層參數以吉木薩爾蘆草溝組某井數據為例。
圖4水平井多裂縫擴展數值模型
計算分為兩步,第一步平衡地應力,模擬儲層初始的賦存狀態,第二步,以總排量為9m3/min的速度注入壓裂液模擬水力壓裂過程。
四、計算結果分析
儲層的孔隙壓力分布及裂縫擴展形態如圖5所示,同時提取了壓力—流量曲線如圖6所示。
展開 Abaqus計算內存的問題:aba_sint_cap
因此,查閱了網絡上相關帖子和幫助文檔,加上親身經歷,整理如下:
方法一:可以直接在abaqus_v6.env中設置memory='80%'或其他方式,詳見幫助文檔
方法二:可通過高級系統設置--->環境變量--->變量名:ABA_SINT_CAP 值:16384
(說明:16384這個值可以更大,但似乎沒有意義!)
基于上述方法設置了足夠大的內存后,但仍然出現該錯誤。具體原因:
Abaqus中每8GB的物理內存,使用的內存將不會超過2GB
在滿足上述條件的基礎上,最多使用內存限制為16GB。
遇到這個問題后,建議重新調整模型,減小inp文件的體量。目前尚未找到特別好的方法!
展開