FISH Functions

FISH language intrinsics are listed by group below. Beneath these, for convenience, the groups of general element intrinsics and FLAC3D-specific intrinsics are also listed.

The type specifiers used in the FISH function signatures are given in the “FISH Type Index” section.

Array Utilities

Arrays are described under Arrays in the FISHData Types” section.

array.command(ARR_PNT) Run commands in an array.
array.convert(MAT_PNT/TEN_PNT) Convert a matrix or tensor to an array.
array.copy(ARR_PNT) Copy an array.
array.create(INT<,NUM>) Create an array.
array.delete(ARR_PNT) Delete an array.
array.dim(ARR_PNT) Get the array dimension.
array.size(ARR_PNT,INT) Get the size of an array dimension.

Component Utilities

Vectors are described under Vectors in the FISHData Types” section.

comp(VEC/MAT_PNT/TEN_PNT,INT<,INT>) Get/set the vector/tensor component.

Constructors

boolean(BOOL/NUM/PNT) Create a Boolean.
false Create a false Boolean.
float(BOOL/NUM/STR) Create a float.
index(NUM/STR) Create a positive integer.
int(BOOL/NUM/STR) Create an integer.
null Create a null pointer.
true Create a true Boolean.
vector(ARR_PNT/MAT_PNT/NUM<,NUM><,NUM>) Create a vector.

Creep Process Utilities

creep.active Get the status of creep calculations in the current cycle.
creep.age Get the accumulated age.
creep.cycle Get the current step/cycle number.
creep.safety.factor Get the factor of safety.
creep.solve(STR) Get a current solve limit.
creep.step Get the current step/cycle number.
creep.time.total Get the accumulated age.
creep.timestep Get the creep timestep.
creep.timestep.given Get the given timestep.
creep.timestep.max Get the maximum allowed timestep.

Dynamic Process Utilities

dynamic.active Get the status of dynamic calculations in the current cycle.
dynamic.age Get the accumulated age.
dynamic.cycle Get the current step/cycle number.
dynamic.safety.factor Get the factor of safety.
dynamic.solve(STR) Get a current solve limit.
dynamic.step Get the current step/cycle number.
dynamic.time.total Get the accumulated age.
dynamic.timestep Get the dynamic timestep.
dynamic.timestep.given Get the given timestep.
dynamic.timestep.max Get the maximum allowed timestep.

File Utilities

file.close(<FILE_PNT>) Close a file.
file.open(STR,INT,INT) Open a file for reading/writing.
file.open.pointer(STR,INT,INT) Open a file for reading/writing.
file.pos(<FILE_PNT>) Get/set the current position in bytes.
file.read(ARR_PNT/STR,INT<,FILE_PNT/ARR_PNT><,INT><,INT>) Read the contents of a file.
file.write(ARR_PNT/STR,INT<,FILE_PNT/ARR_PNT><,INT><,INT>) Write data to a file.

Fluid Process Utilities

fluid.active Get the status of fluid calculations in the current cycle.
fluid.age Get the accumulated age.
fluid.cycle Get the current step/cycle number.
fluid.safety.factor Get the factor of safety.
fluid.solve(STR) Get a current solve limit.
fluid.step Get the current step/cycle number.
fluid.time.total Get the accumulated age.
fluid.timestep Get the fluid timestep.
fluid.timestep.given Get the given timestep.
fluid.timestep.max Get the maximum allowed timestep.

Global Utilities

global.cycle Get the cycle/step number.
global.deterministic Get/set deterministic mode.
global.dim Get the program dimensionality.
global.fos Get the global factor of safety.
global.gravity(<INT>) Get/set the gravity.
global.step Get the cycle/step number.
global.threads Get/set the number of threads used during calculations.
global.timestep Get the global timestep.
global.title Get/set the job title of the model.

IO Utilities

io.dialog.in(STR<,STR>) Dialog to input a string.
io.dialog.message(STR,STR,INT) Make a message dialog.
io.dialog.notify(INT,INT,STR) General notification event.
io.in(STR) Get input from the console.
io.input(STR) Get input from the current input source.
io.out(ANY) Output a string.

List Utilities

list.find(LIST,INT) Find an element in a list by ID.
list.find.name(LIST,INT/STR) Find an element in a list by name.
list.size(LIST) Get the list size.

Mail Utilities

mail.account(STR) Set the outgoing email account.
mail.attachment.add(STR) Add an attachment.
mail.attachment.delete(STR) Delete an attachment.
mail.body(BOOL,STR) Set the email body.
mail.clear Clear the email.
mail.domain(STR) Set the domain name of the sender’s email account.
mail.from(STR) Set the address from which the email is sent.
mail.host(STR) Set the SMTP server name.
mail.password(STR) Specify the email password.
mail.port(INT) Set the SMTP port number.
mail.recipient.add(STR,STR) Add a recipient.
mail.recipient.delete(STR,STR) Delete a recipient.
mail.send Send the current email.
mail.subject(STR) Set the subject line text.

Map Utilities

