数字旗手

电气化、自动化、数字化、智能化、智慧化

0%

本文是对TutorialsPoint上的教程的翻译。 概述 PyQt是一个GUI控件工具箱,是Qt的Python接口。 PyQt有两个主要版本:PyQt 4.x和PyQt 5.x,两者不兼容,且前者基于Python 2和Python 3,后者仅基于Python 3。 Linux下载安装: 1 2 3 sudo apt-get install python-qt4 or sudo apt-get install pyqt5-dev-tools PyQt4由以下Modules组成:QtCore、QtGui、QtNetwork、QtXml、QtSvg、QtOpenGL、QtSql。
Read more »

什么是ICME 在TMS报告中,ICME的定义是“the integration of personnel (e.g., engineers, designers, etc.), computational models, experiments, design, and manufacturing processes across the product development cycle, for the purpose of accelerating and reducing the cost of development of a materials system or manufac
Read more »

本文是对前文的一个再次探索。 MOOSE项目太宏大,一点点来,这次先以解析怎样输入为主,还未涉及运行和求解,以后再不定期更新。 头文件 1 #include "ExampleApp.h" 声明具体问题类。 1 #include "MooseApp.h" 用于创建和存储各种对象。 1 #include "AppFactory.h" 声明AppFactory类,用于创建各种对象。里面有一个很隐藏的宏定义: 1 #define registerApp(name) AppFactory::instance().reg(#name) 在ExampleA
Read more »

本文转载自这里,修正了一些格式和文字错误。 引子 错误认识1:若程序员没有自己定义无参数的构造函数,那么编译器会自动生成默认构造函数,来进行对成员函数的初始化。 错误认识2:编译器合成出来的default constructor会明确设定“class内每一个data member的默认值”。但这两种种认识是有误的,不全面的。 正确认识: 默认的构造函数分为有用的和无用的,所谓无用的默认构造函数就是一个空函数、什么操作也不做,而有用的默认构造函数是可以初始化成员的函数。 对构造函数的需求也是分为两类:一类是编辑器需求,一类是程序的需求。 程序的需求:若程序需求构造函数时,就是要程序员自定义构造
Read more »

本文转载自这里,修正了一些格式和文字错误。 引子 在C++发明阶段,C++之父Stroustrup和贝尔实验室的C++小组对原先的宏方法进行了修订,对其进行了简化并将它从预处理范围移入了编译器。这种新的代码替换装置被称为模板,而且它变现了完全不同的代码重用方法:模板对源代码重用,而不是通过继承和组合重用对象代码。当用户使用模板时,参数由编译器来替换,这非常像原来的宏方法,却更清晰,更容易使用。 模板使类和函数可在编译时定义所需处理和返回的数据类型,一个模板并非一个实实在在的类或函数,仅仅是一个类和函数的描述。由于模板可以实现逻辑相同、数据类型不同的程序代码复制,所以使用模板机制可以减轻编程
Read more »

Intro 1 第一个例子演示了怎样创建一个Mesh Object。 头文件: 1 2 3 #include "libmesh/libmesh.h" //用来初始化库 #include "libmesh/mesh.h" //包含基本的mesh功能 using namespace libMesh; //所有的东西都在libMesh命名空间中 入口函数代码: 1 LibMeshInit init (argc, argv); // 初始化,这是必要的一步,因为libMesh可能依赖其他的比如MPI、PETSc等函数库 因为该程序的用法是: 1 ./ex1 -d DIM
Read more »

本文尝试详细地走一遍MOOSE的运行路径,对其加深理解。 编译 MOOSE是一个大型工程,从它的编译过程可以看出各个部分之间怎样联系起来。这里以MOOSE的第一个例子为研究对象,分析整个过程。其路径在: 1 moose/examples/ex01_inputfile 整个编译过程都写在了Makefile文件中。 定义环境变量 首先先定义一下环境变量: 1 2 3 EXAMPLE_DIR ?= $(shell dirname `pwd`) MOOSE_DIR ?= $(shell dirname $(EXAMPLE_DIR)) FRAMEWORK
Read more »

引子 MOOSE,全名是Multiphysics Object Oriented Simulation Environment,是一套求解多物理场耦合的工程问题的框架。其设计规范,采用面向对象的编程范式,非常易于扩展和维护,而且尽可能地隐藏问题背后的计算数学问题,比如自适应网格算法、并行计算技术等,使得用户能够着眼于自己所要研究的科学问题。 特点 其有如下特点: 1. 与维度无关的编程,用户代码不需要考虑维度问题 2. 基于有限元,可以是连续有限元,也可以是间断有限元 3. 多物理场耦合,隐藏编程细节 4. 非规则网格,有多种形状:三角形、四边形、六边形、六面体、八面体等,可读入和
Read more »

引子 moose的相场模块提供了通用的求解相场模型的算法,其通式采用的是自由能泛函的原始形式,只要用户要求解的模型满足这里内置的方程形式,那么用户仅需要提供自由能的导数和材料参数,就可以迅速进行模拟。比如教程中的调幅分解模型。 如果用户不能知道相场的原始形式,也可以自己开发模型,比如用于模拟枝晶生长的Kobayashi模型,就不满足上述规则,此时可以自己创建模型。 牛顿迭代法 moose内核模型的表达形式是将原来的控制方程中的右端项都移动到左端,得到这样的形式: 其中,N是分量的个数。 如果写成有限元函数的形式: 其中: 即,原来的连续的场变量由节点上的离散的系数来代替。 单变量求根
Read more »

2016-12-26更新: 将方程求解过程更加细致地表述。 引子 本例展示了一种无矩阵(matrix-free)方法的使用,即不明确存储矩阵元素来求解二阶变系数Possion方程。同时求解时使用了多重网格算法。 应用无矩阵方法的原因是:当前科学计算的一个瓶颈是对于内存而不是高速缓存中的数据的读取:比如对于一个矩阵和一个向量的乘法运算,现在的CPU能很快地计算浮点数的乘法和加法,但通常需要很长时间等待数据从内存中传入。因此,如果我们不再从内存中寻找矩阵元素,而是重新计算它们,那么可能整体时间就能减少。 这个无矩阵方法中还涉及向量化/矢量化编程:把for循环的操作,用矩阵操作的形式代替。在向量化
Read more »