FLAC3D Multi-threaded FISH

The FISH scripting language is now multi-threaded, resulting in much faster execution of functions. To take full advantage of multi-threaded FISH, a new LIST data type, SPLITTING syntax, and OPERATORS have been added.

FISH Lists

Lists are one-dimensional arrays of general FISH values. They differ from matrices in that each index can hold any valid FISH type (including another list). They differ from arrays in that they are passed by value, and they can only be of one dimension. You can iterate through all the elements of a list using the loop foreach statement. The access operator -> can be applied to lists permitting the retrieval/assignment of an element, returning another list

aa = list.sequence(1,'a',3.1,4,math.pi)

  • Makes a 5 element list.
bb = a(3)
  • bb = '3.1'
cc(2) = 'c'
  • cc = list.seq(1,'c',3.1,4,'b',math.pi)
dd = list.seq( (1,2,3) , (4,5,6) )
  • Make a 2 element list of vectors.
ee = dd -> y
  • The list ee is now a list of only the y-components of the vectors in dd or the list {2,5}.
ee -> z / 2
  • The z-components of the vectors in ee have been cut in half or the list (1, 2.5}.

Splitting

FISH splitting allows a function, operator, or library call to be executed repeatedly on each element of an aggregate type (a list, an array, a container of objects, etc). Splitting is executed on all available threads. Splitting can be used as an alternative to loop statements to perform actions on many object in a very clear and concise manner.

In order to make a split call, give the split operator ‘::prefix to one or more arguments of the function, operator, or library call. For example, to reduce the elastic shear modulus of an elastic model:

zone create brick point 0 (0,0,0) point 1 (10,0,0) point 2 (0,10,0) point 3 (0,0,10) size (10,10,10)
zone cmodel assign elastic
zone property bulk 2e9 shear 6e8
[zone.prop(::zone.list,'shear') *= 0.5 ;no loops!


Latest News
  • ITASCA Strengthens North American Delivery of Integrated Geomechanics and Hydrogeology Solutions Drawing on decades of geomechanical and hydrogeological expertise, ITASCA has announced the formation of ITASCA...
    Read More
  • WEBINAR: Solving Geothermal Challenges with XSite Numerical Modeling ITASCA Software and Baker Hughes are hosting a collaborative webinar to demonstrate how combining advanced...
    Read More
  • Newsletter October 2023 ...
    Read More

Upcoming Events
11 Aug
ITASCA Joins Caving 2026 as a Main Sponsor
We are pleased to announce that ITASCA will be participating as a Main Sponsor in Caving 2026, the leading international conference ded... Read More
15 Sept
ITASCA at EUROCK 2026: Advancing Innovation in Rock Engineering
ITASCA is pleased to announce its participation in EUROCK 2026 – ISRM Regional Symposium, taking place from 15–19 September 2026 in Sko... Read More
20 Sept
ITASCA to Participate in CouFrac 2026
ITASCA will be participating in CouFrac 2026, taking place from 20–23 September 2026 in Uppsala, Sweden. The conference brings together... Read More