QuantumPackage/qp2

./configure -c config/gfortran_mpi.cfg

abigcoder04 opened this issue · 4 comments

Dear developer, I want to ask you a question. When configuring qp, I want to try using other compilers to compile qp. I use
./configure -c config/gfortran_mpi.cfg to configure it. In my server, there is an mpi compiler. Why do I report an error when I configure make and install qp? I can't find the error at present. I want to ask you when I usr ./configure -c config/gfortran_mpi.cfg to configure qp. Is there anything else that needs to be modified? It's still straightforward ./configure -c config/gfortran_ mpi.cfg and then make? I hope I can get your answer.

[99/131] Create all the binaries from basis_correction
[69/464] F : ezfio_interface.irp.F90 -> bitmask/ezfio_interface
F90-W-0006-Input file empty (/usr/local/qp/qp2/src/basis_correction/IRPF90_temp/bitmask/ezfio_interface.irp.F90)
F90/aarch64 Linux Flang - 1.5 2017-05-01: compilation completed with warnings
F90-W-0006-Input file empty (/usr/local/qp/qp2/src/basis_correction/IRPF90_temp/bitmask/ezfio_interface.irp.F90)
F90-W-0006-Input file empty (/usr/local/qp/qp2/src/basis_correction/IRPF90_temp/bitmask/ezfio_interface.irp.F90)
[176/464] F : routines_exc_sr_lda.irp.F90 -> dft_utils_func/routines_exc_sr_lda
FAILED: /usr/local/qp/qp2/src/basis_correction/IRPF90_temp/dft_utils_func/routines_exc_sr_lda.irp.o
mpif90 -fopenmp -I ao_basis/ -I ao_one_e_ints/ -I ao_two_e_erf_ints/ -I ao_two_e_ints/ -I aux_quantities/ -I basis/ -I becke_numerical_grid/ -I bitmask/ -I cas_based_on_top/ -I csf/ -I davidson/ -I davidson_undressed/ -I density_for_dft/ -I determinants/ -I dft_keywords/ -I dft_one_e/ -I dft_utils_func/ -I dft_utils_in_r/ -I electrons/ -I ezfio_files/ -I functionals/ -I mo_basis/ -I mo_one_e_ints/ -I mo_two_e_erf_ints/ -I mo_two_e_ints/ -I mpi/ -I mu_of_r/ -I nuclei/ -I pseudo/ -I two_body_rdm/ -I two_rdm_routines/ -I utils/ -I zmq/ -Ofast -c /usr/local/qp/qp2/src/basis_correction/IRPF90_temp/dft_utils_func/routines_exc_sr_lda.irp.F90 -o /usr/local/qp/qp2/src/basis_correction/IRPF90_temp/dft_utils_func/routines_exc_sr_lda.irp.o
F90-S-0038-Symbol, derf, has not been explicitly declared (/usr/local/qp/qp2/src/basis_correction/IRPF90_temp/dft_utils_func/routines_exc_sr_lda.irp.F90)
0 inform, 0 warnings, 1 severes, 0 fatal for ex_lda_sr
F90-S-0038-Symbol, derf, has not been explicitly declared (/usr/local/qp/qp2/src/basis_correction/IRPF90_temp/dft_utils_func/routines_exc_sr_lda.irp.F90)
0 inform, 0 warnings, 1 severes, 0 fatal for dberfda
[193/464] F : irp_locks.irp.F90 -> irp_locks.irp.o
ninja: build stopped: subcommand failed.
FAILED: /usr/local/qp/qp2/src/basis_correction/basis_correction /usr/local/qp/qp2/src/basis_correction/print_su_pbe_ot
cd /usr/local/qp/qp2/src/basis_correction/IRPF90_temp ; ninja /usr/local/qp/qp2/src/basis_correction/basis_correction /usr/local/qp/qp2/src/basis_correction/print_su_pbe_ot && for i in /usr/local/qp/qp2/src/basis_correction/basis_correction /usr/local/qp/qp2/src/basis_correction/print_su_pbe_ot ; do [ -x $i ] && touch $i ; done
[101/131] Running IRPF90 for kohn_sham
ninja: build stopped: subcommand failed.
FAILED: all

F90-S-0038-Symbol, derf, has not been explicitly declared

Your Fortran compiler does not understand the derf intrinsic function, which computes the error function in double precision. You can try to replace derf by erf in the code which is more standard
.
The same kind of error happens with the Nvidia Fortran compiler which is missing some Fortran2008 intrinsic like shiftl and shiftr. So for the moment, only gfortran and ifort are officially supported.

Dear scemama,
I tried to replace derf by erf in routines_exc_sr_lda.irp.F90, but it seems that it automatically changes back to derf when making. I would like to ask in which file to replace derf with erf. I hope I can get your answer.

You should replace it in routines_exc_sr_lda.irp.f, which is used to generate routines_exc_sr_lda.irp.F90

I tried to replace derf by erf in routines_exc_sr_lda.irp.f just now, but it seems that it automatically changes back to derf and report the same error when making.