A类内托因 L(左)奥兰
数学博士
基于水平集的FENICS二维结构优化

此教育代码是为FEniCS公司用于结构优化中的二维顺应性最小化。该代码基于水平集公式和形状导数的分布式表达式,并利用了FEniCS公司以通过简单的实现来解决复杂的偏微分方程。该代码是为了在线性化弹性的框架内实现柔度最小化而编写的,但可以适用于其他泛函或其他偏微分方程。我还为兼容机制添加了代码扩展。

FEniCS项目


代码由两个文件组成:符合性.py初始化.py。主文件是符合性.py.文件初始化.py用于初始化以下六种情况之一:

半轮、桥架、悬臂、悬臂_对称、MBB_梁、悬臂_两个力。

例如,要运行悬臂案例,命令行是

python compliance.py悬臂

我还为兼容机制添加了代码扩展,请参阅文件机械.py. 要运行此案例,命令行为

python机构.py逆变器

代码附带了一篇论文,详细解释了代码所用的数学框架和实现。PDF文件包含在.tar.gz文件中,可在此处下载:

FEniCS 2017.1结构优化代码和PDF文件


我为写了一个更新FEniCS公司2018.1,修改了几行,但代码的结构相同。PDF文件中的行引用对于此更新仍然有效。请注意FEniCS公司2018.1需要Python 3,因此现在运行代码的命令行是:
python3兼容.py悬臂


python3机制.py逆变器



FEniCS 2018.1结构优化代码和PDF文件


欢迎提出问题、建议和反馈,请发送电子邮件至以下地址:laurain at ime dot usp dot-br

更新:
- 08/05/2017 第一次上传
- 30/05/2017 更新1。第94行,已更换打印('体积分数:%.2f'%vol/(lx*ly))
通过打印(“体积分数:%.2f”%(vol/(lx*ly))
PDF文件已更新。
- 25/08/2017 更新2。代码和PDF文件已更新。文件合规.py给出了相同的结果,但更短。
与前一版本相比,PDF文件已进行了显著修改。
添加了一个文件机械.py用于兼容机制。
- 29/01/2018 更新3。文件机械.py已更新,更正了Robin边界条件中的符号。
更正了PDF文件中的一些错误。
- 19/06/2019 更新4。这是FEniCS 2018.1的更新,现在需要Python 3。
现在是运行代码的命令行python3合规性.py悬臂
python3机制.py逆变器.

set_log_level(错误)已在的第10行删除符合性.py

的所有实例boundaries=FacetFunction(“size_t”,网格)被替换为
boundaries=网格函数(“size_t”,mesh,mesh.topology().dim()-1)在文件中初始化.py

domains=CellFunction(“size_t”,网格)被替换为
domains=MeshFunction(“size_t”,mesh,mesh.topology().dim())第45行,共符合性.py

solverav.parameters['reuse_factorization']=真已在的第53行删除符合性.py

th_array=th.vector().array()被替换为
th_array=th.vector().get_local()第90行,共行符合性.py

x范围(0,dofsVvec_max,2)已更改为范围(0,dofsVvec_max,2)第93行,共合规.py

“绘制几何图形”部分(第106至113行)使用子脚本()在里面符合性.py

在中实施了相同的修改机械.py
对称悬臂
不对称悬臂
半轮
MBB梁
带有两个负载的悬臂
英语|法国圣艾斯