二维Scilab代码

用水平集方法进行形状和拓扑优化

2009年10月,科勒理工学院CMAP,格里戈伊尔·阿莱雷

(2012年1月25日新发布)

我们提出了一组Scilab例程,用于执行形状和拓扑平面弹性结构的优化。目前仅在单个或多个中实现遵从性最小化负载情况。所提出的算法使用了S.Osher的水平集方法和J.Sethian。它基于G.Allaire、F.Jouve、,A.-M.托德,J.公司。物理学。第194/1卷,第363-393页(2004年).它的特点是可以使用拓扑梯度的概念来对新孔进行成核,如G.Allaire、F.de Gournay、F.Jouve、A.-M.Toader、,控制与控制论34,第59-80页(2005).这些例程由编写G.阿莱雷, A.Karrman和G.Michailidis。用户可以自由使用此代码,只要他们承认他们的来源!

警告:尽管这些Scilab经过了精心编写和测试例行程序完全没有保证。他们的作者拒绝承担任何责任与他们的使用有关。

什么是形状优化?在固体力学的背景下,它也被称为结构优化。正是数学理论使形状的“自动”优化成为可能机械结构。“自动”是指这些方法算法可以在计算机上实现,该计算机可以进行分析和改进大量连续配置的设计工程师或设计师的帮助。有关此主题的更多详细信息,我们参考这本书结构优化概念Springer出版《数学与应用》系列,第58卷,2007年,280页。,91微克。,ISBN-10:3-540-36710-1,ISBN-13:978-3-540-36710-9。当然,关于这个主题还有很多参考!

什么是Scilab?Scilab是由INRIA开发和发布的自由软件。你可以在网站上免费下载 网址:www.scilab.org .它在精神上与Matlab非常相似。

要下载的Scilab计算机程序列表

  • 一组不同的子例程(Scilab中的函数)功能.sci
  • 主要例行程序optalg.sce
  • 不同测试用例的参数文件
  • 长悬臂长悬臂sce
    长悬臂梁的边界条件 长悬臂的初始形状 长悬臂的最终形状
  • 短悬臂短悬臂sce
    长悬臂梁的边界条件 短悬臂的初始形状 短悬臂的最终形状
  • bridge.sce公司
    桥梁的边界条件 桥梁的初始形状 桥梁的最终形状
  • L型梁L梁.sce
    L梁的边界条件 L梁的初始形状 L形梁的最终形状
  • 中等悬臂的多重荷载情况2-力平衡杆.sce
    桥梁的边界条件 中等悬臂的初始形状 中悬臂的最终形状
  • L型梁(具有拓扑梯度)L型梁顶面
    L梁的初始形状 L梁的迭代20 L形梁的最终形状
  • 所有这些Scilab程序的gzip tar存档文件.tar.gz
  • 这个代码做什么和不做什么。。。

    此Scilab代码的灵感来源于G.Allaire、F.Jouve、A.-M.Toader、,J.公司。物理学。第194/1卷,第363-393页(2004年).在固定计算中二维结构通过水平集函数进行参数化。这个形状优化交替有限元的迭代算法当前结构和结构变形分析通过传输水平集函数。它的主要特点是显式二阶有限差分迎风格式在输运Hamilton-Jacobi方程,在固定频率(函数mesh00),速度的正则化场,使用拓扑梯度成核的可能性新孔(新!),仔细插值到将结构投影到固定网格上(功能FEdensity),a通过变化来监控目标函数的减少传输哈密顿-雅可比方程中的时间步长。我们借用了有限元解算器(函数FE和lk)著名的“用Matlab编写的99行拓扑优化代码”O.Sigmund(结构多盘优化21,第120-1272001页)的善意的许可得到了极大的认可。目标函数要最小化的是三个术语的总和:合规性、体积和周长。最后两个值乘以固定值非负拉格朗日乘子。然而,在手册,我们还提供了一个可以添加到代码中的函数,以便在每次迭代中保持结构的总体积不变(新增!)。

    代码没有针对最小的CPU成本进行优化:一些例程仍然不是以矢量形式写的(真丢脸)。它只适用于二维用于方形规则网格。它只执行法规遵从性最小化在单载荷或多载荷情况下。没有停止标准(不难添加一个)。有很多求解水平集方程的小改进在原始Fortran代码中实现(如上所述),而不是在Scilab代码中复制。让我们举几个例子:窄带、快速行进、,重新初始化的Russo-Mereka修正。也许有一天。。。

    我计划处理更一般的目标函数,并添加过程中的伴随状态。理论上,3-d很容易实现,但实际上Scilab可能太慢了。。。

    您可以在报告由编写A.Karrman(来自加州理工学院)在Ecole Polytechnique实习后手册由G.Michailidis(Ecole Polytechnique的博士生)编写的代码。请将任何错误报告发送给 gregoire.allaire_AT_polytechnique.fr公司 我会尽快纠正。

    如何使用此Scilab代码

  • 您必须先安装Scilab(至少4.1.2或5.1.1版)并启动Scilab控制台。
  • 要运行给定的示例之一,例如长悬臂,必须加载(i)functions.sci,(ii)long cantilever.sce,(iii)optalg.sce。图形窗口将打开,迭代将在控制台中运行。
  • 要创建新的测试用例,只需编写一个文件与长悬臂类似,但使用您自己的数据。。。先验,没有必要更改其他文件(理论上是这样的!)。
  • 用户可以使用的重要参数有:
  • 几何参数:网格尺寸dx=dy,长度和高度,使用“被动”功能(参见L梁示例)。
  • 初始化:多少个孔的大小?
  • 数值参数:弱替代材料的值填充孔、重新初始化的频率和步数,平滑速度场的正则化系数。
  • 优化参数:迭代的总次数允许目标函数略有增加体积和周长约束的拉格朗日乘子。
  • 更多解释见报告由编写A.Karrman和手册由G.Michailidis撰写。
  • 谢谢。这项工作得到了许多机构的部分支持特此感谢:Ecole Polytechnique、CNRS、INRIASaclay Ile-de-France,主席“数学建模和数值模拟,F-EADS-Ecole Polytechnique-INRIA“。