<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16">
  <compounddef id="namespacep3m__functions" kind="namespace" language="Fortran">
    <compoundname>p3m_functions</compoundname>
      <sectiondef kind="var">
      <memberdef kind="variable" id="namespacep3m__functions_1aedfe0a0f65453ca61b90d4c601747c90" prot="private" static="no" mutable="no">
        <type>real, parameter</type>
        <definition>real, parameter p3m_functions::hneglect_dflt</definition>
        <argsstring></argsstring>
        <name>hneglect_dflt</name>
        <initializer>= 1.E-30</initializer>
        <briefdescription>
<para>Default value of a negligible cell thickness. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="13" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="13" bodyend="13"/>
        <referencedby refid="namespacep3m__functions_1ab70eb9e69fc6586e1d6a371d2eeb44d1" compoundref="P3M__functions_8F90" startline="193" endline="333">p3m_boundary_extrapolation</referencedby>
        <referencedby refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_limiter</referencedby>
      </memberdef>
      <memberdef kind="variable" id="namespacep3m__functions_1abdb3a0dd6c75e81bbcb5f5c982c31e7b" prot="private" static="no" mutable="no">
        <type>real, parameter</type>
        <definition>real, parameter p3m_functions::hneglect_edge_dflt</definition>
        <argsstring></argsstring>
        <name>hneglect_edge_dflt</name>
        <initializer>= 1.E-10</initializer>
        <briefdescription>
<para>Default value of a negligible edge thickness. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="14" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="14" bodyend="14"/>
        <referencedby refid="namespacep3m__functions_1ab70eb9e69fc6586e1d6a371d2eeb44d1" compoundref="P3M__functions_8F90" startline="193" endline="333">p3m_boundary_extrapolation</referencedby>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacep3m__functions_1a685d3ef292536dae810b2059ccaa5819" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public p3m_functions::p3m_interpolation</definition>
        <argsstring>(N, h, u, edge_values, ppoly_S, ppoly_coef, h_neglect, answers_2018)</argsstring>
        <name>p3m_interpolation</name>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>u</type>
          <defname>u</defname>
        </param>
        <param>
          <type>edge_values</type>
          <defname>edge_values</defname>
        </param>
        <param>
          <type>ppoly_S</type>
          <defname>ppoly_S</defname>
        </param>
        <param>
          <type>ppoly_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Set up a piecewise cubic interpolation from cell averages and estimated edge slopes and values. </para>
        </briefdescription>
        <detaileddescription>
