Porting MOPAC to other platforms

MOPAC is designed to be as platform independent as possible.  The code is written in as near pure FORTRAN90/95 as possible, and where possible simple constructions are used.  This is deliberately done to make it easier to port the program to other machines.

 To validate a port, the data sets in the validation suite should be run  If all tests are passed, within the tolerances given in the tests, then the ported program can be called a valid version of MOPAC. Insofar as is practical, the mode of submission of a MOPAC job should be preserved, e.g.,

(prompt) MOPAC <data-set> [<queue-options>...]

Any changes which do not violate the FORTRAN-90 conventions, and which users believe would be generally desirable, may be sent to the author.

The main difficulty in modifying the program so that it runs on other platforms is likely to be in the channel assignments. In an attempt to make this easier, all channel assignments are defined in subroutines getdat.f90, chanel_C.f90 and init_filenames.f90. MOPAC uses the UNIX instructions iargc and getarg. These read in the number of arguments supplied with the MOPAC command, and if this is greater than zero, it then reads in the name of the job. This is stored in molkst_C module string variable JOBNAM.

Other possible trouble-spots are (a) the CPU timer (in second.F90), and the date function fdate (in readmo.f90 and writmo.f90) and  (b) the RESTART command.

In order to make porting easier, all channel numbers are represented by symbols. The default assignments are shown in the Table.

 
 
Table:
Files used by MOPAC

Channel

Symbol

Name

Input?

Output?

Contents

4

iend

<filename>.end

Yes

 

Shut command

7

from_data_set

<filename>.mop*

Yes

 

Data-set

9

ires

<filename>.res

Yes

Yes

Restart file

10

iden

<filename>.den

Yes

Yes

Density file

11

ilog

<filename>.log

 

Yes

Log file

12

iarc

<filename>.arc

 

Yes

Archive file

13

igpt

<filename>.gpt

 

Yes

Graphics file

14

 

User-defined

Yes

 

New parameters

15

iesr

<filename>.esr

 

Yes

ESP Restart

16

isyb

<filename>.syb

 

Yes

SYBYL file

18

ibrz

<filename>.brz

 

Yes

Brillouin Zone

20

iump

<filename>.ump

 

Yes

Data for grid

21

iesp

<filename>.esp

 

Yes

ESP data

22

 

SCRATCH

 

 

Used by GEOUTG

25

ir

SCRATCH

 

 

Internal working

26

iw

<filename>.out

 

Yes

Results file

All the data are read in on channel 2, and immediately written to a SCRATCH channel, 5. For the rest of the job, data are read off channel 5 as if it were the ordinary input channel. By doing this, the data-set is used only at the very start of a job, and is released immediately afterwards.

*: Alternatives: <filename>.dat, <filename>.arc, <filename>

If, for whatever reason, a channel number must be changed, then the change should be made in chanel_C. Of course, if the channel numbers are to be changed, care should be taken to avoid channel numbers which are already in use.