From mboxrd@z Thu Jan 1 00:00:00 1970 From: ericbavier@openmailbox.org Subject: [PATCH 13/14] gnu: Add SLEPc. Date: Sat, 27 Jun 2015 22:45:50 -0500 Message-ID: <1435463151-32099-14-git-send-email-ericbavier@openmailbox.org> References: <1435463151-32099-1-git-send-email-ericbavier@openmailbox.org> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:45062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z93Wi-0001Cx-0i for guix-devel@gnu.org; Sat, 27 Jun 2015 23:45:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z93Wf-0003lr-TK for guix-devel@gnu.org; Sat, 27 Jun 2015 23:45:03 -0400 Received: from smtp17.openmailbox.org ([62.4.1.51]:39091) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z93Wf-0003kh-HH for guix-devel@gnu.org; Sat, 27 Jun 2015 23:45:01 -0400 In-Reply-To: <1435463151-32099-1-git-send-email-ericbavier@openmailbox.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org Cc: Eric Bavier From: Eric Bavier * gnu/packages/maths.scm (slepc, slepc-complex, slepc-openmpi) (slepc-complex-openmpi): New variables. --- gnu/packages/maths.scm | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 343b56c..ff3a048 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -632,6 +632,104 @@ scientific applications modeled by partial differential equations.") ,@(delete "--with-mpi=0" ,cf))))) (synopsis "Library to solve PDEs (with complex scalars and MPI support)"))) +(define-public slepc + (package + (name "slepc") + (version "3.6.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://slepc.upv.es/download/download.php?" + "filename=slepc-" version ".tar.gz")) + (sha256 + (base32 + "1ij8w864spzk4cq2mmkssqyj0mbckkkvxm0wpw9gywy2jgbj07jr")))) + (build-system gnu-build-system) + (native-inputs + `(("python" ,python-2))) + (inputs + `(("arpack" ,arpack-ng) + ("gfortran" ,gfortran))) + (propagated-inputs + `(("petsc" ,petsc))) + (arguments + `(#:parallel-build? #f ;build is parallel by default + #:configure-flags + `(,(string-append "--with-arpack-dir=" + (assoc-ref %build-inputs "arpack"))) + #:phases + (modify-phases %standard-phases + (replace + 'configure + ;; configure is a python script, so we can't run it with bash. + (lambda* (#:key inputs outputs (configure-flags '()) + #:allow-other-keys) + (let* ((prefix (assoc-ref outputs "out")) + (flags `(,(string-append "--prefix=" prefix) + ,@configure-flags))) + (format #t "build directory: ~s~%" (getcwd)) + (format #t "configure flags: ~s~%" flags) + (setenv "SLEPC_DIR" (getcwd)) + (setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc")) + (zero? (apply system* "./configure" flags))))) + (add-after + 'install 'delete-doc + ;; SLEPc installs polluting HTML documentation alongside headers in + ;; $out/include. Delete these, as users can browse them online. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (for-each delete-file (find-files out "\\.html$"))))) + (add-after + 'install 'clean-install + ;; Clean up unnecessary build logs from installation. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (file) + (let ((f (string-append out "/lib/slepc/conf/" file))) + (when (file-exists? f) + (delete-file f)))) + '("configure.log" "make.log" "gmake.log" + "test.log" "error.log" "RDict.db" + "uninstall.py")))))))) + (home-page "http://slepc.upv.es") + (synopsis "Scalable library for eigenproblems") + (description "SLEPc is a software library for the solution of large sparse +eigenproblems on parallel computers. It can be used for the solution of +linear eigenvalue problems formulated in either standard or generalized form, +as well as other related problems such as the singular value decomposition. +The emphasis of the software is on methods and techniques appropriate for +problems in which the associated matrices are sparse, for example, those +arising after the discretization of partial differential equations.") + (license license:lgpl3))) + +(define-public slepc-complex + (package (inherit slepc) + (name "slepc-complex") + (propagated-inputs + `(("petsc" ,petsc-complex) + ,@(alist-delete "petsc" (package-propagated-inputs slepc)))) + (synopsis "Scalable library for eigenproblems (with complex scalars)"))) + +(define-public slepc-openmpi + (package (inherit slepc) + (name "slepc-openmpi") + (inputs + `(("mpi" ,openmpi) + ("arpack" ,arpack-ng-openmpi) + ,@(alist-delete "arpack" (package-inputs slepc)))) + (propagated-inputs + `(("petsc" ,petsc-openmpi) + ,@(alist-delete "petsc" (package-propagated-inputs slepc)))) + (synopsis "Scalable library for eigenproblems (with MPI support)"))) + +(define-public slepc-complex-openmpi + (package (inherit slepc-openmpi) + (name "slepc-complex-openmpi") + (propagated-inputs + `(("petsc" ,petsc-complex-openmpi) + ,@(alist-delete "petsc" (package-propagated-inputs slepc-openmpi)))) + (synopsis "Scalable library for eigenproblems (with complex scalars and MPI support)"))) + (define-public mumps (package (name "mumps") -- 2.2.1