summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
authorCarsten Burstedde <burstedde@ins.uni-bonn.de>2021-06-27 19:51:46 +0200
committerCarsten Burstedde <burstedde@ins.uni-bonn.de>2021-06-28 09:41:14 +0200
commit2bd08c849a77396b7466fc4b6387dc50bad01945 (patch)
treea6dd7709b5148b2463236778493048a4829c295c /pkgs/development/libraries
parenteb396b15876071296d18867fd7d4dac82d862c92 (diff)
downloadnixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.tar
nixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.tar.gz
nixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.tar.bz2
nixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.tar.lz
nixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.tar.xz
nixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.tar.zst
nixpkgs-2bd08c849a77396b7466fc4b6387dc50bad01945.zip
p4est: init at unstable-2021-06-22
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r--pkgs/development/libraries/science/math/p4est/default.nix59
-rw-r--r--pkgs/development/libraries/science/math/p4est/p4est-metis.patch26
2 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/development/libraries/science/math/p4est/default.nix b/pkgs/development/libraries/science/math/p4est/default.nix
new file mode 100644
index 00000000000..99c4b0be3f3
--- /dev/null
+++ b/pkgs/development/libraries/science/math/p4est/default.nix
@@ -0,0 +1,59 @@
+{ lib, stdenv, fetchFromGitHub
+, autoreconfHook, pkg-config
+, p4est-withMetis ? true, metis
+, p4est-sc
+}:
+
+let
+  inherit (p4est-sc) debugEnable mpiSupport;
+  dbg = if debugEnable then "-dbg" else "";
+  withMetis = p4est-withMetis;
+in
+stdenv.mkDerivation {
+  pname = "p4est${dbg}";
+  version = "unstable-2021-06-22";
+
+  # fetch an untagged snapshot of the prev3-develop branch
+  src = fetchFromGitHub {
+    owner = "cburstedde";
+    repo = "p4est";
+    rev = "7423ac5f2b2b64490a7a92e5ddcbd251053c4dee";
+    sha256 = "0vffnf48rzw6d0as4c3x1f31b4kapmdzr1hfj5rz5ngah72gqrph";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+  propagatedBuildInputs = [ p4est-sc ];
+  buildInputs = lib.optional withMetis metis;
+  inherit debugEnable mpiSupport withMetis;
+
+  patches = [ ./p4est-metis.patch ];
+  postPatch = ''
+    sed -i -e "s:\(^\s*ACLOCAL_AMFLAGS.*\)\s@P4EST_SC_AMFLAGS@\s*$:\1 -I ${p4est-sc}/share/aclocal:" Makefile.am
+  '';
+  preConfigure = ''
+    echo "2.8.0" > .tarball-version
+    ${if mpiSupport then "unset CC" else ""}
+  '';
+
+  configureFlags = [ "--with-sc=${p4est-sc}" ]
+    ++ lib.optional withMetis "--with-metis"
+    ++ lib.optional debugEnable "--enable-debug"
+    ++ lib.optional mpiSupport "--enable-mpi"
+  ;
+
+  inherit (p4est-sc) makeFlags dontDisableStatic enableParallelBuilding doCheck;
+
+  meta = {
+    branch = "prev3-develop";
+    description = "Parallel AMR on Forests of Octrees";
+    longDescription = ''
+      The p4est software library provides algorithms for parallel AMR.
+      AMR refers to Adaptive Mesh Refinement, a technique in scientific
+      computing to cover the domain of a simulation with an adaptive mesh.
+    '';
+    homepage = "https://www.p4est.org/";
+    downloadPage = "https://github.com/cburstedde/p4est.git";
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ lib.maintainers.cburstedde ];
+  };
+}
diff --git a/pkgs/development/libraries/science/math/p4est/p4est-metis.patch b/pkgs/development/libraries/science/math/p4est/p4est-metis.patch
new file mode 100644
index 00000000000..46b8dc8af08
--- /dev/null
+++ b/pkgs/development/libraries/science/math/p4est/p4est-metis.patch
@@ -0,0 +1,26 @@
+diff --git a/src/p4est_connectivity.c b/src/p4est_connectivity.c
+index 95339136..c93528f2 100644
+--- a/src/p4est_connectivity.c
++++ b/src/p4est_connectivity.c
+@@ -3715,6 +3715,7 @@ p4est_connectivity_reorder_newid (sc_MPI_Comm comm, int k,
+                                   sc_array_t * newid)
+ {
+   const int           n = (int) conn->num_trees;
++  int                 metis_n;
+   int                *xadj;
+   int                *adjncy;
+   int                *part;
+@@ -3862,10 +3863,12 @@ p4est_connectivity_reorder_newid (sc_MPI_Comm comm, int k,
+ 
+     P4EST_GLOBAL_INFO ("Entering metis\n");
+     /* now call metis */
++    metis_n = n;
+     P4EST_EXECUTE_ASSERT_INT
+-      (METIS_PartGraphRecursive (&n, &ncon, xadj, adjncy, NULL, NULL,
++      (METIS_PartGraphRecursive (&metis_n, &ncon, xadj, adjncy, NULL, NULL,
+                                  NULL, &k, NULL, NULL, NULL, &volume, part),
+        METIS_OK);
++    P4EST_ASSERT (metis_n == n);
+     P4EST_GLOBAL_INFO ("Done metis\n");
+ 
+     P4EST_GLOBAL_STATISTICSF ("metis volume %d\n", volume);