一个算例 介绍 libmesh 的类
一个算例 介绍 libmesh 的类
版权声明:本文为博主原创文章,未经博主允许不得转载。
算例出处:http://libmesh.sourceforge.net/systems_of_equations_ex1.php
11int main(int argcchar** argv)
12
13 {
14 LibMeshInit init(argc, argv);
15 Mesh mesh(init.comm());
16 /*libMesh::Mesh
17 * http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1Mesh.php
18 */
19 MeshTools::Generation::build_square(mesh,
20 15, 15,
21 0., 1.,
22 0., 1.,
23 QUAD9);
24 /*
25 * libMesh::MeshTools:Generation
26 * http://libmesh.sourceforge.net/doxygen/namespacelibMesh_1_1MeshTools_1_1Generation.php
27 * 几何生成函数(点,线,面,块,球)
28 * build_point, build_line, build_square
29 * build_cube, build_sphere
30 * build_extrusion, build_delaunay_square
31 */
32
33 EquationSystems equation_systems(mesh);
34 /*
35 *libMesh::EquationSystems
*http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1EquationSystems.php
37 * 共有函数:构造/析构, clear(), init(), update, has_system(), get_system()
38 * matrix(); add_system(), delete_system(), n_vars(), n_active_dofs(), solve(), get_solution(), get_mesh(), get_info
39 */
40
41 LinearImplicitSystem &system = equation_systems.add_system<LinearImplicitSystem> ("Stokes");
42 /*
43 * libMesh::LinearImplicitSystem
44 * http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1LinearImplicitSystem.php
45 * add_variable(), attach_assemble_function()
46 */
47
48 system.add_variable("u",SECOND);
52 system.attach_assemble_function(assemble_stokes);
53
54 equation_systems.init();
56 equation_systems.parameters.set<unsignedint>("linear solver maximum iterations") =250;
58 equation_systems.get_system("Stokes").solve();
59 }
60
61 void assemble_stokes(EquationSystems& es,const std::string& system_name)
62 {
63 const MeshBase& mesh = es.get_mesh();
64 const unsigned int dim=mesh.mesh_dimension();
65 LinearImplicitSystem& system=es.get_system<LinearImplicitSystem>("Stokes");
66 const unsigned int u_var = system.variable_number("u");
FEType fe_vel_type = system.variable_type(u_var);
69 FEType fe_pres_type = system.variable_type(p_var);
70 /*libMesh::FEType
71 * http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1FEType.php
72 */
73
74 /*libMesh::FEGeneraicBase
75 * http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1FEGenericBase.php
76 * 函数:get_phi(), get_dphi(), attach_quadrature_rule(); build(); reinit(); get_xyz(); get_JxW(); get_tangents();get_type(); n_shape_functions(); print_info()
77 */
78
79 /*libMesh::AutoPtr
80 * http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1AutoPtr.php#details
81 * std::AutoPtr, an AutoPtr owns the object it holds a pointer to, copying an AutoPtr copies the pointer and transfers owners hip to the destination
82 */
83 AutoPtr<FEBase> fe_pres(FEBase::build(dim,fe_pres_type));
84
85 QGauss qrule(dim, fe_vel_type.default_quadrature_order());
86
87 fe_vel->attach_quadrature_rule(&qrule);
88 fe_pres->attach_quadrature_rule(&qrule);
89
90 /* libMesh::DofMap
91 * http://libmesh.sourceforge.net/doxygen/classlibMesh_1_1DofMap.php
92 * 函数:variable_type(), n_dofs()
93 */
94 const DofMap& dof_map = system.get_dof_map();
95
结尾
libmesh内容非常庞大,相比oofem,可以大概理解这些类。
libmesh::mesh == oofem::domain -> dof,单元数据管理(底层)
libmesh::equationsystem == oofem::engmodel -> 物理问题(映射)到有限元空间(平台)
libmesh::linearimplicitsystem == oofem::linearstatic -> 特定有限元空间数值解(实现层)
其他,smart指针设计,单元迭代器,数值积分类,矩阵计算,自适应网格模块等等。
本文大致介绍下libmesh中经常用到的类,当然还有非常多,瞬态问题,非线性问题等等求解器类都非常丰富,使用中继续学习。后文继续介绍该问题的libmesh(有限元)实现思路。
一个算例 介绍 libmesh 的类相关推荐
- JSHOP2算例介绍:blocksworld问题
概述 本文介绍最早版本的.也是最受关注的基础积木世界问题(Elementary Blocks World,EBW).在一块无限大的桌子上放置了一定数量的积木,每个积木放置在桌子上或者堆叠在其他积木上. ...
- 详解 Benders 分解与一个算例的 python 代码
听说过 benders 分解几年了,在生产管理.路径规划与选址问题中经常应用,一直没有细看,最近论文里面也见到,还是有必要了解一下它的基本思想与用法的. 目录 1. 基本思想 2. 线性规划模型与对偶 ...
- matlab强化学习算例理/菜鸟理解1——双足机器人行走算例
目录 matlab双足机器人强化学习算例介绍 强化学习的一些基础理解 菜鸟对一些名词的理解 matlab强化学习库介绍 双足机器人算例逻辑盘点 如何改写算例做自己的强化学习. %写在前面: 本人大四狗 ...
- 万字字符长文带你了解遗传算法(有几个算例源码)
一.遗传算法的基本概念 简单而言,遗传算法使用群体搜索技术,将种群代表一组问题解, 通过对当前种群施加选择.交叉和变异等一系列遗传操作来产生新-一代的种群,并逐步使种群进化到包含近似最优解的状态.由于 ...
- Python 算例实现Levenberg-Marquardt算法
第一次写技术博文,有错误的地方欢迎指点. 本博文是通过一个算例对LM算法的学习进行总结,编程语言是python. 理论就不讲了,网上一大堆. 拟合函数 y(x) = exp(a ...
- 动态规划原理介绍(附7个算例,有代码讲解)
动态规划思想 动态规划(Dynamicprogramming)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗 ...
- 递归 算例一(求一个简单嵌套字典的深度)
递归 算例一(求一个简单嵌套字典的深度) c=[]def dcc(dic):for key in dic.keys():print (key) c.append(key) vv=dic[key]#判断 ...
- 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...
- matlab 简单算例,(简单算例)基于Matlab的电力系统潮流编程计算.pdf
(简单算例)基于Matlab的电力系统潮流编程计算 基于Matlab的电力系统潮流编程计算 口黄扬威吴喜春郭志峰张斯翔 (三峡大学电气与新能源学院湖北·宜昌443002) 摘要:通过介绍电力系统的实际 ...
- Python中的元编程:一个关于修饰器和元类的简单教程
作者 | Saurabh Kukade 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 最近,作者遇到一个非常有趣的概念,它就是用 Python 进行元编程.我想在本文中分享我对 ...
最新文章
- Android 自定义View ——Matrix (矩阵)
- echarts词云第一次出现不了数据要刷新才能出现_红米K30 4G版评测:1599元的120Hz屏幕刷新率...
- R语言赋值操作符:<−、<<-、=、->、->>、:、%in%、%*%
- 蓝桥杯java第七届决赛第一题--愤怒小鸟
- QML笔记-QML基本数据类型的使用
- HTML5新属性 Canves的整体学习
- 张朝阳直播做饭上演“吃播”,“Charles的好物分享”探索带货形式新边界
- Stopping filebeat
- android 无法添加依赖关系,Android无法添加aop库依赖
- 5.2 - Function Basics
- Django框架(三)-- orm增删改查、Django生命周期
- 水质php比较低,鱼缸水质的PH太高或太低怎么办?调节PH值一般用以下4件物品
- 搜索引擎开发需要用到什么技术?
- origin绘图过程的一些经验
- 让传感器数据在三维地图上显示,更直观,更震撼!
- 文件上传功能怎么测试
- windows怎么设置始终以管理员身份运行
- android网易云播放时图片,Android 网易云音乐图片高斯模糊
- 母亲节板报图片计算机方案,母亲节电子手抄报图片大全
- 淘宝客如何通过简书引流?如何成为淘宝客?
热门文章
- H3C IS-IS实验
- HCIE Security 常见WEB攻击 备考笔记(幕布)
- Redis详解(六)——Redis主从同步原理与配置
- 重拾React: React 16.0
- 苹果iOS系统源码思考:对象的引用计数存储在哪里?--从runtime源码得到的启示...
- session 分布式处理-----https://segmentfault.com/a/1190000013447750?utm_source=tag-newest
- thinkphp使用ajax
- 写表单验证等页面的总结
- WinHTTP Web Proxy Auto-Discovery Service
- 帮你免于失业的十大技术