用Yade-DEM 做过博士期间的部分工作,也是从毫无所知到算是入门,分享一点我的学习过程,为那些刚接触Yade的同学提供些许参考,希望对大家有帮助。
0. Yade 简介
Yade 是一个用于离散元分析的开源平台,是法国Lab 3SR-Grenoble 课题组发展的。Authors and contributorsyade-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,然后组里安装双系统的业务就被我承包了。Rufusrufus.ie
1.3 安装Yade
对于初学者,比如现阶段只是使用Yade进行建模计算,而不用自己编写接触本构之类的,我觉得只需要安装Yade发行版就行。Yade发行版是稳定版本,足够使用了。安装只需2步搞定:
第一步:桌面右键--打开终端
第二步:sudo apt-get install yade
随着功力渐长,你可以安装Yade的其他开发版本,相信那时你也不需要这个基础的介绍了,详细可以看Yade官网。Installation - Yade 2019-09-25.git-746e5e1 documentationyade-dem.org
安装完成后,要打开Yade,只需在终端中输入yade,回车即可。
2. Yade 学习
总:学习Yade,要把整个其官网说明看完看懂再进行模拟是不现实的,这时我们可以参考《钱学森》回国刚开始造导弹时的方法:不求单项技术的先进性,只求总体技术的合理性,充分利用仅有资源,以总体设计负责对各个分系统的技术协调。所以,我们要做的是不求每个功能参数的完全理解,只求程序能够正常运行,充分节约时间资源,以总体框架负责对各个模块的协调。按照这个思路,对于Yade初学者,以下学习过程可以参考:
第一步,建议从其官网介绍文件中的《Hands on》开始看,主要是关于python基础和Yade基础。Hands-on - Yade 2019-09-25.git-746e5e1 documentationyade-dem.org
看完《hands on》后,会知道如何生成单个颗粒,颗粒集,边界,然后对engine有个概念就行。在Ubuntu终端中打开Yade,跟着实操一下效果更好。这个过程大概半天(4小时)。
第二步,看实例,然后解剖实例。
记得高中时有个叫《高考题库》的辅导书,广告里面有句话大致是这样:高考考什么,我们练什么。简单直白,虐skr人。有位同学,我看着他一天一天又一天的做,新书变旧书,后来,人家去了北大。。。
说回Yade,我们要做模拟,当然是看简明的实例更能快速体会一个完整模拟的框架啦。Examples with tutorialyade-dem.org
比如以第二个例子--Gravity deposition为例,就知道Yade基本框架为:
a.生成颗粒
b.定义引擎(engines)
c.后处理(画图)
随着你多看些例子,你会发现,engines里面的内容基本都一样,因为这与离散元的计算核心思路有关。然后,你也会自然地知道比如如何“定义材料”应该在框架中的什么位置了。
熟悉了基本框架后,我们下一步是弄懂例子中的语句意思。
上面网址中有5个实例,耐心剖析前3个足够了。怎么剖析?
一行行过代码,任何不懂的语句,复制--粘贴进Yade官网中的Quick Search。Search - Yade 2019-09-25.git-746e5e1 documentationyade-dem.org
比如不懂sp.makeCloud是什么意思,在Quick Search中搜索,得到其详细解释如下。yade.pack moduleyade-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_Testyade-dem.org
希望对大家有帮助。