离散元 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.mzph.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 。 如…