New to Gromacs and C++

GROMACS version:
GROMACS modification: Yes/No
Hi, I am trying to build Gromacs on my computer.
The C compiler identification is GNU 11.4.0 and the The CXX compiler identification is GNU 11.4.0. I’m using Ubuntu 22.04.
I have come across a few initial problems that I am hoping to find answer to.
Looking for include file io.h - not found
Looking for _fileno - not found
Looking for memalign - not found
– Performing Test callconv___vectorcall
– Performing Test callconv___vectorcall - Failed
– Performing Test callconv___regcall
– Performing Test callconv___regcall - Failed
Checking for system XDR support - not present
– Using external FFT library - FFTW3 build managed by GROMACS
– Looking for sgemm

– Looking for sgemm
- not found
– Looking for sgemm

– Looking for sgemm
- found
– Performing Test HAS_WARNING_EVERYTHING
– Performing Test HAS_WARNING_EVERYTHING - Failed
– Looking for inttypes.h - found
– Could NOT find Sphinx (missing: SPHINX_EXECUTABLE pygments) (Required is at least version “4.0.0”)
If anyone has any advice on how to fix these problems, please help.
Thank you

Hello!

Could you clarify which problems are your experiencing?

The messages you posted are normal status reports about different features of your computer and packages installed on your system. Nothing indicates any errors. The only limitation is that you won’t be able to build the HTML documentation due to missing Sphinx, but that is usually not needed for end users anyway.

I think they are linked to whether Gromacs can be built successfully.
If I proceed then i get clock warning errors.

The messages you have shown are completely harmless and a part of a normal GROMACS build. If you have any other warnings, please share them.

Thank you.

I was able to install Gromacs successfully.
But I’m trying to use it with chap and I get this error.
In file included from /mnt/c/Users/k1nic/chap-version_0_9_1/src/aggregation/boltzmann_energy_calculator.cpp:25:
/mnt/c/Users/k1nic/chap-version_0_9_1/include/aggregation/boltzmann_energy_calculator.hpp:30:10: fatal error: gromacs/utility/real.h: No such file or directory
30 | #include “gromacs/utility/real.h”
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/chap.dir/build.make:76: CMakeFiles/chap.dir/src/aggregation/boltzmann_energy_calculator.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:157: CMakeFiles/chap.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
I’m not sure how to solve it.

Also, how would I proceed if I wanted to install different GROMACS on my machine. I think the GROMACS 2018.8 version works with CHAP.

The chap compilation problem might be that it does not know where to find the GROMACS headers. Did you make a system installation (with admin privileges) or a “local” installation (in a user directory) when you compiled GROMACS? If you made a local installation you might need to set the environment variables correctly. That is easy to do by source <installation directory>/bin/GMXRC. That might help the chap compilation.

If you would need to install another version of GROMACS it is a good idea to make another local installation. Just build it in another directory with its own installation directory. When you have installed it you can switch which version to use by using the source command mentioned above, but with the GMXRC file from the installation directory of the version you want to use.

You should add -DGMX_INSTALL_LEGACY_API=ON to GROMACS’s cmake flags.

See the answer by Magnus. Use the following CMake flag to change the GROMACS install directory: -DCMAKE_INSTALL_PREFIX=/mnt/c/Users/k1nic/gromacs/2018.8. The path is just a suggestion, of course.

okay. i tried installing gromacs 2018.8 into a different directory but i ended up getting this alert
mx_constr_t, gmx::IMDOutputProvider*, t_inputrec*, gmx_mtop_t*, t_fcdata*, t_state*, ObservablesHistory*, gmx::MDAtoms*, t_nrnb*, gmx_wallcycle_t, t_forcerec*, const ReplicaExchangeParameters&, gmx_membed_t*, gmx_walltime_accounting_t)’:
/mnt/c/Users/k1nic/gromacs-2018/src/gromacs/mdlib/minimize.cpp:2507:32: error: ‘numeric_limits’ is not a member of ‘std’
2507 | s_try->epot = std::numeric_limits::infinity();
| ^~~~~~~~~~~~~~
/mnt/c/Users/k1nic/gromacs-2018/src/gromacs/mdlib/minimize.cpp:2507:51: error: expected primary-expression before ‘>’ token
2507 | s_try->epot = std::numeric_limits::infinity();
| ^
/mnt/c/Users/k1nic/gromacs-2018/src/gromacs/mdlib/minimize.cpp:2507:54: error: ‘::infinity’ has not been declared; did you mean ‘finite’?
2507 | s_try->epot = std::numeric_limits::infinity();
| ^~~~~~~~
| finite

Could the reason for this be due to this initial error
– Looking for include file io.h
– Looking for include file io.h - not found

Hi!

Please see this post (it’s about GROMACS 2016, but the same applies for GROMACS 2018): Gromacs(2016)/Spack Compilation Fails- error: 'numeric_limits' is not a member of 'std' - #2 by al42and

This is normal.

Thank you both for your assistance. I installed both Gromacs versions in two distinct locations on my PC.

Is there any other alternative to force CHAP to use GROMACS 2018?
I tried this cmake … -DGMX_INSTALL_DIR=/mnt/c/Users/k1nic/gromacs2018_CHAP/bin/GMXRX -DCMAKE_PREFIX_PATH=/mnt/c/Users/k1nic/gromacs2018_CHAP/bin/GMXRX -DCMAKE_INSTALL_PREFIX=/mnt/c/Users/k1nic/CHAP

but cmake still uses Gromacs 2024.2

I don’t know anything about CHAP, but I guess its cmake configuration has a variable pointing at the GROMACS installation. You should be able to set that variable explicitly. I think ccmake is good to get a quick overview of the cmake settings.