pfc 常用fish语言及定义方法
  vc476hpxBRpO 2023年12月11日 17 0

分享一些简单的pfc入门语言及基础知识,适合新上手的小白

FISH语言对于程序进程的控制就如同鱼在水中一样灵活。FISH开发的初衷是为了扩充软件中现有的功能及简化或无法通过GUI界面操作实现的功能,例如,参数化模型、控制模型运行、创建模型输出、监控结果和后处理模型运行等。

与其它仿真软件相比,pfc的软件GUI界面是极其简略的,甚至可以说是有点“丑”。但这完全不妨碍其成为岩土工程界主流的仿真软件,其强大的生命力正得益于FISH。

利用FISH语言编程时应该遵循由简到繁的原则,即程序结构应该按增量方式构建。用户在执行复杂的程序前应确保先前编写的程序和预期结果相符。pfc3d内置编译器对FISH的语法和编程逻辑检查较少。因此,在程序应用于大规模分析之前都应在简单模型上进行测试。

数组相关

new

set random 10001 ;随机种子控制生成随机数 固定随机数

def array_test

   array arr1(1,2,3,4,5)

   arr2 = array.create(2,4)

end

define afill          ; 数组必须通过loop循环来赋值

 array var(4,3)

 loop local m (1,array.size(var,1))

   loop local n (1,array.size(var,2))

     var(m,n) = math.random.uniform                 ;均匀分布  

     math_random_gauss = 5.0 + 3.0*math.random.gauss ;5为平均值 3.0为标准差的高斯分布

   end_loopd

 end_loop

end

define ashow          ; display contents of matrix

 loop local m (1,array.size(var,1))

   local hed = '   '

   local msg = '  '+string(m)

   loop local n (1,array.size(var,2))

     hed = hed + '               '+string(n)

     msg = msg + '  '+string(var(m,n),8,' ',8,'E')

   end_loop

   if m = 1

     io.out(hed)

   end_if

   io.out(msg)

 end_loop

end

@array_test

@afill

@ashow

new

;FISH变量的三种定义方法

;1-通过fish命令定义变量a

fish create a = 1

;2-在中括号内定义变量b和c 比较常用

[m = 2]

[b = 2 + 3]

[c = a + b]

;pause key 光标放到命令输入窗口 按光标任意键

;pause 5 暂停5秒

;3-在自定义函数体内定义变量d

def sum

   n = 1.25       ;在函数中可以直接等

   e = a + b * c + d

end

set @d = 4           ;只有@才能识别变量

; 函数的调用有两种

;@sum ;也可用[sum]来调用函数

[sum]

list @n @a @b @c @d @e ;list后边只能用@调用变量


new


def factorial(n)

   prc = 1

   loop _i(1,n)

       prc = prc * float(_i)

   endloop

end


@factorial(25)

list @prc


@factorial(26)

list @prc


@factorial(65)

list @prc


@factorial(66)

list @prc


new


def factorial(n)

   prc = 1

   loop _i(1,n)

       prc = prc * _i

   endloop

end


@factorial(25)

list @prc


pause key


@factorial(26)

list @prc


pause key


@factorial(65)

list @prc


pause key


@factorial(660)

list @prc


new

; Matrix functionality tests

def setup

  alan = matrix(4,4)

  alan(1,3) = 6

  alan(2,1) = 2.2

  alan(3,4) = 6.6

  alan(4,2) = math.pi

end

@setup

[alan(4,2)]


def setup2

  alan = matrix.transpose(alan)

end

@setup2

[alan(2,4)]


def sum_tests

  herp = matrix(2,2)

  derp = matrix(2,2)

  serp = matrix(2,2)


  herp(1,1) = 6

  herp(1,2) = -1

  herp(2,1) = -3

  herp(2,2) = 2

   

  derp(1,1) = 4

  derp(1,2) = 3

  derp(2,1) = -7

  derp(2,2) = 0

   

  klerp = herp + derp

  werp = herp - derp

  serp = herp * derp

   

end

@sum_tests

[klerp(1,1)]  

[werp(1,1)]  

[serp(1,1)]  

   


def test

  local first = vector(2,4,3)

  local second = vector(8,1,5)

  local prod = math.outer.product(first, second)

  output = array.convert(prod);

end

@test

[output(1,1)]


new

def long_sum  ;example of a sum of many things

   v12 = 56

   

   temp1 = 'v1 + v2 + v3 + v4 + v5 + v6'   ;字符串要用单引号

   temp2 = temp1 + ' + v7 + v8 + v9 + v10'

   long_sum = temp2 + ' + v' + string(11.0e5) + ' + ' + string(v12)

end

list @long_sum

相关代码参考远方大神相关改动

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
  vc476hpxBRpO   2023年12月12日   22   0   0 d3pfc
  xfEU0RRJpeyr   2023年11月02日   45   0   0 初始化linux数组
  xfEU0RRJpeyr   2023年11月02日   62   0   0 初始化数组赋值
  b1UHV4WKBb2S   2023年11月13日   16   0   0 阴影模糊数组
  nQkVcpdWfLDr   2023年11月13日   29   0   0 数组sort函数python
  M9aMEIE19lAW   2023年11月13日   22   0   0 php数组
vc476hpxBRpO