pflotran: init at 6.0.1

+128
+45
pkgs/by-name/pf/pflotran/make.patch
···
··· 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
···
··· 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 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 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