A number of applications for 3-D modelling
have been and are being developed here
(including Fie, Tr3,
and are available as executable binaries.
The source code can also be made available.
Finite-element software (developed elsewhere)
We are currently using FEBio, Code_Aster and SAP IV. We previously also used CalculiX and the commercial packages I-DEAS and COMSOL. We have also investigated Cast3m and Modulef; Elmer and Z88 look as though they might be worth looking into. See also some old and sketchy information about available f-e software.
We use Gmsh for generating tetrahedral meshes from surface meshes. Gmsh can also be used with the finite-element solver GetDP through ONELAB, although we have not tried it.
We use, have played with or have considered playing with the following, among many others: 3D Slicer, VisIt, ParaView, CIBC software (Seg3D, ImageVis3D, map3D, etc., from Utah).
Applications have been developed here for Hooke-and-Jeeves minimization, handling bibliographic references, and other miscellaneous tasks.
Libraries developed here include:
Gut: General utilities, including the sublibraries
Far*font definitions used by
Sysdep:(system-dependent code for Compaq Unix, GNU/Linux, MS Windows, VMS and MS-DOS).
Dip: Device-independent plotting - this is an enhancement of the old Tektronix Plot-10 library, with the addition of color, polygons, etc. See instructions for installation and use of software which uses Dip.
Put: Plotting utilities
Mdl: Finite-element modelling routines to read and write SAP input (
.sap) & output (
Libraries from elsewhere that are used here include:
I often use Emacs.
Until ~2000 I used mostly VMS and until 2008 we used DEC/Compaq Unix. Now we use Debian GNU/Linux, Ubuntu and (alas) M$ Windows.
I've collected some personal tips for MS Windows and for Unix/Linux.
Guillimin is McGill's High Performance Computing facility. We use it for intensive computation.
Workstations within BME should use fixed IP addresses that are
assigned. The netmask should be
255.255.255.0 and the gateway address
22.214.171.124. The DNS servers should be set to
should be specified as the domain. See
Network setup for how to do this
under Debian/GNU Linux.
Departmental computing resources
include printers; a shared computer with a scanner;
to a Windows server
that hosts both directories for individuals
and shared lab directories,
all of which are backed up regularly.
Each user has a quota of 5 GB in their personal Probe directory in
AudiLab also has a space allocation of 300 GB in
You need your McGill short username to access Probe. You can find out what it is by logging in to Minerva and going to.
If using wireless or if connecting from outside the department, you must connect to McGill's VPN before connecting to Probe.
To access Probe from a Linux computer (assuming that
cifs-tools is installed),
in the Nautilus file-system
browser do .
In the dialogue box select
Service type and fill in the fields as follows:
|your McGill DAS (Short) username|
The following alternative procedure for accessing Probe from Linux
requires an Administrator account and uses
You can download
smbmount.pl, a Perl script that issues
smbmount commands to connect to
Save the script somewhere and make it executable.
For example, save it in
~/bin/ and then in
a terminal window do
cd ~/bin/ chmod +x smbmount.pl
Thereafter, each time you login you can give the command
~/bin/smbmount.pl to establish the connections to Probe.
You will be asked for your sudo password and then twice for your Mcgill
password. The contents of the
will now appear in
respectively, in your home directory.
The first time you use the script, you will be asked for your McGill short username.
smb://probe.campus.mcgill.ca as the server.
Login with your McGill short username and your McGill password.
For most computers permanently connected to a network jack, the
S: drives should automatically be
See departmental instructions.
See instructions for setting up access to McGill's uPrint service. Their instructions say they apply to Ubuntu 12.10 and up; they apply to Debian 8 (‘jessie’, now testing, expected to become stable early in 2015).
Make sure CUPS is installed. (Under Debian GNU/Linux, use
aptitude or some other method to install
cups and its required packages.)
In order to use the
Print to file feature within
applications, you also need the
lpstat -p can be used to see
what printers are available. To look at the job queues, etc.,
in a Web browser go to
If problems arise when printing Unix-style plain-text files because the
carriage returns are missing, they can be added using
I haven't figured out how to print from within applications because of the need to specify a username for uPrint. Instead, I produce PDF files and print them from the command line.
lp -U username -d printername -o sides=two-sided-long-edge -n 3 -o number-up=2 -P pagelist filename
username is your McGill short username,
or the short username associated with a McGill uPrint card.
printername should be
or (only if necessary)
filename is the name of the file to be printed
(usually a PDF file).
In the example there are several optional specifiers:
-o sidesis used to specify two-sided printing.
-nis used to print multiple copies.
-o number-upis used to print multiple document pages on each output page.
-Pis used to specify which pages to print, with commas and hyphens but no spaces (e.g.,
1,3-7,10). Note that the page numbers in the
pagelistare given in terms of output pages, not in terms of the pages in the document. If, for example,
number-up=2, then a
1-3would result in printing pages 1 to 6 of the document.
I have a script lp.tcl which
prompts for various options
and submits the appropriate
The source files for a library are generally in the same directory as the
object-library file, and are listed in a
.nam file may
include pointers to other directories for some of the modules.
For libraries developed here, there are two naming conventions: a source file contains either
decodf.forcontains the subroutine
Most of my software is written in Fortran 77/90 with some C. For Fortran code, the subprogrammes are usually subroutines rather than functions. For C, of course, there are only functions.