1Configuration information
2=========================
3
4This section documents the following functions:
5
6- :cpp:func:`lammps_version`
7- :cpp:func:`lammps_get_os_info`
8- :cpp:func:`lammps_config_has_mpi_support`
9- :cpp:func:`lammps_config_has_gzip_support`
10- :cpp:func:`lammps_config_has_png_support`
11- :cpp:func:`lammps_config_has_jpeg_support`
12- :cpp:func:`lammps_config_has_ffmpeg_support`
13- :cpp:func:`lammps_config_has_exceptions`
14- :cpp:func:`lammps_config_has_package`
15- :cpp:func:`lammps_config_package_count`
16- :cpp:func:`lammps_config_package_name`
17- :cpp:func:`lammps_config_accelerator`
18- :cpp:func:`lammps_has_gpu_device`
19- :cpp:func:`lammps_gpu_device_info`
20- :cpp:func:`lammps_has_style`
21- :cpp:func:`lammps_style_count`
22- :cpp:func:`lammps_style_name`
23- :cpp:func:`lammps_has_id`
24- :cpp:func:`lammps_id_count`
25- :cpp:func:`lammps_id_name`
26
27--------------------
28
29These library functions can be used to query the LAMMPS library for
30compile time settings and included packages and styles.  This enables
31programs that use the library interface to determine whether the
32linked LAMMPS library is compatible with the requirements of the
33application without crashing during the LAMMPS functions (e.g. due to
34missing pair styles from packages) or to choose between different
35options (e.g. whether to use ``lj/cut``, ``lj/cut/opt``,
36``lj/cut/omp`` or ``lj/cut/intel``).  Most of the functions can be
37called directly without first creating a LAMMPS instance.  While
38crashes within LAMMPS may be recovered from by enabling
39:ref:`exceptions <exceptions>`, avoiding them proactively is a safer
40approach.
41
42.. code-block:: C
43   :caption: Example for using configuration settings functions
44
45   #include "library.h"
46   #include <stdio.h>
47
48   int main(int argc, char **argv)
49   {
50     void *handle;
51
52     handle = lammps_open_no_mpi(0, NULL, NULL);
53     lammps_file(handle, "in.missing");
54     if (lammps_has_error(handle)) {
55       char errmsg[256];
56       int errtype;
57       errtype = lammps_get_last_error_message(handle, errmsg, 256);
58       fprintf(stderr, "LAMMPS failed with error: %s\n", errmsg);
59       return 1;
60     }
61     /* write compressed dump file depending on available of options */
62     if (lammps_has_style(handle, "dump", "atom/zstd")) {
63       lammps_command(handle, "dump d1 all atom/zstd 100 dump.zst");
64     } else if (lammps_has_style(handle, "dump", "atom/gz")) {
65       lammps_command(handle, "dump d1 all atom/gz 100 dump.gz");
66     } else if (lammps_config_has_gzip_support()) {
67       lammps_command(handle, "dump d1 all atom 100 dump.gz");
68     } else {
69       lammps_command(handle, "dump d1 all atom 100 dump");
70     }
71     lammps_close(handle);
72     return 0;
73   }
74
75-----------------------
76
77.. doxygenfunction:: lammps_version
78   :project: progguide
79
80-----------------------
81
82.. doxygenfunction:: lammps_get_os_info
83   :project: progguide
84
85-----------------------
86
87.. doxygenfunction:: lammps_config_has_mpi_support
88   :project: progguide
89
90-----------------------
91
92.. doxygenfunction:: lammps_config_has_gzip_support
93   :project: progguide
94
95-----------------------
96
97.. doxygenfunction:: lammps_config_has_png_support
98   :project: progguide
99
100-----------------------
101
102.. doxygenfunction:: lammps_config_has_jpeg_support
103   :project: progguide
104
105-----------------------
106
107.. doxygenfunction:: lammps_config_has_ffmpeg_support
108   :project: progguide
109
110-----------------------
111
112.. doxygenfunction:: lammps_config_has_exceptions
113   :project: progguide
114
115-----------------------
116
117.. doxygenfunction:: lammps_config_has_package
118   :project: progguide
119
120-----------------------
121
122.. doxygenfunction:: lammps_config_package_count
123   :project: progguide
124
125-----------------------
126
127.. doxygenfunction:: lammps_config_package_name
128   :project: progguide
129
130-----------------------
131
132.. doxygenfunction:: lammps_config_accelerator
133   :project: progguide
134
135-----------------------
136
137.. doxygenfunction:: lammps_has_gpu_device
138   :project: progguide
139
140-----------------------
141
142.. doxygenfunction:: lammps_get_gpu_device_info
143   :project: progguide
144
145-----------------------
146
147.. doxygenfunction:: lammps_has_style
148   :project: progguide
149
150-----------------------
151
152.. doxygenfunction:: lammps_style_count
153   :project: progguide
154
155-----------------------
156
157.. doxygenfunction:: lammps_style_name
158   :project: progguide
159
160-----------------------
161
162.. doxygenfunction:: lammps_has_id
163   :project: progguide
164
165-----------------------
166
167.. doxygenfunction:: lammps_id_count
168   :project: progguide
169
170-----------------------
171
172.. doxygenfunction:: lammps_id_name
173   :project: progguide
174
175