Multiwfn updates frequently, the last update date can be seen when Multiwfn boots up, and it is also explicitly shown in "download" page of Multiwfn website.
There are some tools written by Chinese Multiwfn users that can update Multiwfn automatically:
http://bbs.keinsci.com/thread-20052-1-1.html
http://bbs.keinsci.com/thread-20070-1-1.html
http://bbs.keinsci.com/thread-20109-1-1.html
http://bbs.keinsci.com/thread-20115-1-1.html
There also can be some interest to package Multiwfn with other package managers. I know conda-forge best, where it could be built for all operating systems. On Twitter I got a suggestion for that: https://twitter.com/ghutchis/status/1538140686029135872.
Currently I think the versioning would be the main problem to get it into the standard repository of any package. Multiwfn has an unclear version number, as 3.8dev changes often, while package manager maintainers want it to be more clear. I would suggest to have some type of date-based numbering: https://calver.org. There are some software that use this, for example RDKit: https://github.com/rdkit/rdkit/tags. Also, the licensing situation would need to be clarified a bit, as there is some LGPL code in Multiwfn.
]]>Thank you, your patch will be applied to next update of Multiwfn source code package.
Please note that in your patch "if (usern1/=-1) n2=usern2" should be "if (usern2/=-1) n2=usern2"
Are you sure about that? The current source code that I downloaded yesterday has the two lines (1913 and 1914). Is this a bug that will also be corrected in your source?
if (present(usern1).and.usern1/=-1) n1=usern1
if (present(usern2).and.usern1/=-1) n2=usern2
Please note that in your patch "if (usern1/=-1) n2=usern2" should be "if (usern2/=-1) n2=usern2"
]]>Additionally, I found that there is a line of non-compliant code on line 2090 of the file util.f90:
if ((.not.present(irewind)).or.(present(irewind).and.irewind==1)) rewind(fileid)
This apparently works with ifort, but does not work with GFortran. The reason is given here, http://www.cs.rpi.edu/~szymansk/OOF90/bugs.html, and in short the compiler is free to evaluate the expressions in any order. GFortran then seems to evaluate irewind==1 and as it is not given, the program crashes. I refactored into:
if (.not. present(irewind)) then
rewind(fileid)
else
if (irewind==1) rewind(fileid)
end if
Edit: There's also a couple of other cases. I created a patch file here: https://github.com/kjelljorner/multiwfn … util.patch
]]>