首页/文章/ 详情

zero stiffness——节点零刚度的两种处理方法

5月前浏览3769
节点零刚度(Zero stiffness in gridpoint)是FLAC3D计算中常遇到的一个问题,可直接导致计算终止。笔者总结了两个(但肯定不止两个)引起节点零刚度的因素,并提出相应的解决方案。

======因素1======

当模型分组较多,在赋参时如果漏掉了某一分组或者某一范围的单元时,就会出现节点零刚度现象。

例如建立一个5*5*5的立方体,在z方向将模型分为5个组,以模拟5个地层,见图1。若只对其中某几个组赋参数并开始计算,则提示节点零刚度,见图2。

此时,解决方法有:1、仔细检查各模型分组赋参情况,确保每一个分组都已赋参;2、当模型分组较多,建议先对模型进行整体赋值,再分组赋值,如果分组间参数有不同,仍需排查各分组赋值情况,详情见命令流1。

图1 模型分组

图2 节点零刚度报错

命令流1:

    ;建立模型并分组model newzone create brick size 5 5 5fish def group    loop i(0,4)        j = i+1        gname = string(j)        command            zone group @gname range position-z @i @j        endcommand    endloopend@group;设置边界条件zone face skinzone face apply velocity-x 0 range group 'West' or 'East'zone face apply velocity-y 0 range group 'South' or 'North'zone face apply velocity-z 0 range group 'Bottom'
      ;赋本构以及赋参-方法1zone cmodel assign elasticzone initialize dens 1800zone prop bulk 3e8 shear 1e8 range group '1'zone prop bulk 4e8 shear 2e8 range group '2'zone prop bulk 5e8 shear 3e8 range group '3'zone prop bulk 6e8 shear 4e8 range group '4';zone prop bulk 7e8 shear 5e8 range group '5';分组5的赋值语句已注释,以模拟遗漏分组5赋参;此时,直接计算会提示节点零刚度,解除注释即可正常计算。
        ;赋本构以及赋参-方法2zone cmodel assign elasticzone initialize dens 1800zone prop bulk 3e8 shear 1e8 zone prop bulk 4e8 shear 2e8 range group '2'zone prop bulk 5e8 shear 3e8 range group '3'zone prop bulk 6e8 shear 4e8 range group '4';zone prop bulk 7e8 shear 5e8 range group'5';注意,此时分组5的赋值语句仍被注释,但可顺利计算;此方法的弊端为,分组5作为被遗漏赋参的组,其参数为分组1单元的参数;因此,若各分组间参数有不同时,仍需排查是否每个组都已经赋参;如果当有分组的密度值没有赋上时,则会有以下提示:;Zone 101 requires a density if gravity is non-zero.;此时,只需排查各分组的密度赋值情况即可。
          ;设置重力加速度并求解model gravity 9.81model solve

          ======因素2======

          因素2主要针对的是第三方软件建立的模型计算。按照因素1中提供的方法(尤其是方法2)仍不能解决节点零刚度问题时,需考虑出现零刚度的节点是否为多余节点。解决方法为:对模型进行merge操作见命令流2

          命令流2:

            zone gridpoint merge tolerance-relative1e-5;容差可选择相对容差(tolerance-relative)和绝对容差(tolerance-absolute) ;容差的值应该小于zone的最小尺寸

            以某隧道模型为例,该模型通过midas-gts建立,导入flac3d之后,对模型整体赋参,计算时提示节点零刚度,详情如下:

            命令流3:
              model newzone import 'test.flac3d'zone face skinzone face apply velocity-x 0 range group 'West' or 'East'zone face apply velocity-y 0 range group 'South' or 'North'zone face apply velocity-z 0 range group 'Bottom'zone cmodel assign elasticzone prop bulk 3e8 shear 1e8 dens 1800model gravity 9.81zone initialize-stresses ratio 0.5model solve

              图3 模型图

              图4 节点零刚度报错

              此时,考虑模型存在多余节点,对模型进行merge操作后,计算顺利进行,命令流以及计算结果如下。

              命令流4
                model newzone import 'test.flac3d'zone gridpoint merge tolerance-relative 1e-5zone face skinzone face apply velocity-x 0 range group 'West' or 'East'zone face apply velocity-y 0 range group 'South' or 'North'zone face apply velocity-z 0 range group 'Bottom'zone cmodel assign elasticzone prop bulk 3e8 shear 1e8 dens 1800model gravity 9.81zone initialize-stresses ratio 0.5model solve


                图5 stress-zz

                通过fish函数获取每一个单元的组成节点,并与报错的88753号节点进行比较,通过设置判别条件,可判断其是否为多余节点,笔者已经证明,但不是本文讨论的重点,因此此处不再赘述。

                ======总结======

                如果出现节点零刚度的情况,首先应确认模型各个分组或者说整个模型都已经赋予了相应参数;如果模型全部赋予了参数仍提示节点零刚度,则应考虑存在多余节点,此时对节点进行merge。

                来源:FLAC3D小技巧
                MIDASFLAC3D
                著作权归作者所有,欢迎分享,未经许可,不得转载
                首次发布时间:2023-12-26
                最近编辑:5月前
                FLAC3D小技巧
                硕士 专注FLAC3D中的小技巧分享...
                获赞 25粉丝 124文章 40课程 0
                点赞
                收藏
                未登录
                还没有评论

                课程
                培训
                服务
                行家

                VIP会员 学习 福利任务 兑换礼品
                下载APP
                联系我们
                帮助与反馈