<?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.19" xml:lang="en-US">
  <compounddef id="namespaceplm__functions" kind="namespace" language="Fortran">
    <compoundname>plm_functions</compoundname>
      <sectiondef kind="var">
      <memberdef kind="variable" id="namespaceplm__functions_1abc6a0167b8f90d1d1a95c0dec6921053" prot="private" static="no" mutable="no">
        <type>real, parameter</type>
        <definition>real, parameter plm_functions::hneglect_dflt</definition>
        <argsstring></argsstring>
        <name>hneglect_dflt</name>
        <initializer>= 1.E-30</initializer>
        <briefdescription>
<para>Default negligible cell thickness. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="15" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="15" bodyend="15"/>
        <referencedby refid="namespaceplm__functions_1a85e83fd8ad314548d861d5048dad8f72" compoundref="PLM__functions_8F90" startline="269" endline="302">plm_boundary_extrapolation</referencedby>
        <referencedby refid="namespaceplm__functions_1a0e3a6bedfb3064ed8fae8c8449649054" compoundref="PLM__functions_8F90" startline="187" endline="255">plm_reconstruction</referencedby>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespaceplm__functions_1a072affa78922591148b954fa63872246" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real elemental pure function, public</type>
        <definition>real elemental pure function, public plm_functions::plm_slope_wa</definition>
        <argsstring>(h_l, h_c, h_r, h_neglect, u_l, u_c, u_r)</argsstring>
        <name>plm_slope_wa</name>
        <param>
          <type>h_l</type>
          <defname>h_l</defname>
        </param>
        <param>
          <type>h_c</type>
          <defname>h_c</defname>
        </param>
        <param>
          <type>h_r</type>
          <defname>h_r</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>u_l</type>
          <defname>u_l</defname>
        </param>
        <param>
          <type>u_c</type>
          <defname>u_c</defname>
        </param>
        <param>
          <type>u_r</type>
          <defname>u_r</defname>
        </param>
        <briefdescription>
<para>Returns a limited PLM slope following White and Adcroft, 2008. [units of u] Note that this is not the same as the Colella and Woodward method. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">h_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of left cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of center cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of right cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligible thickness [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of left cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of center cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of right cell [units of u] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="21" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="22" bodyend="63"/>
        <referencedby refid="namespacemom__ale_1a5b71ef6179d04dda51d124e3a7485909" compoundref="MOM__ALE_8F90" startline="1039" endline="1094">mom_ale::ale_plm_edge_values</referencedby>
        <referencedby refid="namespaceplm__functions_1a0e3a6bedfb3064ed8fae8c8449649054" compoundref="PLM__functions_8F90" startline="187" endline="255">plm_reconstruction</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceplm__functions_1a29d2baec39200c5aa448c79181a16f4f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real elemental pure function, public</type>
        <definition>real elemental pure function, public plm_functions::plm_slope_cw</definition>
        <argsstring>(h_l, h_c, h_r, h_neglect, u_l, u_c, u_r)</argsstring>
        <name>plm_slope_cw</name>
        <param>
          <type>h_l</type>
          <defname>h_l</defname>
        </param>
        <param>
          <type>h_c</type>
          <defname>h_c</defname>
        </param>
        <param>
          <type>h_r</type>
          <defname>h_r</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>u_l</type>
          <defname>u_l</defname>
        </param>
        <param>
          <type>u_c</type>
          <defname>u_c</defname>
        </param>
        <param>
          <type>u_r</type>
          <defname>u_r</defname>
        </param>
        <briefdescription>
<para>Returns a limited PLM slope following Colella and Woodward 1984. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">h_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of left cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of center cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of right cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligible thickness [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of left cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of center cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of right cell [units of u] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="67" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="68" bodyend="117"/>
      </memberdef>
      <memberdef kind="function" id="namespaceplm__functions_1a497e5e73108e08afcb4e2186710ae094" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real elemental pure function, public</type>
        <definition>real elemental pure function, public plm_functions::plm_monotonized_slope</definition>
        <argsstring>(u_l, u_c, u_r, s_l, s_c, s_r)</argsstring>
        <name>plm_monotonized_slope</name>
        <param>
          <type>u_l</type>
          <defname>u_l</defname>
        </param>
        <param>
          <type>u_c</type>
          <defname>u_c</defname>
        </param>
        <param>
          <type>u_r</type>
          <defname>u_r</defname>
        </param>
        <param>
          <type>s_l</type>
          <defname>s_l</defname>
        </param>
        <param>
          <type>s_c</type>
          <defname>s_c</defname>
        </param>
        <param>
          <type>s_r</type>
          <defname>s_r</defname>
        </param>
        <briefdescription>
<para>Returns a limited PLM slope following Colella and Woodward 1984. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">u_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of left cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of center cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of right cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_l</parametername>
</parameternamelist>
<parameterdescription>
<para>PLM slope of left cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_c</parametername>
</parameternamelist>
<parameterdescription>
<para>PLM slope of center cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_r</parametername>
</parameternamelist>
<parameterdescription>
<para>PLM slope of right cell [units of u] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="121" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="122" bodyend="155"/>
        <referencedby refid="namespacemom__ale_1a5b71ef6179d04dda51d124e3a7485909" compoundref="MOM__ALE_8F90" startline="1039" endline="1094">mom_ale::ale_plm_edge_values</referencedby>
        <referencedby refid="namespaceplm__functions_1a0e3a6bedfb3064ed8fae8c8449649054" compoundref="PLM__functions_8F90" startline="187" endline="255">plm_reconstruction</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceplm__functions_1a42fbf62545902eeb6c9e035763496b07" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real elemental pure function, public</type>
        <definition>real elemental pure function, public plm_functions::plm_extrapolate_slope</definition>
        <argsstring>(h_l, h_c, h_neglect, u_l, u_c)</argsstring>
        <name>plm_extrapolate_slope</name>
        <param>
          <type>h_l</type>
          <defname>h_l</defname>
        </param>
        <param>
          <type>h_c</type>
          <defname>h_c</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>u_l</type>
          <defname>u_l</defname>
        </param>
        <param>
          <type>u_c</type>
          <defname>u_c</defname>
        </param>
        <briefdescription>
