1 引言
table本质上是一个(x,y)值的集 合,其中这些值对可以按任何顺序排列,并通过索引进行查找。经常用到的一些场景是通过table储存一个复杂的边坡面,或者通过table指定一个本构模型中的参数。table的操作是双向的,也就是说,既可以从一个table中读取数值,也可以给table插入新值。本笔记简单描述了table的用法。
2 table命令
table命令能使用于所有的软件。这是目前版本中包含的命令。
对应地,这些命令也可以在FISH中使用,事实上在FISH中使用table命令的情形更多一些。
3 命令解释
下面简要介绍table的使用方法。定义一个FISH函数granulometry,在这个函数中首先创建一个表'mwu', 取得这个表的指针exptab,然后赋值6个所谓的(x,y)值对。
def granulometry
table.delete('mwu')
global exptab = table.create('mwu')
table(exptab,0.00236) = 0.01
table(exptab,0.005) = 0.152
table(exptab,0.01) = 0.902
table(exptab,0.014) = 0.989
table(exptab,0.02) = 0.991
table(exptab, 0.028) = 1.0
end
@granulometry
在这段程序中,我使用了 table.delete('mwu') 这句代码首先删除掉表,然后再建立新表,如果不使用这句代码,第二次运行这个FISH函数就会出错,因为表'mwu'已经存在,这一点和数据库语言SQL的用法一样。在这里我只是为了演示函数的功能,如果在代码开始使用model new 则不存在这个问题,因为model new清除了内存中的所有东西。
(1) 使用 table list命令可以列出table中x,y的最大值和最小值,但是这些值好像不能直接提取出来,还没试验python模块,不知道使用python能不能把最大值和最小值提取出来。
(2) 可以根据索引值取出table中的x,y 值,但有一个问题不知道如何解决,即如何获取索引值,比如一个数据集 合中有1000个数据, 想要获取其中的某个值,如何才能知道这个值的索引值,python语言在循环时可以自动建立索引值idx。
[x1 = table.x(exptab,6)]
[y1 = table.y(exptab,6)]
print @x1, @y1
(3) table具有插值功能,这意味着我们可以在x的取值范围内给出任意一个x值,从而可求出对应的y值。例如,
[y = table(exptab, 0.025)]
print @y
结果为y=0.996625, table使用了线性插值,这在数据点比较密集的情况下能够满足一定的精度。
(4) 可以在一个FISH内创建多个table, 例如:
fish define yield_surface
m = 1.28128
mmc = 1.2
s1 = table.create('mc')
table.x(s1,1) = 0.0
table.y(s1,1) = 0.0
table.x(s1,2) = 80
table.y(s1,2) = 80*mmc
s2 = table.create('ellipse')
loop local i (1,2001)
x = 0.05*(i-1)
table.x(s2,i) = x
table.y(s2,i) = m*50.0*math.sqrt(1.0 - (x/50.0-1.0)*(x/50.0-1.0))
endloop
end
@yield_surface
3 应用举例
PFC中有一个生成Particle-Size Distribution Curve(PSD)的例子,为PSD计算提供了思路,根据上面所述的方法可以计算出Effective Size D10, D30和D60, 从而可以计算出Uniformity Coefficient (Cu)和Coefficient of Gradation (Cc)。不过应当注意,真实的PSD曲线筛分尺寸是从大到小排列的,与演示例子正好相反,而且颗粒尺寸横坐标使用的是对数坐标轴log(d)。
4 结束语
本文简述了table的用法,table提供了一种把用户自定义的数据合并到现有软件的方法,扩展了软件本身的计算能力,例如通过table可以输入SPT,CPT的测试数据,计算土体的物理力学参数为模拟所用,或者可以通过table进行实测结果与模拟结果的比较等。
GIIC-UDEC操作教程(2)---岩石滚落
GIIC-UDEC操作教程(3)---巷道顶板冒落
GIIC-UDEC操作教程---边坡支护
Cell Space Detection---UDEC的单元映射算法
二维Voronoi 块体生成方法