2929 LMP_TYPE_SCALAR , LMP_TYPE_VECTOR , LMP_TYPE_ARRAY , \
3030 LMP_SIZE_VECTOR , LMP_SIZE_ROWS , LMP_SIZE_COLS , \
3131 LMP_VAR_EQUAL , LMP_VAR_ATOM , LMP_VAR_VECTOR , LMP_VAR_STRING , \
32- get_ctypes_int
32+ LMP_BUFSIZE , get_ctypes_int
3333
3434from lammps .data import NeighList
3535
@@ -347,6 +347,8 @@ def __init__(self,name='',cmdargs=None,ptr=None,comm=None):
347347
348348 self .lib .lammps_get_last_error_message .argtypes = [c_void_p , c_char_p , c_int ]
349349 self .lib .lammps_get_last_error_message .restype = c_int
350+ self .lib .lammps_set_show_error .argtypes = [c_void_p , c_int ]
351+ self .lib .lammps_set_show_error .restype = c_int
350352
351353 self .lib .lammps_extract_global .argtypes = [c_void_p , c_char_p ]
352354 self .lib .lammps_extract_global_datatype .argtypes = [c_void_p , c_char_p ]
@@ -704,8 +706,8 @@ def get_os_info(self):
704706 :rtype: string
705707 """
706708
707- sb = create_string_buffer (512 )
708- self .lib .lammps_get_os_info (sb ,512 )
709+ sb = create_string_buffer (LMP_BUFSIZE )
710+ self .lib .lammps_get_os_info (sb , LMP_BUFSIZE )
709711 return sb .value .decode ()
710712
711713 # -------------------------------------------------------------------------
@@ -734,8 +736,8 @@ def get_mpi_comm(self):
734736
735737 @property
736738 def _lammps_exception (self ):
737- sb = create_string_buffer (100 )
738- error_type = self .lib .lammps_get_last_error_message (self .lmp , sb , 100 )
739+ sb = create_string_buffer (LMP_BUFSIZE )
740+ error_type = self .lib .lammps_get_last_error_message (self .lmp , sb , LMP_BUFSIZE )
739741 error_msg = sb .value .decode ().strip ()
740742
741743 if error_type == 2 :
@@ -2124,6 +2126,27 @@ def is_running(self):
21242126
21252127 # -------------------------------------------------------------------------
21262128
2129+ def set_show_error (self , flag ):
2130+ """ Enable or disable direct printing of error messages in C++ code
2131+
2132+ .. versionadded:: TBD
2133+
2134+ This function allows to enable or disable printing of error message directly in
2135+ the C++ code. Disabling the printing avoids printing error messages twice when
2136+ detecting and re-throwing them in Python code.
2137+
2138+ This is a wrapper around the :cpp:func:`lammps_set_show_error`
2139+ function of the library interface.
2140+
2141+ :param flag: enable (1) or disable (0) printing of error message
2142+ :type flag: int
2143+ :return: previous setting of the flag
2144+ :rtype: int
2145+ """
2146+ self .lib .lammps_set_show_error (self .lmp , flag )
2147+
2148+ # -------------------------------------------------------------------------
2149+
21272150 def force_timeout (self ):
21282151 """ Trigger an immediate timeout, i.e. a "soft stop" of a run.
21292152
@@ -2300,8 +2323,9 @@ def get_gpu_device_info(self):
23002323 :rtype: string
23012324 """
23022325
2303- sb = create_string_buffer (8192 )
2304- self .lib .lammps_get_gpu_device_info (sb ,8192 )
2326+ BUFSIZE = 8192
2327+ sb = create_string_buffer (BUFSIZE )
2328+ self .lib .lammps_get_gpu_device_info (sb , BUFSIZE )
23052329 return sb .value .decode ()
23062330
23072331 # -------------------------------------------------------------------------
@@ -2318,9 +2342,9 @@ def installed_packages(self):
23182342 if self ._installed_packages is None :
23192343 self ._installed_packages = []
23202344 npackages = self .lib .lammps_config_package_count ()
2321- sb = create_string_buffer (100 )
2345+ sb = create_string_buffer (LMP_BUFSIZE )
23222346 for idx in range (npackages ):
2323- self .lib .lammps_config_package_name (idx , sb , 100 )
2347+ self .lib .lammps_config_package_name (idx , sb , LMP_BUFSIZE )
23242348 self ._installed_packages .append (sb .value .decode ())
23252349 return self ._installed_packages
23262350
@@ -2356,17 +2380,18 @@ def available_styles(self, category):
23562380 :return: list of style names in given category
23572381 :rtype: list
23582382 """
2383+ BUFSIZE = 8192
23592384 if self ._available_styles is None :
23602385 self ._available_styles = {}
23612386
23622387 if category not in self ._available_styles :
23632388 self ._available_styles [category ] = []
23642389 with ExceptionCheck (self ):
23652390 nstyles = self .lib .lammps_style_count (self .lmp , category .encode ())
2366- sb = create_string_buffer (100 )
2391+ sb = create_string_buffer (BUFSIZE )
23672392 for idx in range (nstyles ):
23682393 with ExceptionCheck (self ):
2369- self .lib .lammps_style_name (self .lmp , category .encode (), idx , sb , 100 )
2394+ self .lib .lammps_style_name (self .lmp , category .encode (), idx , sb , BUFSIZE )
23702395 self ._available_styles [category ].append (sb .value .decode ())
23712396 return self ._available_styles [category ]
23722397
@@ -2411,9 +2436,9 @@ def available_ids(self, category):
24112436 available_ids = []
24122437 if category in categories :
24132438 num = self .lib .lammps_id_count (self .lmp , category .encode ())
2414- sb = create_string_buffer (100 )
2439+ sb = create_string_buffer (LMP_BUFSIZE )
24152440 for idx in range (num ):
2416- self .lib .lammps_id_name (self .lmp , category .encode (), idx , sb , 100 )
2441+ self .lib .lammps_id_name (self .lmp , category .encode (), idx , sb , LMP_BUFSIZE )
24172442 available_ids .append (sb .value .decode ())
24182443 return available_ids
24192444
@@ -2433,10 +2458,10 @@ def available_plugins(self, category):
24332458
24342459 available_plugins = []
24352460 num = self .lib .lammps_plugin_count (self .lmp )
2436- sty = create_string_buffer (100 )
2437- nam = create_string_buffer (100 )
2461+ sty = create_string_buffer (LMP_BUFSIZE )
2462+ nam = create_string_buffer (LMP_BUFSIZE )
24382463 for idx in range (num ):
2439- self .lib .lammps_plugin_name (idx , sty , nam , 100 )
2464+ self .lib .lammps_plugin_name (idx , sty , nam , LMP_BUFSIZE )
24402465 available_plugins .append ([sty .value .decode (), nam .value .decode ()])
24412466 return available_plugins
24422467
0 commit comments