Subject: [bug#52124] [PATCH] gnu: Add n2p2-lib.

From: zimoun <[email-masked]>
Date: Mon, 6 Dec 2021 16:24:22 +0100

From: Pierre-Antoine Bouttier <[email-masked]>

* gnu/packages/maths.scm (n2p2-lib): New variable.
---
 gnu/packages/maths.scm | 55 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 83f31c1396..b08dc6fe67 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 Paul A. Patience <[email-masked]>
 ;;; Copyright © 2021 Ivan Gankevich <[email-masked]>
 ;;; Copyright © 2021 Jean-Baptiste Volatier <[email-masked]>
+;;; Copyright © 2021 Pierre-Antoine Bouttier <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1753,6 +1754,60 @@ (define-public netcdf-fortran
     (home-page (package-home-page netcdf))
     (license (package-license netcdf))))
 
+(define-public n2p2-lib
+  (package
+    (name "n2p2-lib")
+    (version "2.1.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/CompPhysVienna/n2p2")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lw195ihpxwh08387i4gamk1glhalpq888q6nj8l5vswbgnrv1pq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags '("MODE=shared" "-C" "src")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'post-unpack
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/makefile.gnu"
+               (("PROJECT_EIGEN=/usr/include/eigen3")
+                (string-append "PROJECT_EIGEN="
+                               (assoc-ref inputs "eigen") "/include/eigen3")))
+             (substitute* "src/makefile.gnu"
+               (("-lblas")
+                (string-append "-L"
+                               (assoc-ref inputs "openblas") "/lib -lopenblas")))))
+         (delete 'configure)
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bindir (string-append out "/bin"))
+                    (libdir (string-append out "/lib"))
+                    (incdir (string-append out "/include")))
+               (for-each (lambda (f) (install-file f libdir))
+                         (find-files "../lib/" "."))
+               (for-each (lambda (f) (install-file f incdir))
+                         (find-files "../include/" "."))))))))
+    (inputs
+     `(("openmpi" ,openmpi)
+       ("gsl" ,gsl)
+       ("openblas" ,openblas)
+       ("eigen" ,eigen)))
+    (synopsis "Neural network potentials for chemistry and physics")
+    (description "This package contains software that will allow you to use
+existing neural network potential parameterizations to predict energies and
+forces (with standalone tools but also in conjunction with the MD software
+LAMMPS). In addition it is possible to train new neural network potentials
+with the provided training tools.")
+    (home-page "https://compphysvienna.github.io/n2p2")
+    (license license:gpl3)))
+
 (define-public nlopt
   (package
     (name "nlopt")

base-commit: 9478a252509a93f3e7f486cbc549631185ba071d
-- 
2.33.1