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