用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

希望对大家有帮助。

离散元 python_刚开始学习离散元软件Yade,有什么建议?相关推荐

  1. 有限元、离散元、边界元、无界元的区别和适用范围

    转自:http://blog.sina.com.cn/s/blog_71c3cfcf0100sh3s.html 有限元.离散元.边界元.无界元的区别和适用范围 目前世界上结构计算方法一般分为有限元(F ...

  2. 深度强化元学习教程---元学习概述

    深度强化元学习是近期深度学习技术的一个另人瞩目的新兴领域,其利用元学习,解决了深度学习需要大数据集的问题,以及强化学习收敛慢的问题.同时元学习还可以适用于环境不断改变的应用场景,具有巨大的应用前景. ...

  3. ICLR 2019计算机视觉、NLP、图模型、对抗学习、表示学习和元学习

    https://www.toutiao.com/a6703123631590867459/ 原作者:Marina Vinyes 深度学习与NLP编译 关键词:Computer Vision, Natu ...

  4. 文献学习(part10)--元自步学习

    学习笔记,仅供参考,有错必究 从文献中按照本人的学习情况不完全摘录: 文章目录 元自步学习 摘要 课程学习与自步学习 自步学习的基本执行模式 自步学习简介 典型的自步学习算法 超参数优化 元自步学习算 ...

  5. 斯坦福大学#深度多任务学习与元学习#视频及讲义下载

    #Stanford CS330 2019秋# #多任务学习# #元学习# CS 330: Deep Multi-Task and Meta Learning 深度学习在图像分类.语音识别.游戏等监督学 ...

  6. 连续型切片与离散加减的思路学习

    连续型切片与离散加减的思路学习 @(微积分) 思考一道1999年的习题. 设f(x)是区间[0,+∞)[0,+\infty)上单调递减且非负的连续函数.an=∑nk=1f(k)−∫n1f(x)dx,n ...

  7. 元学习 迁移学习_元学习就是您所需要的

    元学习 迁移学习 Update: This post is part of a blog series on Meta-Learning that I'm working on. Check out ...

  8. 强化学习—— 离散与连续动作空间(随机策略梯度与确定策略梯度)

    强化学习-- 离散与连续动作空间(随机策略梯度与确定策略梯度) 1. 动作空间 1.1 离散动作空间 1.2 连续动作空间 2. 确定策略梯度做连续控制 2.1 确定策略梯度推导 2.2 确定策略梯度 ...

  9. 多模态学习、迁移学习、元学习、联邦学习、表示学习、知识图谱、无监督学习、半监督学习、弱监督学习、自监督学习简介

    多模态学习 Multimodal Learning :文本.视觉.声音模态结合的学习 迁移学习 transfer learning:在某训练集上训练后的模型(预训练模型),相似训练集再进行训练后可以使 ...

最新文章

  1. 2021年人工神经网络第一次作业要求
  2. Sql 将多个表查询的结果进行再次查询
  3. 关于fflush、缓冲区、scanf、EOF等问题真麻烦
  4. 做一个p2p打洞的C#程序
  5. java i数据类型_数据类型 I
  6. Gym 101775J Straight Master(差分数组)题解
  7. OpenCASCADE绘制测试线束:拓扑命令之拓扑和几何分析
  8. 获取请求的url java_Java获取此次请求URL以及服务器根路径的方法
  9. 银行家算法总结及实现
  10. 【操作系统】上下文切换
  11. Spring boot 连接Redis实现HMSET操作
  12. 毕设日志——查看系统基本信息的linux命令
  13. Node单线程高并发原理
  14. springmvc中常见的简单的文件上传和下载
  15. 典型三种近场通信的特点以及未来趋势
  16. SpringMVC 增删改查小案例-医院挂号系统
  17. linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
  18. spark常用RDD算子 - take(),takeOrdered(),top(),first()
  19. 分享三个前端学习方法、十项前端面试笔记:养精蓄锐,为想去的公司努力一把
  20. 【面试记录】基恩士2023招聘

热门文章

  1. Unity 绿幕视频抠图算法原理与实现 -- 效果极好
  2. 顺利解决org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException!
  3. Win10系统笔记本耳机没有声音而外放却有
  4. 杜比实验室透露Windows8将整合杜比音效技术
  5. 股票历史走势的比较及显示
  6. 基于HTML电商项目的设计与实现—— HTML+CSS+JavaScrip家具网页设计实例 企业网站制作...
  7. 天线发射功率计算公式_天线功率详细说明
  8. 2022最新企业发卡网源码+直接搭建可用
  9. 数据中心“容灾和备份的区别” 。
  10. STM32 CAN通信协议详解—小白入门(二)