首页/文章/ 详情

Abaqus Disp子程序及子程序读取文件

7月前浏览11729

本文摘要(由AI生成):

本文介绍了Abaqus的Disp子程序在渗流分析中的应用,通过读取水位监测数据文件,在坝体AB之间施加孔压,计算当前孔压分布。子程序的关键是判断某一个StepTime对应的水位,通过增量步判断,让程序只在第一个增量步读取水位数据并存在共用区,避免每次调用子程序都读取文件。


Abaqus的Disp子程序用于施加特定的boundary conditions,如复杂的位移边界热,热分析时的温度边界,渗流分析的孔压边界。Disp子程序本身较为简单,能方便的在其中可以定义与时间、坐标等相关的边界条件,下面以一个渗流分析孔压边界实例进行说明。

如下图为一个水库坝,现要对其进行渗流应力耦合析,A、B为最高水位和最低水位,C为某一时刻水位,在一个计算周期中C水位是从低到高,再从高到底逐渐变化的,具体水位对应每天的监测数据。在坝体AB之间施加孔压,孔压由水位与高度计算:

P=9800*(Head-y)

因而边界上的孔压是随时间和空间变化的。

子程序的关键是判断某一个StepTime对应的水位,所以我们需要先将水位和天数的数据读入子程序,再判断StepTime和天数的对应关系,然后找到StepTime 对应的水位,从而计算当前孔压分布。由于监测数据较多,这里我们通过读文件的形式来读取水位数据,存储在数组中备用。

水位监测数据文件

Disp子程序代码    

读文件函数

这里重点强调一下数据读取的问题,由于在每个迭代步,每个积分点都会调用子程序,我们不可能让程序每调用一次就读一次文件[耗时],一般做法可以通过增量步判断,让程序只在第一个增量步读取,并存在共用区。这里我们运用了save语句解决了这个问题,通过isread变量,让程只调用一次ReadDate(),并用save语句使TT和Head数组的存储单元不被释放,在下次调用子程序时仍然可以使用。



Abaqus结构基础代码&命令水工
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-09-27
最近编辑:7月前
工程计算与仿真
硕士 | CAE仿真工程师 电磁热力流&汽车行业
获赞 88粉丝 2455文章 31课程 3
点赞
收藏
未登录
2条评论
野猫粑粑
签名征集中
2年前
您好,请问这个还有更详细一点的教程吗

回复
不诚则无物
签名征集中
3年前
有点高深,看不太懂
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