gnu: Add SLEPc.
* gnu/packages/maths.scm (slepc, slepc-complex, slepc-openmpi) (slepc-complex-openmpi): New variables.
This commit is contained in:
parent
8c94c886f6
commit
a7f0141452
|
@ -632,6 +632,106 @@ scientific applications modeled by partial differential equations.")
|
||||||
,@(delete "--with-mpi=0" ,cf)))))
|
,@(delete "--with-mpi=0" ,cf)))))
|
||||||
(synopsis "Library to solve PDEs (with complex scalars and MPI support)")))
|
(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
|
||||||
|
;; TODO: SLEPc installs HTML documentation alongside headers in
|
||||||
|
;; $out/include. We'd like to move them to share/doc, but delete
|
||||||
|
;; them for now, as they are incomplete and installing the complete
|
||||||
|
;; documentation is difficult.
|
||||||
|
(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
|
(define-public mumps
|
||||||
(package
|
(package
|
||||||
(name "mumps")
|
(name "mumps")
|
||||||
|
|
Loading…
Reference in New Issue