【BiliBili】 【知乎】 【QQ空间】 【微博】


博学慎思,坚持创新,求知若飢,虛心若愚                       关键字     类型    
  • 博主
  • 全部
  • 日志
  • 研究
  • 论文
  • 自编程序
  • 工程
  • Dino笔记
  • DinoBox
  • OpenSEES
  • Dino公开课
  • 每周挑战
  • Dino爱编程
  • 留言板

DinoBox

Grasshopper插件 JerryFish
JerryFish[GH]
2022-07-27
ETE_Frame3D
结构分析程序
ETE_Frame3D
2022-01-19
ETE-section截面分析程序
ETE-section
2021-08-19
上一篇 | 下一篇
Dino笔记 订阅所有Dino笔记的日志

[Dino笔记]基于OpenSEES虚功原理的钢结构优化

作者:dinochen1983 日期:2022-06-06

字体大小: 小 中 大

【Dino结构笔记】基于OpenSEES虚功原理的钢结构优化
小编:李云龙, 华南理工大学

【小记】这篇是指导华南理工大学毕业设计的一篇毕业论文,今年指导三位华南理工大学的学生的毕业论文研究,三个研究都是围绕优化算法在工程上的应用展开,通过借助有限元计算软件OPENSEES及最新的OPENSEESPY (PYTHON)对结构优化算法进行实现,可用于将来的结构设计当中。每次的毕业设计论文,我都鼓励学生学习编程,通地编程的方法解决工程问题。

虚功原理的应用
虚功原理是分析力学部分的一个很重要的原理,其利用虚位移和理想约束的概念来讨论力学系统处于平衡的条件。其内容可以基本概括为:受有理想约束的力学系统处于平衡的充要条件是作用在系统上的所有主动力在任意虚位移下所作的虚功之和为零。同时,虚功原理建立了构件尺寸与位移的关系,由虚功原理得位移计算的一般公式为:
 
该公式可以理解为结构中每个单元均对施加单位力处的节点的位移做出了贡献,现定义敏感指数SI,其表达式为:
 
V为结构中每个构件的体积,△/Vmax为贡献的位移值除以体积后的最大值。同时,SI也是ETABS与SAP2000中“显示虚功图”中数值(例如下图中的结构所示)的原理。
 
由于敏感值是相对值,我们可以通过敏感值的大小对构件截面进行调整,以达到结构优化的目的。对于桁架结构,由于只存在轴力,故我们可以只看公式中的第一项。

 
当构件的SI较大时,提高该截面面积,便可以有效降低该构件带来的△值,同时,SI越大,位移降低的效果也就越明显。
该原理比较容易理解。在进行结构优化时,需要多次迭代计算,因此采用无界面的OPENSEES是不错的选择。同时在网上也并没有将OPENSEES与虚功原理相结合的结构算例,因此本文将通过一个简单的桁架实例来介绍该方法的具体应用。

具体优化算例
实例:对一总体积恒定的钢桁架结构进行结构优化,使桁架在荷载作用下(荷载布置下如图所示)的变形最小,即结构刚度最大。图中F=50000N,所有构件的截面初始尺寸均为10000 mm2,桁架结构总体积为824558cm3。单位力大小设为1000N,施加在节点11处,方向竖直向下。
 

优化流程

(1)对该实例我们采用OPENSEES进行分析。在分析之前先借助ETABS建立模型并导出sk2文件以供ETO程序生成TCL代码。ETABS中的模型如下图所示。
 

(2)导入ETO生成OPENSEES的分析命令流文件,导入ETO以后处到桁架的构件编号如图所示。在OPENSEES中我们需要记录并输出各节点的竖向位移,与各构件的内力。由于是桁架结构,输出的内力结果中只有轴力为非0项。程序求解所有节点的竖向位移的最大值,作为优化结果的评价标准,最大位移越小,则优化结果越好。 
 


(3)OpenSEES的命令流如下所示,命令流有两个部分,即实际荷载作用下的结果,单位力作用下的结果,每一部分又包括3个板块:
第一板块:节点、材料与支座条件(分析过程中不发生改变)
第二板块:截面(分析过程中不断改变),采用引入文件  source element.tcl
第三板块:分析与结果提取,需要提取节点竖向位移与各构件内力
同时,
recorder Node -file $dataDir/Disp/node1.out -time -node 1 -dof 3 disp
……
recorder Element -file $dataDir/Force/element1.out -time -ele 1 localForce
……
不同的节点或构件分析存储的文件名不同, 分别是 node1~node14.out与element.1~element25.out。
基本TCL命令流如下:
wipe
model basic -ndm 3 -ndf 3
source node.tcl
fix 1 0 1 0 0 0 0;
……
uniaxialMaterial Elastic 1 1.999E+005
source element1.tcl
## Load Case = Live
pattern Plain 1 Linear {
load 1 0.000E+000 0.000E+000 -5.000E+004 0.000E+000 0.000E+000 0.000E+000
……
}
puts "recorder1"
set dataDir Liveoutput
file mkdir $dataDir
file mkdir $dataDir/Disp
file mkdir $dataDir/Force
recorder Node -file $dataDir/Disp/node1.out -time -node 1 -dof 3 disp
……
recorder Element -file $dataDir/Force/element1.out -time -ele 1 localForce
……
constraints Plain
numberer Plain
system BandGeneral
test EnergyIncr 1.0e-6 200
algorithm Newton
integrator LoadControl 1.000E-002
analysis Static
analyze 100
……(与上一部分相同)
## Load Case = Virtual
pattern Plain 1 Linear {
load 11 0.000E+000 0.000E+000 -1.000E+003 0.000E+000 0.000E+000 0.000E+000
……
}
set dataDir Virtualoutput
file mkdir $dataDir
file mkdir $dataDir/Disp
file mkdir $dataDir/Force
……(与上一部分相同)
wipe

