Hello Guix!

Attached is a patch to add the SPARTA Direct Simulation Monte Carlo
Software.

There maybe is a problem with the source URL: The URL always points to
the latest version of the source tar ball which is constantly updated
and immediately released by upstream.  This means that the hash of the
source tar ball available at this URL changes several times a month.  Is
this acceptable or does anyone have an idea how this should be handled?

Thank you!
>From bb34f87da7df626170a51aab77dd150336112401 Mon Sep 17 00:00:00 2001
From: Lukas Gradl <lgr...@openmailbox.org>
Date: Mon, 4 Apr 2016 15:19:35 -0500
Subject: [PATCH] gnu: Add sparta-dsmc.

* gnu/packages/maths.scm (sparta-dsmc): New variable.
---
 gnu/packages/maths.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d6b371e..1ae938b 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2015 Mark H Weaver <m...@netris.org>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efr...@flashner.co.il>
 ;;; Copyright © 2015 Fabian Harfert <fhmg...@web.de>
+;;; Copyright © 2016 Lukas Gradl <lgr...@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2027,3 +2028,63 @@ are built.  It can generate many different fractal types 
such as the Mandelbrot
 set.")
     (home-page "http://www.gnu.org/software/xaos/";)
     (license license:gpl2+)))
+
+(define-public sparta-dsmc
+  (package
+    (name "sparta-dsmc")
+    (version "20160331")
+    (source
+     (origin
+       (method url-fetch)
+       (uri "http://www.sandia.gov/~sjplimp/tars/sparta.tar.gz";)
+       (sha256
+        (base32
+         "0w0sdiharqrw6x4msbq01havky15cq7ylkk2y6v59xyy7vnxpnss"))))
+    (build-system gnu-build-system)
+    (inputs `(("openmpi" ,openmpi)
+              ("libjpeg" ,libjpeg)
+              ("python" ,python-2)))
+    (arguments
+     `(#:tests? #f ; there is no "check" target nor any other tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'patch-generated-file-shebangs 'chdir-to-src
+           (lambda _
+             (chdir "src")))
+         (add-after 'chdir-to-src
+             'patch-makefile-shell
+           (lambda _
+             (substitute* (list "MAKE/Makefile.mpi"
+                                "MAKE/Makefile.serial")
+               (("/bin/sh") (which "bash")))))
+         (replace 'build
+           (lambda _
+             (and
+              (zero? (system* "make"
+                              (format #f "-j~a" (parallel-job-count))
+                              "mpi"))
+              (zero? (system* "make"
+                              (format #f "-j~a" (parallel-job-count))
+                              "serial")))))
+         (replace 'install
+           (lambda _
+             (let* ((out (assoc-ref %outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/sparta-dsmc"))
+                    (examples (string-append doc "/examples")))
+               (install-file "spa_mpi" bin)
+               (install-file "spa_serial" bin)
+               (copy-recursively "../examples" examples)
+               (copy-recursively "../doc" doc)))))))
+    (synopsis "Direct Simulation Monte Carlo (DSMC) simulator")
+    (description "SPARTA is a parallel DSMC code for performing
+simulations of low-density gases in 2d or 3d.  Particles advect
+through a hierarchical Cartesian grid that overlays the simulation
+box.  The grid is used to group particles by grid cell for purposes of
+performing collisions and chemistry.  Physical objects with
+triangulated surfaces can be embedded in the grid, creating cut and
+split grid cells.  The grid is also used to efficiently find
+particle/surface collisions.")
+    (home-page "http://sparta.sandia.gov/";)
+    (license license:gpl2)))
-- 
2.6.3

Reply via email to