2889 lines
374 KiB
HTML
2889 lines
374 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>4.15. Utility functions — LAMMPS documentation</title>
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/sphinx-design.min.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/lammps.css" type="text/css" />
|
||
<link rel="shortcut icon" href="_static/lammps.ico"/>
|
||
<link rel="canonical" href="https://docs.lammps.org/Developer_utils.html" />
|
||
<!--[if lt IE 9]>
|
||
<script src="_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script src="_static/jquery.js?v=5d32c60e"></script>
|
||
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||
<script src="_static/documentation_options.js?v=5929fcd5"></script>
|
||
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
<script src="_static/design-tabs.js?v=f930bc37"></script>
|
||
<script async="async" src="_static/mathjax/es5/tex-mml-chtml.js?v=cadf963e"></script>
|
||
<script src="_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="4.23. Use of distributed grids within style classes" href="Developer_grid.html" />
|
||
<link rel="prev" title="4.14. Platform abstraction functions" href="Developer_platform.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="Manual.html">
|
||
|
||
<img src="_static/lammps-logo.png" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div class="lammps_version">Version: <b>19 Nov 2024</b></div>
|
||
<div class="lammps_release">git info: </div>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="Intro.html">1. Introduction</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Install.html">2. Install LAMMPS</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Build.html">3. Build LAMMPS</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Run_head.html">4. Run LAMMPS</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Commands.html">5. Commands</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Packages.html">6. Optional packages</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Speed.html">7. Accelerate performance</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Howto.html">8. Howto discussions</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Examples.html">9. Example scripts</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Tools.html">10. Auxiliary tools</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Errors.html">11. Errors</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Programmer Guide</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="Library.html">1. LAMMPS Library Interfaces</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Python_head.html">2. Use Python with LAMMPS</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Modify.html">3. Modifying & extending LAMMPS</a></li>
|
||
<li class="toctree-l1 current"><a class="reference internal" href="Developer.html">4. Information for Developers</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_org.html">4.1. Source files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_org.html#class-topology">4.2. Class topology</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_code_design.html">4.3. Code design</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_parallel.html">4.4. Parallel algorithms</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_atom.html">4.5. Accessing per-atom data</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_comm_ops.html">4.6. Communication patterns</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_flow.html">4.7. How a timestep works</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_write.html">4.8. Writing new styles</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_notes.html">4.9. Notes for developers and code maintainers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_updating.html">4.10. Notes for updating code written for older LAMMPS versions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_plugins.html">4.11. Writing plugins</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_unittest.html">4.12. Adding tests for unit testing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Classes.html">4.13. C++ base classes</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_platform.html">4.14. Platform abstraction functions</a></li>
|
||
<li class="toctree-l2 current"><a class="current reference internal" href="#">4.15. Utility functions</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#i-o-with-status-check-and-similar-functions">4.15.1. I/O with status check and similar functions</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#string-to-number-conversions-with-validity-check">4.15.2. String to number conversions with validity check</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#string-processing">4.15.3. String processing</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#potential-file-functions">4.15.4. Potential file functions</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#argument-processing">4.15.5. Argument processing</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#convenience-functions">4.15.6. Convenience functions</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#customized-standard-functions">4.15.7. Customized standard functions</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#special-math-functions">4.16. Special Math functions</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial9factorialEKi"><code class="docutils literal notranslate"><span class="pre">factorial()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial8exp2_x86Ed"><code class="docutils literal notranslate"><span class="pre">exp2_x86()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial6fm_expEd"><code class="docutils literal notranslate"><span class="pre">fm_exp()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial8my_erfcxEKd"><code class="docutils literal notranslate"><span class="pre">my_erfcx()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial6expmsqEd"><code class="docutils literal notranslate"><span class="pre">expmsq()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial6squareERKd"><code class="docutils literal notranslate"><span class="pre">square()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial4cubeERKd"><code class="docutils literal notranslate"><span class="pre">cube()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial7powsignEKi"><code class="docutils literal notranslate"><span class="pre">powsign()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial6powintERKdKi"><code class="docutils literal notranslate"><span class="pre">powint()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MathSpecial8powsinxxERKdi"><code class="docutils literal notranslate"><span class="pre">powsinxx()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#tokenizer-classes">4.17. Tokenizer classes</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS9TokenizerE"><code class="docutils literal notranslate"><span class="pre">Tokenizer</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS18TokenizerExceptionE"><code class="docutils literal notranslate"><span class="pre">TokenizerException</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE"><code class="docutils literal notranslate"><span class="pre">ValueTokenizer</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS23InvalidIntegerExceptionE"><code class="docutils literal notranslate"><span class="pre">InvalidIntegerException</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS21InvalidFloatExceptionE"><code class="docutils literal notranslate"><span class="pre">InvalidFloatException</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#argument-parsing-classes">4.18. Argument parsing classes</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS7ArgInfoE"><code class="docutils literal notranslate"><span class="pre">ArgInfo</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#file-reader-classes">4.19. File reader classes</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14TextFileReaderE"><code class="docutils literal notranslate"><span class="pre">TextFileReader</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS19PotentialFileReaderE"><code class="docutils literal notranslate"><span class="pre">PotentialFileReader</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#memory-pool-classes">4.20. Memory pool classes</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS6MyPageE"><code class="docutils literal notranslate"><span class="pre">MyPage</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS11MyPoolChunkE"><code class="docutils literal notranslate"><span class="pre">MyPoolChunk</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#eigensolver-functions">4.21. Eigensolver functions</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9MathEigen7jacobi3EPPCKdPdPPdi"><code class="docutils literal notranslate"><span class="pre">jacobi3()</span></code></a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9MathEigen7jacobi3EAL3E_AL3E_KdPdAL3E_AL3E_di"><code class="docutils literal notranslate"><span class="pre">jacobi3()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#communication-buffer-coding-with-ubuf">4.22. Communication buffer coding with <em>ubuf</em></a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#_CPPv4N9LAMMPS_NS4ubufE"><code class="docutils literal notranslate"><span class="pre">ubuf</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Developer_grid.html">4.23. Use of distributed grids within style classes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Command Reference</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="commands_list.html">Commands</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="fixes.html">Fix Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="computes.html">Compute Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="pairs.html">Pair Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="bonds.html">Bond Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="angles.html">Angle Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dihedrals.html">Dihedral Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="impropers.html">Improper Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dumps.html">Dump Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="fix_modify_atc_commands.html">fix_modify AtC commands</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Bibliography.html">Bibliography</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="Manual.html">LAMMPS</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content style-external-links">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="Manual.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item"><a href="Developer.html"><span class="section-number">4. </span>Information for Developers</a></li>
|
||
<li class="breadcrumb-item active"><span class="section-number">4.15. </span>Utility functions</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="https://www.lammps.org"><img src="_static/lammps-logo.png" width="64" height="16" alt="LAMMPS Homepage"></a> | <a href="Commands_all.html">Commands</a>
|
||
</li>
|
||
</ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
|
||
<a href="Developer_platform.html" class="btn btn-neutral float-left" title="4.14. Platform abstraction functions" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="Developer_grid.html" class="btn btn-neutral float-right" title="4.23. Use of distributed grids within style classes" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<p><span class="math notranslate nohighlight">\(\renewcommand{\AA}{\text{Å}}\)</span></p>
|
||
<section id="utility-functions">
|
||
<h1><span class="section-number">4.15. </span>Utility functions<a class="headerlink" href="#utility-functions" title="Link to this heading"></a></h1>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">utils</span></code> sub-namespace inside the <code class="docutils literal notranslate"><span class="pre">LAMMPS_NS</span></code> namespace provides
|
||
a collection of convenience functions and utilities that perform common
|
||
tasks that are required repeatedly throughout the LAMMPS code like
|
||
reading or writing to files with error checking or translation of
|
||
strings into specific types of numbers with checking for validity. This
|
||
reduces redundant implementations and encourages consistent behavior and
|
||
thus has some overlap with the <a class="reference internal" href="Developer_platform.html"><span class="doc">“platform” sub-namespace</span></a>.</p>
|
||
<section id="i-o-with-status-check-and-similar-functions">
|
||
<h2><span class="section-number">4.15.1. </span>I/O with status check and similar functions<a class="headerlink" href="#i-o-with-status-check-and-similar-functions" title="Link to this heading"></a></h2>
|
||
<p>The the first two functions are wrappers around the corresponding C
|
||
library calls <code class="docutils literal notranslate"><span class="pre">fgets()</span></code> or <code class="docutils literal notranslate"><span class="pre">fread()</span></code>. They will check if there
|
||
were errors on reading or an unexpected end-of-file state was reached.
|
||
In that case, the functions will stop with an error message, indicating
|
||
the name of the problematic file, if possible unless the <em>error</em> argument
|
||
is a NULL pointer.</p>
|
||
<p>The <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils11fgets_truncEPciP4FILE" title="LAMMPS_NS::utils::fgets_trunc"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::fgets_trunc()</span></code></a>
|
||
function will work similar for <code class="docutils literal notranslate"><span class="pre">fgets()</span></code> but it will read in a whole
|
||
line (i.e. until the end of line or end of file), but store only as many
|
||
characters as will fit into the buffer including a final newline
|
||
character and the terminating NULL byte. If the line in the file is
|
||
longer it will thus be truncated in the buffer. This function is used
|
||
by <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils20read_lines_from_fileEP4FILEiiPci8MPI_Comm" title="LAMMPS_NS::utils::read_lines_from_file"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::read_lines_from_file()</span></code></a> to read individual lines but
|
||
make certain they follow the size constraints.</p>
|
||
<p>The <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils20read_lines_from_fileEP4FILEiiPci8MPI_Comm" title="LAMMPS_NS::utils::read_lines_from_file"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::read_lines_from_file()</span></code></a> function will read the
|
||
requested number of lines of a maximum length into a buffer and will
|
||
return 0 if successful or 1 if not. It also guarantees that all lines
|
||
are terminated with a newline character and the entire buffer with a
|
||
NULL character.</p>
|
||
<hr class="docutils" />
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils6sfgetsEPKciPciP4FILEPKcP5Error">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils6sfgetsEPKciPciP4FILEPKcP5Error"></span><span id="_CPPv2N9LAMMPS_NS5utils6sfgetsEPKciPciP4FILEPKcP5Error"></span><span id="LAMMPS_NS::utils::sfgets__cCP.i.cP.i.FILEP.cCP.ErrorP"></span><span class="target" id="utils_8h_1a151f0249d5fa35b2f79f9fd411f0c61b"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">sfgets</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">srcname</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">srcline</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">s</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">FILE</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">fp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">filename</span></span>, <span class="n"><span class="pre">Error</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">error</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils6sfgetsEPKciPciP4FILEPKcP5Error" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Safe wrapper around fgets() which aborts on errors or EOF and prints a suitable error message to help debugging.</p>
|
||
<p>Use nullptr as the error parameter to avoid the abort on EOF or error.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>srcname</strong> – name of the calling source file (from FLERR macro) </p></li>
|
||
<li><p><strong>srcline</strong> – line in the calling source file (from FLERR macro) </p></li>
|
||
<li><p><strong>s</strong> – buffer for storing the result of fgets() </p></li>
|
||
<li><p><strong>size</strong> – size of buffer s (max number of bytes read by fgets()) </p></li>
|
||
<li><p><strong>fp</strong> – file pointer used by fgets() </p></li>
|
||
<li><p><strong>filename</strong> – file name associated with fp (may be a null pointer; then <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> will try to detect) </p></li>
|
||
<li><p><strong>error</strong> – pointer to Error class instance (for abort) or nullptr </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils6sfreadEPKciPv6size_t6size_tP4FILEPKcP5Error">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils6sfreadEPKciPv6size_t6size_tP4FILEPKcP5Error"></span><span id="_CPPv2N9LAMMPS_NS5utils6sfreadEPKciPv6size_t6size_tP4FILEPKcP5Error"></span><span id="LAMMPS_NS::utils::sfread__cCP.i.voidP.s.s.FILEP.cCP.ErrorP"></span><span class="target" id="utils_8h_1a5fc62aaa4658e16ec52523996d92af83"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">sfread</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">srcname</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">srcline</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">s</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">num</span></span>, <span class="n"><span class="pre">FILE</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">fp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">filename</span></span>, <span class="n"><span class="pre">Error</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">error</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils6sfreadEPKciPv6size_t6size_tP4FILEPKcP5Error" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Safe wrapper around fread() which aborts on errors or EOF and prints a suitable error message to help debugging.</p>
|
||
<p>Use nullptr as the error parameter to avoid the abort on EOF or error.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>srcname</strong> – name of the calling source file (from FLERR macro) </p></li>
|
||
<li><p><strong>srcline</strong> – line in the calling source file (from FLERR macro) </p></li>
|
||
<li><p><strong>s</strong> – buffer for storing the result of fread() </p></li>
|
||
<li><p><strong>size</strong> – size of data elements read by fread() </p></li>
|
||
<li><p><strong>num</strong> – number of data elements read by fread() </p></li>
|
||
<li><p><strong>fp</strong> – file pointer used by fread() </p></li>
|
||
<li><p><strong>filename</strong> – file name associated with fp (may be a null pointer; then <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> will try to detect) </p></li>
|
||
<li><p><strong>error</strong> – pointer to Error class instance (for abort) or nullptr </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11fgets_truncEPciP4FILE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11fgets_truncEPciP4FILE"></span><span id="_CPPv2N9LAMMPS_NS5utils11fgets_truncEPciP4FILE"></span><span id="LAMMPS_NS::utils::fgets_trunc__cP.i.FILEP"></span><span class="target" id="utils_8h_1ae2af7b66ca9a1980b73c1941779e2047"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">fgets_trunc</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">s</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="n"><span class="pre">FILE</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">fp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11fgets_truncEPciP4FILE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Wrapper around fgets() which reads whole lines but truncates the data to the buffer size and ensures a newline char at the end.</p>
|
||
<p>This function is useful for reading line based text files with possible comments that should be parsed later. This applies to data files, potential files, atomfile variable files and so on. It is used instead of fgets() by utils::read_lines_from_file().</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>s</strong> – buffer for storing the result of fgets() </p></li>
|
||
<li><p><strong>size</strong> – size of buffer s (max number of bytes returned) </p></li>
|
||
<li><p><strong>fp</strong> – file pointer used by fgets() </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils20read_lines_from_fileEP4FILEiiPci8MPI_Comm">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils20read_lines_from_fileEP4FILEiiPci8MPI_Comm"></span><span id="_CPPv2N9LAMMPS_NS5utils20read_lines_from_fileEP4FILEiiPci8MPI_Comm"></span><span id="LAMMPS_NS::utils::read_lines_from_file__FILEP.i.i.cP.i.MPI_Comm"></span><span class="target" id="utils_8h_1a7de7c579867fe5cac7f68affc3c9d416"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">read_lines_from_file</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">FILE</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">fp</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nlines</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nmax</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">me</span></span>, <span class="n"><span class="pre">MPI_Comm</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">comm</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils20read_lines_from_fileEP4FILEiiPci8MPI_Comm" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read N lines of text from file into buffer and broadcast them</p>
|
||
<p>This function uses repeated calls to fread() to fill a buffer with newline terminated text. If a line does not end in a newline (e.g. at the end of a file), it is added. The caller has to allocate an nlines by nmax sized buffer for storing the text data. Reading is done by MPI rank 0 of the given communicator only, and thus only MPI rank 0 needs to provide a valid file pointer.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>fp</strong> – file pointer used by fread </p></li>
|
||
<li><p><strong>nlines</strong> – number of lines to be read </p></li>
|
||
<li><p><strong>nmax</strong> – maximum length of a single line </p></li>
|
||
<li><p><strong>buffer</strong> – buffer for storing the data. </p></li>
|
||
<li><p><strong>me</strong> – MPI rank of calling process in MPI communicator </p></li>
|
||
<li><p><strong>comm</strong> – MPI communicator for broadcast </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>1 if the read was short, 0 if read was successful </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="string-to-number-conversions-with-validity-check">
|
||
<h2><span class="section-number">4.15.2. </span>String to number conversions with validity check<a class="headerlink" href="#string-to-number-conversions-with-validity-check" title="Link to this heading"></a></h2>
|
||
<p>These functions should be used to convert strings to numbers. They are
|
||
are strongly preferred over C library calls like <code class="docutils literal notranslate"><span class="pre">atoi()</span></code> or
|
||
<code class="docutils literal notranslate"><span class="pre">atof()</span></code> since they check if the <strong>entire</strong> string is a valid
|
||
(floating-point or integer) number, and will error out instead of
|
||
silently returning the result of a partial conversion or zero in cases
|
||
where the string is not a valid number. This behavior improves
|
||
detecting typos or issues when processing input files.</p>
|
||
<p>Similarly the <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils7logicalEPKciPKcbP6LAMMPS" title="LAMMPS_NS::utils::logical"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::logical()</span></code></a> function
|
||
will convert a string into a boolean and will only accept certain words.</p>
|
||
<p>The <em>do_abort</em> flag should be set to <code class="docutils literal notranslate"><span class="pre">true</span></code> in case this function
|
||
is called only on a single MPI rank, as that will then trigger the
|
||
a call to <code class="docutils literal notranslate"><span class="pre">Error::one()</span></code> for errors instead of <code class="docutils literal notranslate"><span class="pre">Error::all()</span></code>
|
||
and avoids a “hanging” calculation when run in parallel.</p>
|
||
<p>Please also see <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils10is_integerERKNSt6stringE" title="LAMMPS_NS::utils::is_integer"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::is_integer()</span></code></a>
|
||
and <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils9is_doubleERKNSt6stringE" title="LAMMPS_NS::utils::is_double"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::is_double()</span></code></a> for testing
|
||
strings for compliance without conversion.</p>
|
||
<hr class="docutils" />
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7numericEPKciRKNSt6stringEbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7numericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils7numericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="LAMMPS_NS::utils::numeric__cCP.i.ssCR.b.LAMMPSP"></span><span class="target" id="utils_8h_1a68ccfc10e677337b215ccd51363a03aa"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">numeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7numericEPKciRKNSt6stringEbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a string to a floating point number while checking if it is a valid floating point or integer number</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>double precision floating point number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7numericEPKciPKcbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7numericEPKciPKcbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils7numericEPKciPKcbP6LAMMPS"></span><span id="LAMMPS_NS::utils::numeric__cCP.i.cCP.b.LAMMPSP"></span><span class="target" id="utils_8h_1a503fd271ff7cf07725ad0b03b6d7f762"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">numeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7numericEPKciPKcbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>double precision floating point number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8inumericEPKciRKNSt6stringEbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8inumericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils8inumericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="LAMMPS_NS::utils::inumeric__cCP.i.ssCR.b.LAMMPSP"></span><span class="target" id="utils_8h_1a72a1fc411c4fea8f116157d2deb9ecb0"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">inumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8inumericEPKciRKNSt6stringEbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a string to an integer number while checking if it is a valid integer number (regular int)</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>integer number (regular int) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8inumericEPKciPKcbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8inumericEPKciPKcbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils8inumericEPKciPKcbP6LAMMPS"></span><span id="LAMMPS_NS::utils::inumeric__cCP.i.cCP.b.LAMMPSP"></span><span class="target" id="utils_8h_1a0fa1caaa9b4c196fb960712e6f2dfe5d"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">inumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8inumericEPKciPKcbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>double precision floating point number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8bnumericEPKciRKNSt6stringEbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8bnumericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils8bnumericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="LAMMPS_NS::utils::bnumeric__cCP.i.ssCR.b.LAMMPSP"></span><span class="target" id="utils_8h_1aa2fc5058efa5708a27f9f755f3b1e405"></span><span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">bnumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8bnumericEPKciRKNSt6stringEbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a string to an integer number while checking if it is a valid integer number (bigint)</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>integer number (bigint) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8bnumericEPKciPKcbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8bnumericEPKciPKcbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils8bnumericEPKciPKcbP6LAMMPS"></span><span id="LAMMPS_NS::utils::bnumeric__cCP.i.cCP.b.LAMMPSP"></span><span class="target" id="utils_8h_1af773a99c24a68d2055c9116ae1835f0a"></span><span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">bnumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8bnumericEPKciPKcbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>double precision floating point number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8tnumericEPKciRKNSt6stringEbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8tnumericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils8tnumericEPKciRKNSt6stringEbP6LAMMPS"></span><span id="LAMMPS_NS::utils::tnumeric__cCP.i.ssCR.b.LAMMPSP"></span><span class="target" id="utils_8h_1a64a163aaea54730784f7c1797369f106"></span><span class="n"><span class="pre">tagint</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">tnumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8tnumericEPKciRKNSt6stringEbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a string to an integer number while checking if it is a valid integer number (tagint)</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>integer number (tagint) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8tnumericEPKciPKcbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8tnumericEPKciPKcbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils8tnumericEPKciPKcbP6LAMMPS"></span><span id="LAMMPS_NS::utils::tnumeric__cCP.i.cCP.b.LAMMPSP"></span><span class="target" id="utils_8h_1a4e8b8a6816b717518c30fd561e6e42fa"></span><span class="n"><span class="pre">tagint</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">tnumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8tnumericEPKciPKcbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to number </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>double precision floating point number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7logicalEPKciRKNSt6stringEbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7logicalEPKciRKNSt6stringEbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils7logicalEPKciRKNSt6stringEbP6LAMMPS"></span><span id="LAMMPS_NS::utils::logical__cCP.i.ssCR.b.LAMMPSP"></span><span class="target" id="utils_8h_1a57df85d91e1593d0893945852f26eb12"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">logical</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7logicalEPKciRKNSt6stringEbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a string to a boolean while checking whether it is a valid boolean term. Valid terms are ‘yes’, ‘no’, ‘true’, ‘false’, ‘on’, ‘off’, and ‘1’, ‘0’. Only lower case is accepted.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to logical </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>1 if string resolves to “true”, otherwise 0 </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7logicalEPKciPKcbP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7logicalEPKciPKcbP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils7logicalEPKciPKcbP6LAMMPS"></span><span id="LAMMPS_NS::utils::logical__cCP.i.cCP.b.LAMMPSP"></span><span class="target" id="utils_8h_1ae01f31ea9af04975dcdb062b3b340c2e"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">logical</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">do_abort</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7logicalEPKciPKcbP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be converted to logical </p></li>
|
||
<li><p><strong>do_abort</strong> – determines whether to call Error::one() or Error::all() </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>1 if string resolves to “true”, otherwise 0 </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="string-processing">
|
||
<h2><span class="section-number">4.15.3. </span>String processing<a class="headerlink" href="#string-processing" title="Link to this heading"></a></h2>
|
||
<p>The following are functions to help with processing strings
|
||
and parsing files or arguments.</p>
|
||
<hr class="docutils" />
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils6strdupERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils6strdupERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils6strdupERKNSt6stringE"></span><span id="LAMMPS_NS::utils::strdup__ssCR"></span><span class="target" id="utils_8h_1a2a9f5a378d6155ae527b04b419fbd3e5"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">strdup</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils6strdupERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Make C-style copy of string in new storage</p>
|
||
<p>This allocates a storage buffer and copies the C-style or C++ style string into it. The buffer is allocated with “new” and thus needs to be deallocated with “delete[]”.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>text</strong> – string that should be copied </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>new buffer with copy of string </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils9lowercaseERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils9lowercaseERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils9lowercaseERKNSt6stringE"></span><span id="LAMMPS_NS::utils::lowercase__ssCR"></span><span class="target" id="utils_8h_1aa27f09f6c641f8b4c2de6903006d10a2"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">lowercase</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">line</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils9lowercaseERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert string to lowercase</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>line</strong> – string that should be converted </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>new string with all lowercase characters </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils9uppercaseERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils9uppercaseERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils9uppercaseERKNSt6stringE"></span><span id="LAMMPS_NS::utils::uppercase__ssCR"></span><span class="target" id="utils_8h_1a985e66e0bdcd8f73d1ee6a477f9ddc2a"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">uppercase</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">line</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils9uppercaseERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert string to uppercase</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>line</strong> – string that should be converted </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>new string with all uppercase characters </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils4trimERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils4trimERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils4trimERKNSt6stringE"></span><span id="LAMMPS_NS::utils::trim__ssCR"></span><span class="target" id="utils_8h_1a2eaed9f7998793904b0953fe0d9bbf6a"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">trim</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">line</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils4trimERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Trim leading and trailing whitespace. Like TRIM() in Fortran.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>line</strong> – string that should be trimmed </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>new string without whitespace (string) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils12trim_commentERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils12trim_commentERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils12trim_commentERKNSt6stringE"></span><span id="LAMMPS_NS::utils::trim_comment__ssCR"></span><span class="target" id="utils_8h_1ae197fb8181a875095b3dbc0f1e2cdf2d"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">trim_comment</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">line</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils12trim_commentERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return string with anything from the first ‘#’ character onward removed</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>line</strong> – string that should be trimmed </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>new string without comment (string) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils18strip_style_suffixERKNSt6stringEP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils18strip_style_suffixERKNSt6stringEP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils18strip_style_suffixERKNSt6stringEP6LAMMPS"></span><span id="LAMMPS_NS::utils::strip_style_suffix__ssCR.LAMMPSP"></span><span class="target" id="utils_8h_1ab59c3628bad8784f2df865818395686a"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">strip_style_suffix</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">style</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils18strip_style_suffixERKNSt6stringEP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Remove style suffix from string if suffix flag is active</p>
|
||
<p><p>This will try to undo the effect from using the <a class="reference internal" href="suffix.html"><span class="doc">suffix command</span></a>
|
||
or the <em>-suffix/-sf</em> command-line flag and return correspondingly modified string.</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span> \param style string of style name
|
||
\param lmp pointer to the LAMMPS class (has suffix_flag and suffix strings)
|
||
\return processed string
|
||
</pre></div>
|
||
</div>
|
||
</p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils10star_substERKNSt6stringE6biginti">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils10star_substERKNSt6stringE6biginti"></span><span id="_CPPv2N9LAMMPS_NS5utils10star_substERKNSt6stringE6biginti"></span><span id="LAMMPS_NS::utils::star_subst__ssCR.bigint.i"></span><span class="target" id="utils_8h_1a36e52b4e7c0e6b89dded52d86413c11d"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">star_subst</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span>, <span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">step</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">pad</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils10star_substERKNSt6stringE6biginti" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Replace first ‘*’ character in a string with a number, optionally zero-padded</p>
|
||
<p>If there is no ‘*’ character in the string, return the original string. If the number requires more characters than the value of the <em>pad</em> argument, do not add zeros; otherwise add as many zeroes as needed to the left to make the the number representation <em>pad</em> characters wide.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>name</strong> – string with file containing a ‘*’ (or not) </p></li>
|
||
<li><p><strong>step</strong> – step number to replace the (first) ‘*’ </p></li>
|
||
<li><p><strong>pad</strong> – zero-padding (may be zero) </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>processed string </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8has_utf8ERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8has_utf8ERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils8has_utf8ERKNSt6stringE"></span><span id="LAMMPS_NS::utils::has_utf8__ssCR"></span><span class="target" id="utils_8h_1a5cad02698eb9150f24cef34c476681cd"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">has_utf8</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">line</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8has_utf8ERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Check if a string will likely have UTF-8 encoded characters</p>
|
||
<p>UTF-8 uses the 7-bit standard ASCII table for the first 127 characters and all other characters are encoded as multiple bytes. For the multi-byte characters the first byte has either the highest two, three, or four bits set followed by a zero bit and followed by one, two, or three more bytes, respectively, where the highest bit is set and the second highest bit set to 0. The remaining bits combined are the character code, which is thus limited to 21-bits.</p>
|
||
<p>For the sake of efficiency this test only checks if a character in the string has the highest bit set and thus is very likely an UTF-8 character. It will not be able to tell this this is a valid UTF-8 character or whether it is a 2-byte, 3-byte, or 4-byte character.</p>
|
||
<p><p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils10utf8_substERKNSt6stringE" title="LAMMPS_NS::utils::utf8_subst"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::utf8_subst()</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>line</strong> – string that should be checked </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true if string contains UTF-8 encoded characters (bool) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils10utf8_substERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils10utf8_substERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils10utf8_substERKNSt6stringE"></span><span id="LAMMPS_NS::utils::utf8_subst__ssCR"></span><span class="target" id="utils_8h_1a6ab67644ed865096c60e1fd456a52bd4"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">utf8_subst</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">line</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils10utf8_substERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Replace known UTF-8 characters with ASCII equivalents</p>
|
||
<p><p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils8has_utf8ERKNSt6stringE" title="LAMMPS_NS::utils::has_utf8"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::has_utf8()</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>line</strong> – string that should be converted </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>new string with ascii replacements (string) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11count_wordsEPKc">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11count_wordsEPKc"></span><span id="_CPPv2N9LAMMPS_NS5utils11count_wordsEPKc"></span><span id="LAMMPS_NS::utils::count_words__cCP"></span><span class="target" id="utils_8h_1a8cda2fde7eb5a65ed3f071ed17f42054"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">count_words</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">text</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11count_wordsEPKc" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Count words in C-string, ignore any whitespace matching “ \t\r\n\f”</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>text</strong> – string that should be searched </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>number of words found </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11count_wordsERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11count_wordsERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils11count_wordsERKNSt6stringE"></span><span id="LAMMPS_NS::utils::count_words__ssCR"></span><span class="target" id="utils_8h_1ab469ccad212a812ee2f67727307509ee"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">count_words</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11count_wordsERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Count words in string, ignore any whitespace matching “ \t\r\n\f”</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>text</strong> – string that should be searched </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>number of words found </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11count_wordsERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11count_wordsERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils11count_wordsERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::utils::count_words__ssCR.ssCR"></span><span class="target" id="utils_8h_1a31175af2f2305fea6e26a2f780e0a491"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">count_words</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">separators</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11count_wordsERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Count words in string with custom choice of separating characters</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>text</strong> – string that should be searched </p></li>
|
||
<li><p><strong>separators</strong> – string containing characters that will be treated as whitespace </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>number of words found </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils20trim_and_count_wordsERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils20trim_and_count_wordsERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils20trim_and_count_wordsERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::utils::trim_and_count_words__ssCR.ssCR"></span><span class="target" id="utils_8h_1af92e41728a60e9d949fa37e68f132178"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">trim_and_count_words</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">separators</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">"</span> <span class="pre">\t\r\n\f"</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils20trim_and_count_wordsERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Count words in a single line, trim anything from ‘#’ onward</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>text</strong> – string that should be trimmed and searched </p></li>
|
||
<li><p><strong>separators</strong> – string containing characters that will be treated as whitespace </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>number of words found </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils10join_wordsERKNSt6vectorINSt6stringEEERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils10join_wordsERKNSt6vectorINSt6stringEEERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils10join_wordsERKNSt6vectorINSt6stringEEERKNSt6stringE"></span><span id="LAMMPS_NS::utils::join_words__std::vector:ss:CR.ssCR"></span><span class="target" id="utils_8h_1a52b303c232166990f27299fb49b19ccb"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">join_words</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">words</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">sep</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils10join_wordsERKNSt6vectorINSt6stringEEERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Take list of words and join them with a given separator text.</p>
|
||
<p>This is the inverse operation of what the split_words() function Tokenizer classes do.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>words</strong> – STL vector with strings </p></li>
|
||
<li><p><strong>sep</strong> – separator string (may be empty) </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>string with the concatenated words and separators </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11split_wordsERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11split_wordsERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils11split_wordsERKNSt6stringE"></span><span id="LAMMPS_NS::utils::split_words__ssCR"></span><span class="target" id="utils_8h_1ac6b258d9949ba630b8383fa857f9bbb9"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">split_words</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11split_wordsERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Take text and split into non-whitespace words.</p>
|
||
<p>This can handle strings with single and double quotes, escaped quotes, and escaped codes within quotes, but due to using an STL container and STL strings is rather slow because of making copies. Designed for parsing command-lines and similar text and not for time critical processing. Use a tokenizer class if performance matters.</p>
|
||
<p><p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS9TokenizerE" title="LAMMPS_NS::Tokenizer"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">Tokenizer</span></code></a>, <a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="LAMMPS_NS::ValueTokenizer"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">ValueTokenizer</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>text</strong> – string that should be split </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>STL vector with the words </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11split_linesERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11split_linesERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils11split_linesERKNSt6stringE"></span><span id="LAMMPS_NS::utils::split_lines__ssCR"></span><span class="target" id="utils_8h_1aa1a7c146c8809600ba053e45c914e84e"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">split_lines</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11split_linesERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Take multi-line text and split into lines</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>text</strong> – string that should be split </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>STL vector with the lines </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8strmatchERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8strmatchERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils8strmatchERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::utils::strmatch__ssCR.ssCR"></span><span class="target" id="utils_8h_1a3a2003eb8f17075d799ecf645e4f2c30"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">strmatch</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">pattern</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8strmatchERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Match text against a simplified regex pattern</p>
|
||
<p>
|
||
More flexible and specific matching of a string against a pattern. This function is supposed to be a more safe, more specific and simple to use API to find pattern matches. The purpose is to replace uses of either strncmp() or strstr() in the code base to find sub-strings safely. With strncmp() finding prefixes, the number of characters to match must be counted, which can lead to errors, while using “^pattern” will do the same with less problems. Matching for suffixes using strstr() is not as specific as ‘pattern$’, and complex matches, e.g. “^rigid.*\/small.*”, to match all small body optimized rigid fixes require only one test.</p>
|
||
<p>The use of std::string arguments allows for simple concatenation even with char * type variables. Example: utils::strmatch(text, std::string(“^”) + charptr) </p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>text</strong> – the text to be matched against the pattern </p></li>
|
||
<li><p><strong>pattern</strong> – the search pattern, which may contain regexp markers </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true if the pattern matches, false if not</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7strfindERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7strfindERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils7strfindERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::utils::strfind__ssCR.ssCR"></span><span class="target" id="utils_8h_1a0fc913e925ac5ad63addfae419332e31"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">strfind</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">text</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">pattern</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7strfindERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Find sub-string that matches a simplified regex pattern</p>
|
||
<p>
|
||
This function is a companion function to utils::strmatch(). Arguments and logic is the same, but instead of a boolean, it returns the sub-string that matches the regex pattern. There can be only one match. This can be used as a more flexible alternative to strstr(). </p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>text</strong> – the text to be matched against the pattern </p></li>
|
||
<li><p><strong>pattern</strong> – the search pattern, which may contain regexp markers </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>the string that matches the pattern or an empty one</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils10is_integerERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils10is_integerERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils10is_integerERKNSt6stringE"></span><span id="LAMMPS_NS::utils::is_integer__ssCR"></span><span class="target" id="utils_8h_1a66b3c703e53c70f60ba745a557cace67"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">is_integer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils10is_integerERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Check if string can be converted to valid integer</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – string that should be checked </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true, if string contains valid a integer, false otherwise </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils9is_doubleERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils9is_doubleERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils9is_doubleERKNSt6stringE"></span><span id="LAMMPS_NS::utils::is_double__ssCR"></span><span class="target" id="utils_8h_1a3f130082bbb981e0253f32bc46c1b3b3"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">is_double</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils9is_doubleERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Check if string can be converted to valid floating-point number</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – string that should be checked </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true, if string contains valid number, false otherwise </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils5is_idERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils5is_idERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils5is_idERKNSt6stringE"></span><span id="LAMMPS_NS::utils::is_id__ssCR"></span><span class="target" id="utils_8h_1a8b19cdd3cde5fe93a7b5f87c3271e117"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">is_id</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils5is_idERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Check if string is a valid ID ID strings may contain only letters, numbers, and underscores.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – string that should be checked </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true, if string contains valid id, false otherwise </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7is_typeERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7is_typeERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils7is_typeERKNSt6stringE"></span><span id="LAMMPS_NS::utils::is_type__ssCR"></span><span class="target" id="utils_8h_1adf45c3878dd1d69dc6a14887244b5f36"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">is_type</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7is_typeERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Check if string is a valid type label, or numeric type, or numeric type range. Numeric type or type range may only contain digits or the ‘*’ character. Type label strings may not contain a digit, or a ‘*’, or a ‘#’ character as the first character to distinguish them from comments and numeric types or type ranges. They also may not contain any whitespace. If the string is a valid numeric type or type range the function returns 0, if it is a valid type label the function returns 1, otherwise it returns -1.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – string that should be checked </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>0, 1, or -1, depending on whether the string is valid numeric type, valid type label or neither, respectively </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="potential-file-functions">
|
||
<h2><span class="section-number">4.15.4. </span>Potential file functions<a class="headerlink" href="#potential-file-functions" title="Link to this heading"></a></h2>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils23get_potential_file_pathERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils23get_potential_file_pathERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils23get_potential_file_pathERKNSt6stringE"></span><span id="LAMMPS_NS::utils::get_potential_file_path__ssCR"></span><span class="target" id="utils_8h_1a54601c14224556c45ed863cb95e8d49c"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">get_potential_file_path</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">path</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils23get_potential_file_pathERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Determine full path of potential file. If file is not found in current directory, search directories listed in LAMMPS_POTENTIALS environment variable</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>path</strong> – file path </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>full path to potential file </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils18get_potential_dateERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils18get_potential_dateERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils18get_potential_dateERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::utils::get_potential_date__ssCR.ssCR"></span><span class="target" id="utils_8h_1a86fd64c9c2c2183daada07c001e91392"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">get_potential_date</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">path</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">potential_name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils18get_potential_dateERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read potential file and return DATE field if it is present</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>path</strong> – file path </p></li>
|
||
<li><p><strong>potential_name</strong> – name of potential that is being read </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>DATE field if present </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils19get_potential_unitsERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils19get_potential_unitsERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils19get_potential_unitsERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::utils::get_potential_units__ssCR.ssCR"></span><span class="target" id="utils_8h_1ab8b096aefd75e4cef0162f113b800c2e"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">get_potential_units</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">path</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">potential_name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils19get_potential_unitsERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read potential file and return UNITS field if it is present</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>path</strong> – file path </p></li>
|
||
<li><p><strong>potential_name</strong> – name of potential that is being read </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>UNITS field if present </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils25get_supported_conversionsEKi">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils25get_supported_conversionsEKi"></span><span id="_CPPv2N9LAMMPS_NS5utils25get_supported_conversionsEKi"></span><span id="LAMMPS_NS::utils::get_supported_conversions__iC"></span><span class="target" id="utils_8h_1a4d70c1d4e44dad6d82bb7fb643adb095"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">get_supported_conversions</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">property</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils25get_supported_conversionsEKi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return bitmask of available conversion factors for a given property</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>property</strong> – property to be converted </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>bitmask indicating available conversions </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils21get_conversion_factorEKiKi">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils21get_conversion_factorEKiKi"></span><span id="_CPPv2N9LAMMPS_NS5utils21get_conversion_factorEKiKi"></span><span id="LAMMPS_NS::utils::get_conversion_factor__iC.iC"></span><span class="target" id="utils_8h_1ae069d34c47dc4eeb168de963e592f5ed"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">get_conversion_factor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">property</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">conversion</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils21get_conversion_factorEKiKi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return unit conversion factor for given property and selected from/to units</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>property</strong> – property to be converted </p></li>
|
||
<li><p><strong>conversion</strong> – constant indicating the conversion </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>conversion factor </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils14open_potentialERKNSt6stringEP6LAMMPSPi">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils14open_potentialERKNSt6stringEP6LAMMPSPi"></span><span id="_CPPv2N9LAMMPS_NS5utils14open_potentialERKNSt6stringEP6LAMMPSPi"></span><span id="LAMMPS_NS::utils::open_potential__ssCR.LAMMPSP.iP"></span><span class="target" id="utils_8h_1a1b92528e9bbdff202464fded75539b84"></span><span class="n"><span class="pre">FILE</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">open_potential</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">auto_convert</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils14open_potentialERKNSt6stringEP6LAMMPSPi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Open a potential file as specified by <em>name</em></p>
|
||
<p>If opening the file directly fails, the function will search for it in the list of folder pointed to by the environment variable <code class="docutils literal notranslate"><span class="pre">LAMMPS_POTENTIALS</span></code> (if it is set).</p>
|
||
<p>If the potential file has a <code class="docutils literal notranslate"><span class="pre">UNITS</span></code> tag in the first line, the tag’s value is compared to the current unit style setting. The behavior of the function then depends on the value of the <em>auto_convert</em> parameter. If it is a null pointer, then the unit values must match or else the open will fail with an error. Otherwise the bitmask that <em>auto_convert</em> points to is used check for compatibility with possible automatic conversions by the calling function. If compatible, the bitmask is set to the required conversion or <code class="docutils literal notranslate"><span class="pre">utils::NOCONVERT</span></code>.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>name</strong> – file- or pathname of the potential file </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
<li><p><strong>auto_convert</strong> – pointer to unit conversion bitmask or <code class="docutils literal notranslate"><span class="pre">nullptr</span></code></p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>FILE pointer of the opened potential file or <code class="docutils literal notranslate"><span class="pre">nullptr</span></code></p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="argument-processing">
|
||
<h2><span class="section-number">4.15.5. </span>Argument processing<a class="headerlink" href="#argument-processing" title="Link to this heading"></a></h2>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4I0EN9LAMMPS_NS5utils6boundsEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error">
|
||
<span id="_CPPv3I0EN9LAMMPS_NS5utils6boundsEPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error"></span><span id="_CPPv2I0EN9LAMMPS_NS5utils6boundsEPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TYPE</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="utils_8h_1aec32e4cae8ced7029e6f162a7442bcf9"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">bounds</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nmin</span></span>, <span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nmax</span></span>, <a class="reference internal" href="#_CPPv4I0EN9LAMMPS_NS5utils6boundsEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error" title="LAMMPS_NS::utils::bounds::TYPE"><span class="n"><span class="pre">TYPE</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nlo</span></span>, <a class="reference internal" href="#_CPPv4I0EN9LAMMPS_NS5utils6boundsEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error" title="LAMMPS_NS::utils::bounds::TYPE"><span class="n"><span class="pre">TYPE</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nhi</span></span>, <span class="n"><span class="pre">Error</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">error</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN9LAMMPS_NS5utils6boundsEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Compute index bounds derived from a string with a possible wildcard</p>
|
||
<p>This functions processes the string in <em>str</em> and set the values of <em>nlo</em> and <em>nhi</em> according to the following five cases:</p>
|
||
<p><ul class="simple">
|
||
<li><p>a single number, i: nlo = i; nhi = i;</p></li>
|
||
<li><p>a single asterisk, *: nlo = nmin; nhi = nmax;</p></li>
|
||
<li><p>a single number followed by an asterisk, i*: nlo = i; nhi = nmax;</p></li>
|
||
<li><p>a single asterisk followed by a number, *i: nlo = nmin; nhi = i;</p></li>
|
||
<li><p>two numbers with an asterisk in between. i*j: nlo = i; nhi = j;</p></li>
|
||
</ul>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – string to be processed </p></li>
|
||
<li><p><strong>nmin</strong> – smallest possible lower bound </p></li>
|
||
<li><p><strong>nmax</strong> – largest allowed upper bound </p></li>
|
||
<li><p><strong>nlo</strong> – lower bound </p></li>
|
||
<li><p><strong>nhi</strong> – upper bound </p></li>
|
||
<li><p><strong>error</strong> – pointer to Error class for out-of-bounds messages </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4I0EN9LAMMPS_NS5utils16bounds_typelabelEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP6LAMMPSi">
|
||
<span id="_CPPv3I0EN9LAMMPS_NS5utils16bounds_typelabelEPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP6LAMMPSi"></span><span id="_CPPv2I0EN9LAMMPS_NS5utils16bounds_typelabelEPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP6LAMMPSi"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TYPE</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="utils_8h_1a0591b9a07cdbb8d72183972157e7ff02"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">bounds_typelabel</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nmin</span></span>, <span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nmax</span></span>, <a class="reference internal" href="#_CPPv4I0EN9LAMMPS_NS5utils16bounds_typelabelEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP6LAMMPSi" title="LAMMPS_NS::utils::bounds_typelabel::TYPE"><span class="n"><span class="pre">TYPE</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nlo</span></span>, <a class="reference internal" href="#_CPPv4I0EN9LAMMPS_NS5utils16bounds_typelabelEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP6LAMMPSi" title="LAMMPS_NS::utils::bounds_typelabel::TYPE"><span class="n"><span class="pre">TYPE</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nhi</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">mode</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN9LAMMPS_NS5utils16bounds_typelabelEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP6LAMMPSi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Same as utils::bounds(), but string may be a typelabel</p>
|
||
<p><p><div class="versionadded">
|
||
<p><span class="versionmodified added">Added in version 27June2024.</span></p>
|
||
</div>
|
||
<p>This functions adds the following case to <a class="reference internal" href="#_CPPv4I0EN9LAMMPS_NS5utils6boundsEvPKciRKNSt6stringE6bigint6bigintR4TYPER4TYPEP5Error" title="LAMMPS_NS::utils::bounds"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::bounds()</span></code></a>:</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>a single type label, typestr: nlo = nhi = label2type(typestr)</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span> \param file name of source file for error message
|
||
\param line line number in source file for error message
|
||
\param str string to be processed
|
||
\param nmin smallest possible lower bound
|
||
\param nmax largest allowed upper bound
|
||
\param nlo lower bound
|
||
\param nhi upper bound
|
||
\param lmp pointer to top-level LAMMPS class instance
|
||
\param mode select labelmap using constants from Atom class
|
||
</pre></div>
|
||
</div>
|
||
</p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11expand_argsEPKciiPPciRPPcP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11expand_argsEPKciiPPciRPPcP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils11expand_argsEPKciiPPciRPPcP6LAMMPS"></span><span id="LAMMPS_NS::utils::expand_args__cCP.i.i.cPP.i.cPPR.LAMMPSP"></span><span class="target" id="utils_8h_1a4672127156cfeac7cfb3376dfb7f6ca9"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">expand_args</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">narg</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">arg</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">mode</span></span>, <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">earg</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11expand_argsEPKciiPPciRPPcP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Expand list of arguments when containing fix/compute wildcards</p>
|
||
<p>This function searches the list of arguments in <em>arg</em> for strings of the kind c_ID[*], f_ID[*], v_ID[*], i2_ID[*], d2_ID[*], or c_ID:gname:dname[*] referring to computes, fixes, vector style variables, custom per-atom arrays, or grids, respectively. Any such strings are replaced by one or more strings with the ‘*’ character replaced by the corresponding possible numbers as determined from the fix, compute, variable, property, or grid instance. Unrecognized strings are just copied. If the <em>mode</em> parameter is set to 0, expand global vectors, but not global arrays; if it is set to 1, expand global arrays (by column) but not global vectors.</p>
|
||
<p>If any expansion happens, the earg list and all its strings are new allocations and must be freed explicitly by the caller. Otherwise arg and earg will point to the same address and no explicit de-allocation is needed by the caller.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>narg</strong> – number of arguments in current list </p></li>
|
||
<li><p><strong>arg</strong> – argument list, possibly containing wildcards </p></li>
|
||
<li><p><strong>mode</strong> – select between global vectors(=0) and arrays (=1) </p></li>
|
||
<li><p><strong>earg</strong> – new argument list with wildcards expanded </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>number of arguments in expanded list </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils13parse_grid_idEPKciRKNSt6stringEP5Error">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils13parse_grid_idEPKciRKNSt6stringEP5Error"></span><span id="_CPPv2N9LAMMPS_NS5utils13parse_grid_idEPKciRKNSt6stringEP5Error"></span><span id="LAMMPS_NS::utils::parse_grid_id__cCP.i.ssCR.ErrorP"></span><span class="target" id="utils_8h_1a91407dd860f7f2a4fb3fb5c91911f6ca"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">parse_grid_id</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span>, <span class="n"><span class="pre">Error</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">error</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils13parse_grid_idEPKciRKNSt6stringEP5Error" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Parse grid reference into 3 sub-strings</p>
|
||
<p>Format of grid ID reference = id:gname:dname. Return vector with the 3 sub-strings.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>name</strong> – complete grid ID </p></li>
|
||
<li><p><strong>error</strong> – pointer to Error class </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>std::vector<std::string> containing the 3 sub-strings </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11expand_typeEPKciRKNSt6stringEiP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11expand_typeEPKciRKNSt6stringEiP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils11expand_typeEPKciRKNSt6stringEiP6LAMMPS"></span><span id="LAMMPS_NS::utils::expand_type__cCP.i.ssCR.i.LAMMPSP"></span><span class="target" id="utils_8h_1ac69ac30ade492d1a68c14ce5dd92d5bc"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">expand_type</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">mode</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11expand_typeEPKciRKNSt6stringEiP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Expand type label string into its equivalent numeric type</p>
|
||
<p>This function checks if a given string may be a type label and then searches the labelmap type indicated by the <em>mode</em> argument for the corresponding numeric type. If this is found, a copy of the numeric type string is made and returned. Otherwise a null pointer is returned. If a string is returned, the calling code must free it with delete[].</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>str</strong> – type string to be expanded </p></li>
|
||
<li><p><strong>mode</strong> – select labelmap using constants from <a class="reference internal" href="Classes_atom.html#classLAMMPS__NS_1_1Atom"><span class="std std-ref">Atom</span></a> class </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>pointer to expanded string or null pointer </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="convenience-functions">
|
||
<h2><span class="section-number">4.15.6. </span>Convenience functions<a class="headerlink" href="#convenience-functions" title="Link to this heading"></a></h2>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4IDpEN9LAMMPS_NS5utils7logmesgEvP6LAMMPSRKNSt6stringEDpRR4Args">
|
||
<span id="_CPPv3IDpEN9LAMMPS_NS5utils7logmesgEP6LAMMPSRKNSt6stringEDpRR4Args"></span><span id="_CPPv2IDpEN9LAMMPS_NS5utils7logmesgEP6LAMMPSRKNSt6stringEDpRR4Args"></span><span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="sig-name descname"><span class="n"><span class="pre">Args</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="utils_8h_1a293e69d2ef72383ce1e6373c23aab9d4"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">logmesg</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">format</span></span>, <a class="reference internal" href="#_CPPv4IDpEN9LAMMPS_NS5utils7logmesgEvP6LAMMPSRKNSt6stringEDpRR4Args" title="LAMMPS_NS::utils::logmesg::Args"><span class="n"><span class="pre">Args</span></span></a><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">...</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">args</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4IDpEN9LAMMPS_NS5utils7logmesgEvP6LAMMPSRKNSt6stringEDpRR4Args" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Send formatted message to screen and logfile, if available</p>
|
||
<p>This function simplifies the repetitive task of outputting some message to both the screen and/or the log file. The template wrapper with fmtlib format and argument processing allows this function to work similar to <code class="docutils literal notranslate"><span class="pre">fmt::print()</span></code>.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>lmp</strong> – pointer to <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
<li><p><strong>format</strong> – format string of message to be printed </p></li>
|
||
<li><p><strong>args</strong> – arguments to format string </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils7logmesgEP6LAMMPSRKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils7logmesgEP6LAMMPSRKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils7logmesgEP6LAMMPSRKNSt6stringE"></span><span id="LAMMPS_NS::utils::logmesg__LAMMPSP.ssCR"></span><span class="target" id="utils_8h_1a0b5a7272e51011310cc877ba444f9ac7"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">logmesg</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">mesg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils7logmesgEP6LAMMPSRKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>lmp</strong> – pointer to <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
<li><p><strong>mesg</strong> – string with message to be printed </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8errorurlEi">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8errorurlEi"></span><span id="_CPPv2N9LAMMPS_NS5utils8errorurlEi"></span><span id="LAMMPS_NS::utils::errorurl__i"></span><span class="target" id="utils_8h_1a0042d23b4761c1937f4cfebee627cada"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">errorurl</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">errorcode</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8errorurlEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return text redirecting the user to a specific paragraph in the manual</p>
|
||
<p>The <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> manual contains detailed explanations for errors and warnings where a simple error message may not be sufficient. These can be reached through URLs with a numeric code. This function creates the corresponding text to be included into the error message that redirects the user to that URL.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>errorcode</strong> – number pointing to a paragraph in the manual </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils16missing_cmd_argsERKNSt6stringEiRKNSt6stringEP5Error">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils16missing_cmd_argsERKNSt6stringEiRKNSt6stringEP5Error"></span><span id="_CPPv2N9LAMMPS_NS5utils16missing_cmd_argsERKNSt6stringEiRKNSt6stringEP5Error"></span><span id="LAMMPS_NS::utils::missing_cmd_args__ssCR.i.ssCR.ErrorP"></span><span class="target" id="utils_8h_1a9ebdf3470338d3fddf4d0462b440bb8b"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">missing_cmd_args</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">line</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="n"><span class="pre">Error</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">error</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils16missing_cmd_argsERKNSt6stringEiRKNSt6stringEP5Error" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Print error message about missing arguments for command</p>
|
||
<p>This function simplifies the repetitive reporting missing arguments to a command.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>file</strong> – name of source file for error message </p></li>
|
||
<li><p><strong>line</strong> – line number in source file for error message </p></li>
|
||
<li><p><strong>cmd</strong> – name of the failing command </p></li>
|
||
<li><p><strong>error</strong> – pointer to Error class instance (for abort) or nullptr </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils13flush_buffersEP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils13flush_buffersEP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils13flush_buffersEP6LAMMPS"></span><span id="LAMMPS_NS::utils::flush_buffers__LAMMPSP"></span><span class="target" id="utils_8h_1a1721a8d265f9cde71f2c20ac1ba581e5"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">flush_buffers</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils13flush_buffersEP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Flush output buffers</p>
|
||
<p>This function calls fflush() on screen and logfile FILE pointers if available and thus tells the operating system to output all currently buffered data. This is local operation and independent from buffering by a file system or an MPI library. </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils11getsyserrorEv">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils11getsyserrorEv"></span><span id="_CPPv2N9LAMMPS_NS5utils11getsyserrorEv"></span><span id="LAMMPS_NS::utils::getsyserror"></span><span class="target" id="utils_8h_1a59872d3df515856d461cc81f8de6777e"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">getsyserror</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils11getsyserrorEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return a string representing the current system error status</p>
|
||
<p>This is a wrapper around calling strerror(errno).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>error string </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils24check_packages_for_styleERKNSt6stringERKNSt6stringEP6LAMMPS">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils24check_packages_for_styleERKNSt6stringERKNSt6stringEP6LAMMPS"></span><span id="_CPPv2N9LAMMPS_NS5utils24check_packages_for_styleERKNSt6stringERKNSt6stringEP6LAMMPS"></span><span id="LAMMPS_NS::utils::check_packages_for_style__ssCR.ssCR.LAMMPSP"></span><span class="target" id="utils_8h_1a7958600997ce9aecc9c589d6a340b93b"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">check_packages_for_style</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">style</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span>, <a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils24check_packages_for_styleERKNSt6stringERKNSt6stringEP6LAMMPS" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Report if a requested style is in a package or may have a typo</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>style</strong> – type of style that is to be checked for </p></li>
|
||
<li><p><strong>name</strong> – name of style that was not found </p></li>
|
||
<li><p><strong>lmp</strong> – pointer to top-level <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> class instance </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>string usable for error messages </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils16timespec2secondsERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils16timespec2secondsERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils16timespec2secondsERKNSt6stringE"></span><span id="LAMMPS_NS::utils::timespec2seconds__ssCR"></span><span class="target" id="utils_8h_1afd22548fe9c6d4570ffcde59947a1764"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">timespec2seconds</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">timespec</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils16timespec2secondsERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a time string to seconds</p>
|
||
<p>The strings “off” and “unlimited” result in -1</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>timespec</strong> – a string in the following format: ([[HH:]MM:]SS) </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>total in seconds </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils8date2numERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils8date2numERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS5utils8date2numERKNSt6stringE"></span><span id="LAMMPS_NS::utils::date2num__ssCR"></span><span class="target" id="utils_8h_1af07ce9a5537cbc035845686e894f3491"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">date2num</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">date</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils8date2numERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Convert a <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> version date to a number</p>
|
||
<p>This will generate a number YYYYMMDD from a date string (with or without blanks) that is suitable for numerical comparisons, i.e. later dates will generate a larger number.</p>
|
||
<p>The day may or may not have a leading zero, the month is identified by the first 3 letters (so there may be more) and the year may be 2 or 4 digits (the missing 2 digits will be assumed as 20. That is 04 corresponds to 2004).</p>
|
||
<p>No check is made whether the date is valid.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>date</strong> – string in the format (Day Month Year) </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>date code </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils12current_dateEv">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils12current_dateEv"></span><span id="_CPPv2N9LAMMPS_NS5utils12current_dateEv"></span><span id="LAMMPS_NS::utils::current_date"></span><span class="target" id="utils_8h_1a7a7a3c2717c15c16a93621e9e7d0f288"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">current_date</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils12current_dateEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return current date as string</p>
|
||
<p>This will generate a string containing the current date in YYYY-MM-DD format.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>string with current date </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="customized-standard-functions">
|
||
<h2><span class="section-number">4.15.7. </span>Customized standard functions<a class="headerlink" href="#customized-standard-functions" title="Link to this heading"></a></h2>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils13binary_searchEKdKiPKd">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils13binary_searchEKdKiPKd"></span><span id="_CPPv2N9LAMMPS_NS5utils13binary_searchEKdKiPKd"></span><span id="LAMMPS_NS::utils::binary_search__doubleC.iC.doubleCP"></span><span class="target" id="utils_8h_1a57ddd765821bb497c07a157b66725a01"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">binary_search</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">needle</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">haystack</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils13binary_searchEKdKiPKd" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Binary search in a vector of ascending doubles of length N</p>
|
||
<p>If the value is smaller than the smallest value in the vector, 0 is returned. If the value is larger or equal than the largest value in the vector, N-1 is returned. Otherwise the index that satisfies the condition</p>
|
||
<p>haystack[index] <= value < haystack[index+1]</p>
|
||
<p>is returned, i.e. a value from 1 to N-2. Note that if there are tied values in the haystack, always the larger index is returned as only that satisfied the condition.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>needle</strong> – search value for which are are looking for the closest index </p></li>
|
||
<li><p><strong>n</strong> – size of the haystack array </p></li>
|
||
<li><p><strong>haystack</strong> – array with data in ascending order. </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>index of value in the haystack array smaller or equal to needle </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS5utils10merge_sortEPiiPvPFiiiPvE">
|
||
<span id="_CPPv3N9LAMMPS_NS5utils10merge_sortEPiiPvPFiiiPvE"></span><span id="_CPPv2N9LAMMPS_NS5utils10merge_sortEPiiPvPFiiiPvE"></span><span class="target" id="utils_8h_1af677fa53e7e5713dfb0fa6d6c3c6f81e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">utils</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">merge_sort</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">index</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">num</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ptr</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">comp</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">int</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS5utils10merge_sortEPiiPvPFiiiPvE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Custom merge sort implementation</p>
|
||
<p>This function provides a custom upward hybrid merge sort implementation with support to pass an opaque pointer to the comparison function, e.g. for access to class members. This avoids having to use global variables. For improved performance, it uses an in-place insertion sort on initial chunks of up to 64 elements and switches to merge sort from then on.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>index</strong> – Array with indices to be sorted </p></li>
|
||
<li><p><strong>num</strong> – Length of the index array </p></li>
|
||
<li><p><strong>ptr</strong> – Pointer to opaque object passed to comparison function </p></li>
|
||
<li><p><strong>comp</strong> – Pointer to comparison function </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="special-math-functions">
|
||
<h1><span class="section-number">4.16. </span>Special Math functions<a class="headerlink" href="#special-math-functions" title="Link to this heading"></a></h1>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">MathSpecial</span></code> namespace implements a selection of custom and optimized
|
||
mathematical functions for a variety of applications.</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial9factorialEKi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial9factorialEKi"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial9factorialEKi"></span><span id="LAMMPS_NS::MathSpecial::factorial__iC"></span><span class="target" id="math__special_8h_1a9a6be409a4fa9407a40b40ab6d226a8f"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">factorial</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial9factorialEKi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast tabulated factorial function</p>
|
||
<p>This function looks up pre-computed factorial values for arguments of n = 0 to a maximum of 167, which is the maximal value representable by a double precision floating point number. For other values of n a NaN value is returned.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>n</strong> – argument (valid: 0 <= n <= 167) </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>value of n! as double precision number or NaN </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial8exp2_x86Ed">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial8exp2_x86Ed"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial8exp2_x86Ed"></span><span id="LAMMPS_NS::MathSpecial::exp2_x86__double"></span><span class="target" id="math__special_8h_1a46561242143bc684f0307a2260686505"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">exp2_x86</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">x</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial8exp2_x86Ed" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast implementation of 2^x without argument checks for little endian CPUs</p>
|
||
<p>This function implements an optimized version of pow(2.0, x) that does not check for valid arguments and thus may only be used where arguments are well behaved. The implementation makes assumptions about the layout of double precision floating point numbers in memory and thus will only work on little endian CPUs. If little endian cannot be safely detected, the result of calling pow(2.0, x) will be returned. This function also is the basis for the fast exponential fm_exp(x).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>x</strong> – argument </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>value of 2^x as double precision number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial6fm_expEd">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial6fm_expEd"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial6fm_expEd"></span><span id="LAMMPS_NS::MathSpecial::fm_exp__double"></span><span class="target" id="math__special_8h_1a918af8d4a779a4da394bf9cc4a92d628"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">fm_exp</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">x</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial6fm_expEd" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast implementation of exp(x) for little endian CPUs</p>
|
||
<p>This function implements an optimized version of exp(x) for little endian CPUs. It calls the exp2_x86(x) function with a suitable prefactor to x to return exp(x). The implementation makes assumptions about the layout of double precision floating point numbers in memory and thus will only work on little endian CPUs. If little endian cannot be safely detected, the result of calling the exp(x) implementation in the standard math library will be returned.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>x</strong> – argument </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>value of e^x as double precision number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial8my_erfcxEKd">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial8my_erfcxEKd"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial8my_erfcxEKd"></span><span id="LAMMPS_NS::MathSpecial::my_erfcx__doubleC"></span><span class="target" id="math__special_8h_1a4f48d97dbd22584d59e064996cbd0694"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">my_erfcx</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">x</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial8my_erfcxEKd" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast scaled error function complement exp(x*x)*erfc(x) for coul/long styles</p>
|
||
<p>This is a portable fast implementation of exp(x*x)*erfc(x) that can be used in coul/long pair styles as a replacement for the polynomial expansion that is/was widely used. Unlike the polynomial expansion, that is only accurate at the level of single precision floating point it provides full double precision accuracy, but at comparable speed (unlike the erfc() implementation shipped with GNU standard math library).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>x</strong> – argument </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>value of e^(x*x)*erfc(x) </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial6expmsqEd">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial6expmsqEd"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial6expmsqEd"></span><span id="LAMMPS_NS::MathSpecial::expmsq__double"></span><span class="target" id="math__special_8h_1a7ccf069f22f9a4e9dfeed7e04f3ca447"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">expmsq</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">x</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial6expmsqEd" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast implementation of exp(-x*x) for little endian CPUs for coul/long styles</p>
|
||
<p>This function implements an optimized version of exp(-x*x) based on exp2_x86() for use with little endian CPUs. If little endian cannot be safely detected, the result of calling the exp(-x*x) implementation in the standard math library will be returned.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>x</strong> – argument </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>value of e^(-x*x) as double precision number </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial6squareERKd">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial6squareERKd"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial6squareERKd"></span><span id="LAMMPS_NS::MathSpecial::square__doubleCR"></span><span class="target" id="math__special_8h_1aa7dd862a7b7b244516c8ea1de509ee09"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">square</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">x</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial6squareERKd" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast inline version of pow(x, 2.0)</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>x</strong> – argument </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>x*x </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial4cubeERKd">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial4cubeERKd"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial4cubeERKd"></span><span id="LAMMPS_NS::MathSpecial::cube__doubleCR"></span><span class="target" id="math__special_8h_1ac0baf9eac8e92c1431410002ab7e6619"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">cube</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">x</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial4cubeERKd" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Fast inline version of pow(x, 3.0)</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>x</strong> – argument </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>x*x </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial7powsignEKi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial7powsignEKi"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial7powsignEKi"></span><span id="LAMMPS_NS::MathSpecial::powsign__iC"></span><span class="target" id="math__special_8h_1acb0afe1baf4875b3a3fcaba95c88b0a3"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">powsign</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial7powsignEKi" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial6powintERKdKi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial6powintERKdKi"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial6powintERKdKi"></span><span id="LAMMPS_NS::MathSpecial::powint__doubleCR.iC"></span><span class="target" id="math__special_8h_1a1a7436c36200b55ffbfff5159a747964"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">powint</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">x</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial6powintERKdKi" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MathSpecial8powsinxxERKdi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MathSpecial8powsinxxERKdi"></span><span id="_CPPv2N9LAMMPS_NS11MathSpecial8powsinxxERKdi"></span><span id="LAMMPS_NS::MathSpecial::powsinxx__doubleCR.i"></span><span class="target" id="math__special_8h_1a151acd0bdb5ac0eca20cf6de0a9c1a0c"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">LAMMPS_NS</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">MathSpecial</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">powsinxx</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">x</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MathSpecial8powsinxxERKdi" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="tokenizer-classes">
|
||
<h1><span class="section-number">4.17. </span>Tokenizer classes<a class="headerlink" href="#tokenizer-classes" title="Link to this heading"></a></h1>
|
||
<p>The purpose of the tokenizer classes is to simplify the recurring task
|
||
of breaking lines of text down into words and/or numbers.
|
||
Traditionally, LAMMPS code would be using the <code class="docutils literal notranslate"><span class="pre">strtok()</span></code> function from
|
||
the C library for that purpose, but that function has two significant
|
||
disadvantages: 1) it cannot be used concurrently from different LAMMPS
|
||
instances since it stores its status in a global variable and 2) it
|
||
modifies the string that it is processing. These classes were
|
||
implemented to avoid both of these issues and also to reduce the amount
|
||
of code that needs to be written.</p>
|
||
<p>The basic procedure is to create an instance of the tokenizer class with
|
||
the string to be processed as an argument and then do a loop until all
|
||
available tokens are read. The constructor has a default set of
|
||
separator characters, but that can be overridden. The default separators
|
||
are all “whitespace” characters, i.e. the space character, the tabulator
|
||
character, the carriage return character, the linefeed character, and
|
||
the form feed character.</p>
|
||
<div class="literal-block-wrapper docutils container" id="id3">
|
||
<div class="code-block-caption"><span class="caption-text">Tokenizer class example listing entries of the PATH environment variable</span><a class="headerlink" href="#id3" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">"tokenizer.h"</span>
|
||
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><cstdlib></span>
|
||
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><string></span>
|
||
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||
|
||
<span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">LAMMPS_NS</span><span class="p">;</span>
|
||
|
||
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="p">)</span>
|
||
<span class="p">{</span>
|
||
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PATH"</span><span class="p">);</span>
|
||
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">path</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="k">nullptr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">Tokenizer</span><span class="w"> </span><span class="n">p</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="s">":"</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">has_next</span><span class="p">())</span>
|
||
<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Entry: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">next</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<p>Most tokenizer operations cannot fail except for
|
||
<a class="reference internal" href="#_CPPv4N9LAMMPS_NS9Tokenizer4nextEv" title="LAMMPS_NS::Tokenizer::next"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">LAMMPS_NS::Tokenizer::next()</span></code></a> (when used without first
|
||
checking with <a class="reference internal" href="#_CPPv4NK9LAMMPS_NS9Tokenizer8has_nextEv" title="LAMMPS_NS::Tokenizer::has_next"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">LAMMPS_NS::Tokenizer::has_next()</span></code></a>) and
|
||
<a class="reference internal" href="#_CPPv4N9LAMMPS_NS9Tokenizer4skipEi" title="LAMMPS_NS::Tokenizer::skip"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">LAMMPS_NS::Tokenizer::skip()</span></code></a>. In case of failure, the class
|
||
will throw an exception, so you may need to wrap the code using the
|
||
tokenizer into a <code class="docutils literal notranslate"><span class="pre">try</span></code> / <code class="docutils literal notranslate"><span class="pre">catch</span></code> block to handle errors. The
|
||
<a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="LAMMPS_NS::ValueTokenizer"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">LAMMPS_NS::ValueTokenizer</span></code></a> class may also throw an exception
|
||
when a (type of) number is requested as next token that is not
|
||
compatible with the string representing the next word.</p>
|
||
<div class="literal-block-wrapper docutils container" id="id4">
|
||
<div class="code-block-caption"><span class="caption-text">ValueTokenizer class example with exception handling</span><a class="headerlink" href="#id4" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">"tokenizer.h"</span>
|
||
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><cstdlib></span>
|
||
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><string></span>
|
||
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||
|
||
<span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">LAMMPS_NS</span><span class="p">;</span>
|
||
|
||
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="p">)</span>
|
||
<span class="p">{</span>
|
||
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">text</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"1 2 3 4 5 20.0 21 twentytwo 2.3"</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">num1</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="n">num2</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="n">num3</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="n">num4</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
|
||
|
||
<span class="w"> </span><span class="n">ValueTokenizer</span><span class="w"> </span><span class="n">t</span><span class="p">(</span><span class="n">text</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="c1">// read 4 doubles after skipping over 5 numbers</span>
|
||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">skip</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">num4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">TokenizerException</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Reading numbers failed: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Values: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">num4</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<p>This code example should produce the following output:</p>
|
||
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Reading numbers failed: Not a valid floating-point number: 'twentytwo'
|
||
Values: 20 21 0 0
|
||
</pre></div>
|
||
</div>
|
||
<hr class="docutils" />
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9TokenizerE">
|
||
<span id="_CPPv3N9LAMMPS_NS9TokenizerE"></span><span id="_CPPv2N9LAMMPS_NS9TokenizerE"></span><span id="LAMMPS_NS::Tokenizer"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tokenizer</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9TokenizerE" title="Link to this definition"></a><br /></dt>
|
||
<dd><div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9Tokenizer9TokenizerENSt6stringENSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS9Tokenizer9TokenizerENSt6stringENSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS9Tokenizer9TokenizerENSt6stringENSt6stringE"></span><span id="LAMMPS_NS::Tokenizer::Tokenizer__ss.ss"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1a1a572462a4d7e941633c746e21bb7586"></span><span class="sig-name descname"><span class="n"><span class="pre">Tokenizer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">str</span></span>, <span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">separators</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">TOKENIZER_DEFAULT_SEPARATORS</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9Tokenizer9TokenizerENSt6stringENSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Class for splitting text into words</p>
|
||
<p>This tokenizer will break down a string into sub-strings (i.e words) separated by the given separator characters. If the string contains certain known UTF-8 characters they will be replaced by their ASCII equivalents processing the string.</p>
|
||
<p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="LAMMPS_NS::ValueTokenizer"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">ValueTokenizer</span></code></a>, <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils11split_wordsERKNSt6stringE" title="LAMMPS_NS::utils::split_words"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::split_words()</span></code></a>, <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils10utf8_substERKNSt6stringE" title="LAMMPS_NS::utils::utf8_subst"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::utf8_subst()</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>str</strong> – string to be processed </p></li>
|
||
<li><p><strong>_separators</strong> – string with separator characters (default: “ \t\r\n\f”) </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9Tokenizer5resetEv">
|
||
<span id="_CPPv3N9LAMMPS_NS9Tokenizer5resetEv"></span><span id="_CPPv2N9LAMMPS_NS9Tokenizer5resetEv"></span><span id="LAMMPS_NS::Tokenizer::reset"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1ad20897c5c8bd47f5d4005989bead0e55"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">reset</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9Tokenizer5resetEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Re-position the tokenizer state to the first word, i.e. the first non-separator character </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9Tokenizer4skipEi">
|
||
<span id="_CPPv3N9LAMMPS_NS9Tokenizer4skipEi"></span><span id="_CPPv2N9LAMMPS_NS9Tokenizer4skipEi"></span><span id="LAMMPS_NS::Tokenizer::skip__i"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1abda0e6255008b1441f06a62f197da9a7"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">skip</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9Tokenizer4skipEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Skip over a given number of tokens</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>n</strong> – number of tokens to skip over </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS9Tokenizer8has_nextEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS9Tokenizer8has_nextEv"></span><span id="_CPPv2NK9LAMMPS_NS9Tokenizer8has_nextEv"></span><span id="LAMMPS_NS::Tokenizer::has_nextC"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1a5ac70fe9462200eec1fe01b48ea992f3"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">has_next</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS9Tokenizer8has_nextEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Indicate whether more tokens are available</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>true if there are more tokens, false if not </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS9Tokenizer8containsERKNSt6stringE">
|
||
<span id="_CPPv3NK9LAMMPS_NS9Tokenizer8containsERKNSt6stringE"></span><span id="_CPPv2NK9LAMMPS_NS9Tokenizer8containsERKNSt6stringE"></span><span id="LAMMPS_NS::Tokenizer::contains__ssCRC"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1abf5acdb9f865006dd3d41f084403f74f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">contains</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS9Tokenizer8containsERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Search the text to be processed for a sub-string.</p>
|
||
<p>This method does a generic sub-string match.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – string to be searched for </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true if string was found, false if not </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS9Tokenizer7matchesERKNSt6stringE">
|
||
<span id="_CPPv3NK9LAMMPS_NS9Tokenizer7matchesERKNSt6stringE"></span><span id="_CPPv2NK9LAMMPS_NS9Tokenizer7matchesERKNSt6stringE"></span><span id="LAMMPS_NS::Tokenizer::matches__ssCRC"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1a07a6c962ca23635328ffde2dbac74533"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">matches</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS9Tokenizer7matchesERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Search the text to be processed for regular expression match.</p>
|
||
<p>This method matches the current string against a regular expression using
|
||
the <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils8strmatchERKNSt6stringERKNSt6stringE" title="LAMMPS_NS::utils::strmatch"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::strmatch()</span></code></a> function.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – regular expression to be matched against </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true if string was found, false if not </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9Tokenizer4nextEv">
|
||
<span id="_CPPv3N9LAMMPS_NS9Tokenizer4nextEv"></span><span id="_CPPv2N9LAMMPS_NS9Tokenizer4nextEv"></span><span id="LAMMPS_NS::Tokenizer::next"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1afba811f5984f17a43875432cb2845bc3"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9Tokenizer4nextEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve next token.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>string with the next token </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9Tokenizer5countEv">
|
||
<span id="_CPPv3N9LAMMPS_NS9Tokenizer5countEv"></span><span id="_CPPv2N9LAMMPS_NS9Tokenizer5countEv"></span><span id="LAMMPS_NS::Tokenizer::count"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1ad873dc786f051a2c04e32d1541d3702e"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">count</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9Tokenizer5countEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Count number of tokens in text.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>number of counted tokens </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS9Tokenizer9as_vectorEv">
|
||
<span id="_CPPv3N9LAMMPS_NS9Tokenizer9as_vectorEv"></span><span id="_CPPv2N9LAMMPS_NS9Tokenizer9as_vectorEv"></span><span id="LAMMPS_NS::Tokenizer::as_vector"></span><span class="target" id="classLAMMPS__NS_1_1Tokenizer_1abc12e1da3f00c1a120a02b136f0730dd"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">as_vector</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS9Tokenizer9as_vectorEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve the entire text converted to an STL vector of tokens.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>The STL vector </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS18TokenizerExceptionE">
|
||
<span id="_CPPv3N9LAMMPS_NS18TokenizerExceptionE"></span><span id="_CPPv2N9LAMMPS_NS18TokenizerExceptionE"></span><span id="LAMMPS_NS::TokenizerException"></span><span class="target" id="classLAMMPS__NS_1_1TokenizerException"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TokenizerException</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">exception</span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS18TokenizerExceptionE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>General Tokenizer exception class </p>
|
||
<p>Subclassed by <a class="reference internal" href="#classLAMMPS__NS_1_1InvalidFloatException"><span class="std std-ref">InvalidFloatException</span></a>, <a class="reference internal" href="#classLAMMPS__NS_1_1InvalidIntegerException"><span class="std std-ref">InvalidIntegerException</span></a></p>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS18TokenizerException18TokenizerExceptionEv">
|
||
<span id="_CPPv3N9LAMMPS_NS18TokenizerException18TokenizerExceptionEv"></span><span id="_CPPv2N9LAMMPS_NS18TokenizerException18TokenizerExceptionEv"></span><span id="LAMMPS_NS::TokenizerException::TokenizerException"></span><span class="target" id="classLAMMPS__NS_1_1TokenizerException_1a029374723bf07e5d4b7f2716c6546891"></span><span class="sig-name descname"><span class="n"><span class="pre">TokenizerException</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">delete</span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS18TokenizerException18TokenizerExceptionEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>The default constructor is disabled </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS18TokenizerException18TokenizerExceptionERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS18TokenizerException18TokenizerExceptionERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS18TokenizerException18TokenizerExceptionERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::TokenizerException::TokenizerException__ssCR.ssCR"></span><span class="target" id="classLAMMPS__NS_1_1TokenizerException_1afcd938a3385e0b950738c2e24cdbc484"></span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TokenizerException</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">msg</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">token</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS18TokenizerException18TokenizerExceptionERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Thrown during retrieving or skipping tokens</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>msg</strong> – String with error message </p></li>
|
||
<li><p><strong>token</strong> – String of the token or word that caused the error </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS18TokenizerException4whatEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS18TokenizerException4whatEv"></span><span id="_CPPv2NK9LAMMPS_NS18TokenizerException4whatEv"></span><span id="LAMMPS_NS::TokenizerException::whatC"></span><span class="target" id="classLAMMPS__NS_1_1TokenizerException_1aac1c33909e01e1dfc85617cf2477d3eb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">what</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">noexcept</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS18TokenizerException4whatEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve message describing the thrown exception</p>
|
||
<p>This function provides the message that can be retrieved when the corresponding exception is caught.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>String with error message </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizerE">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizerE"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizerE"></span><span id="LAMMPS_NS::ValueTokenizer"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ValueTokenizer</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="Link to this definition"></a><br /></dt>
|
||
<dd><div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer14ValueTokenizerERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer14ValueTokenizerERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer14ValueTokenizerERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::ValueTokenizer::ValueTokenizer__ssCR.ssCR"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a9fbf461f611028a7d95b7df0dc8dbec4"></span><span class="sig-name descname"><span class="n"><span class="pre">ValueTokenizer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">separators</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">TOKENIZER_DEFAULT_SEPARATORS</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer14ValueTokenizerERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Class for reading text with numbers</p>
|
||
<p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS9TokenizerE" title="LAMMPS_NS::Tokenizer"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">Tokenizer</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
<p><div class="admonition seealso">
|
||
<p class="admonition-title">See also</p>
|
||
<p>Tokenizer <a class="reference internal" href="#classLAMMPS__NS_1_1InvalidIntegerException"><span class="std std-ref">InvalidIntegerException</span></a> <a class="reference internal" href="#classLAMMPS__NS_1_1InvalidFloatException"><span class="std std-ref">InvalidFloatException</span></a></p>
|
||
</div>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>str</strong> – String to be processed </p></li>
|
||
<li><p><strong>separators</strong> – String with separator characters (default: “ \t\r\n\f”)</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer11next_stringEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer11next_stringEv"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer11next_stringEv"></span><span id="LAMMPS_NS::ValueTokenizer::next_string"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1ad19df6455b8dfbfd2e5b1d93fc72d257"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_string</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer11next_stringEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve next token</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>string with next token </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer11next_tagintEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer11next_tagintEv"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer11next_tagintEv"></span><span id="LAMMPS_NS::ValueTokenizer::next_tagint"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a388a19376fd8647693fa10077e29a68f"></span><span class="n"><span class="pre">tagint</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_tagint</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer11next_tagintEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve next token and convert to tagint</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>value of next token </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer11next_bigintEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer11next_bigintEv"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer11next_bigintEv"></span><span id="LAMMPS_NS::ValueTokenizer::next_bigint"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a960e60b9cac96e1abfc9beb6a436e414"></span><span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_bigint</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer11next_bigintEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve next token and convert to bigint</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>value of next token </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer8next_intEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer8next_intEv"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer8next_intEv"></span><span id="LAMMPS_NS::ValueTokenizer::next_int"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a659db78ef3cd8cdbfa35654fbea28929"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_int</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer8next_intEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve next token and convert to int</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>value of next token </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer11next_doubleEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer11next_doubleEv"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer11next_doubleEv"></span><span id="LAMMPS_NS::ValueTokenizer::next_double"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1aa6b2325cb771c1d1aa11cc5bd3c3f2e9"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_double</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer11next_doubleEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Retrieve next token and convert to double</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>value of next token </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS14ValueTokenizer8has_nextEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS14ValueTokenizer8has_nextEv"></span><span id="_CPPv2NK9LAMMPS_NS14ValueTokenizer8has_nextEv"></span><span id="LAMMPS_NS::ValueTokenizer::has_nextC"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a5ac70fe9462200eec1fe01b48ea992f3"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">has_next</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS14ValueTokenizer8has_nextEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Indicate whether more tokens are available</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>true if there are more tokens, false if not </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS14ValueTokenizer8containsERKNSt6stringE">
|
||
<span id="_CPPv3NK9LAMMPS_NS14ValueTokenizer8containsERKNSt6stringE"></span><span id="_CPPv2NK9LAMMPS_NS14ValueTokenizer8containsERKNSt6stringE"></span><span id="LAMMPS_NS::ValueTokenizer::contains__ssCRC"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a48b6af4c43173e0a07e80d29f125ae62"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">contains</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS14ValueTokenizer8containsERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Search the text to be processed for a sub-string.</p>
|
||
<p>This method does a generic sub-string match.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>value</strong> – string with value to be searched for </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true if string was found, false if not </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS14ValueTokenizer7matchesERKNSt6stringE">
|
||
<span id="_CPPv3NK9LAMMPS_NS14ValueTokenizer7matchesERKNSt6stringE"></span><span id="_CPPv2NK9LAMMPS_NS14ValueTokenizer7matchesERKNSt6stringE"></span><span id="LAMMPS_NS::ValueTokenizer::matches__ssCRC"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a07a6c962ca23635328ffde2dbac74533"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">matches</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">str</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS14ValueTokenizer7matchesERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Search the text to be processed for regular expression match.</p>
|
||
<p>This method matches the current string against a regular expression using
|
||
the <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils8strmatchERKNSt6stringERKNSt6stringE" title="LAMMPS_NS::utils::strmatch"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::strmatch()</span></code></a> function.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>str</strong> – regular expression to be matched against </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>true if string was found, false if not </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer4skipEi">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer4skipEi"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer4skipEi"></span><span id="LAMMPS_NS::ValueTokenizer::skip__i"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1a8031283fcb7534c047cd51957d3bfb80"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">skip</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">ntokens</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer4skipEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Skip over a given number of tokens</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>n</strong> – number of tokens to skip over </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14ValueTokenizer5countEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14ValueTokenizer5countEv"></span><span id="_CPPv2N9LAMMPS_NS14ValueTokenizer5countEv"></span><span id="LAMMPS_NS::ValueTokenizer::count"></span><span class="target" id="classLAMMPS__NS_1_1ValueTokenizer_1ad873dc786f051a2c04e32d1541d3702e"></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">count</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14ValueTokenizer5countEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Count number of tokens in text.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>number of counted tokens </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS23InvalidIntegerExceptionE">
|
||
<span id="_CPPv3N9LAMMPS_NS23InvalidIntegerExceptionE"></span><span id="_CPPv2N9LAMMPS_NS23InvalidIntegerExceptionE"></span><span id="LAMMPS_NS::InvalidIntegerException"></span><span class="target" id="classLAMMPS__NS_1_1InvalidIntegerException"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">InvalidIntegerException</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N9LAMMPS_NS18TokenizerExceptionE" title="LAMMPS_NS::TokenizerException"><span class="n"><span class="pre">TokenizerException</span></span></a><a class="headerlink" href="#_CPPv4N9LAMMPS_NS23InvalidIntegerExceptionE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Exception thrown by ValueTokenizer when trying to convert an invalid integer string </p>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS23InvalidIntegerException23InvalidIntegerExceptionERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS23InvalidIntegerException23InvalidIntegerExceptionERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS23InvalidIntegerException23InvalidIntegerExceptionERKNSt6stringE"></span><span id="LAMMPS_NS::InvalidIntegerException::InvalidIntegerException__ssCR"></span><span class="target" id="classLAMMPS__NS_1_1InvalidIntegerException_1abbff68ef6488f500630d129910eb9136"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">InvalidIntegerException</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">token</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS23InvalidIntegerException23InvalidIntegerExceptionERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Thrown during converting string to integer number</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>token</strong> – String of the token/word that caused the error </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS21InvalidFloatExceptionE">
|
||
<span id="_CPPv3N9LAMMPS_NS21InvalidFloatExceptionE"></span><span id="_CPPv2N9LAMMPS_NS21InvalidFloatExceptionE"></span><span id="LAMMPS_NS::InvalidFloatException"></span><span class="target" id="classLAMMPS__NS_1_1InvalidFloatException"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">InvalidFloatException</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N9LAMMPS_NS18TokenizerExceptionE" title="LAMMPS_NS::TokenizerException"><span class="n"><span class="pre">TokenizerException</span></span></a><a class="headerlink" href="#_CPPv4N9LAMMPS_NS21InvalidFloatExceptionE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Exception thrown by ValueTokenizer when trying to convert an floating point string </p>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS21InvalidFloatException21InvalidFloatExceptionERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS21InvalidFloatException21InvalidFloatExceptionERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS21InvalidFloatException21InvalidFloatExceptionERKNSt6stringE"></span><span id="LAMMPS_NS::InvalidFloatException::InvalidFloatException__ssCR"></span><span class="target" id="classLAMMPS__NS_1_1InvalidFloatException_1af72f7f4352493364c8f734f17f416ded"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">InvalidFloatException</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">token</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS21InvalidFloatException21InvalidFloatExceptionERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Thrown during converting string to floating point number</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>token</strong> – String of the token/word that caused the error </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="argument-parsing-classes">
|
||
<h1><span class="section-number">4.18. </span>Argument parsing classes<a class="headerlink" href="#argument-parsing-classes" title="Link to this heading"></a></h1>
|
||
<p>The purpose of argument parsing classes it to simplify and unify how
|
||
arguments of commands in LAMMPS are parsed and to make abstractions of
|
||
repetitive tasks.</p>
|
||
<p>The <a class="reference internal" href="#_CPPv4N9LAMMPS_NS7ArgInfoE" title="LAMMPS_NS::ArgInfo"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">LAMMPS_NS::ArgInfo</span></code></a> class provides an abstraction
|
||
for parsing references to compute or fix styles, variables or custom
|
||
integer or double properties handled by <a class="reference internal" href="fix_property_atom.html"><span class="doc">fix property/atom</span></a>.
|
||
These would start with a “c_”, “f_”, “v_”, “d_”, “d2_”, “i_”, or “i2_”
|
||
followed by the ID or name of than instance and may be postfixed with
|
||
one or two array indices “[<number>]” with numbers > 0.</p>
|
||
<p>A typical code segment would look like this:</p>
|
||
<div class="literal-block-wrapper docutils container" id="id5">
|
||
<div class="code-block-caption"><span class="caption-text">Usage example for ArgInfo class</span><a class="headerlink" href="#id5" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">nvalues</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">iarg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">iarg</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nargnew</span><span class="p">;</span><span class="w"> </span><span class="n">iarg</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">ArgInfo</span><span class="w"> </span><span class="nf">argi</span><span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="n">iarg</span><span class="p">]);</span>
|
||
|
||
<span class="w"> </span><span class="n">which</span><span class="p">[</span><span class="n">nvalues</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">argi</span><span class="p">.</span><span class="n">get_type</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">argindex</span><span class="p">[</span><span class="n">nvalues</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">argi</span><span class="p">.</span><span class="n">get_index1</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">ids</span><span class="p">[</span><span class="n">nvalues</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">argi</span><span class="p">.</span><span class="n">copy_name</span><span class="p">();</span>
|
||
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">which</span><span class="p">[</span><span class="n">nvalues</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ArgInfo</span><span class="o">::</span><span class="n">UNKNOWN</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="p">(</span><span class="n">which</span><span class="p">[</span><span class="n">nvalues</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ArgInfo</span><span class="o">::</span><span class="n">NONE</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="p">(</span><span class="n">argi</span><span class="p">.</span><span class="n">get_dim</span><span class="p">()</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">))</span>
|
||
<span class="w"> </span><span class="n">error</span><span class="o">-></span><span class="n">all</span><span class="p">(</span><span class="n">FLERR</span><span class="p">,</span><span class="s">"Illegal compute XXX command"</span><span class="p">);</span>
|
||
|
||
<span class="w"> </span><span class="n">nvalues</span><span class="o">++</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<hr class="docutils" />
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfoE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfoE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfoE"></span><span id="LAMMPS_NS::ArgInfo"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ArgInfo</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfoE" title="Link to this definition"></a><br /></dt>
|
||
<dd><div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
|
||
<dl class="cpp enum">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypesE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypesE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypesE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ArgTypes</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypesE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>constants for argument types </p>
|
||
<p><em>Values:</em></p>
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5ERRORE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes5ERRORE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes5ERRORE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a2fd6f336d08340583bd620a7f5694c90"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ERROR</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5ERRORE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes7UNKNOWNE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes7UNKNOWNE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes7UNKNOWNE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a6ce26a62afab55d7606ad4e92428b30c"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">UNKNOWN</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes7UNKNOWNE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes4NONEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes4NONEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes4NONEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13ac157bdf0b85a40d2619cbc8bc1ae5fe2"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">NONE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes4NONEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes1XE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes1XE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes1XE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a58833a3110c570fb05130d40c365d1e4"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">X</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes1XE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes1VE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes1VE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes1VE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a28f41f1144eee94834387e9a6a088bc1"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">V</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes1VE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes1FE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes1FE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes1FE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13af382a63cc3d6491bf26b59e66f46826d"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">F</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes1FE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes7COMPUTEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes7COMPUTEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes7COMPUTEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a391a0f3463a51c90bdf19aa7f35e0b46"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">COMPUTE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes7COMPUTEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes3FIXE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes3FIXE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes3FIXE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a4c71825a48c0068b0761fd432c96d451"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FIX</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes3FIXE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes8VARIABLEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes8VARIABLEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes8VARIABLEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a39031ce5df6f91d3778590d6d644b9ea"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">VARIABLE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes8VARIABLEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes7KEYWORDE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes7KEYWORDE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes7KEYWORDE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a129281444e94f5f509cba213d51a814d"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">KEYWORD</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes7KEYWORDE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes4TYPEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes4TYPEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes4TYPEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13ab47ea8bb955afd0adc0ef98517dd6084"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TYPE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes4TYPEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes8MOLECULEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes8MOLECULEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes8MOLECULEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a52a658fe0a308541e9fd6a5e1248d500"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MOLECULE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes8MOLECULEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5DNAMEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes5DNAMEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes5DNAMEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13acc5ed32d1085edc116f9e5b127775f6d"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DNAME</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5DNAMEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5INAMEE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes5INAMEE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes5INAMEE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a42992693b11698580c1c11967cbca39f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">INAME</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5INAMEE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes14DENSITY_NUMBERE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes14DENSITY_NUMBERE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes14DENSITY_NUMBERE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a36aba5a6b73317be76adbe7e40189e16"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DENSITY_NUMBER</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes14DENSITY_NUMBERE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes12DENSITY_MASSE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes12DENSITY_MASSE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes12DENSITY_MASSE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a4763598e36da157b838fe8f74e8063ba"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DENSITY_MASS</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes12DENSITY_MASSE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes4MASSE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes4MASSE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes4MASSE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a1c910486b66cf1ccce2ef81d4318227f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MASS</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes4MASSE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes11TEMPERATUREE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes11TEMPERATUREE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes11TEMPERATUREE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13ac4ae6787ff1d8b2d1cf0ae9aa696e56c"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TEMPERATURE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes11TEMPERATUREE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5BIN1DE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes5BIN1DE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes5BIN1DE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13af113047abcb2980258dbb091edc74919"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BIN1D</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5BIN1DE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5BIN2DE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes5BIN2DE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes5BIN2DE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a172ec7ac0684d66a619471d3d6cb1520"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BIN2D</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5BIN2DE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5BIN3DE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes5BIN3DE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes5BIN3DE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a32f02f6ff0b9d0b294a92bd63c5658b6"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BIN3D</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes5BIN3DE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes9BINSPHEREE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes9BINSPHEREE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes9BINSPHEREE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13aea2305105c66b4fd68a8acd3b62b548f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BINSPHERE</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes9BINSPHEREE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp enumerator">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes11BINCYLINDERE">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo8ArgTypes11BINCYLINDERE"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo8ArgTypes11BINCYLINDERE"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a6df44aeb82f88a507de3bccbb74a6b13a751fb391ace04b5f6bd4bc9b8209bbc0"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BINCYLINDER</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo8ArgTypes11BINCYLINDERE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</div>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo7ArgInfoERKNSt6stringEi">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo7ArgInfoERKNSt6stringEi"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo7ArgInfoERKNSt6stringEi"></span><span id="LAMMPS_NS::ArgInfo::ArgInfo__ssCR.i"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a81a8a9e941f241bc7bd8df5048edd72e"></span><span class="sig-name descname"><span class="n"><span class="pre">ArgInfo</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">arg</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">allowed</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">COMPUTE</span></span><span class="w"> </span><span class="o"><span class="pre">|</span></span><span class="w"> </span><span class="n"><span class="pre">FIX</span></span><span class="w"> </span><span class="o"><span class="pre">|</span></span><span class="w"> </span><span class="n"><span class="pre">VARIABLE</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo7ArgInfoERKNSt6stringEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Class for processing references to fixes, computes and variables</p>
|
||
<p>This class provides an abstraction for the repetitive task of parsing arguments that may contain references to fixes, computes, variables, or custom per-atom properties. It will identify the name and the index value in the first and second dimension, if present.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>arg</strong> – string with possible reference </p></li>
|
||
<li><p><strong>allowed</strong> – integer with bitmap of allowed types of references </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS7ArgInfo8get_typeEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS7ArgInfo8get_typeEv"></span><span id="_CPPv2NK9LAMMPS_NS7ArgInfo8get_typeEv"></span><span id="LAMMPS_NS::ArgInfo::get_typeC"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a328fa3a7797b2464bfb1079d365d0edb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">get_type</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS7ArgInfo8get_typeEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>get type of reference</p>
|
||
<p>Return a type constant for the reference. This may be either COMPUTE, FIX, VARIABLE (if not restricted to a subset of those by the “allowed” argument of the constructor) or NONE, if it if not a recognized or allowed reference, or UNKNOWN, in case some error happened identifying or parsing the values of the indices</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>integer with a constant from ArgTypes enumerator </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS7ArgInfo7get_dimEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS7ArgInfo7get_dimEv"></span><span id="_CPPv2NK9LAMMPS_NS7ArgInfo7get_dimEv"></span><span id="LAMMPS_NS::ArgInfo::get_dimC"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a812caf9be8bbe92a2fd8273dd2dda065"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">get_dim</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS7ArgInfo7get_dimEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>get dimension of reference</p>
|
||
<p>This will return either 0, 1, 2 depending on whether the reference has no, one or two “[{number}]” postfixes.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>integer with the dimensionality of the reference </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS7ArgInfo10get_index1Ev">
|
||
<span id="_CPPv3NK9LAMMPS_NS7ArgInfo10get_index1Ev"></span><span id="_CPPv2NK9LAMMPS_NS7ArgInfo10get_index1Ev"></span><span id="LAMMPS_NS::ArgInfo::get_index1C"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a1ef3adbaad24c6a95b2cbc7475585ffd"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">get_index1</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS7ArgInfo10get_index1Ev" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>get index of first dimension</p>
|
||
<p>This will return the number in the first “[{number}]” postfix or 0 if there is no postfix.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>integer with index or the postfix or 0 </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS7ArgInfo10get_index2Ev">
|
||
<span id="_CPPv3NK9LAMMPS_NS7ArgInfo10get_index2Ev"></span><span id="_CPPv2NK9LAMMPS_NS7ArgInfo10get_index2Ev"></span><span id="LAMMPS_NS::ArgInfo::get_index2C"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1adcbe39c7eaf369281347891bd0818678"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">get_index2</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS7ArgInfo10get_index2Ev" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>get index of second dimension</p>
|
||
<p>This will return the number in the second “[{number}]” postfix or -1 if there is no second postfix.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>integer with index of the postfix or -1 </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS7ArgInfo8get_nameEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS7ArgInfo8get_nameEv"></span><span id="_CPPv2NK9LAMMPS_NS7ArgInfo8get_nameEv"></span><span id="LAMMPS_NS::ArgInfo::get_nameC"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1a272dda5e08548168f78061e194511fcf"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">get_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS7ArgInfo8get_nameEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>return reference to the ID or name of the reference</p>
|
||
<p>This string is pointing to an internal storage element and is only valid to use while the ArgInfo class instance is in scope. If you need a long-lived string make a copy with copy_name().</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>C-style char * string </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS7ArgInfo9copy_nameEv">
|
||
<span id="_CPPv3N9LAMMPS_NS7ArgInfo9copy_nameEv"></span><span id="_CPPv2N9LAMMPS_NS7ArgInfo9copy_nameEv"></span><span id="LAMMPS_NS::ArgInfo::copy_name"></span><span class="target" id="classLAMMPS__NS_1_1ArgInfo_1aec1f62f5dcbdb968f21542406ecafb1c"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">copy_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS7ArgInfo9copy_nameEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>make copy of the ID of the reference as C-style string</p>
|
||
<p>The ID is copied into a buffer allocated with “new” and thus must be later deleted with “delete []” to avoid a memory leak. Because it is a full copy in a newly allocated buffer, the lifetime of this string extends beyond the the time the ArgInfo class is in scope.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>copy of string as char * </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<hr class="docutils" />
|
||
</section>
|
||
<section id="file-reader-classes">
|
||
<span id="id1"></span><h1><span class="section-number">4.19. </span>File reader classes<a class="headerlink" href="#file-reader-classes" title="Link to this heading"></a></h1>
|
||
<p>The purpose of the file reader classes is to simplify the recurring task
|
||
of reading and parsing files. They can use the
|
||
<a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="LAMMPS_NS::ValueTokenizer"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">ValueTokenizer</span></code></a> class to process
|
||
the read in text. The <a class="reference internal" href="#_CPPv4N9LAMMPS_NS14TextFileReaderE" title="LAMMPS_NS::TextFileReader"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">TextFileReader</span></code></a> is a more general version while
|
||
<a class="reference internal" href="#_CPPv4N9LAMMPS_NS19PotentialFileReaderE" title="LAMMPS_NS::PotentialFileReader"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">PotentialFileReader</span></code></a> is
|
||
specialized to implement the behavior expected for looking up and
|
||
reading/parsing files with potential parameters in LAMMPS. The
|
||
potential file reader class requires a LAMMPS instance, requires to be
|
||
run on MPI rank 0 only, will use the
|
||
<a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils23get_potential_file_pathERKNSt6stringE" title="LAMMPS_NS::utils::get_potential_file_path"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::get_potential_file_path</span></code></a> function to look up and
|
||
open the file, and will call the <code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">LAMMPS_NS::Error</span></code> class in
|
||
case of failures to read or to convert numbers, so that LAMMPS will be
|
||
aborted.</p>
|
||
<div class="literal-block-wrapper docutils container" id="id6">
|
||
<div class="code-block-caption"><span class="caption-text">Use of PotentialFileReader class in pair style coul/streitz</span><a class="headerlink" href="#id6" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">PotentialFileReader</span><span class="w"> </span><span class="n">reader</span><span class="p">(</span><span class="n">lmp</span><span class="p">,</span><span class="w"> </span><span class="n">file</span><span class="p">,</span><span class="w"> </span><span class="s">"coul/streitz"</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">line</span><span class="p">;</span>
|
||
|
||
<span class="w"> </span><span class="k">while</span><span class="p">((</span><span class="n">line</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">reader</span><span class="p">.</span><span class="n">next_line</span><span class="p">(</span><span class="n">NPARAMS_PER_LINE</span><span class="p">)))</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">ValueTokenizer</span><span class="w"> </span><span class="nf">values</span><span class="p">(</span><span class="n">line</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">iname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">values</span><span class="p">.</span><span class="n">next_string</span><span class="p">();</span>
|
||
|
||
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ielement</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">ielement</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">ielement</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nelements</span><span class="p">;</span><span class="w"> </span><span class="n">ielement</span><span class="o">++</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iname</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">elements</span><span class="p">[</span><span class="n">ielement</span><span class="p">])</span><span class="w"> </span><span class="k">break</span><span class="p">;</span>
|
||
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">nparams</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">maxparam</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">maxparam</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">DELTA</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">Param</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">memory</span><span class="o">-></span><span class="n">srealloc</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="n">maxparam</span><span class="o">*</span><span class="k">sizeof</span><span class="p">(</span><span class="n">Param</span><span class="p">),</span>
|
||
<span class="w"> </span><span class="s">"pair:params"</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
|
||
<span class="w"> </span><span class="n">params</span><span class="p">[</span><span class="n">nparams</span><span class="p">].</span><span class="n">ielement</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ielement</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">params</span><span class="p">[</span><span class="n">nparams</span><span class="p">].</span><span class="n">chi</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">values</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">params</span><span class="p">[</span><span class="n">nparams</span><span class="p">].</span><span class="n">eta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">values</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">params</span><span class="p">[</span><span class="n">nparams</span><span class="p">].</span><span class="n">gamma</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">values</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">params</span><span class="p">[</span><span class="n">nparams</span><span class="p">].</span><span class="n">zeta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">values</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="n">params</span><span class="p">[</span><span class="n">nparams</span><span class="p">].</span><span class="n">zcore</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">values</span><span class="p">.</span><span class="n">next_double</span><span class="p">();</span>
|
||
|
||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">TokenizerException</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">error</span><span class="o">-></span><span class="n">one</span><span class="p">(</span><span class="n">FLERR</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">());</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="n">nparams</span><span class="o">++</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<p>A file that would be parsed by the reader code fragment looks like this:</p>
|
||
<pre class="literal-block"># DATE: 2015-02-19 UNITS: metal CONTRIBUTOR: Ray Shan CITATION: Streitz and Mintmire, Phys Rev B, 50, 11996-12003 (1994)
|
||
#
|
||
# X (eV) J (eV) gamma (1/AA) zeta (1/AA) Z (e)
|
||
|
||
Al 0.000000 10.328655 0.000000 0.968438 0.763905
|
||
O 5.484763 14.035715 0.000000 2.143957 0.000000</pre>
|
||
<hr class="docutils" />
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReaderE">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReaderE"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReaderE"></span><span id="LAMMPS_NS::TextFileReader"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TextFileReader</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReaderE" title="Link to this definition"></a><br /></dt>
|
||
<dd><div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader14TextFileReaderERKNSt6stringERKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader14TextFileReaderERKNSt6stringERKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader14TextFileReaderERKNSt6stringERKNSt6stringE"></span><span id="LAMMPS_NS::TextFileReader::TextFileReader__ssCR.ssCR"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1a2043b5f5a6222c33ed29f356e09fa50a"></span><span class="sig-name descname"><span class="n"><span class="pre">TextFileReader</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">filename</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">filetype</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader14TextFileReaderERKNSt6stringERKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Class for reading and parsing text files</p>
|
||
<p>The value of the class member variable <em>ignore_comments</em> controls whether any text following the pound sign (#) should be ignored (true) or not (false). Default: true, i.e. ignore. <p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14TextFileReaderE" title="LAMMPS_NS::TextFileReader"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">TextFileReader</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>filename</strong> – Name of file to be read </p></li>
|
||
<li><p><strong>filetype</strong> – Description of file type for error messages </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader14TextFileReaderEP4FILENSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader14TextFileReaderEP4FILENSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader14TextFileReaderEP4FILENSt6stringE"></span><span id="LAMMPS_NS::TextFileReader::TextFileReader__FILEP.ss"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1ae85518b9022db4c1075338ccd8fe5de8"></span><span class="sig-name descname"><span class="n"><span class="pre">TextFileReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">FILE</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">fp</span></span>, <span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">filetype</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader14TextFileReaderEP4FILENSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.</p>
|
||
<p>This function is useful in combination with <a class="reference internal" href="#_CPPv4N9LAMMPS_NS5utils14open_potentialERKNSt6stringEP6LAMMPSPi" title="LAMMPS_NS::utils::open_potential"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">utils::open_potential()</span></code></a>.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>The FILE pointer is not closed in the destructor, but will be advanced
|
||
when reading from it.</p>
|
||
</div>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>fp</strong> – File descriptor of the already opened file </p></li>
|
||
<li><p><strong>filetype</strong> – Description of file type for error messages </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReaderD0Ev">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReaderD0Ev"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReaderD0Ev"></span><span id="LAMMPS_NS::TextFileReader::~TextFileReader"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1a60ce1f5ac0e90a8deedc0f0359eacc49"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">~TextFileReader</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReaderD0Ev" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Closes the file </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader11set_bufsizeEi">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader11set_bufsizeEi"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader11set_bufsizeEi"></span><span id="LAMMPS_NS::TextFileReader::set_bufsize__i"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1af2f99f85d2cb5e54a4190e4acdeeb4aa"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">set_bufsize</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader11set_bufsizeEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>adjust line buffer size </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader6rewindEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader6rewindEv"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader6rewindEv"></span><span id="LAMMPS_NS::TextFileReader::rewind"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1ab8734e666421c9fe3b6380a818c6c727"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">rewind</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader6rewindEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Reset file to the beginning </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader9skip_lineEv">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader9skip_lineEv"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader9skip_lineEv"></span><span id="LAMMPS_NS::TextFileReader::skip_line"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1a13171cc94df93641fa41710249bd2828"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">skip_line</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader9skip_lineEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read the next line and ignore it </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader9next_lineEi">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader9next_lineEi"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader9next_lineEi"></span><span id="LAMMPS_NS::TextFileReader::next_line__i"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1ac8028df52c806625ec32fe25eb9e87c0"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">next_line</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nparams</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader9next_lineEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read the next line(s) until <em>nparams</em> words have been read.</p>
|
||
<p>This reads a line and counts the words in it, if the number is less than the requested number, it will read the next line, as well. Output will be a string with all read lines combined. The purpose is to somewhat replicate the reading behavior of formatted files in Fortran.</p>
|
||
<p>If the <em>ignore_comments</em> class member has the value <em>true</em>, then any text read in is truncated at the first ‘#’ character.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>nparams</strong> – Number of words that must be read. Default: 0 </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>String with the concatenated text </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader12next_dvectorEPdi">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader12next_dvectorEPdi"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader12next_dvectorEPdi"></span><span id="LAMMPS_NS::TextFileReader::next_dvector__doubleP.i"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1a4c74ed481f64285779f60633e6301a47"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_dvector</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">list</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader12next_dvectorEPdi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read lines until <em>n</em> doubles have been read and stored in array <em>list</em></p>
|
||
<p>This reads lines from the file using the next_line() function, and splits them into floating-point numbers using the ValueTokenizer class and stores the number in the provided list.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>list</strong> – Pointer to array with suitable storage for <em>n</em> doubles </p></li>
|
||
<li><p><strong>n</strong> – Number of doubles to be read </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader11next_valuesEiRKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader11next_valuesEiRKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader11next_valuesEiRKNSt6stringE"></span><span id="LAMMPS_NS::TextFileReader::next_values__i.ssCR"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1a8a0ce533407ad4d77f92c807de0131b0"></span><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="LAMMPS_NS::ValueTokenizer"><span class="n"><span class="pre">ValueTokenizer</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_values</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nparams</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">separators</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">TOKENIZER_DEFAULT_SEPARATORS</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader11next_valuesEiRKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read text until <em>nparams</em> words are read and passed to a tokenizer object for custom parsing.</p>
|
||
<p>This reads lines from the file using the next_line() function, and splits them into floating-point numbers using the ValueTokenizer class and stores the number in the provided list.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>nparams</strong> – Number of words to be read </p></li>
|
||
<li><p><strong>separators</strong> – String with list of separators. </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>ValueTokenizer object for read in text </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
|
||
<dl class="cpp var">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS14TextFileReader15ignore_commentsE">
|
||
<span id="_CPPv3N9LAMMPS_NS14TextFileReader15ignore_commentsE"></span><span id="_CPPv2N9LAMMPS_NS14TextFileReader15ignore_commentsE"></span><span id="LAMMPS_NS::TextFileReader::ignore_comments__b"></span><span class="target" id="classLAMMPS__NS_1_1TextFileReader_1a87625d6c23cbea82833fceab91c31bc4"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ignore_comments</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS14TextFileReader15ignore_commentsE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Controls whether comments are ignored. </p>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReaderE">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReaderE"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReaderE"></span><span id="LAMMPS_NS::PotentialFileReader"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PotentialFileReader</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">protected</span></span><span class="w"> </span><a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS8PointersE" title="LAMMPS_NS::Pointers"><span class="n"><span class="pre">Pointers</span></span></a><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReaderE" title="Link to this definition"></a><br /></dt>
|
||
<dd><div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader19PotentialFileReaderEP6LAMMPSRKNSt6stringERKNSt6stringERKNSt6stringEKi">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader19PotentialFileReaderEP6LAMMPSRKNSt6stringERKNSt6stringERKNSt6stringEKi"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader19PotentialFileReaderEP6LAMMPSRKNSt6stringERKNSt6stringERKNSt6stringEKi"></span><span id="LAMMPS_NS::PotentialFileReader::PotentialFileReader__LAMMPSP.ssCR.ssCR.ssCR.iC"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a149f46f04cd28f4d9d293ff333380d54"></span><span class="sig-name descname"><span class="n"><span class="pre">PotentialFileReader</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">class</span></span><span class="w"> </span><a class="reference internal" href="Classes_lammps.html#_CPPv4N9LAMMPS_NS6LAMMPSE" title="LAMMPS_NS::LAMMPS"><span class="n"><span class="pre">LAMMPS</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lmp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">filename</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">potential_name</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name_suffix</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">auto_convert</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader19PotentialFileReaderEP6LAMMPSRKNSt6stringERKNSt6stringERKNSt6stringEKi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Class for reading and parsing <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> potential files</p>
|
||
<p>The value of the class member variable <em>ignore_comments</em> controls whether any text following the pound sign (#) should be ignored (true) or not (false). Default: true, i.e. ignore. <p><dl class="simple">
|
||
<dt><em>See also</em></dt><dd><p><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14TextFileReaderE" title="LAMMPS_NS::TextFileReader"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">TextFileReader</span></code></a></p>
|
||
</dd>
|
||
</dl>
|
||
</p>
|
||
</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>lmp</strong> – Pointer to <a class="reference internal" href="Classes_lammps.html#classLAMMPS__NS_1_1LAMMPS"><span class="std std-ref">LAMMPS</span></a> instance </p></li>
|
||
<li><p><strong>filename</strong> – Name of file to be read </p></li>
|
||
<li><p><strong>potential_name</strong> – Name of potential style for error messages </p></li>
|
||
<li><p><strong>name_suffix</strong> – Suffix added to potential name in error messages </p></li>
|
||
<li><p><strong>auto_convert</strong> – Bitmask of supported unit conversions </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReaderD0Ev">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReaderD0Ev"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReaderD0Ev"></span><span id="LAMMPS_NS::PotentialFileReader::~PotentialFileReader"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a2fc140e8f6be2389ddffb5f7edce870e"></span><span class="sig-name descname"><span class="n"><span class="pre">~PotentialFileReader</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReaderD0Ev" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Closes the file </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader15ignore_commentsEb">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader15ignore_commentsEb"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader15ignore_commentsEb"></span><span id="LAMMPS_NS::PotentialFileReader::ignore_comments__b"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a84753973f8cd425807695e3c889f97f9"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ignore_comments</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader15ignore_commentsEb" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Set comment (= text after ‘#’) handling preference for the file to be read</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>value</strong> – Comment text is ignored if true, or not if false </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader6rewindEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader6rewindEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader6rewindEv"></span><span id="LAMMPS_NS::PotentialFileReader::rewind"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1ab8734e666421c9fe3b6380a818c6c727"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">rewind</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader6rewindEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Reset file to the beginning </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader9skip_lineEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader9skip_lineEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader9skip_lineEv"></span><span id="LAMMPS_NS::PotentialFileReader::skip_line"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a13171cc94df93641fa41710249bd2828"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">skip_line</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader9skip_lineEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read a line but ignore its content </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader9next_lineEi">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader9next_lineEi"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader9next_lineEi"></span><span id="LAMMPS_NS::PotentialFileReader::next_line__i"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1ac8028df52c806625ec32fe25eb9e87c0"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">next_line</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nparams</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader9next_lineEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read the next line(s) until <em>nparams</em> words have been read.</p>
|
||
<p>This reads a line and counts the words in it, if the number is less than the requested number, it will read the next line, as well. Output will be a string with all read lines combined. The purpose is to somewhat replicate the reading behavior of formatted files in Fortran.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>nparams</strong> – Number of words that must be read. Default: 0 </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>String with the concatenated text </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader12next_dvectorEPdi">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader12next_dvectorEPdi"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader12next_dvectorEPdi"></span><span id="LAMMPS_NS::PotentialFileReader::next_dvector__doubleP.i"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a4c74ed481f64285779f60633e6301a47"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_dvector</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">list</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader12next_dvectorEPdi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read lines until <em>n</em> doubles have been read and stored in array <em>list</em></p>
|
||
<p>This reads lines from the file using the next_line() function, and splits them into floating-point numbers using the ValueTokenizer class and stores the number in the provided list.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>list</strong> – Pointer to array with suitable storage for <em>n</em> doubles </p></li>
|
||
<li><p><strong>n</strong> – Number of doubles to be read </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader11next_valuesEiRKNSt6stringE">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader11next_valuesEiRKNSt6stringE"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader11next_valuesEiRKNSt6stringE"></span><span id="LAMMPS_NS::PotentialFileReader::next_values__i.ssCR"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a8a0ce533407ad4d77f92c807de0131b0"></span><a class="reference internal" href="#_CPPv4N9LAMMPS_NS14ValueTokenizerE" title="LAMMPS_NS::ValueTokenizer"><span class="n"><span class="pre">ValueTokenizer</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_values</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nparams</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">separators</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">TOKENIZER_DEFAULT_SEPARATORS</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader11next_valuesEiRKNSt6stringE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read text until <em>nparams</em> words are read and passed to a tokenizer object for custom parsing.</p>
|
||
<p>This reads lines from the file using the next_line() function, and splits them into floating-point numbers using the ValueTokenizer class and stores the number in the provided list.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>nparams</strong> – Number of words to be read </p></li>
|
||
<li><p><strong>separators</strong> – String with list of separators. </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>ValueTokenizer object for read in text </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader11next_doubleEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader11next_doubleEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader11next_doubleEv"></span><span id="LAMMPS_NS::PotentialFileReader::next_double"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1aa6b2325cb771c1d1aa11cc5bd3c3f2e9"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_double</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader11next_doubleEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read next line and convert first word to a double</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>Value of first word in line as double </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader8next_intEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader8next_intEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader8next_intEv"></span><span id="LAMMPS_NS::PotentialFileReader::next_int"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a659db78ef3cd8cdbfa35654fbea28929"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_int</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader8next_intEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read next line and convert first word to an int</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>Value of first word in line as int </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader11next_tagintEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader11next_tagintEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader11next_tagintEv"></span><span id="LAMMPS_NS::PotentialFileReader::next_tagint"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a388a19376fd8647693fa10077e29a68f"></span><span class="n"><span class="pre">tagint</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_tagint</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader11next_tagintEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read next line and convert first word to a tagint</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>Value of first word in line as tagint </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader11next_bigintEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader11next_bigintEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader11next_bigintEv"></span><span id="LAMMPS_NS::PotentialFileReader::next_bigint"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1a960e60b9cac96e1abfc9beb6a436e414"></span><span class="n"><span class="pre">bigint</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_bigint</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader11next_bigintEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read next line and convert first word to a bigint</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>Value of first word in line as bigint </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS19PotentialFileReader11next_stringEv">
|
||
<span id="_CPPv3N9LAMMPS_NS19PotentialFileReader11next_stringEv"></span><span id="_CPPv2N9LAMMPS_NS19PotentialFileReader11next_stringEv"></span><span id="LAMMPS_NS::PotentialFileReader::next_string"></span><span class="target" id="classLAMMPS__NS_1_1PotentialFileReader_1ad19df6455b8dfbfd2e5b1d93fc72d257"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_string</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS19PotentialFileReader11next_stringEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Read next line and return first word</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>First word of read in line </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="memory-pool-classes">
|
||
<h1><span class="section-number">4.20. </span>Memory pool classes<a class="headerlink" href="#memory-pool-classes" title="Link to this heading"></a></h1>
|
||
<p>The memory pool classes are used for cases where otherwise many
|
||
small memory allocations would be needed and where the data would
|
||
be either all used or all freed. One example for that is the
|
||
storage of neighbor lists. The memory management strategy is
|
||
based on the assumption that allocations will be in chunks of similar
|
||
sizes. The allocation is then not done per individual call for a
|
||
reserved chunk of memory, but for a “page” that can hold multiple
|
||
chunks of data. A parameter for the maximum chunk size must be
|
||
provided, as that is used to determine whether a new page of memory
|
||
must be used.</p>
|
||
<p>The <a class="reference internal" href="#_CPPv4N9LAMMPS_NS6MyPageE" title="LAMMPS_NS::MyPage"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">MyPage</span></code></a> class offers two ways to
|
||
reserve a chunk: 1) with <a class="reference internal" href="#_CPPv4N9LAMMPS_NS6MyPage3getEi" title="LAMMPS_NS::MyPage::get"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">MyPage::get()</span></code></a> the
|
||
chunk size needs to be known in advance, 2) with <a class="reference internal" href="#_CPPv4N9LAMMPS_NS6MyPage4vgetEv" title="LAMMPS_NS::MyPage::vget"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">MyPage::vget()</span></code></a> a pointer to the next chunk is returned, but
|
||
its size is registered later with <a class="reference internal" href="#_CPPv4N9LAMMPS_NS6MyPage4vgotEi" title="LAMMPS_NS::MyPage::vgot"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">MyPage::vgot()</span></code></a>.</p>
|
||
<div class="literal-block-wrapper docutils container" id="id7">
|
||
<div class="code-block-caption"><span class="caption-text">Example of using <a class="reference internal" href="#_CPPv4N9LAMMPS_NS6MyPageE" title="LAMMPS_NS::MyPage"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">MyPage</span></code></a></span><a class="headerlink" href="#id7" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="cp">#include</span><span class="w"> </span><span class="cpf">"my_page.h"</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">LAMMPS_NS</span><span class="p">;</span>
|
||
|
||
<span class="w"> </span><span class="n">MyPage</span><span class="o"><</span><span class="kt">double</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="n">dpage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MyPage</span><span class="o"><</span><span class="kt">double</span><span class="o">></span><span class="p">;</span>
|
||
<span class="w"> </span><span class="c1">// max size of chunk: 256, size of page: 10240 doubles (=81920 bytes)</span>
|
||
<span class="w"> </span><span class="n">dpage</span><span class="o">-></span><span class="n">init</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">10240</span><span class="p">);</span>
|
||
|
||
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="o">**</span><span class="nf">build_some_lists</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">dpage</span><span class="o">-></span><span class="n">reset</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="o">**</span><span class="n">dlist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">double</span><span class="o">*</span><span class="p">[</span><span class="n">num</span><span class="p">];</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="o">*</span><span class="n">dptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dpage</span><span class="p">.</span><span class="n">vget</span><span class="p">();</span>
|
||
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">jnum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">jmax</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="c1">// compute some dvalue for eligible loop index j</span>
|
||
<span class="w"> </span><span class="n">dptr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dvalue</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="o">++</span><span class="n">jnum</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dpage</span><span class="p">.</span><span class="n">status</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="c1">// handle out of memory or jnum too large errors</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="n">dpage</span><span class="p">.</span><span class="n">vgot</span><span class="p">(</span><span class="n">jnum</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="n">dlist</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dptr</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dlist</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<hr class="docutils" />
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPageE">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPageE"></span><span id="_CPPv2N9LAMMPS_NS6MyPageE"></span><span id="LAMMPS_NS::MyPage"></span><span class="target" id="classLAMMPS__NS_1_1MyPage"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MyPage</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPageE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Templated class for storing chunks of datums in pages. </p>
|
||
<p>The size of the chunk may vary from call to call, but must be less or equal than the <em>maxchunk</em> setting. The chunks are not returnable like with malloc() (i.e. you cannot call free() on them individually). One can only reset and start over. The purpose of this class is to replace many small memory allocations via malloc() with a few large ones. Since the pages are never freed until the class is re-initialized, they can be re-used without having to re-allocate them by calling the <a class="reference internal" href="#classLAMMPS__NS_1_1MyPage_1ad20897c5c8bd47f5d4005989bead0e55"><span class="std std-ref">reset()</span></a> method.</p>
|
||
<p>The settings <em>maxchunk</em>, <em>pagesize</em>, and <em>pagedelta</em> control the memory allocation strategy. The <em>maxchunk</em> value represents the expected largest number of items per chunk. If there is less space left on the current page, a new page is allocated for the next chunk. The <em>pagesize</em> value represents how many items can fit on a single page. It should have space for multiple chunks of size <em>maxchunk</em>. The combination of these two parameters determines how much memory is wasted by either switching to the next page too soon or allocating too large pages that never get properly used. An error is issued if a requested chunk is larger than <em>maxchunk</em>. The <em>pagedelta</em> parameter determines how many pages are allocated in one go. In combination with the <em>pagesize</em> setting, this determines how often blocks of memory get allocated (fewer allocations will result in faster execution).</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This is a template class with explicit instantiation. If the class is used with a new data type, a new explicit instantiation may need to be added at the end of the file <code class="docutils literal notranslate"><span class="pre">src/my_page.cpp</span></code> to avoid symbol lookup errors. </p>
|
||
</div>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPage6MyPageEv">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPage6MyPageEv"></span><span id="_CPPv2N9LAMMPS_NS6MyPage6MyPageEv"></span><span id="LAMMPS_NS::MyPage::MyPage"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1aaea419ba80ccc8fc23bcfd0870c1e875"></span><span class="sig-name descname"><span class="n"><span class="pre">MyPage</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPage6MyPageEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Create a class instance</p>
|
||
<p>Need to call <a class="reference internal" href="#classLAMMPS__NS_1_1MyPage_1a381c748265a923272bd332b3905a9891"><span class="std std-ref">init()</span></a> before use to define allocation settings </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPage4initEiii">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPage4initEiii"></span><span id="_CPPv2N9LAMMPS_NS6MyPage4initEiii"></span><span id="LAMMPS_NS::MyPage::init__i.i.i"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1a381c748265a923272bd332b3905a9891"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">init</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_maxchunk</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_pagesize</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1024</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_pagedelta</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPage4initEiii" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>(Re-)initialize the set of pages and allocation parameters.</p>
|
||
<p>This also frees all previously allocated storage and allocates the first page(s).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>user_maxchunk</strong> – Expected maximum number of items for one chunk </p></li>
|
||
<li><p><strong>user_pagesize</strong> – Number of items on a single memory page </p></li>
|
||
<li><p><strong>user_pagedelta</strong> – Number of pages to allocate with one malloc </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>1 if there were invalid parameters, 2 if there was an allocation error or 0 if successful </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPage3getEi">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPage3getEi"></span><span id="_CPPv2N9LAMMPS_NS6MyPage3getEi"></span><span id="LAMMPS_NS::MyPage::get__i"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1ac0fe0e7127a43512b203e64202414cab"></span><span class="n"><span class="pre">T</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">get</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPage3getEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Pointer to location that can store N items.</p>
|
||
<p>This will allocate more pages as needed. If the parameter <em>N</em> is larger than the <em>maxchunk</em> setting, an error is flagged.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>n</strong> – number of items for which storage is requested </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>memory location or null pointer, if error or allocation failed </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPage4vgetEv">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPage4vgetEv"></span><span id="_CPPv2N9LAMMPS_NS6MyPage4vgetEv"></span><span id="LAMMPS_NS::MyPage::vget"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1a9d22e2eb992cdc9902cf841fce95564c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">T</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">vget</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPage4vgetEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Get pointer to location that can store <em>maxchunk</em> items.</p>
|
||
<p>This will return the same pointer as the previous call to this function unless <a class="reference internal" href="#classLAMMPS__NS_1_1MyPage_1a8b3b7dc16eae4b0445e534a37eb85806"><span class="std std-ref">vgot()</span></a> is called afterwards to record how many items of the chunk were actually used.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>pointer to chunk of memory or null pointer if run out of memory </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPage4vgotEi">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPage4vgotEi"></span><span id="_CPPv2N9LAMMPS_NS6MyPage4vgotEi"></span><span id="LAMMPS_NS::MyPage::vgot__i"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1a8b3b7dc16eae4b0445e534a37eb85806"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">vgot</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPage4vgotEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Mark <em>N</em> items as used of the chunk reserved with a preceding call to <a class="reference internal" href="#classLAMMPS__NS_1_1MyPage_1a9d22e2eb992cdc9902cf841fce95564c"><span class="std std-ref">vget()</span></a>.</p>
|
||
<p>This will advance the internal pointer inside the current memory page. It is not necessary to call this function for <em>N</em> = 0, implying the reserved storage was not used. A following call to <a class="reference internal" href="#classLAMMPS__NS_1_1MyPage_1a9d22e2eb992cdc9902cf841fce95564c"><span class="std std-ref">vget()</span></a> will then reserve the same location again. It is an error if <em>N</em> > <em>maxchunk</em>.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>n</strong> – Number of items used in previously reserved chunk </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS6MyPage5resetEv">
|
||
<span id="_CPPv3N9LAMMPS_NS6MyPage5resetEv"></span><span id="_CPPv2N9LAMMPS_NS6MyPage5resetEv"></span><span id="LAMMPS_NS::MyPage::reset"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1ad20897c5c8bd47f5d4005989bead0e55"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">reset</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS6MyPage5resetEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Reset state of memory pool without freeing any memory </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS6MyPage4sizeEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS6MyPage4sizeEv"></span><span id="_CPPv2NK9LAMMPS_NS6MyPage4sizeEv"></span><span id="LAMMPS_NS::MyPage::sizeC"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1ac3fe9e82d5f4f1d55a5c104a2a5d37a6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS6MyPage4sizeEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return total size of allocated pages</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>total storage used in bytes </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS6MyPage6statusEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS6MyPage6statusEv"></span><span id="_CPPv2NK9LAMMPS_NS6MyPage6statusEv"></span><span id="LAMMPS_NS::MyPage::statusC"></span><span class="target" id="classLAMMPS__NS_1_1MyPage_1a92d2adf8350ab6a66718eab4a990dffb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">status</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS6MyPage6statusEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return error status</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>0 if no error, 1 requested chunk size > maxchunk, 2 if malloc failed </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp class">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MyPoolChunkE">
|
||
<span id="_CPPv3N9LAMMPS_NS11MyPoolChunkE"></span><span id="_CPPv2N9LAMMPS_NS11MyPoolChunkE"></span><span id="LAMMPS_NS::MyPoolChunk"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MyPoolChunk</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MyPoolChunkE" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Templated class for storing chunks of datums in pages. </p>
|
||
<p>The size of the chunk may vary from call to call between the <em>minchunk</em> and <em>maxchunk</em> setting. Chunks may be returned to the pool for re-use. Chunks can be reserved in <em>nbin</em> different sizes between <em>minchunk</em> and <em>maxchunk</em>. The <em>chunksperpage</em> setting specifies how many chunks are stored on any page and the <em>pagedelta</em> setting determines how many pages are allocated in one go. Pages are never freed, so they can be re-used without re-allocation.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This is a template class with explicit instantiation. If the class is used with a new data type, a new explicit instantiation may need to be added at the end of the file <code class="docutils literal notranslate"><span class="pre">src/my_pool_chunk.cpp</span></code> to avoid symbol lookup errors. </p>
|
||
</div>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MyPoolChunk11MyPoolChunkEiiiii">
|
||
<span id="_CPPv3N9LAMMPS_NS11MyPoolChunk11MyPoolChunkEiiiii"></span><span id="_CPPv2N9LAMMPS_NS11MyPoolChunk11MyPoolChunkEiiiii"></span><span id="LAMMPS_NS::MyPoolChunk::MyPoolChunk__i.i.i.i.i"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1a60daa98fd41e5ff09753fe55f044b453"></span><span class="sig-name descname"><span class="n"><span class="pre">MyPoolChunk</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_minchunk</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_maxchunk</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_nbin</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_chunkperpage</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1024</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">user_pagedelta</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MyPoolChunk11MyPoolChunkEiiiii" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Create a class instance and set memory pool parameters</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>user_minchunk</strong> – Minimal chunk size </p></li>
|
||
<li><p><strong>user_maxchunk</strong> – Maximal chunk size </p></li>
|
||
<li><p><strong>user_nbin</strong> – Number of bins of different chunk sizes </p></li>
|
||
<li><p><strong>user_chunkperpage</strong> – Number of chunks per page </p></li>
|
||
<li><p><strong>user_pagedelta</strong> – Number of pages to allocate in one go </p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MyPoolChunkD0Ev">
|
||
<span id="_CPPv3N9LAMMPS_NS11MyPoolChunkD0Ev"></span><span id="_CPPv2N9LAMMPS_NS11MyPoolChunkD0Ev"></span><span id="LAMMPS_NS::MyPoolChunk::~MyPoolChunk"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1aa185474081f1f923a35914ed67077e11"></span><span class="sig-name descname"><span class="n"><span class="pre">~MyPoolChunk</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MyPoolChunkD0Ev" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Destroy class instance and free all allocated memory </p>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MyPoolChunk3getERi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MyPoolChunk3getERi"></span><span id="_CPPv2N9LAMMPS_NS11MyPoolChunk3getERi"></span><span id="LAMMPS_NS::MyPoolChunk::get__iR"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1a591380d4a3a168110139f35e1d56a3c9"></span><span class="n"><span class="pre">T</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">get</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MyPoolChunk3getERi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return pointer/index of unused chunk of size maxchunk</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>index</strong> – Index of chunk in memory pool </p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>Pointer to requested chunk of storage </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MyPoolChunk3getEiRi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MyPoolChunk3getEiRi"></span><span id="_CPPv2N9LAMMPS_NS11MyPoolChunk3getEiRi"></span><span id="LAMMPS_NS::MyPoolChunk::get__i.iR"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1a781c43c8f6e18dcb99c613292a38cc4e"></span><span class="n"><span class="pre">T</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">get</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">n</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MyPoolChunk3getEiRi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return pointer/index of unused chunk of size N</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>n</strong> – Size of chunk </p></li>
|
||
<li><p><strong>index</strong> – Index of chunk in memory pool </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>Pointer to requested chunk of storage </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS11MyPoolChunk3putEi">
|
||
<span id="_CPPv3N9LAMMPS_NS11MyPoolChunk3putEi"></span><span id="_CPPv2N9LAMMPS_NS11MyPoolChunk3putEi"></span><span id="LAMMPS_NS::MyPoolChunk::put__i"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1acf93b81dd253b533195c20ee85621412"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">put</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">index</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS11MyPoolChunk3putEi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Put indexed chunk back into memory pool via free list</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>index</strong> – Memory chunk index returned by call to <a class="reference internal" href="#classLAMMPS__NS_1_1MyPoolChunk_1a591380d4a3a168110139f35e1d56a3c9"><span class="std std-ref">get()</span></a></p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS11MyPoolChunk4sizeEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS11MyPoolChunk4sizeEv"></span><span id="_CPPv2NK9LAMMPS_NS11MyPoolChunk4sizeEv"></span><span id="LAMMPS_NS::MyPoolChunk::sizeC"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1ac3fe9e82d5f4f1d55a5c104a2a5d37a6"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS11MyPoolChunk4sizeEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return total size of allocated pages</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>total storage used in bytes </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4NK9LAMMPS_NS11MyPoolChunk6statusEv">
|
||
<span id="_CPPv3NK9LAMMPS_NS11MyPoolChunk6statusEv"></span><span id="_CPPv2NK9LAMMPS_NS11MyPoolChunk6statusEv"></span><span id="LAMMPS_NS::MyPoolChunk::statusC"></span><span class="target" id="classLAMMPS__NS_1_1MyPoolChunk_1a92d2adf8350ab6a66718eab4a990dffb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">status</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9LAMMPS_NS11MyPoolChunk6statusEv" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>Return error status</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>0 if no error, 1 if invalid input, 2 if malloc() failed, 3 if chunk > maxchunk </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="eigensolver-functions">
|
||
<h1><span class="section-number">4.21. </span>Eigensolver functions<a class="headerlink" href="#eigensolver-functions" title="Link to this heading"></a></h1>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">MathEigen</span></code> sub-namespace of the <code class="docutils literal notranslate"><span class="pre">LAMMPS_NS</span></code> namespace contains
|
||
functions and classes for eigensolvers. Currently only the
|
||
<a class="reference internal" href="#_CPPv4N9MathEigen7jacobi3EAL3E_AL3E_KdPdAL3E_AL3E_di" title="MathEigen::jacobi3"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">jacobi3</span> <span class="pre">function</span></code></a> is used in various
|
||
places in LAMMPS. That function is built on top of a group of more
|
||
generic eigensolvers that are maintained in the <code class="docutils literal notranslate"><span class="pre">math_eigen_impl.h</span></code>
|
||
header file. This header contains the implementation of three template
|
||
classes:</p>
|
||
<ol class="arabic simple">
|
||
<li><p>“Jacobi” calculates all of the eigenvalues and eigenvectors
|
||
of a dense, symmetric, real matrix.</p></li>
|
||
<li><p>The “PEigenDense” class only calculates the principal eigenvalue
|
||
(i.e. the largest or smallest eigenvalue), and its corresponding
|
||
eigenvector. However it is much more efficient than “Jacobi” when
|
||
applied to large matrices (larger than 13x13). PEigenDense also can
|
||
understand complex-valued Hermitian matrices.</p></li>
|
||
<li><p>The “LambdaLanczos” class is a generalization of “PEigenDense” which can be
|
||
applied to arbitrary sparse matrices.</p></li>
|
||
</ol>
|
||
<p>The “math_eigen_impl.h” code is an amalgamation of <a class="reference external" href="https://github.com/jewettaij/jacobi_pd">jacobi_pd</a> by Andrew Jewett at Scripps
|
||
Research (under CC0-1.0 license) and <a class="reference external" href="https://github.com/mrcdr/lambda-lanczos">Lambda Lanczos</a> by Yuya Kurebayashi at
|
||
Tohoku University (under MIT license)</p>
|
||
<hr class="docutils" />
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9MathEigen7jacobi3EPPCKdPdPPdi">
|
||
<span id="_CPPv3N9MathEigen7jacobi3EPPCKdPdPPdi"></span><span id="_CPPv2N9MathEigen7jacobi3EPPCKdPdPPdi"></span><span id="MathEigen::jacobi3__doubleCPCP.doubleP.doublePP.i"></span><span class="target" id="math__eigen_8h_1ab5f679ef0f37f9d96beb719cd8594dfe"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">MathEigen</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">jacobi3</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">mat</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">eval</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">evec</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">sort</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="o"><span class="pre">-</span></span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9MathEigen7jacobi3EPPCKdPdPPdi" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>A specialized function which finds the eigenvalues and eigenvectors of a 3x3 matrix (in double ** format).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>mat</strong> – the 3x3 matrix you wish to diagonalize </p></li>
|
||
<li><p><strong>eval</strong> – store the eigenvalues here </p></li>
|
||
<li><p><strong>evec</strong> – store the eigenvectors here… </p></li>
|
||
<li><p><strong>sort</strong> – order eigenvalues and -vectors (-1 decreasing (default), 1 increasing, 0 unsorted) </p></li>
|
||
</ul>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>0 if eigenvalue calculation converged, 1 if it failed </p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9MathEigen7jacobi3EAL3E_AL3E_KdPdAL3E_AL3E_di">
|
||
<span id="_CPPv3N9MathEigen7jacobi3EAL3E_AL3E_KdPdAL3E_AL3E_di"></span><span id="_CPPv2N9MathEigen7jacobi3EA3_A3_KdPdA3_A3_di"></span><span id="MathEigen::jacobi3__doubleCAA.doubleP.doubleAA.i"></span><span class="target" id="math__eigen_8h_1a00305ba13433b680f4c3e6bf2459a5b0"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">MathEigen</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">jacobi3</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">mat</span></span><span class="p"><span class="pre">[</span></span><span class="m"><span class="pre">3</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">[</span></span><span class="m"><span class="pre">3</span></span><span class="p"><span class="pre">]</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">eval</span></span>, <span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">evec</span></span><span class="p"><span class="pre">[</span></span><span class="m"><span class="pre">3</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">[</span></span><span class="m"><span class="pre">3</span></span><span class="p"><span class="pre">]</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">sort</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="o"><span class="pre">-</span></span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9MathEigen7jacobi3EAL3E_AL3E_KdPdAL3E_AL3E_di" title="Link to this definition"></a><br /></dt>
|
||
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
|
||
</dd></dl>
|
||
|
||
<hr class="docutils" />
|
||
</section>
|
||
<section id="communication-buffer-coding-with-ubuf">
|
||
<span id="id2"></span><h1><span class="section-number">4.22. </span>Communication buffer coding with <em>ubuf</em><a class="headerlink" href="#communication-buffer-coding-with-ubuf" title="Link to this heading"></a></h1>
|
||
<p>LAMMPS uses communication buffers where it collects data from various
|
||
class instances and then exchanges the data with neighboring subdomains.
|
||
For simplicity those buffers are defined as <code class="docutils literal notranslate"><span class="pre">double</span></code> buffers and
|
||
used for doubles and integer numbers. This presents a unique problem
|
||
when 64-bit integers are used. While the storage needed for a <code class="docutils literal notranslate"><span class="pre">double</span></code>
|
||
is also 64-bit, it cannot be used by a simple assignment. To get around
|
||
that limitation, LAMMPS uses the <a class="reference internal" href="#_CPPv4N9LAMMPS_NS4ubufE" title="LAMMPS_NS::ubuf"><code class="xref cpp cpp-union docutils literal notranslate"><span class="pre">ubuf</span></code></a>
|
||
union. It is used in the various “pack” and “unpack” functions in the
|
||
LAMMPS classes to store and retrieve integers that may be 64-bit from
|
||
the communication buffers.</p>
|
||
<hr class="docutils" />
|
||
<dl class="cpp union">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS4ubufE">
|
||
<span id="_CPPv3N9LAMMPS_NS4ubufE"></span><span id="_CPPv2N9LAMMPS_NS4ubufE"></span><span class="target" id="unionLAMMPS__NS_1_1ubuf"></span><span class="k"><span class="pre">union</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ubuf</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS4ubufE" title="Link to this definition"></a><br /></dt>
|
||
<dd><div class="docutils container">
|
||
<em>#include <lmptype.h></em></div>
|
||
<p>Data structure for packing 32-bit and 64-bit integers into double (communication) buffers</p>
|
||
<p>Using this union avoids aliasing issues by having member types (double, int) referencing the same buffer memory location.</p>
|
||
<p>The explicit constructor for 32-bit integers prevents compilers from (incorrectly) calling the double constructor when storing an int into a double buffer. <p><p><strong>Usage:</strong></p>
|
||
<div class="literal-block-wrapper docutils container" id="id8">
|
||
<div class="code-block-caption"><span class="caption-text">To copy an integer into a double buffer:</span><a class="headerlink" href="#id8" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="kt">double</span><span class="w"> </span><span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
|
||
<span class="kt">int</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||
<span class="n">tagint</span><span class="w"> </span><span class="n">bar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="o"><<</span><span class="mi">40</span><span class="p">;</span>
|
||
<span class="n">buf</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ubuf</span><span class="p">(</span><span class="n">foo</span><span class="p">).</span><span class="n">d</span><span class="p">;</span>
|
||
<span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ubuf</span><span class="p">(</span><span class="n">bar</span><span class="p">).</span><span class="n">d</span><span class="p">;</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="literal-block-wrapper docutils container" id="id9">
|
||
<div class="code-block-caption"><span class="caption-text">To copy from a double buffer back to an int:</span><a class="headerlink" href="#id9" title="Link to this code"></a></div>
|
||
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="n">ubuf</span><span class="p">(</span><span class="n">buf</span><span class="p">[</span><span class="mi">1</span><span class="p">]).</span><span class="n">i</span><span class="p">;</span>
|
||
<span class="n">bar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">tagint</span><span class="p">)</span><span class="w"> </span><span class="n">ubuf</span><span class="p">(</span><span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">]).</span><span class="n">i</span><span class="p">;</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<p>The typecasts prevent compiler warnings about possible truncation issues.</p>
|
||
</p>
|
||
</p>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS4ubuf4ubufERKd">
|
||
<span id="_CPPv3N9LAMMPS_NS4ubuf4ubufERKd"></span><span id="_CPPv2N9LAMMPS_NS4ubuf4ubufERKd"></span><span id="LAMMPS_NS::ubuf::ubuf__doubleCR"></span><span class="target" id="unionLAMMPS__NS_1_1ubuf_1a5cdd4245af25171a133da99e9808170b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ubuf</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">arg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS4ubuf4ubufERKd" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS4ubuf4ubufERK7int64_t">
|
||
<span id="_CPPv3N9LAMMPS_NS4ubuf4ubufERK7int64_t"></span><span id="_CPPv2N9LAMMPS_NS4ubuf4ubufERK7int64_t"></span><span id="LAMMPS_NS::ubuf::ubuf__int64_tCR"></span><span class="target" id="unionLAMMPS__NS_1_1ubuf_1a86bb79057870b1bd9b4f9275e5d929fa"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ubuf</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">arg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS4ubuf4ubufERK7int64_t" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp function">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS4ubuf4ubufERKi">
|
||
<span id="_CPPv3N9LAMMPS_NS4ubuf4ubufERKi"></span><span id="_CPPv2N9LAMMPS_NS4ubuf4ubufERKi"></span><span id="LAMMPS_NS::ubuf::ubuf__iCR"></span><span class="target" id="unionLAMMPS__NS_1_1ubuf_1a76e1c4df9fb2687d7f2055f90b08360d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ubuf</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">arg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS4ubuf4ubufERKi" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
</div>
|
||
<div class="breathe-sectiondef docutils container">
|
||
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
|
||
<dl class="cpp var">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS4ubuf1dE">
|
||
<span id="_CPPv3N9LAMMPS_NS4ubuf1dE"></span><span id="_CPPv2N9LAMMPS_NS4ubuf1dE"></span><span id="LAMMPS_NS::ubuf::d__double"></span><span class="target" id="unionLAMMPS__NS_1_1ubuf_1a873684cefeb665f3d5e6b495de57fc0d"></span><span class="kt"><span class="pre">double</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">d</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS4ubuf1dE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
<dl class="cpp var">
|
||
<dt class="sig sig-object cpp" id="_CPPv4N9LAMMPS_NS4ubuf1iE">
|
||
<span id="_CPPv3N9LAMMPS_NS4ubuf1iE"></span><span id="_CPPv2N9LAMMPS_NS4ubuf1iE"></span><span id="LAMMPS_NS::ubuf::i__int64_t"></span><span class="target" id="unionLAMMPS__NS_1_1ubuf_1a193e7d4afbc8ac1c220aa7130e279451"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">i</span></span></span><a class="headerlink" href="#_CPPv4N9LAMMPS_NS4ubuf1iE" title="Link to this definition"></a><br /></dt>
|
||
<dd></dd></dl>
|
||
|
||
</div>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="Developer_platform.html" class="btn btn-neutral float-left" title="4.14. Platform abstraction functions" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="Developer_grid.html" class="btn btn-neutral float-right" title="4.23. Use of distributed grids within style classes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2003-2025 Sandia Corporation.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(false);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |