Revision History:

Version 5.0
Distributed version by James J. P. Stewart.

Version 5.01mn
Modified version of MOPAC-version 5.0. The modifications were made by Minnesota Supercomputer Center Inc. for the Cray computers.

Version 5.02mn
Modification of version 5.01mn. In this version all the subprograms were returned to their original form, which used the include extension and the include file SIZES. This was done so that dimension changes would be much easier in MORATE. (In version 5.01mn the statements which made up the include file SIZES were explicitly included in all subprograms.)

Version 5.03mn
Modification of version 5.02mn. The block data file was modified to include all the AM1 and PM3 parameters available in MOPAC-version 6.0. Save statements were added to all the subprograms so that this version of the code does not have to be compiled with either the static or the ev option on the various Crays. The include file SIZES was renamed SIZES.i and all include statements in the FORTRAN subprograms were modified accordingly; this change was made for portablilty purposes.

Version 5.04mn
Modification of version 5.03mn. The subprograms AM1 and MOLDAT have been modified so that the semiempirical parameters for all of the Hamiltonians (MINDO/3, MNDO, AM1, and PM3) can be modified by using the keyword EXTERNAL (In version 5.0 only the MNDO and AM1 Hamiltonian could be modified).

Version 5.05mn
Modification of version 5.04mn. Several new capabilities have been added, and the code has been modified to make it portable and ANSI FORTRAN-77 compliant. A bug which caused the program to crash when parameter MAXORB <= NMECI**2 has been corrected. A bug in ANALYT which caused PM3 analytical derivatives to malfunction has been corrected. The C.I.=(n,m) option and the Eigenvector Following optimization algorithm have been introduced as new capabilities. Subroutines H1ELEC, ANALYT, MULLIKEN, and AM1 (now renamed EXTPAR) have been modified to use the new NDDO-SRP pairwise parameters BETSS, BETSP and BETPP. Relevant to this new feature is the addition to the SIZES.i file of the new user-defined parameter MXATSP.

Version 5.06mn
Modification of version 5.05mn. DATA statements in the EXTPAR and ROTATE subroutines have been moved so that they are the last non-executable statements in the respective subroutine to adhere to standard Fortran 77. Dummy routines, date_dum.f and second_dum.f, and the makefile make.linux have been created to run MORATE under the Linux operating system.

Version 5.07mn
Files date_linux.f, second_liunx.f, second1.c are added to replace the dummy routines for Linux operating system. Same routines and makefiles for Sun, DEC, and HP workstations are added without testing.

Version 5.08mn
New files PARAMS.i and chgmp2.f are added to include class IV atomic charges calculated by Charge Model 2 (CM2). The subroutines CHRGE, WRTKEY, and WRITEMO are modified, and a new subroutine SCOPY is added to fromblas.f. Two new test runs test13.dat and test14.dat, are added for evaluating charges in the CM2A and CM2P methods.

Version 5.09mn
Modification of version 5.08mn. Tested make files have been provided for Compaq and Sun computers, and the subroutine WRTKEY has been modified to correct a floating point error on Compaq and Sun machines. The value of the parameter MAXDMP, defined in SIZEZ.i, was increased from 3600 to 36000.

Version 5.010mn
Modification of version 5.09mn. The keyword HHON is now available for adding HH repulsive Gaussian functions into AM1 and PM3. Two new test runs, test15.dat and test16.dat, are added for optimizing the saddle point geometry for *CH3+CH4 using the AM1-CHC-SRP and PM3-CHC-SRP models, respectively. Two makefiles "make.altix" and "make.linux_g77" are added into the mopac5010/src/ directory. The former is for compiling MOPAC 5.010mn on SGI Altix systems with the Intel compiler "efc", and the latter is for compiling MOPAC 5.010mn under the Linux operating system with the GNU Fortran compilier "g77".

Version 5.011mn
Modification of version 5.010mn. Three new semiempirical methods are implemented, namely PDDG/PM3, PDDG/MNDO, and RM1. The corresponding keywords are PDG (PDDG/PM3), MDG (PDDG/MNDO), and RM1 (RM1). Three new test runs, test17.dat, test18.dat, and test19.dat, are added to give examples of using the PDG, MDG, and RM1 keywords, respectively. Parameters for these new methods are available for the following elements:
PDDG/PM3: H, C, N, O, F, Cl, Br, I
PDDG/MNDO: H, C, N, O, F, Cl, Br, I
RM1: H, C, N, O, P, S, F, Cl, Br, I
A bug in the recognition of keywords for compiling with optimization is fixed. The compiler "ifort" replaces "efc" in makefile "make.altix" for compiling MOPAC 5.011mn on SGI Altix systems.

