Making pGFN-FF library

Hi, I am a new Gulp user and have managed to install Gulp 6.1.2.

I am interested in using the pGFN-FF forcefield but am now currently stuck on how to make/use the library.

within the pGFNFF/Src folder I type ‘make lib’ and get:
ar -rv libpGFNFF.a m_pgfnff_types.o m_pgfnff_reallocate.o m_io.o m_pgfnff.o m_pgfnff_nbr_lib.o m_pgfnff_mrec.o m_pgfnff_cfg.o m_pgfnff_disp.o m_pgfnff_topo.o pgfnff_dcn.o pgfnff_init.o pgfnff_init_param.o pgfnff_radij.o pgfnff_hybrid.o pgfnff_setnbr.o pgfnff_subs.o pgfnff_solve.o pgfnff_matsolve.o pgfnff_huckel.o pgfnff_huckel_pbc.o pgfnff_outpot.o pgfnff_outpar.o pgfnff_excludebond.o pgfnff_get_max_cutoff.o pgfnff_check_atom_with_nobonds.o pgfnff_pargen.o pgfnff_sethkpt.o fermi.o pgfnff_error.o pgfnff_warn.o changemaxatpgfnff.o pgfnff_query.o
r - m_pgfnff_types.o
r - m_pgfnff_reallocate.o
r - m_io.o
r - m_pgfnff.o
r - m_pgfnff_nbr_lib.o
r - m_pgfnff_mrec.o
r - m_pgfnff_cfg.o
r - m_pgfnff_disp.o
r - m_pgfnff_topo.o
r - pgfnff_dcn.o
r - pgfnff_init.o
r - pgfnff_init_param.o
r - pgfnff_radij.o
r - pgfnff_hybrid.o
r - pgfnff_setnbr.o
r - pgfnff_subs.o
r - pgfnff_solve.o
r - pgfnff_matsolve.o
r - pgfnff_huckel.o
r - pgfnff_huckel_pbc.o
r - pgfnff_outpot.o
r - pgfnff_outpar.o
r - pgfnff_excludebond.o
r - pgfnff_get_max_cutoff.o
r - pgfnff_check_atom_with_nobonds.o
r - pgfnff_pargen.o
r - pgfnff_sethkpt.o
r - fermi.o
r - pgfnff_error.o
r - pgfnff_warn.o
r - changemaxatpgfnff.o
r - pgfnff_query.o

is there supposed to be a .lib file I can move over to the Libraries folder?

If you go to the Src directory for the main code and build as usual (via mkgulp) then this will also build the pGFNFF library and link it to the GULP executable. So there’s no need to do anything specifically with the library - just use the method via the appropriate keyword in the input file.

1 Like

Thanks for your reply.

Do I have to modify anything in the mkgulp file to build the pGFNFF library? I am getting this error:

ore -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl …/…/Utils/pGFNFF/Src//libpGFNFF.a -o gulp
m_simplex.o: In function __m_simplex_MOD_simplx': m_simplex.F90:(.text+0x1b09): undefined reference to _gfortran_os_error_at’
m_simplex.o: In function __m_simplex_MOD_subplx': m_simplex.F90:(.text+0x2d90): undefined reference to _gfortran_os_error_at’
m_simplex.F90:(.text+0x2dba): undefined reference to _gfortran_os_error_at' m_simplex.F90:(.text+0x2de6): undefined reference to _gfortran_os_error_at’
m_pdf.o: In function __m_pdf_MOD_pdfsetup': m_pdf.F90:(.text+0x7c81): undefined reference to _gfortran_os_error_at’
bcgsolve.o:bcgsolve.F90:(.text+0x1ef): more undefined references to `_gfortran_os_error_at’ follow
collect2: error: ld returned 1 exit status
make: *** [makefile:222: gulp] Error 1
mv: cannot stat ‘gulp’: No such file or directory

This is a new one to me, though there is on line discussion of the error if you search for it.
It seems like there is a mix of fortran compilers being used between different files. I’d suggest doing a make clean & then compiling cleanly with a single fortran compiler.

Hi Julian, I managed to fix this error by cleaning out intermediate files with ‘./mkgulp -m -c intel -t clean rm -rf Linux_MPI’

seems to have loaded now.

if I have compiled Gulp with pGFN-FF, does that mean the gfnff input flag is now using pGFN-FF? or I use a pgfnff flag in the input but just assume Gulp sees it as nothing is printed in the .out file to acknowledge it read the flag?

(the right side is from a run I did with pgfnff in the input)

If you’ve specified the keyword then GULP will be using pGFNFF. An easy check is to see if the energy is non-zero. If so, it means it must have used this method (assuming you didn’t put other models in the input at the same time).
PS The error makes sense, since pGFNFF built as a library will use gfortran & so if you then try to build the main code with Intel compilers this won’t be binary compatible.

1 Like