tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
pflotran: init at 6.0.1
Phillip Seeber
1 year ago
78f5a5bc
bb0cc6ba
+128
3 changed files
expand all
collapse all
unified
split
pkgs
by-name
pf
pflotran
make.patch
package.nix
top-level
all-packages.nix
+45
pkgs/by-name/pf/pflotran/make.patch
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
diff --git a/src/pflotran/makefile b/src/pflotran/makefile
2
+
index 17587c91d..7caf73e8c 100644
3
+
--- a/src/pflotran/makefile
4
+
+++ b/src/pflotran/makefile
5
+
@@ -51,7 +51,7 @@ PETSC_MAKE_STOP_ON_ERROR=
6
+
# so that PFLOTRAN will be built with the same options as
7
+
# the petsc configured in $PETSC_DIR/$PETSC_ARCH
8
+
9
+
-MYFLAGS = -I.
10
+
+MYFLAGS = -I. -L@HDF5_FORTRAN_LIBS@ -I@HDF5_FORTRAN_INCLUDE@
11
+
12
+
###############################################################################
13
+
# Preprocessor flags for special PFLOTRAN features/hacks
14
+
@@ -183,7 +183,7 @@ ifdef ug_mpi_scatter_ghost
15
+
endif
16
+
17
+
ifdef have_hdf5
18
+
-LIBS += -L${HDF5_LIB} -lhdf5_fortran -lhdf5 -lz
19
+
+LIBS += -L${HDF5_LIB} -lhdf5 -lhdf5_fortran -lhdf5_hl_fortran -lhdf5_f90cstub -lz
20
+
endif
21
+
22
+
# Set this accordingly on your platform
23
+
@@ -273,7 +273,7 @@ pflotran_rxn_obj = ${pflotran_src}pflotran_rxn.o
24
+
25
+
# PFLOTRAN executable
26
+
pflotran : $(pflotran_obj)
27
+
- ${FLINKER} -o pflotran $(pflotran_obj) ${PETSC_LIB} ${LIBS}
28
+
+ ${FLINKER} -o pflotran $(pflotran_obj) ${PETSC_LIB} ${LIBS} -lhdf5 -lhdf5_fortran -lhdf5_hl_fortran -lhdf5_f90cstub
29
+
30
+
# PFLOTRAN as a library
31
+
libpflotran.a : $(pflotran_obj)
32
+
@@ -286,11 +286,11 @@ libpflotranchem.a : $(chem_obj) $(shared_mode_aux_obj) $(util_obj)
33
+
# object files lists below.... This is a workaround.
34
+
pflotran_rxn : libpflotranchem.a $(pflotran_rxn_obj)
35
+
${FLINKER} -o $@ $(pflotran_rxn_obj) $(chem_obj) $(shared_mode_aux_obj) \
36
+
- $(util_obj) ${PETSC_LIB} ${LIBS}
37
+
+ $(util_obj) ${PETSC_LIB} ${LIBS} -lhdf5 -lhdf5_fortran -lhdf5_hl_fortran -lhdf5_f90cstub
38
+
39
+
# PFLOTRAN derivative test
40
+
pflotran_derivative : $(pflotran_base_obj) pflotran_derivative.o
41
+
- ${FLINKER} -o pflotran_derivative $(pflotran_base_obj) pflotran_derivative.o ${PETSC_LIB} ${LIBS}
42
+
+ ${FLINKER} -o pflotran_derivative $(pflotran_base_obj) pflotran_derivative.o ${PETSC_LIB} ${LIBS} -lhdf5 -lhdf5_fortran -lhdf5_hl_fortran -lhdf5_f90cstub
43
+
44
+
$(SRC_DIR)/pflotran_provenance.F90 : FORCE
45
+
ifeq ($(UPDATE_PROVENANCE),1)
+68
pkgs/by-name/pf/pflotran/package.nix
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
1
+
{
2
+
stdenv,
3
+
lib,
4
+
fetchFromBitbucket,
5
+
gfortran,
6
+
mpi,
7
+
petsc,
8
+
blas,
9
+
lapack,
10
+
parmetis,
11
+
hdf5,
12
+
mpiCheckPhaseHook,
13
+
python3,
14
+
}:
15
+
16
+
stdenv.mkDerivation (finalAttrs: {
17
+
pname = "PFLOTRAN";
18
+
version = "6.0.1";
19
+
20
+
src = fetchFromBitbucket {
21
+
owner = "pflotran";
22
+
repo = "pflotran";
23
+
rev = "v${finalAttrs.version}";
24
+
hash = "sha256-AZXzay6GWbnxONB8Slg8gV0KN1CxGCXbJ45ZeWL1034=";
25
+
};
26
+
27
+
patches = [ ./make.patch ];
28
+
29
+
nativeBuildInputs = [ gfortran ];
30
+
31
+
buildInputs = [
32
+
petsc
33
+
blas
34
+
lapack
35
+
hdf5
36
+
parmetis
37
+
];
38
+
39
+
propagatedBuildInputs = [ mpi ];
40
+
propagatedUserEnvPkgs = [ mpi ];
41
+
passthru = { inherit mpi; };
42
+
43
+
enableParallelBuilding = true;
44
+
45
+
/*
46
+
Pflotran does not use a "real" autotools configure script, but a simple bash
47
+
script, that is merely named configure. Consequently, many common mechanism
48
+
don't work. Thus, we need to help make to figure out some include and library
49
+
paths.
50
+
*/
51
+
preConfigure = ''
52
+
substituteInPlace src/pflotran/makefile \
53
+
--subst-var-by "HDF5_FORTRAN_LIBS" "${lib.getLib hdf5}/lib" \
54
+
--subst-var-by "HDF5_FORTRAN_INCLUDE" "${lib.getDev hdf5}/include"
55
+
'';
56
+
57
+
configureFlags = [
58
+
"--with-petsc-dir=${petsc}"
59
+
"--with-petsc-arch=linux-gnu-c-release"
60
+
];
61
+
62
+
meta = with lib; {
63
+
description = "Parallel, multi-physics simulation code for subsurface flow and transport";
64
+
homepage = "https://pflotran.org/";
65
+
license = licenses.lgpl3Only;
66
+
maintainers = [ maintainers.sheepforce ];
67
+
};
68
+
})
+15
pkgs/top-level/all-packages.nix
···
3611
3612
hdf5-fortran = hdf5.override { fortranSupport = true; };
3613
0
0
0
0
0
0
3614
hdf5-threadsafe = hdf5.override { threadsafe = true; };
3615
3616
heaptrack = libsForQt5.callPackage ../development/tools/profiling/heaptrack { };
···
17057
xflr5 = libsForQt5.callPackage ../applications/science/physics/xflr5 { };
17058
17059
### SCIENCE/PROGRAMMING
0
0
0
0
0
0
0
0
0
17060
17061
### SCIENCE/LOGIC
17062
···
3611
3612
hdf5-fortran = hdf5.override { fortranSupport = true; };
3613
3614
+
hdf5-fortran-mpi = hdf5.override {
3615
+
fortranSupport = true;
3616
+
mpiSupport = true;
3617
+
cppSupport = false;
3618
+
};
3619
+
3620
hdf5-threadsafe = hdf5.override { threadsafe = true; };
3621
3622
heaptrack = libsForQt5.callPackage ../development/tools/profiling/heaptrack { };
···
17063
xflr5 = libsForQt5.callPackage ../applications/science/physics/xflr5 { };
17064
17065
### SCIENCE/PROGRAMMING
17066
+
17067
+
### SCIENCE/GEOLOGY
17068
+
pflotran = callPackage ../by-name/pf/pflotran/package.nix {
17069
+
petsc = petsc.override {
17070
+
hdf5-support = true;
17071
+
hdf5 = hdf5-fortran-mpi;
17072
+
petsc-optimized = true;
17073
+
};
17074
+
};
17075
17076
### SCIENCE/LOGIC
17077