Maps are described under Maps in the FISHData Types” section.

map(NUM/STR,ANY<,NUM/STR/ANY>) Create a map.
map.add(MAP,NUM/STR,ANY) Add a value to a map.
map.has(MAP,NUM/STR) Query whether a map contains a key.
map.keys(MAP) Get the keys of a map.
map.remove(MAP,NUM/STR) Remove a value from a map.
map.size(MAP) Get the map size.
map.value(MAP,NUM/STR) Get a value.

Math Utilities

math.aangle.to.euler(VEC) Get Euler angles from the axis-angle representation.
math.abs(NUM) Get the absolute value of a number or a vector.
math.acos(NUM) Get the arc-cosine.
math.and(INT,INT) Get the result of the bitwise logical AND operation.
math.area.intersect.poly.poly(MAP,MAP) Get the area of overlap of polygons.
math.area.poly(MAP) Get the area of a polygon.
math.asin(NUM) Get the arc-sine.
math.atan(NUM) Get the arc-tangent.
math.atan2(NUM,NUM) Get the arc-tangent.
math.ceiling(NUM) Get the next integer by rounding up.
math.closest.segment.point(VEC,VEC,VEC) Get the closest point on the line segment to the...
math.closest.triangle.point(VEC,VEC,VEC,VEC) Get the closest point on the triangle to the point.
math.cos(NUM) Get the cosine.
math.cosh(NUM) Get the hyperbolic cosine.
math.cross(VEC,VEC) Get the cross product of vectors.
math.ddir.from.normal(VEC) Get the dip direction.
math.degrad Get the degree-to-radian conversion.
math.dip.from.normal(VEC) Get the dip.
math.dist.segment.point(VEC,VEC,VEC) Get the distance between the line segment and the point.
math.dist.segment.segment(VEC,VEC,VEC,VEC) Get the distance between two line segments.
math.dist.triangle.segment(VEC,VEC,VEC,VEC,VEC) Get the shortest distance between a triangle and a line...
math.dot(VEC,VEC) Get the dot product of vectors.
math.euler.to.aangle(VEC) Get the axis-angle representation from Euler angles.
math.exp(NUM) Get the exponential.
math.floor(NUM) Get the previous integer by rounding down.
math.ln(NUM) Get the natural logarithm.
math.log(NUM) Get the base 10 logarithm.
math.lshift(INT,INT) Get the result of a left bit shift.
math.mag(VEC) Get the vector magnitude.
math.mag2(VEC) Get the squared vector magnitude.
math.max(NUM,NUM<,NUM>) Get the maximum.
math.min(NUM,NUM<,NUM>) Get the minimum.
math.normal.from.dip(FLT) Get the normal to a plane in 2D.
math.normal.from.dip.ddir(FLT,FLT) Get the normal to a plane in 3D.
math.not(INT,INT) Get the result of the bitwise logical NOT operation.
math.or(INT,INT) Get the result of the bitwise logical OR operation.
math.outer.product(MAT_PNT/VEC,MAT_PNT/VEC) Get the outer product of matrices or vectors.
math.pi Get the number pi.
math.random.gauss Get a Gaussian random number.
math.random.uniform Get a uniform random number.
math.round(NUM) Get the nearest integer.
math.rshift(INT,INT) Get the result of a right bit shift.
math.sgn(NUM) Get the sign.
math.sin(NUM) Get the sine.
math.sinh(NUM) Get the hyperbolic sine.
math.sqrt(NUM) Get the square root.
math.tan(NUM) Get the tangent.
math.tanh(NUM) Get the hyperbolic tangent.
math.triangle.inside(VEC,VEC,VEC,VEC) Determine if a point falls inside a 2D triangle.
math.triangle.interp(VEC,FLT,VEC,FLT,VEC,FLT,VEC) Return interpolated value at vIn based on triangle interpolation.
math.unit(VEC) Get a unit vector.

Matrix Utilities

Matrices are described under Matrices in the FISHData Types” section.

matrix(ARR_PNT/VEC/TEN_PNT/INT<,INT>) Create a matrix.
matrix.cols(MAT_PNT) Get the number of columns.
matrix.det(MAT_PNT/TEN_PNT) Get the matrix determinant.
matrix.from.aangle(VEC) Get a rotation matrix from axis angles.
matrix.from.euler(VEC) Get a rotation matrix from Euler angles.
matrix.identity(INT) Get an identity matrix.
matrix.inverse(ARR_PNT/MAT_PNT/TEN_PNT) Get the matrix inverse.
matrix.lubksb(ARR_PNT/MAT_PNT/TEN_PNT,ARR_PNT) Get the LU decomposition via backwards substitution.
matrix.ludcmp(ARR_PNT/MAT_PNT/TEN_PNT,ARR_PNT) Get the LU decomposition.
matrix.rows(MAT_PNT) Get the number of rows.
matrix.to.aangle(MAT_PNT) Convert a rotation matrix to axis angle.
matrix.to.euler(MAT_PNT) Convert a rotation matrix to Euler angles.
matrix.transpose(MAT_PNT) Transpose a matrix.

