nrlmsis2
NRLMSIS 2.0 and 2.1. Nothing is implemented yet, and anyone who implements it should read this file first, because the terms are not the ones the rest of this repository uses.
Why it is a separate package
nrlmsise00, the 2002 model, is MIT. This cannot be.
NRLMSIS 2.0's terms, which ship in the headers of its Fortran and in pymsis's
MSIS2_LICENSE, grant "a non-exclusive, non-transferable license to the Software for
academic, non-commercial, purposes only", and forbid the user to "make any modification or
improvement to the Software" without written consent from IP Counsel at the Naval Research
Laboratory. They also state that the methods are covered by US Patent 10,641,925,
"Formulation and fitting techniques for whole-atmosphere empirical models", assigned to the
US Department of the Navy, filed 2019-06-13, granted 2020-05-05, and expiring 2039-06-13.
NRLMSIS 2.1 ships the "MSIS (NRL-SOF-014-1) Software Open Source Academic Research License
Agreement", which is in this directory as nrlmsis2.1_license.txt. Its terms:
-
Use, reproduction and modification are authorized "solely for research, academic, and non-profit purposes". Any commercial use is prohibited.
-
Derivative works, explicitly including "translations to other programming languages", must carry prominent notices stating how the files were changed and when, must be delivered to the authors or to NRL Code 7630, and must be made available to the public as open source.
-
Neither the software nor any data product generated by it may be sold, licensed or transferred for a fee without written consent from NRL IP Counsel.
-
Every copy must include a file containing the agreement, and any package incorporating it must carry this statement verbatim:
This software incorporates the MSIS® empirical atmospheric model software designed and provided by NRL. Use is governed by the Open Source Academic Research License Agreement contained in the file nrlmsis2.1_license.txt.
So a Rust port of NRLMSIS 2.x is a derivative work on those terms. It is not distributable
under the MIT license, it cannot be used commercially, and publishing it obliges delivery of
the source to NRL. That is why this package is publish = false, and why it is a separate
package rather than a feature of nrlmsise00: a crate that enabled it would carry the same
restriction to everyone downstream.
Nobody else redistributes it either. space-physics/nrlmsis2.0's readme opens with "the
MSIS 2.0 license is extremely restrictive" and its build downloads the source rather than
shipping it; pymsis is MIT for its own wrapper and carries the MSIS license separately for
the Fortran it wraps. No Rust crate implements 2.x at all — tobari and satkit are both
NRLMSISE-00.
What implementing it would involve
Unlike the 2002 model, 2.0 and 2.1 are one Fortran 90 codebase that reads its coefficients
from a binary parameter file: msis21.parm is 524 KB. The two versions differ mostly in
that file, so one implementation covers both. The vertical structure is B-splines rather
than the layered profiles of NRLMSISE-00, so almost nothing in nrlmsise00 is reusable
beyond the scalar trait and the drivers.
Validating it needs a reference at full precision. The distribution's own
msis2.1_test_ref_dp.txt carries only four significant digits, which is nowhere near
enough for the bit-for-bit comparison nrlmsise00 is held to, so generating one means
running the Fortran: gfortran is not installed on this machine, and pymsis would do as
well since it wraps the same code.
Before any of that, the question for a human is whether the obligations above are acceptable for this repository at all.
License
Not MIT. See nrlmsis2.1_license.txt, which governs any use of the model this package
would implement.