Appendix E - Distribution and Installation of SHELXL-93


SHELXL-93 is usually distributed in self-extracting packed form on MSDOS diskette, and contains the following files:

shelxl.for
SHELXL source for VAX/VMS 'front end'; this should be compiled without vectorization or optimization.

shelxl.f
SHELXL front end for UNIX (and some other) systems.

shelxlv.f (or shelxlv.for)
sources for routines which should be fully optimized and/or vectorized. The VAX/VMS and UNIX versions are identical.

tyme.c
C routines for the date and time for those UNIX systems which do not provide them (i.e. IBM RS/6000 series). If these are used, all calls from shelxl.f to 'TIME' must be changed to 'TYME' to avoid a clash of names. A special version of 'shelxl.f' (called 'shelxl.ibm') is available in which this has been done.

shelxl1.f, shelxl2.f, shelxl3.f and shelxl4.f (or shelxl1.for etc. for VMS)
the remaining sources for the main body of the program which should be compiled without vectorization or optimization. The VAX/VMS and UNIX versions are identical.

shelxl.hlp
this documentation. This MUST be read before attempting to install or use the programs!

sigi.ins, sigi.hkl, ags4.ins, ags4.hkl
test input files for SHELXL-93 (discussed in detail earlier in this documentation).

pdbins.f
essentially computer-independent source of PDBINS (see Appendix B).

shelxl.dic
restraints dictionary (currently only for proteins) which is read by PDBINS. This may be used as a model for local 'restraints dictionaries'.

ciftab.f
essentially computer-independent source of CIFTAB (see Appendix C).

ciftab.def
standard format file for input to CIFTAB. This may be used as a model for users to produce modified tables, formats for specific journals etc.

ciftab.ang, ciftab.met and ciftab.ger
special format files for tables production using the XTEXT program in the Siemens SHELXTL system.

Usually PDBINS and CIFTAB may be compiled and linked with standard compiler options; before installation the comments in these program sources should be consulted!

Compilation on VAX/VMS systems

Compilation on IRIS (and many other UNIX) systems

Compilation on IBM RS/6000 series

Compilation on Convex computers

Compilation on Sun Sparcstations running SUNOS

Compilation on the Cray Y-MP running UNICOS

Compilation on other computers

Precompiled PC versions

Two precompiled PC versions are provided. 'SHELXL.EXE' is a 32-bit version which runs in 'protected mode' on 80386SX, 80486SX, 80386DX, 80486DX and Pentium processors. For the first three a numeric coprocessor must also be present. The program contains a built-in (Phar Lap) protected mode loader and so runs as a stand-alone program. It runs as a virtual memory program if the available extended memory is less than about 5MB, which means that about 10MB disk space should be free for scratch files. Since the program is particularly efficient as regards disk input/ouput, it is usually better to leave extended memory free for the program rather than to install a disk cache. On systems with limited physical memory it may be necessary to remove other resident programs and protected mode drivers (in 'AUTOEXEC.BAT' and 'CONFIG.SYS', then reboot). If the program fails to load properly it usually means that either not enough memory is available, or that a memory manager or other resident user of extended memory conflicts and has to be removed first. The Lahey / Phar Lap banner which appears when the program is started gives the amount of extended memory available to the program; it may be suppressed by the statement:

SET DOS=-NOSIGNON
which can be included in 'AUTOEXEC.BAT'. MSDOS version 5.0 or later is recommended but not absolutely essential.

For older personal computers and systems with too little extended memory the 16-bit 'real mode' version 'PCSHELXL.EXE' is also provided. It contains all facilities of 'SHELXL.EXE' but is somewhat slower and has limited memory, so for example is restricted to 300 full-matrix parameters. BLOC or CGLS may be used to refine larger structures, provided that there is room for all atoms, restraints etc.; since the memory allocation is dynamic, there are no individual limits except on the number of least-squares parameters. This version should run on ANY personal computer with an 8088 or compatible CPU and the corresponding coprocessor (not required for 80486DX etc.) and 640 kB of memory. The scratch disk space required depends on the size of the structure; at least 2MB is recommended (a RAM-disk may be used - the scratch files are set up in the current directory). If there is not enough memory to run the program it may be necessary to remove resident drivers (network software is particularly greedy). Although this program should be compatible with MSDOS 2.10 and all subsequent versions, version 5.0 or later is recommended.

Although both PC versions are tolerated by MS-WINDOWS and other multitasking interfaces, there is usually a considerable price to pay in terms of performance degradation. If PC's and RISC machines are linked by a NFS network, they may be run using the same files provided that these are in DOS format, because the UNIX version of SHELXL-93 can read DOS format .ins and .hkl files and can be set up to write DOS format .res, .cif and .fcf files (by setting KD=CHAR(13) as the first executable statement in shelxl.f - see comments in the source). If this has been done, all editing may be performed on the PC's; any text editor may be used.

For PC's which are connected to a HP Laserjet or compatible printer, a special program SPRINT is provided for printing the documentation and listing files. SPRINT can print both DOS and UNIX format text files (the latter facility is useful for NFS networks). If no filename extension is specified, .lst is assumed. If .lst is given or assumed, the output is compressed; otherwise a margin is left on the left hand side. SPRINT should be able to handle read-only files and printers running out of paper. Examples:

SPRINT SHELXL.HLP (to print this manual; similarly READ.ME and REFEREE.MSG)

SPRINT AGS4 (to print AGS4.LST in compressed mode after running the test job)

Memory requirements, paging etc.

The program uses two large arrays A and B dynamically, so the limits on the size of structure which can be handled are determined by the dimensions of these two arrays and also of the array C; A, B and C are defined as separate COMMON blocks. The standard version of the program is dimensioned for up to 1500 parameters in each full-matrix block and roughly 5000 atoms (assuming a generous number of restraints etc.), and is suitable for a typical (UNIX) workstation (or mainframe) with 8MB or more physical memory; the precompiled (protected mode) PC version 'SHELXL.EXE' is similarly dimensioned.

It may be necessary to redimension A, B and C and recompile the program for specific installations, e.g. to fit within a given job category on a mainframe. The highest elements of A and B actually used for the various calculations are printed out by the program (after 'Memory required ='). The program will try to use all available physical (and virtual) memory rather than performing its own disk I/O, thereby achieving longer vector 'runs', which enhances performance on vector and pipelined systems. In some cases, e.g. when a large structure is refined on a MicroVAX or PC with limited physical memory (or allocation of physical memory to a given process in the case of the VAX) this strategy may cause excessive 'paging' and disk I/O. If this happens, the maximum vector run length can be reduced by setting the 4th parameter on the L.S. instruction or by reducing the value of the variable IV in the main program and recompiling; it may also be more efficient to 'block' the refinement or use CGLS (except in the final refinement).


Ahead to F - Application Form

Back to D - Example of an Acta Cryst. Paper in '.cif' Format

Back to Appendices

Back to Table of Contents