Mechanical Process Utilities

mech.active Get the status of mechanical calculations in the current cycle.
mech.cycle Get the current step/cycle number.
mech.energy(STR) Get a mechanical process energy.
mech.safety.factor Get the factor of safety.
mech.solve(STR) Get the current value of a solve limit.
mech.step Get the current step/cycle number.
mech.time.total Get the accumulated age.
mech.timestep Get the mechanical timestep.
mech.timestep.given Get the given timestep.
mech.timestep.max Get the maximum allowed timestep.

Memory Utilities

memory(MEM_PNT) Get/set a value in a memory chunk.
memory.create(INT) Create a chunk of memory.
memory.delete(MEM_PNT) Delete a memory chunk.

Socket Utilities

socket.close(SOCK_PNT/INT) Close communication on a socket.
socket.create Create a new socket.
socket.delete(SOCK_PNT) Delete a socket.
socket.open(INT/STR,SOCK_PNT/INT<,INT><,INT>) Open communication on a socket.
socket.read(ARR_PNT,INT,SOCK_PNT/INT<,INT>) Read FISH variables through a socket.
socket.read.array(ARR_PNT,SOCK_PNT/INT) Read FISH variables into an array through a socket.
socket.write(ARR_PNT,INT,SOCK_PNT/INT) Write FISH variables through a socket.
socket.write.array(ARR_PNT,SOCK_PNT/INT) Write FISH variables from an array through a socket.

String Utilities

Strings are described under Strings in the FISHData Types” section.

string(ANY<,INT><,STR><,INT><,STR>) Create a string.
string.build(STR<,ANY><,ANY>) Build a string using token replacement.
string.char(STR,INT) Get a character from a string.
string.len(STR) Get the string length.
string.lower(STR) Get a string in lowercase.
string.sub(STR,INT<,INT>) Get a sub-string.
string.token(STR,INT) Get the item at a given position.
string.token.type(STR,INT) Get the character type at a given position.
string.upper(STR) Get a string in uppercase.

Structure Utilities

Structures are described under Structures in the FISHData Types” section.

struct.check(STRUCT_PNT,STRUCT_PNT) Check that structures are of the same type.
struct.name(STRUCT_PNT) Get the name of a structure.

System Utilities

system.beep(<INT><,INT>) Emit a beep.
system.clone(STR<,INT>) A new instance of the code is launched, and the...
system.command(STR/ARR_PNT/MAP) Execute the string contents of the arguments as commands.
system.directory(<STR><,STR>) Set and retrieve the current system directory.
system.environment(STR) Get/set an environment variable.
system.error Throw a FISH exception.
system.os(STR<,INT>) The contents of string s is sent to an operating...
system.sleep(INT) Pause execution.

Tensor Utilities

Tensors are described under Tensors in the FISHData Types” section.

tensor(MAT/ARR_PNT/VEC/NUM<,NUM><,NUM><,NUM><,NUM><,NUM>) Create a tensor.
tensor.i2(TEN) Get the second stress invariant.
tensor.j2(TEN) Get the second deviatoric stress invariant.
tensor.prin(TEN<,ARR_PNT>) Get the principal values.
tensor.prin.from(VEC,ARR_PNT) Get the tensor from principal axes.
tensor.total(TEN) Get the tensor measure.
tensor.trace(TEN) Get the trace of a tensor.

Thermal Process Utilities

thermal.active Get the status of thermal calculations in the current cycle.
thermal.age Get the accumulated age.
thermal.cycle Get the current step/cycle number.
thermal.safety.factor Get the factor of safety.
thermal.solve(STR) Get a current solve limit.
thermal.step Get the current step/cycle number.
thermal.timestep Get the thermal timestep.
thermal.timestep.given Get the given timestep.
thermal.timestep.max Get the maximum allowed timestep.

Time Utilities

time.clock(<INT>) Get the number of hundredths of a second since code...
time.cpu Get the CPU time.
time.real Get the current date time.

Type Utilities

type(ANY) Get the type.
type.index(PNT) Get the type index.
type.name(ANY) Get the type name.
type.pointer(PNT) Get the type name of a pointer.
type.pointer.id(PNT) Get the ID of a pointer.
type.pointer.name(PNT) Get the name of a pointer.

Version Utilities

code.debug Get the code debug status.
code.name Get the code name.
version.code.major Get the code major version.
version.code.minor Get the code minor version.
version.fish.major Get the FISH major version.
version.fish.minor Get the FISH minor version.


Table 1: General Element and PFC-Specific Functions (by group)
General Element PFC-Specific
Brick Functions Ball Functions
Data Functions Clump Functions
DFN Functions Wall Functions
Domain Functions Contact Functions
Fragment Functions  
Geometry Functions  
Globals Functions  
Measure Functions  
Table Functions  


Process FISH Functions
Creep Process Utilities
Dynamic Process Utilities
Fluid Process Utilities
Mechanical Process Utilities
Thermal Process Utilities