UDEC中的table命令语法:TABLE n
table 命令可以创建包含x和y的值的表,也可以通俗的理解为数对(x,y),创建的table主要可以用于以下:
(1)用 table 定义一个速度历程,然后在 boundary ... hist table n 命令中用于加载这个速度历程;
(2)用 table 自定义一个非线性的法向应力随法向位移变化的关系,适用于节理模型 jcons = 2 or 5 ,用命令 property nstable n 加载这个table(详细的可以参考手册 COMMAND REFERENCE→PROPERTY 中的详细介绍,大概在 COMMAND REFERENCE 的207页),如下图:
(3)用 table 自定义一个随温度变化的流体密度或者节理渗透性的关系,这个用的不是很多,具体可以查看FLUID dtable 和 PROPERTY ktable 命令中的介绍。
可以定义多个表,每个表由表号n唯一标识,表号不必是连续的,但不能为零。 最多可以创建500个表;表中包含的(x,y)数对的数量仅受计算机内存量的限制。 命令 PRINT table 可用于显示验证表的内容。
可选的关键字有:
1.delete ——用于删除表n
2.erase ——用于删除表n中所有的内容,但表n还在
3.insert——一个或多个数对(x,y)可以增加到表n中,
4.read——从文件读取到表,被读取文件的格式如下:
第一行:表头,最多80个字符
第二行:(x,y)数对的总数以及时间步长
第二行以后:每一个时间对应的y值。
如下图所示读取一个包含地震加速度的txt文件,一个1001个数对,时间步长为0.02.
在UDEC中读取以及查看操作如下图:
绘制的地震波曲线为:
5.write dx filename ——将表n写入文件filename。 参数dx指定数据点的横坐标间距,如果dx大于零,则将以dx的间隔从表n中插入数据。 该文件将由y数据的单列组成,且dx的间距相等。 如果dx = 0,则数据将是表n中的实际(x,y)数对。 如果未指定文件名,则默认文件名为 “UDEC.TAB”。
另外table, xtable, ytable, table_size 等函数可以在FISH函数中创建和操作表。
Comments | 41 条评论
太感谢小编了
该评论为私密评论
@1933804337 发你邮箱了
兄弟 我想问一下我这个在读取地震波的时候老报错 你能帮我看看嘛
@309720960 你把你的地震波文件的内容从头开始截取一部分看看
该评论为私密评论
@309720960 你把第一行重新写,写简单点,命个名就行,像“LanderAcc”这种
该评论为私密评论
@309720960 是不是你的读取命令写错了,试试 table 1 read ‘xxACC.txt’这种命令
该评论为私密评论
@309720960 你把你的加速度波截取一部分存为txt文件发我邮箱:shenhui19@mails.ucas.ac.cn,我来用软件读一下看什么问题
该评论为私密评论
@763398472 加速度数据一般先自己或者用其他软件积分一下转换成速度波存成txt,用table读入速度波,再用后面UDEC和3DEC地震加载的文章中的例子里的公式,将读入的速度波转成应力波进行加载计算
该评论为私密评论
@763398472 第一个函数只是应力波的一部分算的c_p和shear_str,正弦速度波wave用blve函数定义的,两个方向的应力波完整计算是c_pshear_strwave和c_pnorm_strwave算出来的,你看后面加载的命令 boun xxx hist wave,这个hist就相当于乘号的作用,相当于将速度波在计算的时候实时转换成应力波
那另一部分算c_s和norm_str 的函数是什么?还有速度波不应该是用table读取的吗,怎么没有看到table的指令?
@763398472 刚才说少了,另一半c_s和norm_str也是第一个函数计算的,完整的应力波计算刚才多乘了一个,应该是xxx_str*wave。如果是正余弦波其实直接可以用命令boun xxx hist sine freq time,这里只是定义了一个正弦函数来代表正弦波速度,用table是因为要加载地震波没有解析式,每个时间步的速度要通过写入的table读进去算,有解析式的用函数来算也行,所以这里不需要用table
该评论为私密评论
@763398472 应该是对的
好的,太感谢你了,博主
@763398472 不客气😄
该评论为私密评论
@763398472 提示你的块体是刚体,你是不是没有用gen命令划分网格
该评论为私密评论
@763398472 基本问题建议还是多看看帮助文档吧😀,帮助文档中有很多例子和命令流,可以根据跟你相似的问题改写这些命令,在改写中遇到问题可以给我留言~
该评论为私密评论
@763398472 你要设置自由场边界,边界块体不能是刚体,要是变形体,你就把模型划分网格算啊,为什么非要用刚体呢?
该评论为私密评论
@1204620686 抱歉你的留言被系统放入垃圾信箱了…今天才看到,table 读入以后有没有检查是否导入成功呢,如果是导入了,有没有把速度波转换成应力波呢?
可以参考这篇文章的命令改一下:https://geomatlab.com/udec-dynamic-example/
地震加速度文件在外部编辑好并转换成速度波,格式要正确,不然会报错。将速度时程加载成table后定义一个FISH函数可以这样使用:
def app_vel
whilestepping
if time < = load_time
hwave = table(1,time)
else
hwave = 0
endif
end
@app_vel
set @load_time=xxx
就是把例子里面的余弦波加载换成上面的地震波加载
…
再使用下面的命令加载
boundary stress 0.0,shear_str,0.0 history=wave range -0.1,22.1 -5.1,-4.9
你再试试看
好的,谢谢老师!
老师,您好,请问地震波可以不施加在边界上,而是施加在层间节理上吗
@1204620686 不行,地震波只能作为边界条件施加在边界上
该评论为私密评论
@609181702 边界条件只能加在边界的节点上吧,不能加在内部网格节点中
你好,谢谢楼主上次对我提问如何将外部数据读进用3dec,我试着把数据保存为txt格式,但是我在用3DEC读入txt中的数据时,老是出错,读入命令为table 1 read xx.txt(我的数据文件命名为xx.txt),您能帮我看看哪里出错了吗?
@361540259 你是按照格式写的txt吗,用table读有严格的格式
老师,您好。有没有完整的关于输入地震波的例子,UDEC7.0的。
@归海 海珲 不好意思,目前我还没有用过7.0版本的。不过6.0的地震波命令流可以在7.0版本里面直接进行转换成7.0的格式
def blvel
freq =10
ampl=1.0
env_time=0.1
whilestepping
if time > env_time
wave = 0.0
else
wave = ampl sin(2.0pifreqtime)
endif
end
blvel
我在输入正弦波的时候,这个语句老师报错。
博主,我想问一下,如果我有一组xy数对,可以直接读取成table么,不是时间步自己生成的x,而是不规则的xy数对
@菜狗 只要是按照格式来写,应该也是可以读入的