拓扑优化丨99行拓扑优化详细解释(OC优化准则)

这篇具有很好参考价值的文章主要介绍了拓扑优化丨99行拓扑优化详细解释(OC优化准则)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

设计域离散化初始化,有限元分析,灵敏度分析,网格过滤,OC优化准则设计变量

1 %%%% A 99 LINE TOPOLOGY OPTIMIZATION CODE BY OLESIGMUND, OCTOBER 1999 %%%  99行程序代码

2 function top(nelx,nely,volfrac,penal,rmin);水平方向上的离散单元,竖直方向的离散单元,材料体积与设计域体积之比,惩罚因子,灵敏度过滤半径

3 % INITIALIZE初始化

4 x(1:nely,1:nelx) = volfrac;  x为设计变量,给设计域内单元一个初始相对密度

5 loop = 0;迭代次数

6 change = 1.;  change是储存迭代之后目标函数的改变值,判断是否收敛。

7 % START ITERATION开始迭代

8 while change > 0.01  改变量小于等于0.01时结束迭代

9 loop = loop + 1;迭代次数加1

10 xold = x; 前一次的设计变量赋值给xold

11 % FE-ANALYSIS有限元分析

12 [U]=FE(nelx,nely,x,penal); 对每次迭代都进行有限元分析,计算节点位移,储存在全局位移U中

13 % OBJECTIVE FUNCTION AND SENSITIVITY ANALYSIS目标函数和灵敏度分析

14 [KE] = lk;计算单元刚度矩阵

15 c = 0.; 储存目标函数变量

16 for ely = 1:nely

17 for elx = 1:nelx

18 n1 = (nely+1)*(elx-1)+ely; 左上角节点编号

19 n2 = (nely+1)* elx +ely;   右上角节点编号

20 Ue = U([2*n1-1;2*n1; 2*n2-1;2*n2; 2*n2+1;2*n2+2; 2*n1+1;2*n1+2],1);      局部位移数组储存4个节点,8个自由度

21 c = c + x(ely,elx)^penal*Ue’*KE*Ue;目标函数

22 dc(ely,elx) = -penal*x(ely,elx)^(penal-1)*Ue’*KE*Ue;总体结构的灵敏度

23 end

24end

目标函数:

灵敏度推导过程:

25 % FILTERING OF SENSITIVITIES灵敏度过滤

26 [dc] = check(nelx,nely,rmin,x,dc);

27 % DESIGN UPDATE BY THE OPTIMALITY CRITERIA METHOD  oc优化设计准则

28 [x] = OC(nelx,nely,x,volfrac,dc);

29 % PRINT RESULTS 打印结果

30 change = max(max(abs(x-xold))); 更新目标函数改变值

31 disp([’ It.: ’ sprintf(’%4i’,loop) ’ Obj.: ’

sprintf(’%10.4f’,c) ...

32 ’ Vol.: ’ sprintf(’%6.3f’,sum(sum(x))/(nelx*nely)) ...

33 ’ ch.: ’ sprintf(’%6.3f’,change )])

34 % PLOT DENSITIES

35 colormap(gray); imagesc(-x); axis equal; axis

tight; axis off;pause(1e-6);

36 end

37 %%%%%%%%%% OPTIMALITY CRITERIA UPDATE %%%%%%%%%

38 function [xnew]=OC(nelx,nely,x,volfrac,dc) 输入小括号中的,输出为xnew

39 l1 = 0; l2 = 100000; move = 0.2; 定义取值区间,利用二分法得到满足体积约束的拉格朗日算子,最大正向位移

40 while (l2-l1 > 1e-4)

41 lmid = 0.5*(l2+l1); 二分法取中间点

42 xnew = max(0.001,max(x-move,min(1.,min(x+move,x.

*sqrt(-dc./lmid)))));

43 if sum(sum(xnew)) - volfrac*nelx*nely > 0;

44 l1 = lmid;

45 else

46 l2 = lmid;

47 end

48 end

49 %%%%%%%%%% MESH-INDEPENDENCY FILTER %%%%%%%%%%%无关网格敏度过率子程序

