pflotran: init at 6.0.1 (#377999)

authored by

Markus Kowalewski and committed by
GitHub
74000f9e 5370c0b5

+130 -2
+2 -2
pkgs/by-name/pe/petsc/package.nix
··· 29 29 30 30 stdenv.mkDerivation rec { 31 31 pname = "petsc"; 32 - version = "3.21.3"; 32 + version = "3.21.4"; 33 33 34 34 src = fetchzip { 35 35 url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${version}.tar.gz"; 36 - hash = "sha256-dxHa8JUJCN4zRIXMCx7gcvbzFH2SPtkJ377ssIevjgU="; 36 + hash = "sha256-l7v+ASBL9FLbBmBGTRWDwBihjwLe3uLz+GwXtn8u7e0="; 37 37 }; 38 38 39 39 strictDeps = true;
+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
··· 3625 3625 3626 3626 hdf5-fortran = hdf5.override { fortranSupport = true; }; 3627 3627 3628 + hdf5-fortran-mpi = hdf5.override { 3629 + fortranSupport = true; 3630 + mpiSupport = true; 3631 + cppSupport = false; 3632 + }; 3633 + 3628 3634 hdf5-threadsafe = hdf5.override { threadsafe = true; }; 3629 3635 3630 3636 heaptrack = libsForQt5.callPackage ../development/tools/profiling/heaptrack { }; ··· 17071 17077 xflr5 = libsForQt5.callPackage ../applications/science/physics/xflr5 { }; 17072 17078 17073 17079 ### SCIENCE/PROGRAMMING 17080 + 17081 + ### SCIENCE/GEOLOGY 17082 + pflotran = callPackage ../by-name/pf/pflotran/package.nix { 17083 + petsc = petsc.override { 17084 + hdf5-support = true; 17085 + hdf5 = hdf5-fortran-mpi; 17086 + petsc-optimized = true; 17087 + }; 17088 + }; 17074 17089 17075 17090 ### SCIENCE/LOGIC 17076 17091