flac3d手册中文2版本中的fish参考_第1页
flac3d手册中文2版本中的fish参考_第2页
flac3d手册中文2版本中的fish参考_第3页
flac3d手册中文2版本中的fish参考_第4页
flac3d手册中文2版本中的fish参考_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2. FISH 注释2.1 简介和总览本章包含 FISH 语言的一些细节。根据简介,2.2 节描述了语言的规则以及变量和函数是如何使用的。2.3 节说明了 FISH 表,2.4 节描述了 FISH 是怎样和 FLAC 连接的。2.5节说明了预定义 FISH 变量、函数和队列。2.6 节给出了支持结构单元的 FISH 函数。FISH 是一种可嵌入到 FLAC 中的程序语言,能够帮助用户定义新的变量和函数。这些函数能够拓展 FLAC 的使用能力或是增加用户自定义的特征。例如,可计划和打印新变量,使用特殊的网格数研究。,数值测试中可使用伺服,确切说明的特殊性质分布,自动的参FISH 是一个编译器(而

2、不是一个翻译器)。程序的输入通过 FLAC 数据文件翻译成在 FLAC空间的指令;FLAC 将获得源程序。无论 FISH 函数何时被唤起,都只会执行其编译后的代码。编译后代码的使用而不是翻译源代码能使程序运行的比较快。但是,不像编译器变量名和变量值在任意时刻都可用;通过使用 FLAC 的 SET 命令修改变量的值。FISH 程序可以很简单的嵌入到 FLAC 数据文件中该程序以 DEFINE 开头作为FISH 函数;函数以 END 结尾。函数可调用其他函数,而其他函数也可调用其他函数。函数定义的规则是:无论函数多长都要在使用前定义(如:通过 FLACA 命令调用)因此 FISH 函数的编译形式存

3、贮在 FLAC 的内存空间当中,SAVE 命令是保存函数及相关的当前值。2.7 节讨论了 FISH 文件操作的扩展,2.8 节描述了在 FLAC 和其他 itasca 代码的的转换数据的针脚的 。这个函数的使用要求对编程技术和结构有合理的理解;无需这些扩展FISH 也可使用。第二部分的22d and FISH Reference Summary 提供了 FISH 语言和内部名的总和。2.2 FISH 语言规则、变量和函数2.2.1 线FISH 函数可以嵌入到正常的 FLAC 的数据文件中,或是直接通过键盘输入。单词DEFINE 后的行被认为是 FISH 函数;函数以 END 为结尾。一个合法的

4、 FISH 代码行必须采取以下的形式。1.2.每行以表开始,如 IF、LOOP 等(见 2.3 节)每行包含一个或多个用户自定义的 FISH 函数,用空格符如fun_1fun_1fun_1其中名字与用户所写的函数相关;这些函数有序执行。函数在使用前先定义。3.4.5.每行包含赋值表(等号右边的值赋给等号左边的变量或函数)FLAC令行,提供在D-ENDD 之间是 FISH 代码(见 2.3.3)每行是空行或是以分号开头。FISH 变量、函数名和表必须写全称;且在 FLAC 中不可被分割。不连续行;没有中间变量用来分解复杂的表。FISH 默认为即件状态高级和低级区别;所有的名字转化为低级。(注意这

5、个可以通过 SET case_sensitivity on 改变)。空格是很重要的(与 FORTRAN 中不一样)用来分离变量、关键字等;在变量和函数的名字中不键入空格。额外的空格用来增加可读性如,区分循环和条件语句。分号后的任何符号都会被忽略;可在程序说明前加分号而嵌入到 FISH。232.2.2 函数和变量的保留名。空行可以嵌入到 FISH变量或函数名必须以非数字开头并且不得包含下列符号(运算符).,* / + - = # ( ) ; “用户自定义名可以任意长度,但是他们以为行的有限而截取。情况下,名字只要不与 FISH 表(见 2.3 节)和预定义的变量和函数名(见 2.5 节)相同,就

6、可任意选取。在 FLAC 中还有一些其他的单词需要避免。表 2.1 包含了所有的可能产生的名字的、但是,潜在的取决与所选名字是如何使用的。例如,单词 gravity 可以用做 FISH 变量,在 FISH 函数中提供出来只有在用 SET 命令设定其值是才出现,因为 gravity 对于 SET命令是有争议的。类似的,如果它的名字与 PRINT 命令的参数相同,也会产生。若想毫无顾虑的使用名字,请参见表 2.1 或者名字的缩写(因为 FLAC关键字和命令的缩写)作为一种可选策略,FLAC 命令 SET safe on 可以用来强制在命令行中的 FISH 变量的得到认可。符号在任意 FISH 变量

