Files
lammps/doc/html/Modify_gran_sub_mod.html
2025-01-13 14:55:48 +00:00

356 lines
27 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>3.16. Granular Sub-Model styles &mdash; 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/Modify_gran_sub_mod.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="3.17. Thermodynamic output options" href="Modify_thermo.html" />
<link rel="prev" title="3.15. Body styles" href="Modify_body.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 current"><a class="reference internal" href="Modify.html">3. Modifying &amp; extending LAMMPS</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Modify_overview.html">3.1. Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_contribute.html">3.2. Submitting new features for inclusion in LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_requirements.html">3.3. Requirements for contributions to LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_style.html">3.4. LAMMPS programming style</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_atom.html">3.5. Atom styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_pair.html">3.6. Pair styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_bond.html">3.7. Bond, angle, dihedral, improper styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_compute.html">3.8. Compute styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_fix.html">3.9. Fix styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_command.html">3.10. Input script command style</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_dump.html">3.11. Dump styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_kspace.html">3.12. Kspace styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_min.html">3.13. Minimization styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_region.html">3.14. Region styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_body.html">3.15. Body styles</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">3.16. Granular Sub-Model styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_thermo.html">3.17. Thermodynamic output options</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_variable.html">3.18. Variable options</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Developer.html">4. Information for Developers</a></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="Modify.html"><span class="section-number">3. </span>Modifying &amp; extending LAMMPS</a></li>
<li class="breadcrumb-item active"><span class="section-number">3.16. </span>Granular Sub-Model styles</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="Modify_body.html" class="btn btn-neutral float-left" title="3.15. Body styles" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Modify_thermo.html" class="btn btn-neutral float-right" title="3.17. Thermodynamic output options" 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="granular-sub-model-styles">
<h1><span class="section-number">3.16. </span>Granular Sub-Model styles<a class="headerlink" href="#granular-sub-model-styles" title="Link to this heading"></a></h1>
<p>In granular models, particles are spheres with a finite radius and rotational
degrees of freedom as further described in the
<a class="reference internal" href="Howto_granular.html"><span class="doc">Howto granular page</span></a>. Interactions between pair of
particles or particles and walls may therefore depend on many different modes
of motion as described in <a class="reference internal" href="pair_granular.html"><span class="doc">pair granular</span></a> and
<a class="reference internal" href="fix_wall_gran.html"><span class="doc">fix wall/gran</span></a>. In both cases, the exchange of forces,
torques, and heat flow between two types of bodies is defined using a
GranularModel class. The GranularModel class organizes the details of an
interaction using a series of granular sub-models each of which describe a
particular interaction mode (e.g. normal forces or rolling friction). From a
parent GranSubMod class, several types of sub-model classes are derived:</p>
<ul class="simple">
<li><p>GranSubModNormal: normal force sub-model</p></li>
<li><p>GranSubModDamping: normal damping sub-model</p></li>
<li><p>GranSubModTangential: tangential forces and sliding friction sub-model</p></li>
<li><p>GranSubModRolling: rolling friction sub-model</p></li>
<li><p>GranSubModTwisting: twisting friction sub-model</p></li>
<li><p>GranSubModHeat: heat conduction sub-model</p></li>
</ul>
<p>For each type of sub-model, more classes are further derived, each describing a
specific implementation. For instance, from the GranSubModNormal class the
GranSubModNormalHooke, GranSubModNormalHertz, and GranSubModNormalJKR classes
are derived which calculate Hookean, Hertzian, or JKR normal forces,
respectively. This modular structure simplifies the addition of new granular
contact models as one only needs to create a new GranSubMod class without
having to modify the more complex PairGranular, FixGranWall, and GranularModel
classes. Most GranSubMod methods are also already defined by the parent classes
so new contact models typically only require edits to a few relevant methods
(e.g. methods that define coefficients and calculate forces).</p>
<p>Each GranSubMod class has a pointer to both the LAMMPS class and the GranularModel
class which owns it, <code class="docutils literal notranslate"><span class="pre">lmp</span></code> and <code class="docutils literal notranslate"><span class="pre">gm</span></code>, respectively. The GranularModel class
includes several public variables that describe the geometry/dynamics of the
contact such as</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 25.0%" />
<col style="width: 75.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">xi</span></code> and <code class="docutils literal notranslate"><span class="pre">xj</span></code></p></td>
<td><p>Positions of the two contacting bodies</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">vi</span></code> and <code class="docutils literal notranslate"><span class="pre">vj</span></code></p></td>
<td><p>Velocities of the two contacting bodies</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">omegai</span></code> and <code class="docutils literal notranslate"><span class="pre">omegaj</span></code></p></td>
<td><p>Angular velocities of the two contacting bodies</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">dx</span></code> and <code class="docutils literal notranslate"><span class="pre">nx</span></code></p></td>
<td><p>The displacement and normalized displacement vectors</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">r</span></code>, <code class="docutils literal notranslate"><span class="pre">rsq</span></code>, and <code class="docutils literal notranslate"><span class="pre">rinv</span></code></p></td>
<td><p>The distance, distance squared, and inverse distance</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">radsum</span></code></p></td>
<td><p>The sum of particle radii</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">vr</span></code>, <code class="docutils literal notranslate"><span class="pre">vn</span></code>, and <code class="docutils literal notranslate"><span class="pre">vt</span></code></p></td>
<td><p>The relative velocity vector and its normal and tangential components</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">wr</span></code></p></td>
<td><p>The relative rotational velocity</p></td>
</tr>
</tbody>
</table>
<p>These quantities, among others, are calculated in the <code class="docutils literal notranslate"><span class="pre">GranularModel-&gt;check_contact()</span></code>
and <code class="docutils literal notranslate"><span class="pre">GranularModel-&gt;calculate_forces()</span></code> methods which can be referred to for more
details.</p>
<p>To create a new GranSubMod class, it is recommended that one first looks at similar
GranSubMod classes. All GranSubMod classes share several general methods which may
need to be defined</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 25.0%" />
<col style="width: 75.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">mix_coeff()</span></code></p></td>
<td><p>Optional method to define how coefficients are mixed for different atom types. By default, coefficients are mixed using a geometric mean.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">coeffs_to_local()</span></code></p></td>
<td><p>Parses coefficients to define local variables. Run once at model construction.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">init()</span></code></p></td>
<td><p>Optional method to define local variables after other GranSubMod types were created. For instance, this method may be used by a tangential model that derives parameters from the normal model.</p></td>
</tr>
</tbody>
</table>
<p>The Normal, Damping, Tangential, Twisting, and Rolling sub-models also have a
<code class="docutils literal notranslate"><span class="pre">calculate_forces()</span></code> method which calculate the respective forces/torques.
Correspondingly, the Heat sub-model has a <code class="docutils literal notranslate"><span class="pre">calculate_heat()</span></code> method. Lastly,
the Normal sub-model has a few extra optional methods:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 25.0%" />
<col style="width: 75.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">touch()</span></code></p></td>
<td><p>Tests whether particles are in contact. By default, when particles overlap.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">pulloff_distance()</span></code></p></td>
<td><p>Returns the distance at which particles stop interacting. By default, when particles no longer overlap.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">calculate_radius()</span></code></p></td>
<td><p>Returns the radius of the contact. By default, the radius of the geometric cross section.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">set_fncrit()</span></code></p></td>
<td><p>Defines the critical force to break the contact used by some tangential, rolling, and twisting sub-models. By default, the current total normal force including damping.</p></td>
</tr>
</tbody>
</table>
<p>As an example, say one wanted to create a new normal force option that consisted
of a Hookean force with a piecewise stiffness. This could be done by adding a new
set of files <code class="docutils literal notranslate"><span class="pre">gran_sub_mod_custom.h</span></code>:</p>
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#ifdef GranSubMod_CLASS</span>
<span class="c1">// clang-format off</span>
<span class="n">GranSubModStyle</span><span class="p">(</span><span class="n">hooke</span><span class="o">/</span><span class="n">piecewise</span><span class="p">,</span><span class="n">GranSubModNormalHookePiecewise</span><span class="p">,</span><span class="n">NORMAL</span><span class="p">);</span>
<span class="c1">// clang-format on</span>
<span class="cp">#else</span>
<span class="cp">#ifndef GRAN_SUB_MOD_CUSTOM_H_</span>
<span class="cp">#define GRAN_SUB_MOD_CUSTOM_H_</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;gran_sub_mod.h&quot;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;gran_sub_mod_normal.h&quot;</span>
<span class="k">namespace</span><span class="w"> </span><span class="nn">LAMMPS_NS</span><span class="w"> </span><span class="p">{</span>
<span class="k">namespace</span><span class="w"> </span><span class="nn">Granular_NS</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">GranSubModNormalHookePiecewise</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">GranSubModNormal</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">public</span><span class="o">:</span>
<span class="w"> </span><span class="n">GranSubModNormalHookePiecewise</span><span class="p">(</span><span class="k">class</span><span class="w"> </span><span class="nc">GranularModel</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">LAMMPS</span><span class="w"> </span><span class="o">*</span><span class="p">);</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">coeffs_to_local</span><span class="p">()</span><span class="w"> </span><span class="k">override</span><span class="p">;</span>
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="nf">calculate_forces</span><span class="p">()</span><span class="w"> </span><span class="k">override</span><span class="p">;</span>
<span class="w"> </span><span class="k">protected</span><span class="o">:</span>
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">k1</span><span class="p">,</span><span class="w"> </span><span class="n">k2</span><span class="p">,</span><span class="w"> </span><span class="n">delta_switch</span><span class="p">;</span>
<span class="w"> </span><span class="p">};</span>
<span class="p">}</span><span class="w"> </span><span class="c1">// namespace Granular_NS</span>
<span class="p">}</span><span class="w"> </span><span class="c1">// namespace LAMMPS_NS</span>
<span class="cp">#endif </span><span class="cm">/*GRAN_SUB_MOD_CUSTOM_H_ */</span>
<span class="cp">#endif </span><span class="cm">/*GRAN_SUB_MOD_CLASS_H_ */</span>
</pre></div>
</div>
<p>and <code class="docutils literal notranslate"><span class="pre">gran_sub_mod_custom.cpp</span></code></p>
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;gran_sub_mod_custom.h&quot;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;gran_sub_mod_normal.h&quot;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;granular_model.h&quot;</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="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">Granular_NS</span><span class="p">;</span>
<span class="n">GranSubModNormalHookePiecewise</span><span class="o">::</span><span class="n">GranSubModNormalHookePiecewise</span><span class="p">(</span><span class="n">GranularModel</span><span class="w"> </span><span class="o">*</span><span class="n">gm</span><span class="p">,</span><span class="w"> </span><span class="n">LAMMPS</span><span class="w"> </span><span class="o">*</span><span class="n">lmp</span><span class="p">)</span><span class="w"> </span><span class="o">:</span>
<span class="w"> </span><span class="n">GranSubModNormal</span><span class="p">(</span><span class="n">gm</span><span class="p">,</span><span class="w"> </span><span class="n">lmp</span><span class="p">)</span>
<span class="p">{</span>
<span class="w"> </span><span class="n">num_coeffs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/* ---------------------------------------------------------------------- */</span>
<span class="kt">void</span><span class="w"> </span><span class="n">GranSubModNormalHookePiecewise</span><span class="o">::</span><span class="n">coeffs_to_local</span><span class="p">()</span>
<span class="p">{</span>
<span class="w"> </span><span class="n">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="w"> </span><span class="n">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
<span class="w"> </span><span class="n">damp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
<span class="w"> </span><span class="n">delta_switch</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">coeffs</span><span class="p">[</span><span class="mi">3</span><span class="p">];</span>
<span class="p">}</span>
<span class="cm">/* ---------------------------------------------------------------------- */</span>
<span class="kt">double</span><span class="w"> </span><span class="n">GranSubModNormalHookePiecewise</span><span class="o">::</span><span class="n">calculate_forces</span><span class="p">()</span>
<span class="p">{</span>
<span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">Fne</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">gm</span><span class="o">-&gt;</span><span class="n">delta</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">delta_switch</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">Fne</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">k1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">delta_switch</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">k2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">gm</span><span class="o">-&gt;</span><span class="n">delta</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">delta_switch</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">Fne</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">k1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">gm</span><span class="o">-&gt;</span><span class="n">delta</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">Fne</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Modify_body.html" class="btn btn-neutral float-left" title="3.15. Body styles" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Modify_thermo.html" class="btn btn-neutral float-right" title="3.17. Thermodynamic output options" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; 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>