ABOUT THE DEM
P F C 5 . 0 教 学 培 训
COURSES
主讲人:John Lee
FISH语言及
Help文件介绍
CONTENTS
3
2
自定义函数
和分支结构
4
Help文件概
常用FISH函
数介绍
述
1
FISH语言基
本说明
重点介绍FISH脚本语言的变量定义、数据类型、自定义函数、分支结构
等基本组成内容。指导学习帮助文件的基本框架,并对其中的重要内容
和概念进行讲解。
PFC软件存在的两套不同体系的代码形式:COMMAND和
FISH语言。两种语言的结构不同,但功能有重叠。
Ø COMMAND的使用相对简单;
Ø FISH的语言规范性更强、功能更强大。
COMMAND,顾名思义,就是可以直接在PFC命令控制台运行
的代码,例如:new、pause、quit、call、save等,它们可通过组合
或单独成行的方式运行;
FISH语言,则不能直接在窗口中运行,而是需要以自定义函数
的方式进行调用,其函数的名字跟在define声明后面,并以end声
明结尾,自定义函数分为有无返回值和有无输出参数等类型。
FISH body
new
title 'Simple hopper discharge model'
define geometry
W = 20.0
W0 = 6.0
Theta = 30
H = 30.0
A = (W-W0)*math.tan(Theta*math.pi/180)
end
@geometry
domain extent ([-W*1.5],[W*1.5]) ([-W*1.5],[W*1.5]) ...
([-H*2],[H*2])
domain condition destroy
一般地,在PFC命令和FISH代码中,变量和函数名称都能被全
局识别(与BASIC语言一样),如使用@符号约定或内嵌FISH函
数。Inline FISH是一种在命令行中关联FISH函数的可选方式,在
方括号[]内的关系式都会被识别且当作一个内嵌FISH函数。需要注
意的是,每次使用Inline FISH都会即时运行该函数一次,要避免可
能出现的副作用和效率问题。内嵌函数示例如下:
ball create id [ballID] position [ballPos] radius [ballRad]
同时,也可以作为单行FISH语句的便捷速记方式。
[global fred = math.cos(4.5)]
[fish_name(argu1, argu2, argu3)]
List fish (symbols) 命令可以列出FISH全局变量的简明信息,包
括当前类型和数值。通常情况下,以字符“$”开头的变量不会被
列出,只有使用list fish $才能实现。
如果在变量名称前有局部标识符“local”,则该变量将只能在
函数内部使用;而当关闭FISH变量自动创建选项时,即set fish
autocreate false (true),所有全局变量名称前必须加上“global”标
识。其中,FISH变量自动创建功能是指,当FISH表达式中的代码
进行编译将会对未识别的字符串自动创建为新的全局变量,该功
能默认是开启的。
函数基本数据类型:
Ø 整型Integer,取值范围为[-2147483648, +2147483647]。例如:
[m=1078]
Ø 布尔型Boolean。六种有效表达式:on,off,true,false,yes
和no。
Ø 浮点型Floating-point,取值范围为[10-308, 10308]。例如:
[m=1078.0]
Ø 字符串String,一连串打印对象的排序,可以为任意长度,但
程序中每行字符数不能超过80个,不然无法识别。在FISH和
PFC中,可以使用单引号或双引号来表示字符串,例如:'Have
a nice day' 或者 "Have a nice day"。
函数基本数据类型:
Ø 指针Pointer,当循环一个list或者标记一个引用对象时所采用
的机器地址。
Ø 向量Vector,最大的维数是3维。允许向量的加法和乘法。
Ø (7)数组Array,同一个数组里存储多个数据,每个数据对
应一个索引值。定义数组有两种方式,1)array声明;2)
array.create()函数。
Ø 矩阵Matrix,指定维度的数字矩阵。
Ø 张量Tensor,一个对称张量。
Ø 映射Map,一个特殊的关联数组。
Ø 结构体Structure,可包含多个FISH变量。