Version 5.012mn
Modification of version 5.011mn. The PDDG/PM3 parameters for Silicon, Phosphorus, and Sulfur are implemented.

Version 5.013mn
Modification of version 5.012mn. Implemented three new methods: AM1-D, PM3-D, and PM6 in this version. Also added five new test files (test20.dat through test24.dat).

Version 5.014mn
Implemented analytical gradients for the PM6 method and added a keyword for PM6 ("PM6G09") to reproduce Gaussian 09-type calculations for PM6 since it differs from the PM6 author's software, MOPAC2009, for carbon-carbon triple bonds in that the Gaussian version simply adds a constant 6.0 kcal/mole for each carbon-carbon triple bond, whereas MOPAC2009 uses the correct functional form given in the PM6 paper.

Version 5.015mn
Added a new atomic symbol, "Hp", to the program that acts as a hydrogen that contains p orbitals. In effect, whenever Hp atoms are specified the Hp atoms are assigned atomic number 9 (the same as fluorine) and the program then overwrites the fluorine parameters. Additionally, all fluorine atoms are considered to be Hp atoms whenever any Hp atoms have been specified in the program input.

A new keyword, "DIPG09", has been added to MOPAC in order to output both the standard MOPAC-calculated dipole moment (with origin set as the center of isotopic masses) and the Gaussian 09-type of dipole moment calculation (with origin set as the center of nuclear charges). This difference is only important for charged systems, because the dipole moment of neutral systems is invariant to the choice of origin.

Three new methods, MNDO-D, RM1-D, and PM6-D, have been added that follow the same formalism as AM1-D and PM3-D. MNDO-D, RM1-D, and PM6-D do not occur in the literature so the dispersion parameters chosen for these methods are set equal to those of AM1-D by default. The elements for which these new methods have parameters are:

      MNDO-D, RM1-D, and PM6-D:    H, C, N, O, F, Ne, S

An alternative damping function is now available for use with the dispersion energy correction of all the "-D" dispersion methods. The keyword "SDAMP" will cause this damping function to be used.

Version 5.016mn
This version of MOPAC has taken the previous version of MOPAC and made the entire program into a subroutine that may be called repeatedly within a larger program framework. The advantage of this modification is that version 5.016mn may be used for direct dynamics or for parameter optimization on large sets of test molecules without having to resort to repeatedly launching it as a stand-alone program. Additionally it is now possible to supress all input and output from the program by setting the common block logical variable DOPRNT to .FALSE. (by default it is set to .TRUE.).

The savings in time from avoiding successive launches of the MOPAC and avoiding all of the I/O (input/output) statements is quite substantial. This is one of the principal advantages of this version, especially when carrying out direct dynamics, conducting parameter optimizations, or doing calculations over large sets of molecules.

Without making any changes to the code MOPAC-5.016mn will continue to perform identically and give the same results as past versions. The launching point for the MOPAC subroutine (formerly the main program unit) is from the MSTART subroutine. To reinitialize all variables for a new run simply call the DOINIT subroutine. DOINIT reinitializes all common block variables and subroutine local variables that require resetting in order to call the MOPAC subroutine again.

Because STOP statements are occasionally encountered during calculations that violate common sense or represent unphysical situations, the program would terminate in older versions. In the current version alternate return statements are included to return the program to the top level (the MSTART subroutine) in order to handle these events and avoid early program termination if a set of MOPAC calculations is being carried out.

The ANALYT keyword previously would create a scratch directory for holding analytical derivative information. To avoid the creation and deletion of a new scratch file, all the file I/O it would involve, and the subsequent increase in time, a new array was created for scratch space.

During the development of this version, run-time checking was used on all of the test runs to ensure no run-time problems existed within the code. Examples of these run-time problems that were corrected include writing to arrays out-of-bounds, using invalid pointers, and using undefined variables. Many of these run-time problems existed within the code prior to version 5.016mn and each was corrected once found during development.

The main changes to MOPAC-5.016mn are to the following program units:

File Name Details
mopac.f Previously the main program unit, now a subroutine called by MSTART.
mstart.f The new main program unit where the program execution begins.
doinit.f Reinitializes all subroutine and function local variables and calls RESETC and RESETD.
resetc.f Reinitializes all common block variables to values given in BLOCK DATA.
resetd.f Reinitializes all other common block variables.
setntx.f Uses a virtual input file for new input deck and geometry/symmetry specification.