50 function [dcn]=check(nelx,nely,rmin,x,dc)

51 dcn=zeros(nely,nelx);   dcn清零,保存更新的目标函数灵敏度

52 for i = 1:nelx

53 for j = 1:nely

54 sum=0.0;

55 for k = max(i-round(rmin),1):

min(i+round(rmin),nelx)

56 for l = max(j-round(rmin),1):

min(j+round(rmin), nely)

57 fac = rmin-sqrt((i-k)^2+(j-l)^2);

58 sum = sum+max(0,fac);

59 dcn(j,i) = dcn(j,i) + max(0,fac)*x(l,k)

*dc(l,k);

60 end

61 end

62 dcn(j,i) = dcn(j,i)/(x(j,i)*sum);

63 end

64 end

65 %%%%%%%%%% FE-ANALYSIS %%%%%%%%%%%% 有限元求解子程序

66 function [U]=FE(nelx,nely,x,penal)  输入小括号中,输出为全局节点位移

67 [KE] = lk; 单元刚度矩阵

68 K = sparse(2*(nelx+1)*(nely+1), 2*(nelx+1)*(nely+1)); 总体刚度矩阵的稀疏矩阵

69 F = sparse(2*(nely+1)*(nelx+1),1);力矩阵的稀梳矩阵

 U =zeros(2*(nely+1)*(nelx+1),1);  U清零用来保存更新的全局节点位移

70 for ely = 1:nely

71 for elx = 1:nelx

72 n1 = (nely+1)*(elx-1)+ely;计算节点编号,同上

73 n2 = (nely+1)* elx +ely;

74 edof = [2*n1-1; 2*n1; 2*n2-1; 2*n2; 2*n2+1;2*n2+2;2*n1+1; 2*n1+2];

75 K(edof,edof) = K(edof,edof) +x(ely,elx)^penal*KE; 将单元刚度矩阵组成总体刚度矩阵

76 end

77 end

78 % DEFINE LOADSAND SUPPORTS(HALF MBB-BEAM)  定义载荷支撑

79 F(2,1) = -1; 左上角垂直向下的力

80 fixeddofs = union([1:2:2*(nely+1)], [2*(nelx+1)*(nely+1)]); 施加约束,左边第一列和右下角固定,每个节点自由度有两个,所以乘以2

81 alldofs = [1:2*(nely+1)*(nelx+1)]; 所有自由度

82 freedofs = setdiff(alldofs,fixeddofs); 从所有自由度中除去固定自由度

83 % SOLVING

84 U(freedofs,:) = K(freedofs,freedofs) \F(freedofs,:); 求解方程,将各节点自由度储存到U之中

85 U(fixeddofs,:)= 0; 固定节点自由度为0

86 %%%%%%%%%% ELEMENT STIFFNESS MATRIX %%%%%%% 求解单元刚度矩阵子程序

87 function [KE]=lk

88 E = 1.;

89 nu = 0.3;

90 k=[ 1/2-nu/6 1/8+nu/8 -1/4-nu/12 -1/8+3*nu/8 ...

91 -1/4+nu/12 -1/8-nu/8 nu/6 1/8-3*nu/8];

92 KE = E/(1-nu^2)*

[ k(1) k(2) k(3) k(4) k(5) k(6) k(7) k(8)

93 k(2) k(1) k(8) k(7) k(6) k(5) k(4) k(3)

94 k(3) k(8) k(1) k(6) k(7) k(4) k(5) k(2)

95 k(4) k(7) k(6) k(1) k(8) k(3) k(2) k(5)

96 k(5) k(6) k(7) k(8) k(1) k(2) k(3) k(4)

97 k(6) k(5) k(4) k(3) k(2) k(1) k(8) k(7)

98 k(7) k(4) k(5) k(2) k(3) k(8) k(1) k(6)

99 k(8) k(3) k(2) k(5) k(4) k(7) k(6) k(1)];文章来源地址https://www.toymoban.com/news/detail-419737.html