<para>Returns a PLM slope using h2 extrapolation from a cell to the left. Use the negative to extrapolate from the a cell to the right. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">h_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of left cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of center cell [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligible thickness [units of grid thickness] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of left cell [units of u] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u_c</parametername>
</parameternamelist>
<parameterdescription>
<para>Value of center cell [units of u] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="160" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="161" bodyend="178"/>
        <referencedby refid="namespacemom__ale_1a5b71ef6179d04dda51d124e3a7485909" compoundref="MOM__ALE_8F90" startline="1039" endline="1094">mom_ale::ale_plm_edge_values</referencedby>
        <referencedby refid="namespaceplm__functions_1a85e83fd8ad314548d861d5048dad8f72" compoundref="PLM__functions_8F90" startline="269" endline="302">plm_boundary_extrapolation</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceplm__functions_1a0e3a6bedfb3064ed8fae8c8449649054" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public plm_functions::plm_reconstruction</definition>
        <argsstring>(N, h, u, edge_values, ppoly_coef, h_neglect)</argsstring>
        <name>plm_reconstruction</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_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <briefdescription>
<para>Reconstruction by linear polynomials within each cell. </para>
        </briefdescription>
        <detaileddescription>
<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) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell averages (size N) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_values</parametername>
</parameternamelist>
<parameterdescription>
<para>edge values of piecewise polynomials, with the same units as u. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>coefficients of piecewise polynomials, mainly with the same units as u. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width for the purpose of cell reconstructions in the same units as h </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="186" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="187" bodyend="255"/>
        <references refid="namespaceplm__functions_1abc6a0167b8f90d1d1a95c0dec6921053" compoundref="PLM__functions_8F90" startline="15" endline="15">hneglect_dflt</references>
        <references refid="namespaceplm__functions_1a497e5e73108e08afcb4e2186710ae094" compoundref="PLM__functions_8F90" startline="122" endline="155">plm_monotonized_slope</references>
        <references refid="namespaceplm__functions_1a072affa78922591148b954fa63872246" compoundref="PLM__functions_8F90" startline="22" endline="63">plm_slope_wa</references>
        <referencedby refid="namespacemom__remapping_1a5bb0006054c9fa4522783aa3f1f500d5" compoundref="MOM__remapping_8F90" startline="358" endline="440">mom_remapping::build_reconstructions_1d</referencedby>
        <referencedby refid="namespaceregrid__interp_1a3d1406836d089b4553421776277e1339" compoundref="regrid__interp_8F90" startline="80" endline="262">regrid_interp::regridding_set_ppolys</referencedby>
        <referencedby refid="namespacemom__remapping_1a5849f564453d5ed76fb4feffd41eca26" compoundref="MOM__remapping_8F90" startline="1617" endline="1883">mom_remapping::remapping_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceplm__functions_1a85e83fd8ad314548d861d5048dad8f72" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public plm_functions::plm_boundary_extrapolation</definition>
        <argsstring>(N, h, u, edge_values, ppoly_coef, h_neglect)</argsstring>
        <name>plm_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_coef</type>
          <defname>ppoly_coef</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <briefdescription>
<para>Reconstruction by linear polynomials within boundary cells. </para>
        </briefdescription>
        <detaileddescription>
<para>The left and right edge values in the left and right boundary cells, respectively, are estimated using a linear extrapolation within the cells.</para>
<para>This extrapolation is EXACT when the underlying profile is linear.</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) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell averages (size N) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_values</parametername>
</parameternamelist>
<parameterdescription>
<para>edge values of piecewise polynomials, with the same units as u. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ppoly_coef</parametername>
</parameternamelist>
<parameterdescription>
<para>coefficients of piecewise polynomials, mainly with the same units as u. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width for the purpose of cell reconstructions in the same units as h </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="268" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" bodystart="269" bodyend="302"/>
        <references refid="namespaceplm__functions_1abc6a0167b8f90d1d1a95c0dec6921053" compoundref="PLM__functions_8F90" startline="15" endline="15">hneglect_dflt</references>
        <references refid="namespaceplm__functions_1a42fbf62545902eeb6c9e035763496b07" compoundref="PLM__functions_8F90" startline="161" endline="178">plm_extrapolate_slope</references>
        <referencedby refid="namespacemom__remapping_1a5bb0006054c9fa4522783aa3f1f500d5" compoundref="MOM__remapping_8F90" startline="358" endline="440">mom_remapping::build_reconstructions_1d</referencedby>
        <referencedby refid="namespaceregrid__interp_1a3d1406836d089b4553421776277e1339" compoundref="regrid__interp_8F90" startline="80" endline="262">regrid_interp::regridding_set_ppolys</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Piecewise linear reconstruction functions. </para>
    </briefdescription>
    <detaileddescription>
<para>Date of creation: 2008.06.06 L. White.</para>
<para>This module contains routines that handle one-dimensionnal finite volume reconstruction using the piecewise linear method (PLM). </para>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/ALE/PLM_functions.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
