MOPAC — PM3 parameters, reference equations, and the validation oracle
======================================================================

MOPAC is the single largest external dependency of this project, in three
distinct roles. They are listed separately because they carry different
obligations: the first redistributes data, the second does not redistribute
anything, and the third is a build-time tool that never ships.

  open-source MOPAC, version 23.2.5
  https://github.com/openmopac/mopac, tag v23.2.5
  Apache License 2.0 — verbatim text in this directory as LICENSE

  J. J. P. Stewart, "Optimization of parameters for semiempirical methods I.
  Method", J. Comput. Chem. 10, 209-220 (1989), DOI 10.1002/jcc.540100208.

  J. J. P. Stewart, "Optimization of parameters for semiempirical methods II.
  Applications", J. Comput. Chem. 10, 221-264 (1989), DOI 10.1002/jcc.540100209.


1. Parameter tables (redistributed, as data)
--------------------------------------------

The machine-readable tables under src/data/ are generated by
tools/extract_pm3_params.py from these MOPAC source files:

  parameters_for_PM3_C.F90            element parameters, Gaussian core terms
  parameters_for_PM3_Sparkles_C.F90   La-Lu trivalent Sparkles
  alpb_and_xfac_pm3.F90               PM3 pair factors (alpb, xfac)
  parameters_C.F90                    shell and reference-atom data,
                                      special atom codes Cb, +, -

What is carried across is numeric scientific parameter values — the fitted
constants that *are* the PM3 model. They are reproduced with provenance
regardless of their copyright status, which is the convention for published
scientific parameters, and Apache-2.0 permits the redistribution in any case.

The D3 dispersion tables were extracted from MOPAC as well, but originate with
Grimme rather than with MOPAC; see third_party/dftd3/NOTICE, which records that
chain separately rather than letting it hide behind this one.


2. Reference equations (followed, not copied)
----------------------------------------------

The Rust implementation follows MOPAC's reference equations for:

  - derived multipole moments and charge separations (calpar.F90)
  - one- and two-center NDDO integrals in the local frame
  - the PM3 core-core repulsion, including its Gaussian terms
  - SCF bookkeeping, occupation and heat-of-formation assembly
  - special zero-orbital cores (Sparkles and the +/- point charges)

**No MOPAC Fortran source is redistributed in this repository.** The Rust code
is original; what it shares with MOPAC is the published working equations, and
where its arithmetic deliberately reproduces a MOPAC-specific convention rather
than the textbook form, the source comment says so and names the file.


3. Executable oracle (a tool, never shipped)
---------------------------------------------

MOPAC v23.2.5 is run as an external executable to produce the reference values
in tools/oracle/. It validates plain PM3 and the special-atom paths: heats of
formation, every gradient component, and every element of the Cartesian Hessian,
across all 42 ordinary PM3 elements, 15 La-Lu Sparkles, and Cb, +, and -.

The MOPAC binary is a developer tool. It is not vendored, not linked, and not
distributed with this package; a checkout under tools/oracle/mopac/ is a local
convenience and is excluded from the published artifacts.


Compatibility
-------------

Apache-2.0 is compatible with GPL-3.0-or-later in the direction used here: this
project is GPL-3.0-or-later and incorporates Apache-2.0 material, not the
reverse. The LICENSE file in this directory is retained as Apache-2.0 section 4
requires.
