離散元 python_剛開始學習離散元軟件Yade,有什么建議?

用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

希望對大家有幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode529. 掃雷游戲(dfs)

讓我們一起來玩掃雷游戲! 給定一個代表游戲板的二維字符矩陣。 ‘M’ 代表一個未挖出的地雷,‘E’ 代表一個未挖出的空方塊,‘B’ 代表沒有相鄰(上,下,左,右,和所有4個對角線&#…

redhat6 刪除mysql_Red Hat enterprise linux 6卸載默認安裝的 mysql

因為Red Hat enterprise linux 6 自帶了一個mysql,所以當你安裝新的mysql時,就會提示錯誤如:error:Failed dependencies:MySQL conflicts with mysql-5.1.47-4.el6.i686rmp -qa mysql 可以看到安裝的mysql于是將自帶的…

swift通知欄推送_如何使用Swift使用推送通知構建食品交付應用

swift通知欄推送by Neo Ighodaro由新Ighodaro 如何使用Swift使用推送通知構建食品交付應用 (How to build a food delivery app with push notifications using Swift) A basic understanding of Swift and Node.js is needed to follow this tutorial.要學習本教程&#xff0…

Jenkins持續集成實踐之java項目自動化部署

關于Linux安裝Jenkins可以參考我的這篇博文Ubuntu16.04環境安裝jenkins 1.安裝部署插件 進入插件管理,并搜索該插件Deploy to container Plugin進行安裝 ,下載地址為:https://wiki.jenkins-ci.org/display/JENKINS/DeployPlugin 2.安裝完后&a…

云計算時代企業內部IT人員的新定位

本文講的是云計算時代企業內部IT人員的新定位,【IT168 云計算頻道】漸漸的云計算熱起來,但是怎么去嚴格定義云計算,還是沒有一個統一的說法,最常用的就是舉例子的方式來說什么是云計算,最常用來打比方的是電力&#xf…

Java 多線程 筆記 轉自http://www.cnblogs.com/lwbqqyumidi/p/3804883.html

多線程作為Java中很重要的一個知識點, 一.線程的生命周期及五種基本狀態 關于Java中線程的生命周期,首先看一下下面這張較為經典的圖: 上圖中基本上囊括了Java中多線程各重要知識點。掌握了上圖中的各知識點,Java中的多線程也就基…

leetcode207. 課程表(dfs/bfs)

你這個學期必須選修 numCourse 門課程,記為 0 到 numCourse-1 。 在選修某些課程之前需要一些先修課程。 例如,想要學習課程 0 ,你需要先完成課程 1 ,我們用一個匹配來表示他們:[0,1] 給定課程總量以及它們的先決條件…

r.java是什么_R.java文件介紹

http://blog.chinaunix.net/uid-21411227-id-4133828.html注意:R.java文件不能手動修改。1. HelloWorld工程中的R.java文件解析package com.android.hellworld;public final class R {public static final class attr {}public static final class drawable {public…

python qt 拖拽組件使用方法_Python QT組件庫qtwidgets的使用

雖然Qt提供了不少現成的組件,但是在Python中使用PyQt5或PySide2進行圖形界面程序開發的過程,還是免不了要根據自己的需求組合一些小部件以形成新的自定義組件。最近州的先生在寫一個桌面圖形界面的登錄密碼框的過程中,發現了這樣一個小巧的自…

get與post區別

兩種 HTTP 請求方法:GET 和 POST 在客戶機和服務器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。 GET - 從指定的資源請求數據。POST - 向指定的資源提交要被處理的數據GET 方法 請注意,查詢字符串(名稱/…

java 實現 sql join_Sql 數據庫 join 連接

sql里面有兩個連接一個是union,另一個就是join他們兩個的區別:union 連接的是行 是一行一行的連 而 join 連接的是列(字段) (他們倆的區別暫時就就知道這點)join連接的使用的前提:1.必須要有至少一個表(一個表可以用自連接)2.必須要有相關聯的列(字段)&#xff…

開源與云計算

本文講的是開源與云計算,【IT168 資訊】幾年來我一直擔心開源運動可能會遭受Kim Stanley Robinson在“Green Mars”中精辟論述的問題:“歷史的浪潮比我們做得還要快。”創新者被拋在后面,他們曾經改變的世界拿著他們的主意向著意想不到的方向…

c/c++連接mysql數據庫設置及亂碼問題(vs2013連接mysql數據庫,使用Mysql API操作數據庫)...

我的安裝環境: (1)vs2013(32位版) (vs2013只有32位的 沒有64位的,但是它可以編譯出64位的程序) ; (2)mysql-5.7.15(64位) vs2013中的設置(按步驟來,順序不要亂) (1)首先在vs2013中新建一個控制臺程序 Mysq…

leetcode542. 01 矩陣(bfs/dp)

給定一個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。 兩個相鄰元素間的距離為 1 。 示例 1: 輸入: 0 0 0 0 1 0 0 0 0 輸出: 0 0 0 0 1 0 0 0 0 bfs代碼 class Solution {int[][] res;public int[][] updateMatrix(int[][] matrix) {int[][] dirnew…

react本地儲存_如何使用React和本地存儲構建freeCodeCamp的配方框

react本地儲存by Edward Njoroge愛德華尼約格(Edward Njoroge) 如何使用React和本地存儲構建freeCodeCamp的配方框 (How to build freeCodeCamp’s recipe box using React and local storage) I completed my first edition of the Free Code Camp recipe box project on May…

調用接口返回500_公交卡余額查詢接口開放使用啦!

API說明本API返回數據僅支持JSON格式且會對中文進 行unicode 編碼,JSON格式返回數據基本格式如下:{"errCode": 0,"errMsg": "OK","data": {}}其中 errCode 表示請求狀態,0表示請求成功, …

stark組件開發之組合搜索基本顯示

數據的獲取,上一篇,已經有了!然后就是,如何進行展示的問題。到了展示這里,又有了新的問題, 因為從數據庫,取得的數據。 分為 queryset 和 tuple 兩種數據結構。tuple 中,只是字符串。…

美國安全廠商在云安全上的最新進展

本文講的是美國安全廠商在云安全上的最新進展,【IT168 資訊】優利系統公司日前推出了一系列云產品和服務,并且著重強調企業創建私有云,公有云或混合云工具的安全。  Unisys Secure Cloud是優利系統公司推出的一種管理云服務,承諾…

hessianphp java_hessian 在PHP中的使用

一、hessian是什么?看到這個單詞我還不知道怎么讀,音標是[hes]讀黑森。Hessian是一個輕量級的遠程的數據交換工具,使用簡單的方法提供了RMI(遠程方法調用)的功能. 相比WebService,Hessian更簡單、快捷。采用的是二進制RPC協議&…

leetcode1025. 除數博弈(dp/數學)

愛麗絲和鮑勃一起玩游戲&#xff0c;他們輪流行動。愛麗絲先手開局。 最初&#xff0c;黑板上有一個數字 N 。在每個玩家的回合&#xff0c;玩家需要執行以下操作&#xff1a; 選出任一 x&#xff0c;滿足 0 < x < N 且 N % x 0 。 用 N - x 替換黑板上的數字 N 。 如…