aamaricci / SciFortran

A library of fortran modules and routines for scientific calculations (*in a way* just like scipy for python)
GNU Lesser General Public License v3.0
160 stars 39 forks source link

A problem in making the GAUSS_QUADRATURE.f90.o #20

Open dirichlet10 opened 1 year ago

dirichlet10 commented 1 year ago

The cmake process is successful:

-- The Fortran compiler identification is Intel 17.0.5.20170817 -- Check for working Fortran compiler: /public/software_purley/mpi/intelmpi/2017.4.239/intel64/bin/mpiifort -- Check for working Fortran compiler: /public/software_purley/mpi/intelmpi/2017.4.239/intel64/bin/mpiifort -- works -- Detecting Fortran compiler ABI info -- Detecting Fortran compiler ABI info - done -- Checking whether /public/software_purley/mpi/intelmpi/2017.4.239/intel64/bin/mpiifort supports Fortran 90 -- Checking whether /public/software_purley/mpi/intelmpi/2017.4.239/intel64/bin/mpiifort supports Fortran 90 -- yes -- OS: Linux 3.10.0-693.el7.x86_64 -- BUILD_TYPE=RELEASE -- Found MPI_Fortran: /public/software_purley/mpi/intelmpi/2017.4.239/intel64/bin/mpiifort (found version "3.1") -- Found MPI: TRUE (found version "3.1") -- Set Fortran compiler FC to /public/software_purley/mpi/intelmpi/2017.4.239/intel64/bin/mpiifort, ID=Intel /public/software_purley/compiler/intel/intel-compiler-2017.5.239/mkl/tools/mkl_link_tool: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory -- MKL found at: /public/software_purley/compiler/intel/intel-compiler-2017.5.239/mkl -- MKL supports Scalapack+Blacs -- Fortran Compiler id = Intel -- Fortran Compiler ver. = 17.0.5.20170817 -- Fortran Compiler options = -fpp -O3 -ftz -- Testing P-ARPACK patch: zdotc.patch -- Patch applied: zdotc.patch -- SF compilation lines: -L${libdir} -lscifor -L/public/software_purley/compiler/intel/intel-compiler-2017.5.239/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -L/usr/lib64 -lpthread -lm -ldl -- Module file: scifor/user_prefix/intel/ -- Library version: -- Library will be installed in: /public/home/gengl/A_LIB/SciFortran/scifor/intel/

TO CONCLUDE INSTALLATION << Compile with: $ gmake Install with: $ gmake install

Uninstall with: $ gmake uninstall

But the make process return an error, could someone tell me the reason? Thanks!

Scanning dependencies of target SF_PARSE_INPUTLIB [ 1%] Building Fortran object src/SF_PARSE_INPUT/CMakeFiles/SF_PARSE_INPUTLIB.dir/LIST_INPUT.f90.o [ 1%] Building Fortran object src/SF_PARSE_INPUT/CMakeFiles/SF_PARSE_INPUTLIB.dir/SF_PARSE_INPUT.f90.o [ 1%] Built target SF_PARSE_INPUTLIB Scanning dependencies of target SF_INITLIB [ 2%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_ARRAYS.f90.o [ 2%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_COLORS.f90.o [ 2%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_CONSTANTS.f90.o [ 3%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_FONTS.f90.o [ 3%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_MISC.f90.o [ 3%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_PAULI.f90.o [ 4%] Building Fortran object src/SF_INIT/CMakeFiles/SF_INITLIB.dir/SF_TIMER.f90.o [ 4%] Built target SF_INITLIB Scanning dependencies of target SF_MPILIB [ 4%] Building Fortran object src/SF_MPI/CMakeFiles/SF_MPILIB.dir/SF_BLACS.f90.o [ 5%] Building Fortran object src/SF_MPI/CMakeFiles/SF_MPILIB.dir/SF_MPI.f90.o [ 5%] Built target SF_MPILIB Scanning dependencies of target SF_IOTOOLSLIB [ 5%] Building Fortran object src/SF_IOTOOLS/CMakeFiles/SF_IOTOOLSLIB.dir/IOFILE.f90.o [ 6%] Building Fortran object src/SF_IOTOOLS/CMakeFiles/SF_IOTOOLSLIB.dir/IOPLOT.f90.o [ 6%] Building Fortran object src/SF_IOTOOLS/CMakeFiles/SF_IOTOOLSLIB.dir/IOREAD.f90.o [ 7%] Building Fortran object src/SF_IOTOOLS/CMakeFiles/SF_IOTOOLSLIB.dir/SF_IOTOOLS.f90.o [ 7%] Built target SF_IOTOOLSLIB Scanning dependencies of target SF_DERIVATELIB [ 8%] Building Fortran object src/SF_DERIVATE/CMakeFiles/SF_DERIVATELIB.dir/SF_DERIVATE.f90.o [ 8%] Built target SF_DERIVATELIB Scanning dependencies of target SF_INTEGRATELIB [ 8%] Building Fortran object src/SF_INTEGRATE/CMakeFiles/SF_INTEGRATELIB.dir/GAUSS_QUADRATURE.f90.o /public/home/gengl/A_LIB/package/SciFortran-master/src/SF_INTEGRATE/GAUSS_QUADRATURE.f90(33): error #8541: Not yet implemented: type containing ALLOCATABLE field of same type. Use POINTER instead. [INTEGRATION_TYPE] type(integration_type),dimension(:),allocatable :: ivec ----------^ compilation aborted for /public/home/gengl/A_LIB/package/SciFortran-master/src/SF_INTEGRATE/GAUSS_QUADRATURE.f90 (code 1) make[2]: [src/SF_INTEGRATE/CMakeFiles/SF_INTEGRATELIB.dir/GAUSS_QUADRATURE.f90.o] Error 1 make[1]: [src/SF_INTEGRATE/CMakeFiles/SF_INTEGRATELIB.dir/all] Error 2 make: *** [all] Error 2

beddalumia commented 1 year ago

Hi! Recursive allocatable components in derived types are a fairly established language feature nowadays (if I recall correctly they have been introduced in Fortran 2008). But apparently your version of ifort does not implement it yet (that's what the error message is telling). Nevertheless their support page does not mention this implementation gap in the "known issues section" (see here), which might imply it has been addressed in a minor version (unfortunately they do not detail bugfixes between minors, not on this page at least).

On the bright side the release notes for ifort 18.0.x guarantee that the whole Fortran 2008 standard is covered, so you should be able to solve the specific issue by upgrading the major version of your compiler (if possible!).

I can personally guarantee that SciFortran builds correctly with ifort 2021.x, so if you have access to it (or newer) you would be assured to be on the safe side.

On a side note: we currently state in the README that any ifort > 13 should work, so I apologize for the mislead. The Gauss quadrature module is fairly new (introduced this summer) and we did not check for older ifort versions. If you manage to solve with an ifort version between 17 and 22 please report back so we can update the README with (a good estimate of) a newer minimum version for the compiler. Thanks in advance!

dirichlet10 commented 1 year ago

Thanks for your quick and detailed response! I'm sorry that I don't have a new version of ifort and can't give a newer minimum version for the compiler. I determine to install an older version of SciFortran temporarily.