首页/文章/ 详情

与外部数据交互: table命令与table FISH

2年前浏览1372


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 块体生成方法

来源:计算岩土力学
pythonPFC试验
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-10-09
最近编辑:2年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 147粉丝 1060文章 1782课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