Merge pull request #128015 from cburstedde/package-p4est-sc
This commit is contained in:
commit
458c985073
@ -1701,6 +1701,18 @@
|
||||
githubId = 3471749;
|
||||
name = "Claudio Bley";
|
||||
};
|
||||
cburstedde = {
|
||||
email = "burstedde@ins.uni-bonn.de";
|
||||
github = "cburstedde";
|
||||
githubId = 109908;
|
||||
name = "Carsten Burstedde";
|
||||
keys = [
|
||||
{
|
||||
longkeyid = "rsa2048/0x0704CD9E550A6BCD";
|
||||
fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
|
||||
}
|
||||
];
|
||||
};
|
||||
cdepillabout = {
|
||||
email = "cdep.illabout@gmail.com";
|
||||
github = "cdepillabout";
|
||||
|
62
pkgs/development/libraries/science/math/p4est-sc/default.nix
Normal file
62
pkgs/development/libraries/science/math/p4est-sc/default.nix
Normal file
@ -0,0 +1,62 @@
|
||||
{ lib, stdenv, fetchFromGitHub
|
||||
, autoreconfHook, pkg-config
|
||||
, p4est-sc-debugEnable ? true, p4est-sc-mpiSupport ? true
|
||||
, mpi, openmpi, openssh, zlib
|
||||
}:
|
||||
|
||||
let
|
||||
dbg = if debugEnable then "-dbg" else "";
|
||||
debugEnable = p4est-sc-debugEnable;
|
||||
mpiSupport = p4est-sc-mpiSupport;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "p4est-sc${dbg}";
|
||||
version = "unstable-2021-06-14";
|
||||
|
||||
# fetch an untagged snapshot of the prev3-develop branch
|
||||
src = fetchFromGitHub {
|
||||
owner = "cburstedde";
|
||||
repo = "libsc";
|
||||
rev = "1ae814e3fb1cc5456652e0d77550386842cb9bfb";
|
||||
sha256 = "14vm0b162jh8399pgpsikbwq4z5lkrw9vfzy3drqykw09n6nc53z";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkg-config ];
|
||||
propagatedBuildInputs = [ zlib ]
|
||||
++ lib.optional mpiSupport mpi
|
||||
++ lib.optional (mpiSupport && mpi == openmpi) openssh
|
||||
;
|
||||
inherit debugEnable mpiSupport;
|
||||
|
||||
postPatch = ''
|
||||
echo "dist_scaclocal_DATA += config/sc_v4l2.m4" >> Makefile.am
|
||||
'';
|
||||
preConfigure = ''
|
||||
echo "2.8.0" > .tarball-version
|
||||
${if mpiSupport then "unset CC" else ""}
|
||||
'';
|
||||
|
||||
configureFlags = lib.optional debugEnable "--enable-debug"
|
||||
++ lib.optional mpiSupport "--enable-mpi"
|
||||
;
|
||||
|
||||
makeFlags = [ "V=0" ];
|
||||
|
||||
dontDisableStatic = true;
|
||||
enableParallelBuilding = true;
|
||||
doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
|
||||
|
||||
meta = {
|
||||
branch = "prev3-develop";
|
||||
description = "Support for parallel scientific applications";
|
||||
longDescription = ''
|
||||
The SC library provides support for parallel scientific applications.
|
||||
Its main purpose is to support the p4est software library, hence
|
||||
this package is called p4est-sc, but it works standalone, too.
|
||||
'';
|
||||
homepage = "https://www.p4est.org/";
|
||||
downloadPage = "https://github.com/cburstedde/libsc.git";
|
||||
license = lib.licenses.lgpl21Plus;
|
||||
maintainers = [ lib.maintainers.cburstedde ];
|
||||
};
|
||||
}
|
59
pkgs/development/libraries/science/math/p4est/default.nix
Normal file
59
pkgs/development/libraries/science/math/p4est/default.nix
Normal file
@ -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 ];
|
||||
};
|
||||
}
|
@ -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);
|
@ -29883,6 +29883,18 @@ in
|
||||
|
||||
rubiks = callPackage ../development/libraries/science/math/rubiks { };
|
||||
|
||||
p4est-sc = callPackage ../development/libraries/science/math/p4est-sc {
|
||||
p4est-sc-debugEnable = false;
|
||||
};
|
||||
|
||||
p4est-sc-dbg = callPackage ../development/libraries/science/math/p4est-sc { };
|
||||
|
||||
p4est = callPackage ../development/libraries/science/math/p4est { };
|
||||
|
||||
p4est-dbg = callPackage ../development/libraries/science/math/p4est {
|
||||
p4est-sc = p4est-sc-dbg;
|
||||
};
|
||||
|
||||
petsc = callPackage ../development/libraries/science/math/petsc { };
|
||||
|
||||
parmetis = callPackage ../development/libraries/science/math/parmetis { };
|
||||
|
Loading…
Reference in New Issue
Block a user