Compilation error while compiling USER-QMMM

I am at step 4 of README provided in lib/qmmm directory, that is compiling for pwqmmm.x. Whe i give ‘make -f Makefile.gfortran all’ or ‘pwqmmm.x’, i get following error:

spresso-5.4.0’/COUPLE/include pwqmmm.c -o pwqmmm.o
pwqmmm.c: In function ‘int main(int, char**)’:
pwqmmm.c:190:42: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
pwqmmm.c:190:42: error: cannot convert ‘int*’ to ‘char*’ for argument ‘8’ to ‘void c2libpwscf(int, int, int, int, int, int, int*, char*)’

I believe it is due to the fact that in [q.e. directory]/COUPLE/include/libqecouple.h file

c2libpwscf function is declared as:

void c2libpwscf(int lib_comm, int nimage, int npool, int ntaskgroup,
int nband, int ndiag, int *exit_status, char *input_file);

while in [lammps]/lib/qmmm/pwqmmm.c file it is called as:

c2libpwscf(qmmmcfg.my_comm, nimage, npots, npool, ntg, nband, ndiag,
&retval, qmmmcfg.qminp);

that ‘npots’ variable is extra.

Any patch for this?

QE version: 5.4.0

lammps version: 10Aug15

compiler: GNU 4.6.3 with open MPI on UBUNTU 12.04

PS: Makefile for qmmm directory was copied from lammps github directory to reflect upon following changes :

tldeps: |

  • |
    ( cd (QETOPDIR) ; (MAKE) $(MFLAGS) couple || exit 1) |
  • (MAKE) -C ../../src (MFLAGS) makelib |
    (MAKE) -C ../../src (MFLAGS) $(LAMMPSCFG) |
  • (MAKE) -C ../../src (MFLAGS) -f Makefile.lib $(LAMMPSCFG) |
  • (MAKE) -C ../../src (MFLAGS) mode=lib $(LAMMPSCFG) |

as make -C …/…/src makelib was giving error. I did not touch any other file as timestamp on all other was 3 years old.

I am at step 4 of README provided in lib/qmmm directory, that is compiling
for pwqmmm.x. Whe i give 'make -f Makefile.gfortran all' or 'pwqmmm.x', i
get following error:

spresso-5.4.0'/COUPLE/include pwqmmm.c -o pwqmmm.o
pwqmmm.c: In function ‘int main(int, char**)’:
pwqmmm.c:190:42: error: invalid conversion from ‘int’ to ‘int*’
[-fpermissive]
pwqmmm.c:190:42: error: cannot convert ‘int*’ to ‘char*’ for argument ‘8’
to ‘void c2libpwscf(int, int, int, int, int, int, int*, char*)’

I believe it is due to the fact that in [q.e.
directory]/COUPLE/include/libqecouple.h file
c2libpwscf function is declared as:

void c2libpwscf(int lib_comm, int nimage, int npool, int ntaskgroup,
                int nband, int ndiag, int *exit_status, char *input_file);

while in [lammps]/lib/qmmm/pwqmmm.c file it is called as:

c2libpwscf(qmmmcfg.my_comm, nimage, npots, npool, ntg, nband, ndiag,
                   &retval, qmmmcfg.qminp);

that 'npots' variable is extra.

Any patch for this?

​not at the moment. development on the QM/MM interface has been suspended
for two years now.

axel.