技术领域
[0001] 本
发明涉及工程领域,具体涉及一种基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法。
背景技术
[0002] 现代的抗震设计理论是从20世纪初才开始建立起来的。随着人们对
地震动特性和结构动力特性理解的不断加深,结构抗震设计理论从最初的静力阶段和反应谱阶段,发展到动力阶段及目前的基于性能(PBSD)的抗震设计理论阶段。逐步增量动力分析(Incremental Dynamic Analysis,IDA)方法是基于动力弹塑性时程分析,其基本思路是,对于某条特定的地震动输入,通过设定一系列单调递增的的地震强度指标IM(Intensity Measure),并对每个地震强度指标下的地震输入进行结构弹塑性时程分析,可以得到一系列结构的弹塑性地震响应指标DM(Damage Measure),这样形成了一条IM-DM曲线(IDA曲线)。与静力弹塑性分析方法相比较,IDA方法是对结构在地震下的动力响应的模拟,故而可以避免静力弹塑性分析因简化而带来的问题。
覆盖了从弹性到弹塑性直到结构动力失稳的反应全过程,同时能够反映出结构在不同强度等级地震下的地震需求能力和整体抗倒塌能力,并且还能够体现出结构的强度、
刚度及
变形的变化过程。
[0003] 传统技术存在以下技术问题:
[0004] 目前,商用
软件如PKPM、盈建科、SAP2000、Perform3D等软件均可以进行时程分析,但是,不能批量化的进行逐步增量动力分析分析。商用软件每次只能分析一条
地震波,等前一条波分析结束后,才能分析下一条波。而逐步增量动力分析分析需要对数十条地震波并且每条地震波调幅数十次进行分析,如20条地震波,每条地震波调幅20次,则需要分析400次,这对商用软件来说,如果一条一条地震波的手工输入,其工作量是十分复杂,浪费大量时间精力。另外,在数据输出方面更是繁杂,成千上万个输出文件堆积一起,无法快速寻找出有价值的数据指标。
发明内容
[0005] 本发明要解决的技术问题是提供一种基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法。
[0006] 为了解决上述技术问题,本发明提供了一种基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法,包括:
[0007] 根据结构设计参数,建立OpenSees结构
有限元分析模型;
[0008] 地震波文件名称命名,编写地震波列表;
[0009] 编写目标调幅峰值列表和地震动时间间隔列表;
[0010] 编写OpenSees输出的数据文件名称命令流;
[0011] 编写OpenSees加载地震波命令流;
[0012] 编写在计算不收敛时自动切换
算法命令流;
[0014] 编写MATLAB软件读取OpenSees软件输出数据并写入到Excel表格中的命令流。
[0015] 在另外的一个
实施例中,“根据结构设计参数,建立OpenSees结构有限元分析模型”具体包括:
[0016] 梁柱单元端部采用IMK转
角弹簧单元,上部单元采用elasticBeamColumn Element与之
串联;其中,IMK转角弹簧的具体参数根据截面的设计参数,由公式计算得来;由于构件是由IMK转角弹簧和elasticBeamColumn Element串联形成,所以,上部elasticBeamColumn Element需要对抗弯刚度进行修正,计算公式如下:
[0017]
节点采用Joint2D Element;
[0018] 采用rayleigh阻尼,利用region命令分别为弹性单元和有
质量的节点赋予刚度比例系数和质量比例系数,计算过程中采用初始刚度。
[0019] 在另外的一个实施例中,“地震波文件名称命名,编写地震波列表”具体包括:
[0020] 由于输入的地震波是数条甚至是数十条,因此将待分析的每条地震波进行命名,输出数据文件的名称由每条地震波名称决定,此名称亦是MATLAB后处理时寻找的文件名,为简便起见,以阿拉伯数字1,2,3......进行命名;
[0021] 在OpenSees中编写地震波名称列表,记为AA,用于foreach循环。
[0022] 在其中一个实施例中,“编写目标调幅峰值列表和地震动时间间隔列表”具体包括:
[0023] 在OpenSees模型中编写目标调幅峰值列表记为BB,用于foreach循环;
[0024] 在OpenSees模型中利用list命令,编写读取每条地震动时间间隔数组,记为dt_AA,用于识别每条地震波的时间间隔。
[0025] 在其中一个实施例中,“编写OpenSees输出的数据文件名称命令流”具体包括:
[0026] 以每条地震动名称为输出的数据文件夹进行命名,利用filemkdir命令创建正在分析地震波输出文件的文件夹;
[0027] 以每条地震动名称和目标调幅峰值为输出的数据文件进行命名。
[0028] 在其中一个实施例中,“编写OpenSees加载地震波命令流”具体包括:
[0029] 首先,利用open命令打开地震动文件;利用read命令读取地震动文件中数据、lsort命令按递增顺序对地震动数据进行排序,然后,利用lindex命令获取地震动峰值,最后,llength命令获取地震动总步数。
[0030] 在其中一个实施例中,“编写在计算不收敛时自动切换算法命令流”具体包括:
[0031] 计算不收敛时,首先,减小分析步时间,分析步时间调至0.5倍,传递给算法进行分析;再次不收敛时,自动切换积分方法:按下列顺序进行(Krylov
加速收敛的
牛顿
迭代法KrylovNewton)-(牛顿迭代法Newton)-(第一步采用初始刚度,之后采用当前刚度的牛顿迭代法Newton-initialThenCurrent)-(求解非线性残差方程的线性牛顿迭代法NewtonLineSearch)-(修正的牛顿迭代法ModifiedNewton)-(线性迭代法Linear);
[0032] 如切换积分方法仍不收敛时,判定结构到达倒塌
临界点,分析终止。
[0033] 在其中一个实施例中,“编写在倒塌临界状态分析终止命令流”具体包括:
[0034] 已判定到达倒塌临界状态,则分析一步,使时程分析结束;利用open--r命令打开输出文件,puts命令写入0.20.2,覆盖掉分析不收敛前的记录,以此作为分析不收敛的标志,close关闭文件;
[0035] file mkdir FailRecord创建分析失败记录文件夹,open—w命令创建新的.txt文件,记录下此时分析不收敛地震波名称和目标幅值。
[0036] 在其中一个实施例中,“编写MATLAB软件读取OpenSees软件输出数据并写入到Excel表格中的命令流”具体包括:
[0037] 利用MATLAB中的sprintf命令读取输出的文件数据,max函数寻找损伤指标最大值,xlswrite函数,将地震动名称和目标峰值及损伤指标最大值写入Excel表格中的
指定位置。
[0038] 基于同样的发明构思,本
申请还提供一种计算机设备,包括
存储器、处理器及存储在存储器上并可在处理器上运行的
计算机程序,所述处理器执行所述程序时实现任一项所述方法的步骤。
[0039] 基于同样的发明构思,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一项所述方法的步骤。
[0040] 基于同样的发明构思,本申请还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任一项所述的方法。
[0041] 本发明的有益效果:
[0042] 本发明提出了一种基于OpenSees与MATLAB的逐步增量动力快速分析与数据处理方法,解决了在地震波切换、地震动峰值进行调幅时,需手工更改地震动峰值,地震动步数以及缩放比例信息的复杂步骤;在不停机、无需人工干预的情况下,克服了无法批量进行动力弹塑性时程分析的难题,极大提高模型计算效率,充分利用了软
硬件资源;同时,在数据后处理方面,利用MATLAB快速读取输出的数据文件,并写入到Excel表格中,极大提高数据处理效率,使繁冗耗时的分析变得简单可行,大大减少了枯燥的人工工作量和书写出错的可能性,使科研人员可以把更多的精力花在参数分析上。基于OpenSees与MATLAB的逐步增量动力快速分析与数据处理方法,快速准确地解决了批量分析和数据后处理两个方面的难题。需要说明的是,OpenSees的全称是Open System for Earthquake Engineering Simulation(地震工程模拟的开放体系)。它是由美国国家自然科学基金(NSF)资助、西部大学联盟“太平洋地震工程研究中心”(Pacific Earthquake Engineering Research Center,简称PEER)主导、加州大学伯克利分校为主研发而成的、用于结构和岩土方面地震反应模拟的一个较为全面且不断发展的开放的程序软件体系。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据
可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的软件。
附图说明
[0043] 图1是本发明基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法的
流程图[0044] 图2是本发明基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法中的IMK转角弹簧与elasticBeamColumn Element串联图。
[0045] 图3是本发明基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法中的IMK转角弹簧骨架曲线与滞回规律示意图。
[0046] 图4是本发明基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法中的Joint2D单元示意图。
[0047] 图5是本发明基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法中的Rayleigh阻尼与
频率、质量与刚度的关系图。
[0048] 图6是本发明基于OpenSees与MATLAB的逐步增量动力分析与数据处理方法中的IDA曲线示意图。
具体实施方式
[0049] 下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
[0050] 一种基于OpenSees与MATLAB的逐步增量动力快速分析与数据处理方法,包括:
[0051] 步骤1,根据结构设计参数,建立OpenSees结构有限元分析模型;
[0052] 步骤2,地震波文件名称命名,编写地震波列表;
[0053] 步骤3,编写目标调幅峰值列表和地震动时间间隔列表;
[0054] 步骤4,编写OpenSees输出的数据文件名称命令流;
[0055] 步骤5,编写OpenSees加载地震波命令流;
[0056] 步骤6,编写在计算不收敛时自动切换算法命令流;
[0057] 步骤7,编写在倒塌临界状态分析终止命令流;
[0058] 步骤8,编写MATLAB软件读取OpenSees软件输出数据并写入到Excel表格中的命令流;
[0059] 通过MATLAB软件,读取OpenSees软件输出的数据文件,并把数据写入到Excel表格中的指
定位置,如最大
层间位移角(损伤指标,DM)和谱加速度(强度指标,IM)。
[0060] 本发明的有益效果在于:
[0061] 本发明提出了一种基于OpenSees与MATLAB的逐步增量动力快速分析与数据处理方法,解决了在地震波切换、地震动峰值进行调幅时,需手工更改地震动峰值,地震动步数以及缩放比例信息的复杂步骤;在不停机、无需人工干预的情况下,克服了无法批量进行动力弹塑性时程分析的难题,极大提高模型计算效率,充分利用了软硬件资源;同时,在数据后处理方面,利用MATLAB快速读取输出的数据文件,并写入到Excel表格中,极大提高数据处理效率,使繁冗耗时的分析变得简单可行,大大减少了枯燥的人工工作量和书写出错的可能性,使科研人员可以把更多的精力花在参数分析上。
[0062] 在另外的一个实施例中,根据结构设计参数,建立OpenSees结构有限元分析模型,具体过程包括:
[0063] 1.梁柱单元端部采用IMK转角弹簧单元,上部单元采用elasticBeamColumn Element与之串联;其中,IMK转角弹簧的具体参数根据截面的设计参数,由公式计算得来;由于构件是由IMK转角弹簧和elasticBeamColumn Element串联形成,所以,上部elasticBeamColumn Element需要对抗弯刚度进行修正,计算公式如下:
图2是串联示意图,IMK转角弹簧骨架曲线与滞回规律见图3;
[0064] 2.节点采用Joint2D Element,图4是Joint2D单元示意图;
[0065] 3.采用rayleigh阻尼,利用region命令分别为弹性单元和有质量的节点赋予刚度比例系数和质量比例系数,计算过程中采用初始刚度。
[0066] 在另外的一个实施例中,地震波文件名称命名,编写地震波列表;具体包括:
[0067] 1.由于输入的地震波是数条甚至是数十条,因此将待分析的每条地震波进行命名,输出数据文件的名称由每条地震波名称决定,此名称亦是MATLAB后处理时寻找的文件名,为简便起见,以阿拉伯数字1,2,3......进行命名;
[0068] 2.在OpenSees中编写地震波名称列表,记为AA,用于foreach循环。
[0069] 在其中一个实施例中,编写目标调幅峰值列表和地震动时间间隔列表;具体包括:
[0070] 1.在OpenSees模型中编写目标调幅峰值列表记为BB,用于foreach循环;
[0071] 2.在OpenSees模型中利用list命令,编写读取每条地震动时间间隔数组,记为dt_AA,用于识别每条地震波的时间间隔。
[0072] 在其中一个实施例中,编写OpenSees输出的数据文件名称命令流。具体包括:
[0073] 1.以每条地震动名称为输出的数据文件夹进行命名,利用filemkdir命令创建正在分析地震波输出文件的文件夹。如正在分析的地震动名称为1,则创建名称为1的文件夹,此文件夹里存放地震波名称为1时的所有输出文件;
[0074] 2.以每条地震动名称和目标调幅峰值为输出的数据文件进行命名,如正在分析的地震动名称为1,目标调幅峰值为2.0,则输出的数据文件名称为1-2-drift(i),这里drift是损伤指标,以层间位移角为损伤指标,i是楼层数。
[0075] 在其中一个实施例中,编写OpenSees加载地震波命令流。具体包括:
[0076] 首先,利用open命令打开地震动文件;利用read命令读取地震动文件中数据、lsort命令按递增顺序对地震动数据进行排序,然后,利用lindex命令获取地震动峰值,最后,llength命令获取地震动总步数。
[0077] 在其中一个实施例中,编写在计算不收敛时自动切换算法命令流。具体包括:
[0078] 1.计算不收敛时,首先,减小分析步时间,分析步时间调至0.5倍,传递给算法进行分析;再次不收敛时,自动切换积分方法:按下列顺序进行(Krylov加速收敛的牛顿迭代法KrylovNewton)-(牛顿迭代法Newton)-(第一步采用初始刚度,之后采用当前刚度的牛顿迭代法Newton-initialThenCurrent)-(求解非线性残差方程的线性牛顿迭代法NewtonLineSearch)-(修正的牛顿迭代法ModifiedNewton)-(线性迭代法Linear);
[0079] 2.如切换积分方法仍不收敛时,判定结构到达倒塌临界点,分析终止。
[0080] 在其中一个实施例中,编写在倒塌临界状态分析终止命令流。具体包括:
[0081] 1.已判定到达倒塌临界状态,则分析一步,使时程分析结束;利用open--r命令打开输出文件,puts命令写入0.20.2,覆盖掉分析不收敛前的记录,以此作为分析不收敛的标志,close关闭文件;
[0082] 2.filemkdir FailRecord创建分析失败记录文件夹,open—w命令创建新的.txt文件,记录下此时分析不收敛地震波名称和目标幅值。
[0083] 在其中一个实施例中,编写MATLAB软件读取OpenSees软件输出数据并写入到Excel表格中的命令流。具体包括:
[0084] 利用MATLAB中的sprintf命令读取输出的文件数据,max函数寻找损伤指标最大值,xlswrite函数,将地震动名称和目标峰值及损伤指标最大值写入Excel表格中的指定位置。
[0085] 下面介绍一个具体的应用场景:
[0086] 图1显示了本发明的具体实施步骤。进行IDA分析,首先把截地震波、目标调幅峰值和地震动时间间隔分别形成一个列表,利用foreach命令进行遍历搜索,地震动信息,如峰值和地震动记录数由OpenSees自动识别。首先,利用open命令打开地震动文件;利用read命令读取地震动文件中数据、lsort命令按递增顺序对地震动数据进行排序,然后,利用lindex命令获取地震动峰值,最后,llength命令获取地震动总步数。分析过程中会有分析文件输出,利用file mkdir命令创建正在分析地震波输出文件的文件夹。如正在分析的地震动名称为1,则创建名称为1的文件夹,此文件夹里存放地震波名称为1时的所有输出文件;以每条地震动名称和目标调幅峰值为输出的数据文件进行命名,如正在分析的地震动名称为1,目标调幅峰值为2.0,则输出的数据文件名称为1-2-drift(i),这里drift是损伤指标,以层间位移角为损伤指标,i是楼层数。每一循环结束后,清除模型,释放内存,再根据下一循环的地震动信息重新建立模型,直至foreach语句结束,中间不需人工干预,自动切换。
[0087] 建立第一个列表:地震波列表,简称AA
[0088] 建立第二个列表:目标调幅列表,简称BB
[0089] 建立第三个列表:地震动时间间隔列表,简称dt_AA
[0090] 开始foreach语句
[0091] foreach地震波列表AA{foreach目标调幅列表BB{OpenSees有限元分析模型,lindex命令寻找地震动时间间隔图1}}
[0092] 例如:AA中包含A1、A2、A3参数
[0093] 例如:BB中包含B1、B2、B3参数
[0094] 例如:dt_AA中包含C1、C2、C3参数
[0095] 计算循序如下:
[0096] 第1次循环:A1、B1、C1参数输给模型进行计算
[0097] 第2次循环:A1、B2、C1参数输给模型进行计算
[0098] 第3次循环:A1、B3、C1参数输给模型进行计算
[0099] 第4次循环:A2、B1、C2参数输给模型进行计算
[0100] 第5次循环:A2、B2、C2参数输给模型进行计算
[0101] 第6次循环:A2、B3、C3参数输给模型进行计算
[0102] 第7次循环:A3、B1、C3参数输给模型进行计算
[0103] 第8次循环:A3、B2、C3参数输给模型进行计算
[0104] 第9次循环:A3、B3、C3参数输给模型进行计算
[0105] 自动计算9个模型,直至9个循环结束,自动切换,无需人工额外干预,大大提高效率,节省时间。
[0106] OpenSees计算结果数据是以文本格式的形式输出,使用者可以定义输出内容和文件的名称。这里利用变量替换的命令,用此时的地震动名称,目标调幅峰值和楼层数来给输出文件命名,见图1,代码:$AA-$BB-drift(i).out。例如,此时的地震动是1,目标调幅峰值是2.0则生成1-2-drift(i).out的文件名,这样便于识别此时的工况,也方便接下来的MATLAB读写数据。
[0107] OpenSees输出了大量的数据,接下来需要
整理数据,提取有用的数据,以便于参数分析,实现流程图如图1所示。
[0108] 举例:把所有模型非线性分析的最大层间位移角全部提取出,并且按照地震波名称、目标调幅峰值和最大层间位移角的顺序排列,如表1所示:
[0109]
[0110] 表1
[0111] 这样就可以形成多条地震波的IDA曲线,如图6所示。
[0112] 由上可知,本发明方法能够在不停机的情况下,不需人工
修改地震动峰值,地震动时间间隔,地震动步数,目标调幅峰值,自动根据输入的地震动进行非线性时程分析;可以根据分析的需求,自定义结构损伤极限状态,通过MATLAB从海量的数据中提取极限状态的最大值数据,按照分析需求将地震动信息和极限状态最大值数据写到Excel表格中,极大方便分析数据。极大提高模型计算效率和数据后处理效率,充分利用了软硬件资源;充分实现了电算过程,使繁冗耗时的分析变得简单可行,大大减少了枯燥的人工工作量和书写人工更改数据出错的可能性,使科研人员可以把更多的精力花在参数分析上。
[0113] 本发明提出了一种基于OpenSees与MATLAB的逐步增量动力快速分析与数据处理方法,解决了在地震波切换、地震动峰值进行调幅时,需手工更改地震动峰值,地震动步数以及缩放比例信息的复杂步骤;在不停机、无需人工干预的情况下,克服了无法批量进行动力弹塑性时程分析的难题,极大提高模型计算效率,充分利用了软硬件资源;同时,在数据后处理方面,利用MATLAB快速读取输出的数据文件,并写入到Excel表格中,极大提高数据处理效率,使繁冗耗时的分析变得简单可行,大大减少了枯燥的人工工作量和书写出错的可能性,使科研人员可以把更多的精力花在参数分析上。随着计算机处理速度的提升和IDA分析理论的成熟,IDA分析势必成为结构性能分析的重要工具,此发明方法实现了IDA快速分析与数据处理。
[0114] 以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。
本技术领域的技术人员在本发明
基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以
权利要求书为准。