到了这里,关于拓扑优化丨99行拓扑优化详细解释(OC优化准则)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1.6 基本安全设计准则

      目标 :理解和遵循一套广泛认可的安全设计准则,以指导保护机制的开发。 主要准则 : 机制的经济性 :安全机制应设计得简单、短小,便于测试和验证,减少漏洞和降低维护难度。 故障安全默认 :默认应该是无访问权限,只有在核实条件满足时才允许访问。出现错误时

    2024年02月07日
    浏览(21)
  • OC方法交换swizzle详细介绍——不再有盲点

    原文链接:https://www.cnblogs.com/mddblog/p/11105450.html 如果对方法交换已经比较熟悉,可以跳过整体介绍,直接看常见问题部分 方法交换是runtime的重要体现,也是\\\"消息语言\\\"的核心。OC给开发者开放了很多接口,让开发者也能全程参与这一过程。 原理 oc的方法调用,比如 [self test

    2024年01月20日
    浏览(30)
  • 基于线性准则的考虑风力发电不确定性的分布鲁棒优化机组组合(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码及文章讲解

    2024年02月12日
    浏览(189)
  • 排序算法大全:冒泡排序【含优化】,选择排序【含优化】,直接插入排序,希尔排序,堆排序,快速排序【含3种实现版本及非递归实现】,归并排序【含非递归实现】。详细图解,文字解释,代码实现,性能分析。

    目录  一、冒泡排序 1、冒泡排序思想 2、冒泡排序算法的性能分析 二、选择排序 1、选择排序思想 2、选择排序算法的性能分析   三、直接插入排序 1、直接插入排序思想 2、直接插入排序算法的性能分析 四、希尔排序 1、希尔排序思想 2、希尔排序算法的性能分析 五、堆排

    2024年02月20日
    浏览(38)
  • Ansys Workbench拓扑优化教程

    很基础。 进行拓扑优化的好处在于可以简化结构,满足力学性能的同时简化结构。 如赵州桥的一大一小的拱,就可以用拓扑优化优化出来,可见一千四百多年以前古人的智慧是多么丰富。 大体的步骤是需要 1.先导入模型(需要时.x_t格式,这个可以在导出时另存为) 2. 进行

    2023年04月16日
    浏览(24)
  • 毅速丨3D打印结合拓扑优化让轻量化制造更容易

    轻量化可以减少产品的重量,提高产品的性能和效率,同时减少能源消耗和排放。尤其在航空航天、汽车制造造等行业对轻量化追求更高。当前,随着制造技术的发展,拓扑优化结合3D打印为轻量化制造带来的显著的优势正在逐渐凸显。 首先,拓扑优化是一种结构优化技术,

    2024年02月05日
    浏览(35)
  • 超详细讲解实现拓扑排序、关键路径

    今天,小编带着大家来学习图中非常重要的一环,拓扑排序和关键路径! 目录 一. 绪论——实际应用 二. 拓扑排序 (一).含义 (二).实现原理  (三).代码实现 三. 关键路径 (一).含义 (二).实现原理  (三).代码实现 首先,我们需要知道的是,拓扑排序是关键路径

    2023年04月14日
    浏览(32)
  • 住宅小区的拓扑规划与网络设计(完整文档+ensp拓扑图)

    大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量

    2024年02月04日
    浏览(33)
  • 【C++算法模板】图论-拓扑排序,超详细注释带例题

    推荐视频链接:D01 拓扑排序 给定一张 有向无环图 ,排出所有顶点的一个序列 A A A 满足:对于图中的每条有向边 ( x , y ) (x,y) ( x , y ) , x x x 在 A A A 中都出现在 y y y 之前,则称 A A A 是该图的顶点的一个拓扑序 拓扑排序 可以判断有向图中是否有环,可以生成拓扑序列 对于下

    2024年04月15日
    浏览(32)
  • ENSP:小型企业网络拓扑设计

    功能:内网与外网使用静态路由、浮动路由互通; 有单独的dhcp服务器,使用核心层的两台交换机作为中继代理为有线终端动态下发ip地址; 实现有线与无线的互访,但无线用户不能访问财务部; 利用vrrp+mstp实现冗余分担、LSW5作为实例1的根桥,LSW6作为实例2的根桥。........

    2024年02月09日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包