(4)桁架截面在优化过程中是不断变化的,所以element.tcl文件需要不断的修改,如其中一次迭代计算的截面文件element5.tcl如下所示。
element truss 1 2 1 12306.416996915492 1
……
element truss 25 6 14 11441.348183424036 1

(5)OPENSEES文件基本编写完成,现需编写Python文件。Python编码流程大致如下图所示。每次计算分析所调用的elment.tcl文件都会储存在各自的子文件夹下,以便查看优化的最终解。
 

(6)接下来讲解Python中结构体积重分配的具体原理原理。敏感值SI是相对值,其值范围在0至100之间,故以50作为截面调整的分水岭,即杆件的SI大于50时,增大截面面积;SI小于50时,减小截面面积。调整的幅度取决于SI—50的绝对值的大小。具体的公式为:
 
其中A’为优化后的面积,A为优化前的面积。且为保证结构总体积不变,求得优化前后结构的体积差,将相差的体积按SI的大小对构件进行分配。且规定截面最小面积不得小于10cm2,最大不得大于250cm2。
这里需要对截面的最小面积进行严格控制。截面面积过小可能会导致某些杆件的刚度过小,从而使某些节点的竖向位移大于施加单位力的节点(节点11),这会导致控制节点的选取与实际不符,优化效果大打折扣。

(7)运行程序,查看前50次的运算分析结果,结构最大节点位移(节点11)的位移优化曲线如图所示。
 
由曲线可知,随着不断的优化计算,结构最大节点位移不断下降,结构刚度越来越大,最大节点的位移由3.08下降到了2.09左右,下降幅度在33%左右。且最大节点位移始终在节点11处。

(8)结构优化前各截面面积均为100cm2,优化后各构件截面面积如下图所示。
 

(9)采用ETABS对比分析:
优化前结果:节点11竖向位移为3.08mm。
 
优化后结果:节点11竖向位移为2.09mm。
 

(10)优化后的位移云图:采用PYTHON进行对OPENSEES的后处理动画



  ====THE END====

请关注我的微信公众号:DINOSTRU


更多有趣的结构分析知识分享





[本日志由 dinochen1983 于 2022-07-29 09:39 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 优化优化 openseesopensees 钢结构钢结构
评论: 0 | 引用: 0 | 查看次数: 1112
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
Dino:如果看不到验证码,再刷几下就可以了
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 200 字 | UBB代码 关闭 | [img]标签 关闭

信息(Information)

DinoChen 视频频道

My GitHub Page



扫描以下二维码,加入公众号!


dinochen.com需要你的支持


日历(Calendar)

2022年8月
  • 日
  • 一
  • 二
  • 三
  • 四
  • 五
  • 六
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3

查找(Search)

关键字
 
类 型

文章(Recent Article)

[OpenSEES]OpenSEES实例教程[汇总...[程序]Grasshopper插件Jerry Fi...[Dino笔记]粒子群算法在桁架结构中的应用[获奖]WSP亚洲2021年卓越奖获得一等奖与创新...[Dino笔记]基于遗传算法对剪力墙结构优化设计方...[Dino笔记]基于OpenSEES虚功原理的钢结...[OpenSEES] 新版ETO更新及相关下载方法...[新闻]祝韩老师荣获广东省科技进步一等奖[程序]ETE-section功能更新:可修改划分...[App开发]采用Swfit语言编制经典的推箱子游...

评论(Comments)

陈博士您好,ETE-sec最新版本和以前的一些版本...您好。陈博士,想问一下怎么下载这个软件呀陈博士您好,这个小工具好像有点问题,有效翼板宽度b...打开的时候显示“你没有许可证”,怎么弄啊陈博士您好,这个是需要购买的软件还是可以试用的怎么查看文档计算过程呢,陈博士一直显示出现一个错误字符无法计算是什么原因呢?为什么一直出错计算不了?陈博士,能共享下文件嘛?第二版没有光盘陈博士您好,我换了好几台电脑ETE还是需要许可,

留言(GuestBook)

请问陈博士,对于任意截面的柱配筋设计改如何实现,本...各位老师好,我是小白,请问大家有没有编写过open...陈博士您好,挡土墙计算的程序是否可以修改成挡土墙内...陈博士您好,想请问一下零长度单元用在桥梁的支座上,...陈博,新版ETO下载以后界面打不开是什么原因呢,旧...陈博士您好,请问可以出一期画易损性曲线的教程吗陈博士您好,我在学习您4.33侧向多自由度简化模型...陈博士您好,計算wind2019的program ...陈博士,您好,我下载使用了您编写的压型钢板组合楼板...陈博士您好,我是opensee初学者,想向您请教两...

TagBar

Loading...

用户面板(User Panel)

登录用户注册

统计(Statistics)

日志: 409 篇
评论: 895 个
留言: 418 个
访问: 14275354 次
在线: 4 人
建站时间: 2008-02-08

Powered By PJBlog3 V2.7 Build 05 CopyRight 2005 - 2011, 陈学伟的博客

Processed in 0.203125 second(s) , 6 queries 粤ICP备15071789号-1