7、之前可以确认物体并强制命令行避免其他任何翻译。例如假设 FISH 函数 initial 已建立,如例 2.1 所示。在命令行运行该函数将产生错误,因为命令INITIAL 的优先权超过了 FISH 的 initial 的优先权。但是在变量前使用 FISH 确认符号给出确定,纠正翻译。例 2.1FISH 确认的使用24表 2.1FLAC 和 FISH 中可能产生的单词28默认情况下,用户自定义变量代表单值数或字。当时用 ARRAY 表,的数字矩阵或字符矩阵才会被。2.3.1 节是矩阵产生和使用的定义方式。目前,对于矩阵还没有详细的输出输入,但是在 FISH 中可以书写函数来实施该操作。例如 2.2

8、 所示,二维的矩阵的以被初始化和打印。例 2.2FISH 矩阵的初始化和输出结果如下:292.2.3 变量的构词法变量和函数名字为认为是全局型的(与 BASIC 语言类似)。在一个合法的 FISH 函数行中一涉及到名字,就被认为是全局的,在 FISH 代码中和 FLAC 命令中都是认可的;(例如一个数的配置)当给出 PRINT fish 命令时,它也会出现在变量显示中。该值将会一直保存直到其被改变。所有变量的值都可使用 SAVE 命令保存,用 RESTORE 命令恢复。2.2.4 函数:结构、赋值和调用在 FISH 语言中唯一可被执行的实体是函数。函数无可厚非;与之相的参数在函数唤起前通过变量

9、设定。(回顾变量有全局范围)函数以 DEFINE 表开始,以 END 表达式结尾。END 表是在函数执行时将权交给用户。(注释 EXIT 表也返回权见 2.3.2 节)思考例 2.3 描述了函数的构造和使用。例 2.3 函数的构造函数执行时的值得到改变。变量 aa 局部被计算,现存的 bb 的值将在计算时使用。若变量并没有准确的赋值,默认为 0(整型)。对于函数来说给每个名字赋值是没有必要的。函数(1)(2)(3)(4)(5)210在以下任意式下都会被唤起:在 FISH 输入行中出现单词;当变量出现在公式中的时候new_var当 FLAC 的输入行中出现时当符号在输入行中被数字取代时(见 2.

10、4.1 节)当作为 FLAC 的 SET、PRINT 或 HISTORY 命令参数的时候。一个函数可能在其定义前在另一个函数中涉及到;FISH 编译器将会在其第一次使用时创造一个符号,当其被义。所有的连接连到该函数上。一个函数不能被删除或是被重定函数可以在任意层次上调用如函数可以涉及到其他函数,而其他函数又可涉及到其他函数。但是重复函数调用是不的(如当一个函数在实施时,不能在被调用)例 2.4 显示了不误。的函数调用,因为如此使用的函数正试图调用。该例在实施时将产生一个错例 2.4 重复函数调用类似的函数代码可写成例 2.5 所示。例 2.5 删除例 2.4 中的函数重复调用变量和函数之间的不

11、同在提及到函数的名字时,该函数就会被执行;变量只是简单的传递他们的当前值。但是,函数的执行将会导致其他变量的执行。这种作用有很有效的,如当要求几个 FISH 变量的历史2.6 所示。211例 2.6 变量的赋值时当计算几个量仅用一个函数就可以了,如例FLAC 命令要求历史:函数 h_var_1 通过 FLAC 的历史也会作为历史变量被计算和使用。2.2.5数据类型执行,但是作为副作用,变量 h_var_2 到 h_var_6FISH 变量和函数值有四种数据类型:1.整型(准确数字,从)2.浮点型(具有 15 个小数位的近似数,范围从)3.字符型(任意可书写字符的序列;可任意长度,但会在输出时被

12、截断。在 FISH 和 FLAC中的字符包含在单引号里面如have a nice day注意在 FLAC 中字目和文件名,见 2.4.1 节)的使用只限于题4.指针型:(机器地址通过连接指针)212扫描。从指针到目标是有相关类型得,除了空FISH 中的变量可以根据被设定的表:Var1var2的类型动态变化。为便于理解,思考下面的表若 var1 和 var2 类型不同,要做两件事:第一,var1 的类型传递给 var2;第二,var2 的数据传递给 var1。例如在 FORTRAN 或 C 中var1 的类型不变,只是被传递数据。默认情况下 FISH 中的所有变量都是以整型开始的。但是,下面的表

13、Var13.4导致 var1 被执行浮点型。通过 FLAC 的 PRINT fish 命令可以确定所有变量的当前类型将输出所有类型。FISH 中的动态类型转换可以简化非编程者的编程。例如在 BASIC 中,数字被为浮点型,当需要整型时就会遇到,如循环计数。在 FISH 中变量的类型会根据上下文自动进行调整。如下面代码段:n=n+2x+3.5变量 n 是整型,将会增加 2,而变量 xx 是浮点型,容易导致截断误差但是可以处理大范围的数字。2.2.6 节将给出算术操作类型转换的规则。一个变量的类型由赋值表的右边的目标的类型确定;这个既适用于 FISH 表,也适用于 FLAC 的 SET 命令设定的

