• OpenSees学习心得:RC框架的时程分析【一】


    写在前面

    近期因为课题要求,作者开始学习并使用OpenSees进行有限元时程分析。OpenSees已经被非常多研究人员和工程师使用了,网上有相当多这类教程,如董瀚林DinoChen,他们的博客对我的学习帮助很大。在学习过程中,我感觉到OpenSees分析,不管是静力分析还是动力分析,都基本遵循一套固定的流程。因此,我想把时程分析的一些步骤都记录下来,也算是记录一下OpenSees的学习体会。

    安装

    下载

    安装非常简单,从官网下载压缩包,这里提供3.3.0版本的下载地址。下载后解压即可。

    添加环境变量

    为了方便以后使用OpenSees,强烈建议将OpenSees添加到环境变量中。Windows系统下,在刚才解压的目录内找到OpenSees.exe并记录其所在路径,如我的路径是D:\Program Files\OpenSees3.3.0-x64.exe\bin,然后打开系统的环境变量设置(Windows设置->系统->系统信息->高级系统设置->高级->环境变量),然后在下方的系统变量里选定Path,点击编辑,在打开的页面中新建一个path,输入刚才记录的路径,一路确定保存。

    两种运行方法

    命令行方式

    打开命令提示符或者PowerShell,输入opensees,即可进入OpenSees的命令行界面。如果提示错误,说明环境变量没有设置正确。使用命令行运行每输入一步就要回车运行一步,不推荐这种方式进行分析,出错后不容易修改。

    tcl文件方式

    OpenSees可以运行tcl文件,我们可以将命令全部写到tcl文件中再统一运行,出错了也方便修改。推荐使用VScode编辑tcl文件,可以安装代码高亮插件OpenSees Language和运行插件Code RunnerCode Runner需要进行设置。

    打开插件设置

    找到并勾选这三个选项

    找到并点击Edit in settings.json

    在json文件找到这个位置并添加

    ".tcl": "cd $dir && opensees $filename",
    
    • 1

    然后大功告成,可以直接在VScode中点击右上角按钮运行tcl文件。

    使用

    时程分析基本流程

    首先是要对分析对象进行建模,建模是指定义节点、给节点添加质量、定义材料、定义单元截面、定义单元。然后设置记录器,指定你想要在分析过程中记录的信息,如记录节点1的位移。最后是设置分析模型,指定进行动力分析的参数的方法等。

    一个简单的例子

    该例子创建了下图所示的模型。

    wipe;
    model BasicBuilder -ndm 2 -ndf 3;  # 二维三自由度模型
    
    # 定义节点
    node 11 0. 0.;  # 第一个参数是节点编号,第二第三个参数是坐标
    node 21 0. 1.;
    fixY 0. 1 1 0;  # 约束位于地面的节点
    
    # 给节点添加质量
    mass 21 100. 0.0 0.0;  # 第一个参数是节点编号,后面三个参数分别对应三个自由度方向的质量
    
    # 定义材料(关于材料的参数请查询官网https://opensees.berkeley.edu/wiki/index.php/UniaxialMaterial_Command)
    set matID 1;
    uniaxialMaterial Concrete01 $matID -4.0 -0.002 0.0 -0.005;  # 第一个参数是材料编号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    单元的截面为四边形纤维截面,如下图所示。

    # 定义单元截面
    set secID 1;
    set h 5.;  # 截面高度
    set b 5.;  # 截面宽度
    set fiberX 3;  # x向纤维数量
    set fiberY 3;  # y向纤维数量
    section fiberSec $secID {
      patch quad $matID 3 3 -$b -$h $b -$h $b $h -$b $h;  # 四边形截面
    }
    
    # 定义单元
    set elemID 11;
    set nodeI 11;
    set nodeJ 21;
    set np 5;  # 高斯积分点
    set transfID 1;
    geomTransf PDelta $transfID;  # 定义坐标转换
    element nonlinearBeamColumn $elemID $nodeI $nodeJ $np $secID $transfID;  # 非线性梁柱单元
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    模型建立完成后,可以使用以下命令进行时程分析。

    # 设置记录器
    recorder Node -file Node.out -time -node 21 -dof 1 disp;  # 输出时间和节点21在自由度1方向的位移
    
    # 设置分析模型
    ## 设置工况
    set GMdirection 1;  # 地震动施加方向
    set loadID 400;
    set GMfatt 9.8;  # 地震动乘以一个系数
    set GMdt 0.01;  # 地震动时间步长
    set AccelSeries "Series -dt $GMdt -filePath GM.txt -factor  $GMfatt";  # 读取地震动
    pattern UniformExcitation  $loadID  $GMdirection -accel  $AccelSeries;  # 施加激励
    ## 设置求解器
    set Nsteps 1000;  # 总步数
    set dt 0.01;  # 分析步长
    constraints Transformation;  # 约束方法
    numberer Plain;  # 编号方法
    system UmfPack;  # 结构体系
    test EnergyIncr 1e-4 10;  # 收敛条件
    algorithm Newton;  # 求解非线性方程方法
    integrator Newmark 0.5 0.25;  # 数值积分方法
    analysis Transient;  # 动力分析
    analyze $Nsteps $dt;  # 执行分析
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    程序运行的结果如下

    在这里插入图片描述

    欢迎关注作者

    @zouxlin3

    本文出现的代码可在此处下载。

    参考资料

    [1] https://blog.csdn.net/Lzn_nzL/article/details/117875509

    [2] http://www.hanlindong.com/2017/opensees-bootstrap/#%E5%8D%95%E8%87%AA%E7%94%B1%E5%BA%A6%E4%BD%93%E7%B3%BB%E7%9A%84%E5%9C%B0%E9%9C%87%E5%93%8D%E5%BA%94

    [3] http://www.hanlindong.com/2020/opensees-how-to-realize/

    [4] https://opensees.berkeley.edu/wiki/index.php/Patch_Command

  • 相关阅读:
    LayoutLMv2:多模态预训练用于富含视觉元素的文档理解【论文翻译】
    金融计量学实验报告一
    (附源码)php小型网络舆情平台设计 毕业设计 252324
    C++DAY39
    Python网络爬虫项目开发实战:如何解决验证码处理
    38. UE5 RPG 修改火球术的攻击方向以及按住Shift攻击
    HTML元素大全(1)
    【python】通用的json_diff方法
    启山智软/JAVA商城
    启动jar时指定nacos配置
  • 原文地址:https://blog.csdn.net/s7777777777777/article/details/126073227