<para>Cubic interpolation between edges.</para>
<para>The edge values and slopes MUST have been estimated prior to calling this routine.</para>
<para>It is assumed that the size of the array &apos;u&apos; is equal to the number of cells defining &apos;grid&apos; and &apos;ppoly&apos;. No consistency check is performed here. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of cells </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>cell widths (size N) [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell averages (size N) in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_values</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge value of polynomial [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_s</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge slope of polynomial [A H-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of polynomial [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width for the purpose of cell reconstructions [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">answers_2018</parametername>
</parameternamelist>
<parameterdescription>
<para>If true use older, less acccurate expressions. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="28" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="29" bodyend="45"/>
        <references refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_limiter</references>
        <referencedby refid="namespaceregrid__interp_1a3d1406836d089b4553421776277e1339" compoundref="regrid__interp_8F90" startline="80" endline="262">regrid_interp::regridding_set_ppolys</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine p3m_functions::p3m_limiter</definition>
        <argsstring>(N, h, u, edge_values, ppoly_S, ppoly_coef, h_neglect, answers_2018)</argsstring>
        <name>p3m_limiter</name>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>u</type>
          <defname>u</defname>
        </param>
        <param>
          <type>edge_values</type>
          <defname>edge_values</defname>
        </param>
        <param>
          <type>ppoly_S</type>
          <defname>ppoly_S</defname>
        </param>
        <param>
          <type>ppoly_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Adust a piecewise cubic reconstruction with a limiter that adjusts the edge values and slopes. </para>
        </briefdescription>
        <detaileddescription>
<para>The p3m limiter operates as follows:</para>
<para><orderedlist>
<listitem><para>Edge values are bounded</para>
</listitem><listitem><para>Discontinuous edge values are systematically averaged</para>
</listitem><listitem><para>Loop on cells and do the following a. Build cubic curve b. Check if cubic curve is monotonic c. If not, monotonize cubic curve and rebuild it</para>
</listitem></orderedlist>
</para>
<para>Step 3 of the monotonization process leaves all edge values unchanged. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of cells </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>cell widths (size N) [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell averages (size N) in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_values</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge value of polynomial [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_s</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge slope of polynomial [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of polynomial [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width for the purpose of cell reconstructions [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">answers_2018</parametername>
</parameternamelist>
<parameterdescription>
<para>If true use older, less acccurate expressions. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="61" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="62" bodyend="174"/>
        <references refid="namespaceregrid__edge__values_1ad43eb7fa3a284e2b33068f47232521ca" compoundref="regrid__edge__values_8F90" startline="116" endline="133">regrid_edge_values::average_discontinuous_edge_values</references>
        <references refid="namespaceregrid__edge__values_1a8480933738145ee2525e1bf449f14097" compoundref="regrid__edge__values_8F90" startline="45" endline="108">regrid_edge_values::bound_edge_values</references>
        <references refid="namespacep3m__functions_1a82c244f63ffd696c15d58a029e8e24f7" compoundref="P3M__functions_8F90" startline="344" endline="373">build_cubic_interpolant</references>
        <references refid="namespacep3m__functions_1aedfe0a0f65453ca61b90d4c601747c90" compoundref="P3M__functions_8F90" startline="13" endline="13">hneglect_dflt</references>
        <references refid="namespacep3m__functions_1a3c461688b7c3ae5b2b4a7cf3311b8a69" compoundref="P3M__functions_8F90" startline="386" endline="405">is_cubic_monotonic</references>
        <references refid="namespacep3m__functions_1adb96651fe725f11e90dec2b8509989b0" compoundref="P3M__functions_8F90" startline="436" endline="572">monotonize_cubic</references>
        <referencedby refid="namespacep3m__functions_1a685d3ef292536dae810b2059ccaa5819" compoundref="P3M__functions_8F90" startline="29" endline="45">p3m_interpolation</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacep3m__functions_1ab70eb9e69fc6586e1d6a371d2eeb44d1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public p3m_functions::p3m_boundary_extrapolation</definition>
        <argsstring>(N, h, u, edge_values, ppoly_S, ppoly_coef, h_neglect, h_neglect_edge)</argsstring>
        <name>p3m_boundary_extrapolation</name>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>u</type>
          <defname>u</defname>
        </param>
        <param>
          <type>edge_values</type>
          <defname>edge_values</defname>
        </param>
        <param>
          <type>ppoly_S</type>
          <defname>ppoly_S</defname>
        </param>
        <param>
          <type>ppoly_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>h_neglect_edge</type>
          <defname>h_neglect_edge</defname>
        </param>
        <briefdescription>
<para>Calculate the edge values and slopes at boundary cells as part of building a piecewise cubic sub-grid scale profiles. </para>
        </briefdescription>
        <detaileddescription>
<para>The following explanations apply to the left boundary cell. The same reasoning holds for the right boundary cell.</para>
<para>A cubic needs to be built in the cell and requires four degrees of freedom, which are the edge values and slopes. The right edge values and slopes are taken to be that of the neighboring cell (i.e., the left edge value and slope of the neighboring cell). The left edge value and slope are determined by computing the parabola based on the cell average and the right edge value and slope. The resulting cubic is not necessarily monotonic and the slopes are subsequently modified to yield a monotonic cubic. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of cells </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>cell widths (size N) [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell averages (size N) in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_values</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge value of polynomial [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_s</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge slope of polynomial [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of polynomial [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width for the purpose of cell reconstructions [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect_edge</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width for the purpose of finding edge values [H] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="191" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="193" bodyend="333"/>
        <references refid="namespacep3m__functions_1a82c244f63ffd696c15d58a029e8e24f7" compoundref="P3M__functions_8F90" startline="344" endline="373">build_cubic_interpolant</references>
        <references refid="namespacep3m__functions_1aedfe0a0f65453ca61b90d4c601747c90" compoundref="P3M__functions_8F90" startline="13" endline="13">hneglect_dflt</references>
        <references refid="namespacep3m__functions_1abdb3a0dd6c75e81bbcb5f5c982c31e7b" compoundref="P3M__functions_8F90" startline="14" endline="14">hneglect_edge_dflt</references>
        <references refid="namespacep3m__functions_1a3c461688b7c3ae5b2b4a7cf3311b8a69" compoundref="P3M__functions_8F90" startline="386" endline="405">is_cubic_monotonic</references>
        <references refid="namespacep3m__functions_1adb96651fe725f11e90dec2b8509989b0" compoundref="P3M__functions_8F90" startline="436" endline="572">monotonize_cubic</references>
        <referencedby refid="namespaceregrid__interp_1a3d1406836d089b4553421776277e1339" compoundref="regrid__interp_8F90" startline="80" endline="262">regrid_interp::regridding_set_ppolys</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacep3m__functions_1a82c244f63ffd696c15d58a029e8e24f7" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine p3m_functions::build_cubic_interpolant</definition>
        <argsstring>(h, k, edge_values, ppoly_S, ppoly_coef)</argsstring>
        <name>build_cubic_interpolant</name>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>k</type>
          <defname>k</defname>
        </param>
        <param>
          <type>edge_values</type>
          <defname>edge_values</defname>
        </param>
        <param>
          <type>ppoly_S</type>
          <defname>ppoly_S</defname>
        </param>
        <param>
          <type>ppoly_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <briefdescription>
<para>Build cubic interpolant in cell k. </para>
        </briefdescription>
        <detaileddescription>
<para>Given edge values and edge slopes, compute coefficients of cubic in cell k.</para>
<para>NOTE: edge values and slopes MUST have been properly calculated prior to calling this routine. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>cell widths (size N) [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">k</parametername>
</parameternamelist>
<parameterdescription>
<para>The index of the cell to work on </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">edge_values</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge value of polynomial in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_s</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge slope of polynomial [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of polynomial [A] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="343" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="344" bodyend="373"/>
        <referencedby refid="namespacep3m__functions_1ab70eb9e69fc6586e1d6a371d2eeb44d1" compoundref="P3M__functions_8F90" startline="193" endline="333">p3m_boundary_extrapolation</referencedby>
        <referencedby refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_limiter</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacep3m__functions_1a3c461688b7c3ae5b2b4a7cf3311b8a69" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function p3m_functions::is_cubic_monotonic</definition>
        <argsstring>(ppoly_coef, k)</argsstring>
        <name>is_cubic_monotonic</name>
        <param>
          <type>ppoly_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <param>
          <type>k</type>
          <defname>k</defname>
        </param>
        <briefdescription>
<para>Check whether the cubic reconstruction in cell k is monotonic. </para>
        </briefdescription>
        <detaileddescription>
<para>This function checks whether the cubic curve in cell k is monotonic. If so, returns 1. Otherwise, returns 0.</para>
<para>The cubic is monotonic if the first derivative is single-signed in (0,1). Hence, we check whether the roots (if any) lie inside this interval. If there is no root or if both roots lie outside this interval, the cubic is monotonic. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of cubic polynomial in arbitary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">k</parametername>
</parameternamelist>
<parameterdescription>
<para>The index of the cell to work on </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="385" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="386" bodyend="405"/>
        <referencedby refid="namespacep3m__functions_1ab70eb9e69fc6586e1d6a371d2eeb44d1" compoundref="P3M__functions_8F90" startline="193" endline="333">p3m_boundary_extrapolation</referencedby>
        <referencedby refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_limiter</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacep3m__functions_1adb96651fe725f11e90dec2b8509989b0" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine p3m_functions::monotonize_cubic</definition>
        <argsstring>(h, u0_l, u0_r, sigma_l, sigma_r, slope, u1_l, u1_r)</argsstring>
        <name>monotonize_cubic</name>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>u0_l</type>
          <defname>u0_l</defname>
        </param>
        <param>
          <type>u0_r</type>
          <defname>u0_r</defname>
        </param>
        <param>
          <type>sigma_l</type>
          <defname>sigma_l</defname>
        </param>
        <param>
          <type>sigma_r</type>
          <defname>sigma_r</defname>
        </param>
        <param>
          <type>slope</type>
          <defname>slope</defname>
        </param>
        <param>
          <type>u1_l</type>
          <defname>u1_l</defname>
        </param>
        <param>
          <type>u1_r</type>
          <defname>u1_r</defname>
        </param>
        <briefdescription>
<para>Monotonize a cubic curve by modifying the edge slopes. </para>
        </briefdescription>
        <detaileddescription>
<para>This routine takes care of monotonizing a cubic on [0,1] by modifying the edge slopes. The edge values are NOT modified. The cubic is entirely determined by the four degrees of freedom u0_l, u0_r, u1_l and u1_r.</para>
<para>u1_l and u1_r are the edge slopes expressed in the GLOBAL coordinate system.</para>
<para>The monotonization occurs as follows. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>cell width [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u0_l</parametername>
</parameternamelist>
<parameterdescription>
<para>left edge value in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u0_r</parametername>
</parameternamelist>
<parameterdescription>
<para>right edge value [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sigma_l</parametername>
</parameternamelist>
<parameterdescription>
<para>left 2nd-order slopes [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sigma_r</parametername>
</parameternamelist>
<parameterdescription>
<para>right 2nd-order slopes [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">slope</parametername>
</parameternamelist>
<parameterdescription>
<para>limited PLM slope [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">u1_l</parametername>
</parameternamelist>
<parameterdescription>
<para>left edge slopes [A H-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">u1_r</parametername>
</parameternamelist>
<parameterdescription>
<para>right edge slopes [A H-1] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="435" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" bodystart="436" bodyend="572"/>
        <referencedby refid="namespacep3m__functions_1ab70eb9e69fc6586e1d6a371d2eeb44d1" compoundref="P3M__functions_8F90" startline="193" endline="333">p3m_boundary_extrapolation</referencedby>
        <referencedby refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_limiter</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Cubic interpolation functions. </para>
    </briefdescription>
    <detaileddescription>
<para>Date of creation: 2008.06.09 L. White</para>
<para>This module contains p3m interpolation routines.</para>
<para>p3m interpolation is performed by estimating the edge values and slopes and constructing a cubic polynomial. We then make sure that the edge values are bounded and continuous and we then modify the slopes to get a monotonic cubic curve. </para>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/ALE/P3M_functions.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
