FISH Scripting

FISH is an embedded scripting language that enables the user to interact with and manipulate PFC models, defining new variables and functions as needed. These functions may be used to extend PFC's usefulness or add user-defined features. For example, new variables may be plotted or printed, special particle generators may be implemented, virtual servo controls may be applied to perform a numerical lab test, unusual distributions of properties may be specified and parametric studies may be automated.

FISH was developed in response to users who wanted to do things with Itasca software that were either difficult or impossible with existing program structures. Rather than incorporate many new and specialized features into PFC, FISH was provided so that users could write functions to perform custom analyzes. It is possible for someone without programming experience to write simple FISH functions. The following section contains an introductory tutorial for non-programmers. However, FISH programs can also become very complicated.

FISH programs are simply embedded in a normal PFC data file: lines following the word "define" are processed as a FISH function; the function terminates when the word "end" is encountered. Functions may invoke other functions, which may invoke others, and so on. The order in which functions are defined does not matter, so long as they are all defined before they are used (e.g., invoked by a PFC command). Since the compiled form of a FISH function is stored in PFC's memory space, the "save" command saves the function and the current values of associated variables.