用Yade-DEM 做過博士期間的部分工作,也是從毫無所知到算是入門,分享一點我的學習過程,為那些剛接觸Yade的同學提供些許參考,希望對大家有幫助。
0. Yade 簡介
Yade 是一個用于離散元分析的開源平臺,是法國Lab 3SR-Grenoble 課題組發展的。Authors and contributors?yade-dem.org
相比于用其他離散元商業軟件如PFC,Yade是開源(免費)的,但免費不代表Yade性能不好,恰恰,Yade很強悍,也是這群contributors一直用心在開發和維護著。
1. Yade 安裝簡介
1.1 不需要對Linux有顧慮
Yade 是基于Linux系統運行,剛開始知道這個時,擔心我對Linux的一無所知會影響Yade的學習和使用,但使用Yade到現在,還沒有發現需要很熟練的Linux知識,簡單的安裝軟件,打開軟件命令就夠了,其余可以像在Windows系統中一樣。希望這個能打消部分同學對Linux這塊的顧慮。大兄弟,沒問題的!
1.2 Linux系統安裝 (雙系統安裝)
我安裝的是Linux系統是Ubuntu,以下內容只針對于Ubuntu,其他的我不懂不敢亂說。
如果只是想體驗一下Ubuntu以及Yade,可以先在Windows系統中安裝Ubuntu虛擬系統,一般用Vmware;但如果想用Yade進行有效率的計算,還是建議安裝一個獨立的Ubuntu系統:首先直接去Ubuntu官網上下載安裝文件,然后用大家推薦的Rufus軟件制作一個Ubuntu安裝啟動U盤。網絡上有很多很詳細的教程可以參考。
根據自己的需要選擇將電腦打造為Windows+Ubuntu雙系統還是擦除原來的系統只安裝Ubuntu。記住安裝系統前一定要備份好資料。我手滑了一下,就一下,把原來的window給擦除了,原以為這種低級失誤不會發生的。所以又吭哧吭哧安裝了window,然后組里安裝雙系統的業務就被我承包了。Rufus?rufus.ie
1.3 安裝Yade
對于初學者,比如現階段只是使用Yade進行建模計算,而不用自己編寫接觸本構之類的,我覺得只需要安裝Yade發行版就行。Yade發行版是穩定版本,足夠使用了。安裝只需2步搞定:
第一步:桌面右鍵--打開終端
第二步:sudo apt-get install yade
隨著功力漸長,你可以安裝Yade的其他開發版本,相信那時你也不需要這個基礎的介紹了,詳細可以看Yade官網。Installation - Yade 2019-09-25.git-746e5e1 documentation?yade-dem.org
安裝完成后,要打開Yade,只需在終端中輸入yade,回車即可。
2. Yade 學習
總:學習Yade,要把整個其官網說明看完看懂再進行模擬是不現實的,這時我們可以參考《錢學森》回國剛開始造導彈時的方法:不求單項技術的先進性,只求總體技術的合理性,充分利用僅有資源,以總體設計負責對各個分系統的技術協調。所以,我們要做的是不求每個功能參數的完全理解,只求程序能夠正常運行,充分節約時間資源,以總體框架負責對各個模塊的協調。按照這個思路,對于Yade初學者,以下學習過程可以參考:
第一步,建議從其官網介紹文件中的《Hands on》開始看,主要是關于python基礎和Yade基礎。Hands-on - Yade 2019-09-25.git-746e5e1 documentation?yade-dem.org
看完《hands on》后,會知道如何生成單個顆粒,顆粒集,邊界,然后對engine有個概念就行。在Ubuntu終端中打開Yade,跟著實操一下效果更好。這個過程大概半天(4小時)。
第二步,看實例,然后解剖實例。
記得高中時有個叫《高考題庫》的輔導書,廣告里面有句話大致是這樣:高考考什么,我們練什么。簡單直白,虐skr人。有位同學,我看著他一天一天又一天的做,新書變舊書,后來,人家去了北大。。。
說回Yade,我們要做模擬,當然是看簡明的實例更能快速體會一個完整模擬的框架啦。Examples with tutorial?yade-dem.org
比如以第二個例子--Gravity deposition為例,就知道Yade基本框架為:
a.生成顆粒
b.定義引擎(engines)
c.后處理(畫圖)
隨著你多看些例子,你會發現,engines里面的內容基本都一樣,因為這與離散元的計算核心思路有關。然后,你也會自然地知道比如如何“定義材料”應該在框架中的什么位置了。
熟悉了基本框架后,我們下一步是弄懂例子中的語句意思。
上面網址中有5個實例,耐心剖析前3個足夠了。怎么剖析?
一行行過代碼,任何不懂的語句,復制--粘貼進Yade官網中的Quick Search。Search - Yade 2019-09-25.git-746e5e1 documentation?yade-dem.org
比如不懂sp.makeCloud是什么意思,在Quick Search中搜索,得到其詳細解釋如下。yade.pack module?yade-dem.org
(這些文檔都是英語,剛開始有些不習慣,看一兩天就好了,也可以給瀏覽器裝個翻譯小插件隨時翻譯不懂的單詞。是單詞哈,直接翻譯句子甚至整個網頁,結果就隨緣啦。)
過程中最好做一下筆記,這樣一行行弄懂每個語句的功能后,試著自己能不能把簡單的實例默寫下來,運行無誤,基本就ok啦。這個過程大致3天到15天,主要是看你在剖析過程中,是否發散著學習,比如看到Ig2_Sphere_Sphere_ScGeom()不懂,我就只去搞懂Ig2_Sphere_Sphere_ScGeom()是干什么用的,這當然可以,不過也可以順便看一下Ig2是用來干什么的。
對于Yade,我也還在學習和探索過程中,想到有什么更好的建議后會完善這個回答,不足之處歡迎討論。
加油!
---2020-02-25--
補充小Tips:如何讓Yade充分使用電腦的計算資源,比如使用更多的CPU去跑程序。
我剛開始很長一段時間使用yade進行計算時,以yade為例,是在terminal中輸入:
然后就開始了漫長又漫長的等待。
其實上面這條命令,是默認使用一個CPU (或線程,下面不做區分) 來進行計算。如果你的電腦是多核的,其他核心并沒有用于Yade,實在是資源浪費。
這里插播一個Ubuntu 中查看CPU及內存使用情況的方法,打開terminal:
>>sudo apt-get install htop (已經安裝的朋友跳過)
>>htop
即可查看。所以當我執行時,看到只有一個CPU達到100%,其他的不干活,心里很不是滋味,就好像花錢雇了CPU但.....
其實,在Yade中可以通過:
>>yade -j 4 script.py
來指定讓4個核心工作,其中,-j 的后面為指定核心的數目。
我電腦是8核的,所以:
>>yade -j 8 script.py
運行時htop顯示如下:
看著8個伙計都全力以赴著,我看了看手上的勞力士,想著,明天就拿你換更多的CPU去,哎,有錢人的快樂,就是這么的...
但是,Yade的計算效率也不是完全隨著CPU數量的增加而線形增加的,大家可以看看這個測試文檔:https://yade-dem.org/wiki/Performance_Test?yade-dem.org
希望對大家有幫助。