It is important that if any changes are made to the block_data.f file that corresponding changes are also made to the resetc.f file.

The SETNTX subroutine can be called to use a virtual input file if the global boolean variable LINTXT is set to true. This circumvents the opening and closing of a new unit for file input/output operations and replaces this with input provided by a programmer within the SETNTX subroutine. Ideally this would be used for the purpose of reparameterization of a method or when invoking MOPAC for successive semiempirical calculations where terminating and relaunching the program would be highly inefficient. Extensive discussion of the SETNTX subroutine and the usage of its specific common block INTEXT variables for setting up a new MOPAC calculation is provided for developers within the comment section at the beginning of the SETNTX subroutine.

Finally, the Cray workstation-specific files have been removed from this distribution of MOPAC, because we did not have an opportunity to test recent versions of MOPAC on Cray computers.

Version 5.017mn
This version of MOPAC has made several modifications to the semiempirical theory in order to accommodate Hp-type hydrogen atoms (hydrogens containing p-orbitals). Four modifications are made to the theory and are implemented by the respective keywords "MOD1", "MOD2", "MOD3", and "MOD4" (these MOD options are described in Section 4.15). The ability to use custom parameters is also included via the keyword "PMODS" in an external parameter file (see Sections 4.14 and 4.15).

The new semiempirical method PMO version 1 can now be used in this version of the program. It is activated by using the keyword "PMOv1" for the method name in the input file. A description of PMOv1 is in Section 4.16.

Version 5.018mn
This version of MOPAC has small changes to the input and output files. The limitation on thenumber of text characters allowed in the input deck line has been expanded from 80 characters to 160 characters.

The output states for clarity that Koopmans' theorem is invoked in calculating the ionization potential that appears in the summary section.

The new keywords MOD5, MOD6, and MOD7 are implemented in this version of the program (see Section 4.15 for descriptions of each of these new modifications). They provide greater flexibility in parameterizing future semiempirical methods over previous semiempirical formalisms.

A Perl script ( is automatically invoked when running the test suite that will confirm the expected results of all test calculations and signal the user when one of the expected results is not produced. In the future, this will streamline the process of ensuring no inadvertent errors slip into the code while new features are being added to MOPAC.

Version 5.019mn
Added new keyword "" (here is a value which should be between 0 and 1; it is 1 by default) which alters the total dipole moment calculation by specifying what fraction of the hybrid dipole calculation contributes to the total dipole moment reported. All three dipole calculations are still given in the output: Mulliken charge dipole moment, hybrid dipole moment, and total dipole moment.

Grimme's DFT-D3 dispersion is now included for use with some of the semiempirical methods. The parameters for PBEsol were chosen as the best set of D3 parameters for use with the various semiempirical methods. New methods that include the D3 dispersion are MNDO-D3, AM1-D3, PM3-D3, RM1-D3, and PM6-D3. Two D3 dispersion parameters are also capable of being modified with an external parameter file to select different types of DFT-D3 dispersion to use with the listed "-D3" semiempirical methods.

Version 5.020mn
The PMO2 semiemperical method has been included as a built-in keyword in this version of MOPAC. It makes use of the newer MODx options in MOPAC for pairwise element parameters and uses the "Hp" hydrogens like its predecessor, PMOv1.

Version 5.021mn
A new atmospheric nucleation method, PMO2a, has been implemented as a built-in keyword "PMO2a". It makes use of the "Hp" hydrogen atoms, which contain p orbitals, and is intended for atmospheric systems containing hydrogen, carbon, nitrogen, oxygen, and sulfur (using other elements will not compute).

The programming code was also cleaned up in many places between this version and the previous version. Many debugging output statements were removed that were still in the code during various phases of development. The array structure was also improved for some parameters in order to switch from a packed array to a standard unpacked array that is more in line with the greater memory available on modern computer systems. The name for the AM-1 core-core Gaussians has been changed from GUESS to GAUSS everywhere in the code. Additional commenting was placed in specific parts of the code to make it more understandable.

Version 5.022mn
Analytic gradients have for CI calculations been implemented using the method of M. J. S. Dewar and D. A. Liotard. The code is mainly taken from AMSOL 7.1, and some modifications are made to accommodate the current MOPAC program. When the CI option is turned on, geometry optimization in the current version uses the CI gradient, whereas they used the SCF gradient SCF gradient in the previous versions.