diff --git a/doc/src/Library_properties.rst b/doc/src/Library_properties.rst index e53a3caa0d..fa8f7e7503 100644 --- a/doc/src/Library_properties.rst +++ b/doc/src/Library_properties.rst @@ -4,6 +4,7 @@ Retrieving or setting LAMMPS system properties This section documents the following functions: - :cpp:func:`lammps_version` +- :cpp:func:`lammps_get_os_info` - :cpp:func:`lammps_memory_usage` - :cpp:func:`lammps_get_mpi_comm` - :cpp:func:`lammps_get_natoms` @@ -80,6 +81,11 @@ sub-domains and processors. ----------------------- +.. doxygenfunction:: lammps_get_os_info + :project: progguide + +----------------------- + .. doxygenfunction:: lammps_memory_usage :project: progguide diff --git a/src/library.cpp b/src/library.cpp index d045cf1d23..05fcccd84d 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -566,6 +566,33 @@ int lammps_version(void *handle) return lmp->num_ver; } +/** Get operating system and architecture information + * +\verbatim embed:rst + +The :cpp:func:`lammps_get_os_info` function can be used to retrieve +detailed information about the hosting operating system and +compiler/runtime. +A suitable buffer for a C-style string has to be provided and its length. +If the assembled text will be truncated to not overflow this buffer. + +.. versionadded:: 6Oct2020 + +\endverbatim + * + * \param buffer string buffer to copy the information to + * \param buf_size size of the provided string buffer */ + +void lammps_get_os_info(char *buffer, int buf_size) +{ + if (buf_size <=0) return; + buffer[0] = buffer[buf_size-1] = '\0'; + std::string txt = Info::get_os_info() + "\n"; + txt += Info::get_compiler_info(); + txt += " with " + Info::get_openmp_info() + "\n"; + strncpy(buffer, txt.c_str(), buf_size-1); +} + /* ---------------------------------------------------------------------- */ /** Get memory usage information @@ -4346,15 +4373,15 @@ int lammps_config_has_exceptions() { * index. Thus, providing this request index ensures that the correct neighbor * list index is returned. * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param style String used to search for pair style instance - * \param exact Flag to control whether style should match exactly or only - * must be contained in pair style name - * \param nsub match nsub-th hybrid sub-style - * \param request request index that specifies which neighbor list should be - * returned, in case there are multiple neighbor lists requests - * for the found pair style - * \return return neighbor list index if found, otherwise -1 + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param style String used to search for pair style instance + * \param exact Flag to control whether style should match exactly or only + * must be contained in pair style name + * \param nsub match nsub-th hybrid sub-style + * \param request request index that specifies which neighbor list should be + * returned, in case there are multiple neighbor lists requests + * for the found pair style + * \return return neighbor list index if found, otherwise -1 */ int lammps_find_pair_neighlist(void* handle, char * style, int exact, int nsub, int request) { LAMMPS * lmp = (LAMMPS *) handle; @@ -4660,15 +4687,16 @@ the failing MPI ranks to send messages. :cpp:func:`lammps_config_has_exceptions` to check if this is the case. \endverbatim * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param buffer string buffer to copy the error message to - * \param buf_size size of the provided string buffer - * \return 1 when all ranks had the error, 2 on a single rank error. + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param buffer string buffer to copy the error message to + * \param buf_size size of the provided string buffer + * \return 1 when all ranks had the error, 2 on a single rank error. */ int lammps_get_last_error_message(void *handle, char *buffer, int buf_size) { #ifdef LAMMPS_EXCEPTIONS LAMMPS *lmp = (LAMMPS *) handle; Error *error = lmp->error; + buffer[0] = buffer[buf_size-1] = '\0'; if(!error->get_last_error().empty()) { int error_type = error->get_last_error_type(); diff --git a/src/library.h b/src/library.h index 8089e51ade..68ae74740a 100644 --- a/src/library.h +++ b/src/library.h @@ -112,6 +112,7 @@ void lammps_commands_string(void *handle, const char *str); * ----------------------------------------------------------------------- */ int lammps_version(void *handle); +void lammps_get_os_info(char *buffer, int buf_size); void lammps_memory_usage(void *handle, double *meminfo); int lammps_get_mpi_comm(void *handle); double lammps_get_natoms(void *handle);