首页 > 其他分享 >SfePy 示例1 学习笔记

SfePy 示例1 学习笔记

时间:2022-08-21 21:36:09浏览次数:102  
标签:示例 py vertices 笔记 Salome facet SfePy

官方文档:https://sfepy.org/doc-devel/introduction.html

介绍:

是一个通过有限元法解决1D,2D,3D中的耦合偏微分方程的系统. 可以对于复杂FEM问题进行简单编码
其基于Numpy和Scipy, 是一个多平台的软件

通过Example, Gallery, Tutorial获取相关的示例. 对于高级功能, 查看Primer

示例:

使用Salome软件包配合SfePy

Salome是一个开源工具用于产生网格并将处理后的数据发出. 当前是一个示例使用Salome作为使用SfePy的预处理工具.

当前示例的前提条件是假设已经有了一个可用的Salome副本. 这个副本可以经由Salome的源文件构建而出. 而且假设已经安装了SfePy并拥有MED read支持. 相关安装参考Installation

当前示例的标记:

  1. <sfepy_root>: sfepy源文件的根目录
  2. <work_dir>: 当前的运行目录

Salome的官方文档: Salome

  1. 根据Salome 示例1通过点击Export to MED file, 将文件保存在当前目录下的Mesh_Partition_Hexa.med文件中

  2. 在当前示例中, 我们认为是需要处理一个线性弹性问题, 并将这条"鱼"从头到尾进行波动. sfepy文件夹中的申明文件复制到当前文件夹 <sfepy_root>/sfepy/examples/linear_elasticity/linear_elastic.py

  3. 修改linear_elastic.py文件指定的med对象:

# 将
filename_mesh = data_dir + '/meshes/3d/cylinder.mesh'
# 更改为
filename_mesh = 'Mesh_Partition_Hexa.med' # 用于指定需要进行模拟的med对象
  1. 范围定义: 需要定义mesh对象的合理范围. 这里我们要做的是将这条鱼的尾部设置位移限制, 并设置整条鱼的上下界
# 将
regions = {
    'Omega' : 'all',
    'Left' : ('vertices in (x < 0.001)', 'facet'),
    'Right' : ('vertices in (x > 0.099)', 'facet'),
    'SomewhereTop' : ('vertices in (z > 0.017) & (x > 0.03) & (x < 0.07)', 'vertex'),
}
# 更改为
regions = {
    'Omega' : 'all',
    'Tail' : ('vertices in (x < -94)', 'facet'),
    'TopFixed' : ('vertices in (z > 9.999) & (x > 54)', 'facet'),
    'BotFixed' : ('vertices in (z < 0.001) & (x > 54)', 'facet'),
}
  1. 设定字段说明: Salome的网格对象是一个六边形网格组成的对象, 通过User’s Guide查看标记的内容
# 只需要保持以下内容:
fields = {
    'displacement': ('real', 'vector', 'Omega', 1),
}
  1. 边界条件定义: 在这部分中我们需要告诉SfePy固定"鱼头"部分的上下顶点, 并且将鱼尾以10单位/s的速度进行移动
# 更改以下内容:
ebcs = {
    'Fixed' : ('Left', {'u.all' : 0.0}),
    'Displaced' : ('Right', {'u.0' : 0.01, 'u.[1,2]' : 0.0}),
    'PerturbedSurface' : ('SomewhereTop', {'u.2' : 0.005}),
}
# 改为以下内容:
ebcs = {
    'TopFixed' : ('TopFixed', {'u.all' : 0.0}),
    'BotFixed' : ('BotFixed', {'u.all' : 0.0}),
    'Displaced' : ('Tail', {'u.2' : 10, 'u.[0,1]' : 0.0}),
}
  1. 运行模拟: 在当前运行目录中运行该目录
    ./simple.py linear_elastic.py
    这是在运行模拟过程, 当模型的余量小到一定程度后模拟结束. 其应当只运行一次因为我们只试图解一个线性问题. 其运行结果会被存放进Mesh_Partition_Hexa.vtk文件.

  2. 解析结果: 通过这个命令进行结果的查看
    ./resview.py Mesh_Partition_Hexa.vtk -f u:wu:f2.0:p0 0:vw:p0
    运行这个命令应该能获得变化或者未变化的模型的图形

使用FreeCAD/OpenSCAD + Gmsh进行模型的预处理

流程图

标签:示例,py,vertices,笔记,Salome,facet,SfePy
From: https://www.cnblogs.com/NoobSirPersonalBlog/p/16610890.html

相关文章

  • 计算几何笔记
    1并集记A,B是两个集合,以属于A或属于B的元素为元素的集合称为A与B的并(集),记作A∪B(或B∪A),读作“A并B”(或“B并A”),即A∪B={x|x∈A,或x∈B}。2交集记A,B是两个集合,以属于A且......
  • Markdown学习笔记
    Markdown学习1.标题N级标题:N个#+空格+标题填内容+回车2.字体粗体:内容两边加** Hello,World!斜体:内容两边加* Hello,World!删除效果:内容两边加~~ Hello,Wo......
  • 2022-8-21 刘明延 学习笔记
    学习心得:今天讲数据库连接池,老师做了一个小框架,有讲到反射,我看了几遍,也是知道了些反射的用法,这个框架里的东西都是用java基础写的,我也是觉得拓展了我的思维,打算多......
  • 2022-08-20 第二小组 张鑫 学习笔记
    实训四十二天1.学习重点1.数据库连接池2.基础框架3.QueryRunner类2.学习内容数据库连接池connection是一种稀有资源,一个连接建立就创造了一个资源JDBC使用数据库连......
  • Kubernetes学习笔记(十八):命令和参数
    pod-definition.ymlapiVersion:v1kind:Podmetadata:name:ubuntu-sleeper-podspec:containers:-name:ubuntu-sleeperimage:ubuntu-sleeper......
  • ARM裸机笔记
    汇编指令MRS:MovetoRegisterfromStatusMSR:MovetoStatus from Register指令同MOV,参数前者是目的地,后者是源用于操作PSR(ProgramStatusRegister)  ARM......
  • 【Coel.学习笔记】后缀数组
    在学校补了几天的动规,算是把一些基本题型都弄完了。回来继续做NOI知识点~不过可能过几天又要补DP了引入后缀数组(\(\text{SuffixArray}\),简称\(\text{SA}\))通过利......
  • 【Spring5学习笔记(5)】新特性与WebFlux:
    Spring5框架新功能1、整个Spring5框架的代码基于java8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中删除2、spring5.0框架自带了通用的日志封装(1)Spring5.0已经移......
  • 笔记本网卡总断连,如何使得网卡不自动休眠?
    笔记本网卡总断连,如何使得网卡不自动休眠?总结家里面的笔记本拿来开机做服务器,但是出门在外的时候没法远程连接回服务器,回到家发现是因为网卡休眠了。很抓狂。通过以下方......
  • Nginx配置示例-高可用集群
    视频教程:https://www.bilibili.com/video/BV1zJ411w7SV?p=14&vd_source=6a2d25a2f3270cb2d485b16863363e87博客借鉴:https://blog.csdn.net/qq_36059561/article/details......