14、表达式。赋值的类型将会根据以下下列几点改变变量的类型。1.2.整型赋值(数字在 09 之间)导致变量为整型(如 var1334)若赋值数字有小数点或者带有“e”或“E”符号,那么变量将会编程浮点型(如 var13e5;var21.2)若赋值带有单引号,则变量为字符型,其值为单引号内的字母列表(如 var1have a nice day)3.类型的转换也出现在预处理变量和函数的赋值语句中;这些规则见 2.5 节,注意指针变量不可于其他类型相互转化。2132.2.6 算术:表和类型转换算术在大多数的语言中。符号/*-+表示幂指数、除法、乘法、减法、加法,使用规则与以往一样。括号中的任意数字将会有助

15、于计算规则;括号中的表 会被优先计算。内部括号首先被计算。如,FISH 计算出变量xx 等于 133。xx6/3*43+5表等同于xx(6/3)*(43 )+5若在对于算术操作有顾虑,使用括号有助于分析清楚。若在算术表两个主要的语一是浮点型,那么结果就为浮点型。若都是整型,结果就为整型。注意整型被整除产生截断的结果的情况是很重要的如,5/2 结果为 2, 而 5/6 结果为 0。算术操作不指针相等如if zp null2.2.7 字指针变量除非是整型(见 2.5.5.2)但是,在 IF 表可以判定两个在 FISH 的内部函数中有三种函数可处理字。in(var)若 var 是字则输出,若不待键盘

16、输入。(返回值依赖于字符的类型。FISH 首先作为整型输入,然后作为浮点型若是输入的是可编码为整型或是浮点型的单值,那么返回值就是整型或是浮点型。这个数字占用一行。但是,若其后有空格、逗号或是括号,那么在改行中其他字符将被忽略。若用户输入的字符不能编译为单值数字,那么返回值将会是一系列的字可以通过函数 type()确定返回的是什么。)。用户214out(s)将 s到文件里)变量 s显示在屏幕上(若文件是打开的,则的类型必须是字符型。若无错误函数的返回值为零,若有错误则返回 1(如 s不是字符型的)string(var)将 var 变为字符型这些函数的用途之一就是输入参数。例 2.7 交互输入的

17、输入输出。例 2.7 表明用这些函数给杨氏模量和泊松比215对于字符变量唯一的合法算术操作是加法;如例 2.7 所示,导致两个字连接在一起。表格 2.2 确认了在字表 2.2 字符操作符号操作中的可用字符。它仅对算术操作中有字的情况。若一个数是字符变量的一部分则使用内部函数string()(见变量例 2.7 中的 xx)。此外,注意内部函数 type()的用法,它可确认类型(见2.5.4 节)2.2.8FISH 函数的重定义一个 FISH 函数可以被重定义。当在 DEFINE令行中出现与已知的函数同名函数时,与旧函数相关的代码将被删除(或被警告),新的代码取而代之。以下是几点注意事项:1.函数

18、中使用的变量即使函数重定义也是全局的,就好像它可在任何地方使用。的;仅是代码被删除。因为变量是2.若函数被另一个同名函数所取代,那么所有对旧函数的调用都会被删除。所有的与被取代函数的连接 fishcall 也被删除。2162.3 FISH 表在 FISH 语言中有些保留名;这些名字不可用于用户自定义的变量和函数。保留名或分为以下三类:2.3.1 特殊的表下面的单词被安置在 FISH 函数的开头位置。他们改变函数和变量的特性,但不影响表函数中的。他们仅在编译时翻译。ARRAY var1(n1,n2,)这个表任意维数和的矩阵包含在 FISH 代码中。在上面的表,var1 是任一合法的变量名,而 n

19、1,n2是实际的整型数字或是标量变量(dim),亦或是用户自定义变量(无表)有整型数字,在 ARRAY表运行时。在同一行内可能多个矩阵表(如上面的 var2);每个矩阵的维数可以不同。ARRAY 表是很特殊的,其在编译过程中操作,但不被执行(其在执行时被忽略)。注意以下几点:1.所给出的名字可能是一个的单值变量。如果这样,那么它将被转化为矩阵并且它的值将消失。若其名不,则创造它。矩阵的名字(如,矩阵不可被重2.给出的名字可能不是函数也不是定义)3.给出的维数(n1,n2)必须是正整数或是计算为整数。(如指数以1 开始,而不是以 0 开始)4.没有矩阵数和的限制,除非内存容量或是行的最大长度有限

20、。矩阵变量可以采用任意类型(整型,浮点型,指针,或字符型)与单值变量处理规则一样。除了它们带有一个用括号包含的指数,他们的使用与单值类似。在使用中,矩阵指数可能是整型表如var1(abc(3,nn3,max(5,6)qqq)/3.4若 abc 是个三维矩阵的名字,那么该表是个合法的。矩阵可以出现在赋值语句的两边,并且矩阵可以作为其他矩阵的指数。217在 FLAC 命令行中使用矩阵有以下限制:(1)(2)(3)命令 PRINT fish 可以打印矩阵,若名字与带有矩阵维数的矩阵相关;PRINT name(其中 name 为矩阵名)能够简单的输出最大矩阵的指数;FISH 矩阵名作为 SET 命令的

21、源或目标的数字使用 息(如 SET gravname,其中 name 为 FISH 矩阵名)不的,将出现出错信(4)PRINT name index 打印在 name(index)中的值。WHILESTEP若此语句出现在用户自定义函数的任意位置,那么该函数将会在 FLAC 的每一自动执行。使用 SET fishcall 0 remove 命令可以使 WHILESTEP命令失效(见 2.4.3 节)Fishcall 表比 WHILESTEP命令提供了更便利的,情况其优先被使用。2182.3.2下面的表以上谈及的表DEFINEEND表直接作用于 FISH 函数的不一样。functionnameFI

22、SH 程序在 DEFINE 和 END 之间流程。他们在函数中的地位,与令被编译并在 FLAC 的空间中。编译后的代码当无论该函数名被提及时执行,见 2.2.4 节。函数名(根据 2.2.2 节的规则所选的名字)无需赋值。expr nCASEOF CASEENDCASE这个表类似于 FORTRAN 中的 GOTO 或 C 中的 SWITCH 表达式。其可以依赖于索引值迅速的传递于各个代码段之中。例 2.8 阐述了的使用。例 2.8CASE 结构的使用CASEOF 后的目标 expr 可以是任意的合法的代数表;当计算时,其可转换为整型。条目 i1,i2,i3必须在 0255 的整型(不是符号)。

23、若 expr 等于 i1 时,那么下一个 CASE 结束。流将转到 CASE i1 代码段;执行直到遇到将转到 ENDCASE 表;与 C 语言不同。若expr 的值等于 i2,i3,则执行类似的操作。若 expr 的值不等于 CASE 中的任何相关数字,则立即执行 CASEOF 后面的第一条语句,当遇到第一个 CASE 后跳到 ENDCASE 表。若 expr 的值小于零或是大于 CASE中的最大值,则出现错误提示,运行立即结束。数字 n(如 i1,i2,i3)不需是连续数字,但不能重复。CASEOFENDCASE 语句可以在任意层次嵌套;在不同层次上的 CASE数字重复产生。如可以在不同的

24、层次上同时出现好几个的使用可以迅速的作出选择(比 IFENDIF 语句CASE5。CASE 表快的多)。但是,弊端是耗费很多内存;空间依赖与 CASE 表的最大数值。在 CASE 的数字是双字节情况下,内存耗费expr1 test expr2 THEN。IFELSE ENDIF这些表是使条件代码段有条件执行;ELSE 是选择语句,单词 THEN如果需要可以省略。Test 部分由下列的一个或组合组成: =符号的意思很标准,号的意思是不等于。expr1 和 expr2 是任意合法的代数表(可以包含函数,FLAC 变量等等)。若测试为正,那么立即执行 IF 后的表,直到遇到 ELSE 或 ENDIF

25、 语句结束。若测试为负,则执行 ELSE 和 ENDIF 之间的语句;否则测试符号都可应用到 expr1 和 expr2 表跳到第一行。所有已知的。若两个表都是字符是不合法串,那么只有和符号是合法的;其他的操作符对于字的。字必须准确匹配;类似的,表可以是指针,仅有和符号是合法的。IFELSEENDIF 语句可以在任意层次上嵌套。该语句将无条件的结束当前的函数。EXITEXIT SECTION将无条件的结束此段代码;FISH 的程序块将在下面给以说明。此表220LOOP ENDLOOP LOOPENDLOOPvar(expr1,expr2) orWHILE expr1 test expr2在 L

26、OOP 和 ENDLOOP 之间的 FISH直到满足一点的条件否则将重复执行。在第一种形式中,使用整数计数,var 给出了expr1 的初始值,在每次循环后加 1,循环直到 expr1 的值等于 expr2 的值结束。注意expr1 和 expr2(可以是任意的代数表)在循环初始时被赋值;在循环中重定义变量对循环操作的次数没有影响。var 是一个单值整型变量;其可在循环的表使用(当函数在循环中被唤起时)可以被重定义。在第二种 LOOP 的形式中,当测试条件满足后,循环体执行;否则转到 ENDLOOP 后的一行执行。Test 的形式与 IF 的表一致。此表达式也可以包含浮点型;在相同情况下在 I

27、F 表指针。也可以使用字和两种 LOOP 结构可以对比一下;形式 1,在循环结束后进行条件测试(因此循环至少执行一次)。形式 2,在循环开始时进行条件测试(因此若初始条件不满足则不执行循环体)循环可以在任意层次上嵌套。SECTION ENDSECTIONFISH 语言中没有 GOTO 表。SECTION 结构使跳转可化。SECTIONENDSECTION 结构可以包含任意数量的 FISH 代码;他们不会影响任何操作。但是,在该语句中的 EXIT SECTION 表可以使控制直接结束。任何数量的的语句可以嵌入到该段中。ENDSECTION 表运算类似于 C 和 FORTRAN 中的 GOTO 语

28、句。逻辑很清晰,但是,由于跳到该段的外面,流向始终是向下的此语段不可被嵌套;在一个函数或许有许多该语句,但是不可重叠或是相互包含。2212.3.3FLAC令操作DDFLAC 命令可以END到这个 FISH 表之间;当 FISH 函数执行时,此命令会被编译。在 FISH 函数中嵌入 FLAC 命令有些限制。在 FISH 函数NEW 和 RESTORE 命令。DENDD中不可之间的部分被 FISH 当作一个符号错误之前,该函数必须被执行。FISH 函数定义可能出现在被储存;他们不再检测,在出现DENDD 之间,也可的,可能产生错误。能包含D 表。但是重复调用是不包含 WHILESTEPD 表,或是

29、 fishcall 的目标的函数可能包含使用,并应尽量避免。表。但是,应说明行(以“;”开头的)可以作为 FLAC 的说明,而不是 FISH 的说明它可能用作函数中的说明,当函数被调用时被输出。若反馈模式被关闭(SET echooff)那么任何来自于函数的 FLAC 命令将被显示出来或是到日志文件中。2222.4 与 FLAC 的连接2.4.1 修改 FLAC 命令下面的包含了所有的直接与 FISH 变量或实体有关的 FLAC 命令。FLAC 和 FISH之间的交互有许多其他的方式;见 2.4.2 节的说明。HISTORYvar在记步的时候产生 FISH 变量和函数的历史。若 var 是函数,

30、那么它将在每次历史时被重新计算。(由 HISTORY nstep 命令);无需用fishcall 命令函数。若 var 是 FISH 变量,那么将使用它的当前值。因此,当使用变量历史fish name时应十分注意。历史可以通过普通的方式计划。PLOT条目可被加到唤起 FISH 函数的计划中。(见 2.7.1)在实例中,函数 name被当作计划条目。var输出 FISH 变量 var 的值。Var 如果是函数,那么它也被执行(每件事也可以调用)fishPRINTPRINT输出 FISH 符号的fishcall输出 fishcall 地址和 FISH 函数之间的关联(见 2.4.3) fishca

31、ll nname,或者是当前值或者是他们类型的指示。PRINTSETFISH 函数 name 可在 FLAC 中通过 fishcall 的地址值n 来调用。表格 2.3 列出了目前的 ID 值。在 FISH 函数前安置 remove可以删除函数。223SETvar value将 FISH 变量 var 的值设定为给出的值 value。给定的值决定 var 的类型, 如 2.2.5 节所示。注意 value 可以是 FISH 变量或是函数的名字;在这里其值和类型 传递给 var。strTITLE通过 FISH 字2.4.2FISH 函数的执行变量 str 改变题目。注意变量名不能在单引号内。来说

32、,FLAC 和 FISH 的操作作为的实体FISH 表不能像 FLAC 命令那样给出,FLAC 命令在 FISH是比较普遍的方式。也不可直接工作。但是,两者有许多交互方式;下面1.函数的直接使用当用户在输入行中输入函数名字时函数即被执行。典型的使用是产生几何图形,设定材料属性的特殊轮廓,或是某些类型的初始。2.作为历史变量使用当作为 HISTORY 命令的参数使用时,无论历史里,FISH 函数的运行遍布于每个规则的时间。在步长中自动执行若FISH 函数使用fishcall 能力(或者包含WHILESTEP在哪3.表),那么在每个 FLAC 计算的循环当中自动执行,或者是无论什么时候特殊时间发生

33、。(见 2.4.3 节的fishcall 命令)运行的函数的使用因为FISH 函数可以结合FLAC 命令(通过4.D表数),所以函数可以像数据文件那样驱动 FLAC 的运行。但是,FISH 函操作是十分强大的,因此,通过函数可以改变命令的参数。在 FLAC 中执行 FISH 函数的只要方式是在 FLAC令行中输入函数名。在这种方式下,FISH 函数可以在 FLAC 中有规则的执行。但是,给出的函数没有参数。如果参数传递给函数,那么他们必须在其前使用 SET 命令(以后将说明)。在 FISH 和 FLAC 之间有种很重要的连接:FISH 符号(函数或变量)可以在 FLAC 中任何时候被所期望的数

34、字取代。这是一个很是实际数字。224的特征,因为数据文件可以用符号建立而不例 2.9 显示了数据文件是怎样于网格密度被建立多个数量相同的几何结构可以通过 SET 命令中的两个数字轻松的建立。例 2.9 带有几何网格处理能力的 FISH 函数例 2.9 阐述了几个要点;函数 make_hole 通过在命令行中给出其名而执行;函数的参可以使用 SET 命令;在 FLAC 的输入中没有数值他们全被符号代替。数字变量可以采用同样的方式使用,但是他们的使用与数值变量相比,受到很多的限制。一个 FISH 字符变量可以在(a)文件名无论在何地被提及,(b)作为 TITLE 命令的参数。在这种情况下,字符不能

35、用单引号,因此 FLAC 可以区分字面名字和变量所代表的名字。例 2.10 阐述该句法。225例 2.10 字符变量得使用2.2.7 节和 2.5.4 节描述了内部函数 string();它将一个数字转变为字。使用 FISH 函数的另一个重要是FLAC 的运行。将 FLAC 命令放置在DENDD 的代码段中。整个部分可放置于循环中,并且参数可被传递给 FLAC 命令。例 2.11 论述了该例 2.11FLAC 运行的,例中的 8 完全运行,每个都是不同的摩擦角。226对于每次运行(例循环的执行),所有网格变量的重设和摩擦角的重定义。结果总结在相对于摩擦角的增量位移日志文件的表格中(图 2.1)

36、。了表格函数 xtable 和 ytable。极限为 65 度。2.5.5.1 节描述图 2.1 相对于摩擦角增量位移的日志文件2272.4.3FISHCALLFISH 函数在执行时,在 FLAC SET fishcallname,可以从几个地方调用。命令形式为设定 fishcall 可以通过 ID 值 n 局部确定在 FLAC 中调用 FISH 函数。当前,表 2.3 的ID 值被分配。(目前,其都在计算循环中)。数字指向fishcall 的位置。注意:ID 值(表 2.3)配置在计算循环的特殊分量之间。这表示此段与调用的 FISH 函数相一致。例如, 在循环之前,与 ID1 相关的函数(来

37、自速度);ID4 函数在其后被调用ID 为 0 与包含 WHILE_STEP表的函数相一致例,这些函数将自动布置ID 为 0。任何数字的函数可能与相同 ID 的数相关(虽然它们的调用次序未定义;如果次序很重要,那么主函数将调用其他一系列的子函数)。任何 ID 数字也可很一个 FISH 函数相关。在这种情况下,相同的函数可以在主代码中从不同的地方唤起执行。有个输出关键字 fishcall(简写为 fishc),其罗列出 ID 值和 FISH 函数的当前如 PRINT fishcall。SET fishcall 命令将把给定的名字加到与给定 ID 值的里。但是关键字 remove,放置在 FISH

38、 名前面,导致 FISH 函数从Set fishcall 2 remove将会删除函数和 ID 值 2 之间的中清楚。如:。注意一个 FISH 函数可以和相同的 ID 值联系两次。在这种情况下,函数将被调用两次(或名。228表格 2.3 分布 fishcall IDS次),remove 关键字将删除仅一次函数229表 2.3 列出的数字在文件“FISHCALL.FIS”给出了,该文件的组成由例 2.12 给出。符号名应该优先用实际数字,所以,赋值可以在后面改变,当例 2.12FISHCALL.FIS 文件的FISH 函数不需要改变。例 2.13 中的数据文件解释了 fishcall 的使用。在

39、 FLAC(ID4)方程之前,函数rotation 被调出来,为了使 x 和 z 方向的速度适应旋转一个网格。这个例子测试出在大应变方程;在一个 30 度的循环下分s xx 和s zz 回到他们初始值。这个例子说明,模式下的对 FLAC 来说在每次循环执行几何形状的例 2.13fishcall 的使用是必要的;因此 SET geom._rep1。231fishcall14 和 fishcall15 是用户自定义函数,它可以通过在选定的条目上双击鼠标来激活:面,块,轮廓,块轮廓,和结构单元重生条目,模型上鼠标的位置由标量变量识别,mclickx,mclicky 和 mclixkz。例 2.14

40、解释了 fishcall14 和 fishcall15 通过双击鼠标来改变材料模型的使用。例 2.14fishcall14 和 fishcall15 的使用实例2332.5 预定义变量,函数和数组有一些特定的函数和变量,他们是 FISH 内定的用户自定义函数和变量的时候必须避免使用这些固定的名字。这节描述所有预定义实体。这些实体分成以下种类:标量,全局固有函数,表函数和记忆函数。在一些情况下,一个实体恰当地被分属于不止一种种类。2.5.1 FLAC 特殊的标量变量此处列出的目录有单值,并与 FLAC 数据结构或求解过程有特殊的。星号(*)表示在用户自定义的函数中分配一个给变量;此外,该变量值只

41、能测试出,不能设定。变量无其他说明,crdt crtime dim dydt dytime fldtfluid_ratio fltimefos_f为浮点型。*蠕变时间步*蠕变时间3(空间维度)(整数)*动态时间步*动态时间*流体时间步当前非平衡流体率*流体时间在 SOLVE fos 中使用的 F 的当前值; 节指向网格点首地址的指针指向界面首地址的指针细节见 2.5.1.1gp_head i_head large mclickx mclicky mclickz234mech_ratio mem memsize ngpnzonesel_head*若是小变形操作0;若为其他则0(整数) 当前x 坐

42、标当前 y 坐标当前 z 坐标当前非平衡力的比率 当前空余内存(整数)可用空间(整数)网格点的总数(整数) 区域的总数(整数)指向 SEL 的首地址的指针(指针)sellink_head selnode_head stepthdt therm_ratio thtime timestep unbal xgrav ygrav zgravzone_head指向结构链首地址的指针(指针)指向结构结点的首地址的指针(指针) 当前步数(整数)*热时间步当前非平衡热流量率*热时间 全局时间步网格点上最大非平衡力*重力的x 分量*重力的y 分量*重力的z 分量指向区域首地址的指针(指针) mclickx,mc

43、licky,mclickz 在模型上给出了 3 维坐标, 与在确定计划目录上双击鼠标左键或右键,是一致的。3 维坐标可通过当前视线方向和模型中最近区域的交点获得。若无交点,则 FISH 函数的值被设定为。受影响的标记是:表面标绘项,块标绘项,块轮廓线标绘项,SEL 恢复标绘项。等高线标绘项,标绘2352.5.1.1 变量 fos_f 的使用FISH 标量 fos_f 是用于 fos 计算的函数。Fos_f 变量在循环中作为 fos 计算的一部分,其是非零的;因此,我们可以通过fos_f 是不是零,而考察其有没有意义。在 fos 的计算中,其计算时间是弹性的由于系统的不同。在循环计算的过程中,f

44、os_f 的值可达 1020。为了使循环一直正常,用户中的 FISH 编码会探测这个值,举个例子:计算中,在 fos循环中不断的它的值,所以 FISH 函数在循环中不是一直变化的量。循环中的所有的信息都可以用文件的形式保存下来。例 2.15,表示了连续变化的 F 值,其 ASCIIW 文件参看例 2.16例 2.15Fos_f 变量的用法举例237例2.16计算后的 Result.out 文件:2.5.2 通用的标量变量下表中列出的变量均有一个单一的值,它们与 FLAC3D 的不是很特别,它们只是一般意义上的标量。带星号的量表示可以被用户赋予一个自定义的值,否则这个值就是系统已定的,是不能改变

45、的。以下除非特别的量外,它们都随浮点型的。clockcycle从午夜开始的百分之一秒的量大小当前的循环次数p 180 (把度数转化为弧度)标准配置的一个随机数,它的均值随 0,表中变化幅度是 1.0。均degradegrand值和幅度都是可以通过重新设置和偏差设置来改变的。null pi step unbalurand终端连接量,是类型示意p当前循环步数非平衡量的最大值在 0 到 1 之间随即分布的量2.5.3 FLAC3D 的特殊模型变量表中列出的变量是与 FLAC3D 内部的数据结构密切相关的。它们分为三类:网格变量; 区域变量;连接变量。每一中变量的每一个变量需要在内存地址中设置一个值。

46、每种变量都有相关的函数来连接内存地址。在 FISH 语言种,每个变量的名字都必须全部拼写车来,它们不能被缩减。除了被特别的外,所有的变量通常都是浮点型的变量。带星号的变量可以通过 FISH 函数来改变值的大小,否则的话变量的值是不能改变的。内存中,网格型和区域型的变量在空间中,被标记或近似标记为球坐标(x,y,z)。如下的量是可能用到的:p_gp=gp_near(x,y,z)网格变量与(x,y,z)最近的地址p_z=z-near(x,y,z)区域变量与(x,y,z)最近的地址p_gp=gp_nearall(x,y,z)网格变量空区域的与(x,y,z)最近的地址p_z=z-nearall(z,y

47、,z)空区域的与(x,y,z)最近的地址区域变量那些变量都是时变量,所以全部的网格必须被显示出来。相应的,网格和区域可以通过头文件 gp_head 或 zone_head 扫描出来,gp_next()和 z_next()也一样。通过给定网格和区域的 ID 数也可以找到它们的内存地址。注意那些变量都是时变量。p_gp=find_gp(id) p_z=find_zone(id)2.5.3.1 网格变量gp_biotmod(p_gp)伴随 ID 的网格地址伴随 ID 的区域地址*液体模数gp_copy(p_gpSource,p_gpDest)给定网格点的网格,这个函数可以通过设定来规定,但是它的返回

48、值是被忽略的。*在网格点 p_gp 附录中的参数矩阵中的值(该矩阵是通过config 命令生成的)。gp_extra(p_gp,ind)238gp_finvol gp_flow(p_gp) gp_fmod(p_gp) gp_ftens(p_gp)gp_group(p_gp,ind)液体对网格点的反相体积非流在网格点处的溢出量*液体的体积弹性模量*液体膨胀极限*进入网格变量的字,其中 ind 由 18,例如:一个网格点可以最大含有 8 个组,和 8 个组的名称。若 ind=0,则函数将返回组网格点的应有的数。网格点的 ID*网格点的地址,当被设置为 1 时,它是一个较小的协变量(默认值 0)。假

49、如 p_gp1,坐标是不增加的,但是若是错误就将被改掉在内部的逻辑计算中。gp_id(p_gp)gp_locsmall(p_gp)gp_mass(p_gp) gp_next(p_gp) gp_pp(p_gp) gp_psource(p_gp)gp_region(p_gp,ind)*网格处的质量含量指定点处的下一个网格地址*网格点处的孔隙水*网格处的温度来源*进入网格区域变量的字,其中 ind 由 18,例如:一个网格点可以最大含有 8 个组,和 8 个组的名称。若 ind=0,则函数将返回组网格点的应有的数*液体饱和度gp_sat(p_gp) gp_staterest(p_gp) gp_sta

50、tesave(p_gp) gp_temp(p_gp) gp_xdisp(p_gp) gp_xfapp(p_gp)gp_xfix(p_gp)在 FISh 输入和输出文件中网格节点的量的量在 FISh 输入和输出文件中保存网格节点网格点的温度值*x 方向的位移值x 方向的受力值(体力)*x 的边界条件(请看下面的解释 1)239gp_xfunbal(p_gp) gp_xload(p_gp) gp_xpos(p_gp) gp_xvel(p_gp) gp_ydisp(p_gp) gp_yfapp(p_gp) gp_yfix(p_gp) gp_yfunbal(p_gp) gp_yload(p_gp) g

51、p_ypos(p_gp) gp_yvel(p_gp) gp_zdisp(p_gp) gp_zfapp(p_gp) gp_zfix(p_gp) gp_zfunbal(p_gp) gp_zload(p_gp) gp_zpos(p_gp) gp_zvel(p_gp)解释 1:网格处 x 方向上的非平衡力*另加的 x 方向荷载(请看下面的解释 2)*网格处 x 方向上的坐标*网格处 x 方向上的速度*网格处 y 方向的位移y 方向的受力值(体力)*y 的边界条件(请看下面的解释 1) 网格处 y 方向上的非平衡力另加的 y 方向荷载(请看下面的解释 2)*网格处 y 方向上的坐标*网格处 y 方向上的

52、速度*网格处 z 方向的位移z 方向的受力值(体力)*z 的边界条件(请看下面的解释 1) 网格处 z 方向上的非平衡力另加的 z 方向荷载(请看下面的解释 2)*网格处 z 方向上的坐标*网格处 z 方向上的速度gp_yfix, gp_yfix, gp_zfix 变量可以 设置或恢复设置在 FISH 函数中,并且是与 x,y,z 坐标相应的。任何非零整数的固定边界值都可以设定。恢复时,固定边界值可以用 0 或 1 来设置(0 表示边界)。还有就是通过 apple 按钮来完成这样的设置。例如:假设网格点的 yvel 值是变化的,那我们就设定 gp_zfix 值为 0;在循环计算前,这里的给定条

53、件就已经设置了。241解释 2:通过使用 FISH 函数如 gp_xload, gp_yload, gp_zload 可以设定节点的受力值。这些荷载是通过 apple 按钮导出的,如重力等力都可以这样加在节点上。变量可能同变化的,也是不断被同时监测的。若未设置这些量的大小,它们将被默认为 0。一定程度上,它们是不变化的在 FLCK3D 中,可以随用户的设置而改变。2.5.3.2区域变量z_code(p_z)区域编码:0方形;1楔形;2金字塔形;3多的方形;4四边形z_code(p_zSource,p_zDest) 根据区域源而关于指定点的状态,在设计中,这个函数必须被指定;*区域浓度它的返回值可以被忽略。z_density(p,z)z_extra(p_z,ind)*附加参数矩阵中关于p_(z 附加矩阵通过config 命令来完成)的值网格表面的指示器,表面是 if,尖角处是 iv,这两个数都是整数;就象在 1.1.4 中描述的那样。网格点的值参看 1.1.4(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论