<?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.18">
  <compounddef id="namespaceregrid__edge__values" kind="namespace" language="Fortran">
    <compoundname>regrid_edge_values</compoundname>
      <sectiondef kind="var">
      <memberdef kind="variable" id="namespaceregrid__edge__values_1a241fc99294d87afd8146f4b3e48dc021" prot="private" static="no" mutable="no">
        <type>real, parameter</type>
        <definition>real, parameter regrid_edge_values::hneglect_edge_dflt</definition>
        <argsstring></argsstring>
        <name>hneglect_edge_dflt</name>
        <initializer>= 1.e-10</initializer>
        <briefdescription>
<para>The default value for cut-off minimum thickness for sum(h) in edge value inversions. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="26" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="26" bodyend="26"/>
        <referencedby refid="namespaceregrid__edge__values_1a2fa3a70b208abe68f29bef9589081209" compoundref="regrid__edge__values_8F90" startline="222" endline="357">edge_values_explicit_h4</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a0c268712aaf87b3597cef51c85fb32cb" compoundref="regrid__edge__values_8F90" startline="387" endline="545">edge_values_implicit_h4</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a9955c45dcd1bfec32fbf5602315cb5b1" compoundref="regrid__edge__values_8F90" startline="1137" endline="1330">edge_values_implicit_h6</referencedby>
      </memberdef>
      <memberdef kind="variable" id="namespaceregrid__edge__values_1a2800ef300c67ac316d81e5fef12907b5" prot="private" static="no" mutable="no">
        <type>real, parameter</type>
        <definition>real, parameter regrid_edge_values::hneglect_dflt</definition>
        <argsstring></argsstring>
        <name>hneglect_dflt</name>
        <initializer>= 1.e-30</initializer>
        <briefdescription>
<para>The default value for cut-off minimum thickness for sum(h) in other calculations. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="28" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="28" bodyend="28"/>
        <referencedby refid="namespaceregrid__edge__values_1a8480933738145ee2525e1bf449f14097" compoundref="regrid__edge__values_8F90" startline="45" endline="108">bound_edge_values</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1ac33bba0097d34e462abda17e78847862" compoundref="regrid__edge__values_8F90" startline="697" endline="860">edge_slopes_implicit_h3</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a7c3fb27d99df9e3594ff32d1d03e1b34" compoundref="regrid__edge__values_8F90" startline="867" endline="1097">edge_slopes_implicit_h5</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a2fa3a70b208abe68f29bef9589081209" compoundref="regrid__edge__values_8F90" startline="222" endline="357">edge_values_explicit_h4</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a0c268712aaf87b3597cef51c85fb32cb" compoundref="regrid__edge__values_8F90" startline="387" endline="545">edge_values_implicit_h4</referencedby>
      </memberdef>
      <memberdef kind="variable" id="namespaceregrid__edge__values_1a6e31d54d55af5650f72574cf82eb0f1f" prot="private" static="no" mutable="no">
        <type>real, parameter</type>
        <definition>real, parameter regrid_edge_values::hminfrac</definition>
        <argsstring></argsstring>
        <name>hminfrac</name>
        <initializer>= 1.e-5</initializer>
        <briefdescription>
<para>A minimum fraction for min(h)/sum(h) </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="30" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="30" bodyend="30"/>
        <referencedby refid="namespaceregrid__edge__values_1a2fa3a70b208abe68f29bef9589081209" compoundref="regrid__edge__values_8F90" startline="222" endline="357">edge_values_explicit_h4</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a0c268712aaf87b3597cef51c85fb32cb" compoundref="regrid__edge__values_8F90" startline="387" endline="545">edge_values_implicit_h4</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a9955c45dcd1bfec32fbf5602315cb5b1" compoundref="regrid__edge__values_8F90" startline="1137" endline="1330">edge_values_implicit_h6</referencedby>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespaceregrid__edge__values_1a8480933738145ee2525e1bf449f14097" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::bound_edge_values</definition>
        <argsstring>(N, h, u, edge_val, h_neglect, answers_2018)</argsstring>
        <name>bound_edge_values</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_val</type>
          <defname>edge_val</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Bound edge values by neighboring cell averages. </para>
        </briefdescription>
        <detaileddescription>
<para>In this routine, we loop on all cells to bound their left and right edge values by the cell averages. That is, the left edge value must lie between the left cell average and the central cell average. A similar reasoning applies to the right edge values.</para>
<para>Both boundary edge values are set equal to the boundary cell averages. Any extrapolation scheme is applied after this routine has been called. Therefore, boundary cells are treated as if they were local extrama. <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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Potentially modified edge values [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width [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/regrid_edge_values.F90" line="44" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="45" bodyend="108"/>
        <references refid="namespaceregrid__edge__values_1a2800ef300c67ac316d81e5fef12907b5" compoundref="regrid__edge__values_8F90" startline="28" endline="28">hneglect_dflt</references>
        <referencedby refid="namespacep1m__functions_1a233a7aff25cf6581421f76bba053d758" compoundref="P1M__functions_8F90" startline="28" endline="58">p1m_functions::p1m_interpolation</referencedby>
        <referencedby refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_functions::p3m_limiter</referencedby>
        <referencedby refid="namespaceppm__functions_1a3d365f4992a6d3b5cbcaca630c502b95" compoundref="PPM__functions_8F90" startline="63" endline="127">ppm_functions::ppm_limiter_standard</referencedby>
        <referencedby refid="namespacepqm__functions_1aab9f3108956943c39ed2d4b675d78021" compoundref="PQM__functions_8F90" startline="76" endline="336">pqm_functions::pqm_limiter</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1ad43eb7fa3a284e2b33068f47232521ca" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::average_discontinuous_edge_values</definition>
        <argsstring>(N, edge_val)</argsstring>
        <name>average_discontinuous_edge_values</name>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>edge_val</type>
          <defname>edge_val</defname>
        </param>
        <briefdescription>
<para>Replace discontinuous collocated edge values with their average. </para>
        </briefdescription>
        <detaileddescription>
<para>For each interior edge, check whether the edge values are discontinuous. If so, compute the average and replace the edge values by the average. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of cells </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge values that may be modified [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="115" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="116" bodyend="133"/>
        <referencedby refid="namespacep1m__functions_1a233a7aff25cf6581421f76bba053d758" compoundref="P1M__functions_8F90" startline="28" endline="58">p1m_functions::p1m_interpolation</referencedby>
        <referencedby refid="namespacep3m__functions_1a44db59cb5df7f139e05b745746342fcf" compoundref="P3M__functions_8F90" startline="62" endline="174">p3m_functions::p3m_limiter</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a4a496536a77bef8467c441731619761d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::check_discontinuous_edge_values</definition>
        <argsstring>(N, u, edge_val)</argsstring>
        <name>check_discontinuous_edge_values</name>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>u</type>
          <defname>u</defname>
        </param>
        <param>
          <type>edge_val</type>
          <defname>edge_val</defname>
        </param>
        <briefdescription>
<para>Check discontinuous edge values and replace them with their average if not monotonic. </para>
        </briefdescription>
        <detaileddescription>
<para>For each interior edge, check whether the edge values are discontinuous. If so and if they are not monotonic, replace each edge value by their average. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of cells </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell averages in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Cell edge values [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="140" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="141" bodyend="157"/>
        <referencedby refid="namespaceppm__functions_1a3d365f4992a6d3b5cbcaca630c502b95" compoundref="PPM__functions_8F90" startline="63" endline="127">ppm_functions::ppm_limiter_standard</referencedby>
        <referencedby refid="namespacepqm__functions_1aab9f3108956943c39ed2d4b675d78021" compoundref="PQM__functions_8F90" startline="76" endline="336">pqm_functions::pqm_limiter</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a8dc053bb28658c7091f1f5a82184019a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::edge_values_explicit_h2</definition>
        <argsstring>(N, h, u, edge_val)</argsstring>
        <name>edge_values_explicit_h2</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_val</type>
          <defname>edge_val</defname>
        </param>
        <briefdescription>
<para>Compute h2 edge values (explicit second order accurate) in the same units as u. </para>
        </briefdescription>
        <detaileddescription>
<para><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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Returned edge values [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="174" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="175" bodyend="199"/>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a2fa3a70b208abe68f29bef9589081209" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::edge_values_explicit_h4</definition>
        <argsstring>(N, h, u, edge_val, h_neglect, answers_2018)</argsstring>
        <name>edge_values_explicit_h4</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_val</type>
          <defname>edge_val</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Compute h4 edge values (explicit fourth order accurate) in the same units as u. </para>
        </briefdescription>
        <detaileddescription>
<para>Compute edge values based on fourth-order explicit estimates. These estimates are based on a cubic interpolant spanning four cells and evaluated at the location of the middle edge. An interpolant spanning cells i-2, i-1, i and i+1 is evaluated at edge i-1/2. The estimate for each edge is unique. <verbatim>  i-2    i-1     i     i+1
</verbatim> ..<ndash/>o---<mdash/>o---<mdash/>o---<mdash/>o---<mdash/>o<ndash/>.. i-1/2</para>
<para>The first two edge values are estimated by evaluating the first available cubic interpolant, i.e., the interpolant spanning cells 1, 2, 3 and 4. Similarly, the last two edge values are estimated by evaluating the last available interpolant.</para>
<para>For this fourth-order scheme, at least four cells must exist. <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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Returned edge values [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width [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/regrid_edge_values.F90" line="221" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="222" bodyend="357"/>
        <references refid="namespaceregrid__edge__values_1a7082604865f485ac18af8b44a7aa0224" compoundref="regrid__edge__values_8F90" startline="551" endline="663">end_value_h4</references>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespaceregrid__edge__values_1a6e31d54d55af5650f72574cf82eb0f1f" compoundref="regrid__edge__values_8F90" startline="30" endline="30">hminfrac</references>
        <references refid="namespaceregrid__edge__values_1a2800ef300c67ac316d81e5fef12907b5" compoundref="regrid__edge__values_8F90" startline="28" endline="28">hneglect_dflt</references>
        <references refid="namespaceregrid__edge__values_1a241fc99294d87afd8146f4b3e48dc021" compoundref="regrid__edge__values_8F90" startline="26" endline="26">hneglect_edge_dflt</references>
        <references refid="namespaceregrid__solvers_1a36827238948de49ff0dd0be54cfaf719" compoundref="regrid__solvers_8F90" startline="20" endline="103">regrid_solvers::solve_linear_system</references>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a0c268712aaf87b3597cef51c85fb32cb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::edge_values_implicit_h4</definition>
        <argsstring>(N, h, u, edge_val, h_neglect, answers_2018)</argsstring>
        <name>edge_values_implicit_h4</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_val</type>
          <defname>edge_val</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Compute ih4 edge values (implicit fourth order accurate) in the same units as u. </para>
        </briefdescription>
        <detaileddescription>
<para>Compute edge values based on fourth-order implicit estimates.</para>
<para>Fourth-order implicit estimates of edge values are based on a two-cell stencil. A tridiagonal system is set up and is based on expressing the edge values in terms of neighboring cell averages. The generic relationship is</para>
<para><formula id="21">\[ \alpha u_{i-1/2} + u_{i+1/2} + \beta u_{i+3/2} = a \bar{u}_i + b \bar{u}_{i+1} \]</formula></para>
<para>and the stencil looks like this <verbatim>     i     i+1
</verbatim> ..<ndash/>o---<mdash/>o---<mdash/>o<ndash/>.. i-1/2 i+1/2 i+3/2</para>
<para>In this routine, the coefficients <formula id="22">$\alpha$</formula>, <formula id="23">$\beta$</formula>, <formula id="24">$a$</formula> and <formula id="25">$b$</formula> are computed, the tridiagonal system is built, boundary conditions are prescribed and the system is solved to yield edge-value estimates.</para>
<para>There are N+1 unknowns and we are able to write N-1 equations. The boundary conditions close the system. <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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Returned edge values [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width [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/regrid_edge_values.F90" line="386" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="387" bodyend="545"/>
        <references refid="namespaceregrid__edge__values_1a7082604865f485ac18af8b44a7aa0224" compoundref="regrid__edge__values_8F90" startline="551" endline="663">end_value_h4</references>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespaceregrid__edge__values_1a6e31d54d55af5650f72574cf82eb0f1f" compoundref="regrid__edge__values_8F90" startline="30" endline="30">hminfrac</references>
        <references refid="namespaceregrid__edge__values_1a2800ef300c67ac316d81e5fef12907b5" compoundref="regrid__edge__values_8F90" startline="28" endline="28">hneglect_dflt</references>
        <references refid="namespaceregrid__edge__values_1a241fc99294d87afd8146f4b3e48dc021" compoundref="regrid__edge__values_8F90" startline="26" endline="26">hneglect_edge_dflt</references>
        <references refid="namespaceregrid__edge__values_1a9f0ab1f167eb57cbaca668f7a11b31a1" compoundref="regrid__edge__values_8F90" startline="1342" endline="1374">solve_diag_dominant_tridiag</references>
        <references refid="namespaceregrid__solvers_1a36827238948de49ff0dd0be54cfaf719" compoundref="regrid__solvers_8F90" startline="20" endline="103">regrid_solvers::solve_linear_system</references>
        <references refid="namespaceregrid__solvers_1aac4382af38975d9cfcfd6b00adafaeab" compoundref="regrid__solvers_8F90" startline="173" endline="223">regrid_solvers::solve_tridiagonal_system</references>
        <referencedby refid="namespacemom__ale_1a1920c7b1be73d2bf7c5afc29b1b1245b" compoundref="MOM__ALE_8F90" startline="1100" endline="1180">mom_ale::ts_ppm_edge_values</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a7082604865f485ac18af8b44a7aa0224" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine regrid_edge_values::end_value_h4</definition>
        <argsstring>(dz, u, Csys)</argsstring>
        <name>end_value_h4</name>
        <param>
          <type>dz</type>
          <defname>dz</defname>
        </param>
        <param>
          <type>u</type>
          <defname>u</defname>
        </param>
        <param>
          <type>Csys</type>
          <defname>Csys</defname>
        </param>
        <briefdescription>
<para>Determine a one-sided 4th order polynomial fit of u to the data points for the purposes of specifying edge values, as described in the appendix of White and Adcroft JCP 2008. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">dz</parametername>
</parameternamelist>
<parameterdescription>
<para>The thicknesses of 4 layers, starting at the edge [H]. The values of dz must be positive. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>The average properties of 4 layers, starting at the edge [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">csys</parametername>
</parameternamelist>
<parameterdescription>
<para>The four coefficients of a 4th order polynomial fit of u as a function of z [A H-(n-1)] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="550" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="551" bodyend="663"/>
        <referencedby refid="namespaceregrid__edge__values_1ac33bba0097d34e462abda17e78847862" compoundref="regrid__edge__values_8F90" startline="697" endline="860">edge_slopes_implicit_h3</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a2fa3a70b208abe68f29bef9589081209" compoundref="regrid__edge__values_8F90" startline="222" endline="357">edge_values_explicit_h4</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a0c268712aaf87b3597cef51c85fb32cb" compoundref="regrid__edge__values_8F90" startline="387" endline="545">edge_values_implicit_h4</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1ac33bba0097d34e462abda17e78847862" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::edge_slopes_implicit_h3</definition>
        <argsstring>(N, h, u, edge_slopes, h_neglect, answers_2018)</argsstring>
        <name>edge_slopes_implicit_h3</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_slopes</type>
          <defname>edge_slopes</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Compute ih3 edge slopes (implicit third order accurate) in the same units as h. </para>
        </briefdescription>
        <detaileddescription>
<para>Compute edge slopes based on third-order implicit estimates. Note that the estimates are fourth-order accurate on uniform grids</para>
<para>Third-order implicit estimates of edge slopes are based on a two-cell stencil. A tridiagonal system is set up and is based on expressing the edge slopes in terms of neighboring cell averages. The generic relationship is</para>
<para><formula id="26">\[ \alpha u&apos;_{i-1/2} + u&apos;_{i+1/2} + \beta u&apos;_{i+3/2} = a \bar{u}_i + b \bar{u}_{i+1} \]</formula></para>
<para>and the stencil looks like this <verbatim>     i     i+1
</verbatim> ..<ndash/>o---<mdash/>o---<mdash/>o<ndash/>.. i-1/2 i+1/2 i+3/2</para>
<para>In this routine, the coefficients <formula id="22">$\alpha$</formula>, <formula id="23">$\beta$</formula>, a and b are computed, the tridiagonal system is built, boundary conditions are prescribed and the system is solved to yield edge-slope estimates.</para>
<para>There are N+1 unknowns and we are able to write N-1 equations. The boundary conditions close the system. <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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_slopes</parametername>
</parameternamelist>
<parameterdescription>
<para>Returned edge slopes [A H-1]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width [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/regrid_edge_values.F90" line="696" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="697" bodyend="860"/>
        <references refid="namespaceregrid__edge__values_1a7082604865f485ac18af8b44a7aa0224" compoundref="regrid__edge__values_8F90" startline="551" endline="663">end_value_h4</references>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespaceregrid__edge__values_1a2800ef300c67ac316d81e5fef12907b5" compoundref="regrid__edge__values_8F90" startline="28" endline="28">hneglect_dflt</references>
        <references refid="namespaceregrid__edge__values_1a9f0ab1f167eb57cbaca668f7a11b31a1" compoundref="regrid__edge__values_8F90" startline="1342" endline="1374">solve_diag_dominant_tridiag</references>
        <references refid="namespaceregrid__solvers_1a36827238948de49ff0dd0be54cfaf719" compoundref="regrid__solvers_8F90" startline="20" endline="103">regrid_solvers::solve_linear_system</references>
        <references refid="namespaceregrid__solvers_1aac4382af38975d9cfcfd6b00adafaeab" compoundref="regrid__solvers_8F90" startline="173" endline="223">regrid_solvers::solve_tridiagonal_system</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>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a7c3fb27d99df9e3594ff32d1d03e1b34" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::edge_slopes_implicit_h5</definition>
        <argsstring>(N, h, u, edge_slopes, h_neglect, answers_2018)</argsstring>
        <name>edge_slopes_implicit_h5</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_slopes</type>
          <defname>edge_slopes</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Compute ih5 edge slopes (implicit fifth order accurate) </para>
        </briefdescription>
        <detaileddescription>
<para><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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_slopes</parametername>
</parameternamelist>
<parameterdescription>
<para>Returned edge slopes [A H-1]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width [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/regrid_edge_values.F90" line="866" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="867" bodyend="1097"/>
        <references refid="namespaceregrid__edge__values_1a2800ef300c67ac316d81e5fef12907b5" compoundref="regrid__edge__values_8F90" startline="28" endline="28">hneglect_dflt</references>
        <references refid="namespaceregrid__edge__values_1a09a4c9f369606d81580116620975352e" compoundref="regrid__edge__values_8F90" startline="1384" endline="1438">linear_solver</references>
        <references refid="namespaceregrid__solvers_1aac4382af38975d9cfcfd6b00adafaeab" compoundref="regrid__solvers_8F90" startline="173" endline="223">regrid_solvers::solve_tridiagonal_system</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>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a9955c45dcd1bfec32fbf5602315cb5b1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public regrid_edge_values::edge_values_implicit_h6</definition>
        <argsstring>(N, h, u, edge_val, h_neglect, answers_2018)</argsstring>
        <name>edge_values_implicit_h6</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_val</type>
          <defname>edge_val</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>answers_2018</type>
          <defname>answers_2018</defname>
        </param>
        <briefdescription>
<para>Compute ih6 edge values (implicit sixth order accurate) in the same units as u. </para>
        </briefdescription>
        <detaileddescription>
<para>Sixth-order implicit estimates of edge values are based on a four-cell, three-edge stencil. A tridiagonal system is set up and is based on expressing the edge values in terms of neighboring cell averages.</para>
<para>The generic relationship is</para>
<para><formula id="27">\[ \alpha u_{i-1/2} + u_{i+1/2} + \beta u_{i+3/2} = a \bar{u}_{i-1} + b \bar{u}_i + c \bar{u}_{i+1} + d \bar{u}_{i+2} \]</formula></para>
<para>and the stencil looks like this <verbatim>    i-1     i     i+1    i+2
</verbatim> ..<ndash/>o---<mdash/>o---<mdash/>o---<mdash/>o---<mdash/>o<ndash/>.. i-1/2 i+1/2 i+3/2</para>
<para>In this routine, the coefficients <formula id="22">$\alpha$</formula>, <formula id="23">$\beta$</formula>, a, b, c and d are computed, the tridiagonal system is built, boundary conditions are prescribed and the system is solved to yield edge-value estimates. This scheme is described in detail by White and Adcroft, 2009, J. Comp. Phys, <ulink url="https://doi.org/10.1016/j.jcp.2008.04.026">https://doi.org/10.1016/j.jcp.2008.04.026</ulink></para>
<para>Note that the centered stencil only applies to edges 3 to N-1 (edges are numbered 1 to n+1), which yields N-3 equations for N+1 unknowns. Two other equations are written by using a right-biased stencil for edge 2 and a left-biased stencil for edge N. The prescription of boundary conditions (using sixth-order polynomials) closes the system.</para>
<para>CAUTION: For each edge, in order to determine the coefficients of the implicit expression, a 6x6 linear system is solved. This may become computationally expensive if regridding is carried out often. Figuring out closed-form expressions for these coefficients on nonuniform meshes turned out to be intractable. <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 [H] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">u</parametername>
</parameternamelist>
<parameterdescription>
<para>cell average properties (size N) in arbitrary units [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">edge_val</parametername>
</parameternamelist>
<parameterdescription>
<para>Returned edge values [A]; the second index is for the two edges of each cell. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width [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/regrid_edge_values.F90" line="1136" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="1137" bodyend="1330"/>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespaceregrid__edge__values_1a6e31d54d55af5650f72574cf82eb0f1f" compoundref="regrid__edge__values_8F90" startline="30" endline="30">hminfrac</references>
        <references refid="namespaceregrid__edge__values_1a241fc99294d87afd8146f4b3e48dc021" compoundref="regrid__edge__values_8F90" startline="26" endline="26">hneglect_edge_dflt</references>
        <references refid="namespaceregrid__edge__values_1a09a4c9f369606d81580116620975352e" compoundref="regrid__edge__values_8F90" startline="1384" endline="1438">linear_solver</references>
        <references refid="namespaceregrid__solvers_1aac4382af38975d9cfcfd6b00adafaeab" compoundref="regrid__solvers_8F90" startline="173" endline="223">regrid_solvers::solve_tridiagonal_system</references>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a9f0ab1f167eb57cbaca668f7a11b31a1" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine regrid_edge_values::solve_diag_dominant_tridiag</definition>
        <argsstring>(Al, Ac, Au, R, X, N)</argsstring>
        <name>solve_diag_dominant_tridiag</name>
        <param>
          <type>Al</type>
          <defname>Al</defname>
        </param>
        <param>
          <type>Ac</type>
          <defname>Ac</defname>
        </param>
        <param>
          <type>Au</type>
          <defname>Au</defname>
        </param>
        <param>
          <type>R</type>
          <defname>R</defname>
        </param>
        <param>
          <type>X</type>
          <defname>X</defname>
        </param>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <briefdescription>
<para>Solve the tridiagonal system AX = R. </para>
        </briefdescription>
        <detaileddescription>
<para>This routine uses a variant of Thomas&apos;s algorithm to solve the tridiagonal system AX = R, in a form that is guaranteed to avoid dividing by a zero pivot. The matrix A is made up of lower (Al) and upper diagonals (Au) and a central diagonal Ad = Ac+Al+Au, where Al, Au, and Ac are all positive (or negative) definite. However when Ac is smaller than roundoff compared with (Al+Au), the answers are prone to inaccuracy. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the system </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ac</parametername>
</parameternamelist>
<parameterdescription>
<para>Matrix center diagonal offset from Al + Au </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">al</parametername>
</parameternamelist>
<parameterdescription>
<para>Matrix lower diagonal </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">au</parametername>
</parameternamelist>
<parameterdescription>
<para>Matrix upper diagonal </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">r</parametername>
</parameternamelist>
<parameterdescription>
<para>system right-hand side </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">x</parametername>
</parameternamelist>
<parameterdescription>
<para>solution vector </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="1341" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="1342" bodyend="1374"/>
        <referencedby refid="namespaceregrid__edge__values_1ac33bba0097d34e462abda17e78847862" compoundref="regrid__edge__values_8F90" startline="697" endline="860">edge_slopes_implicit_h3</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a0c268712aaf87b3597cef51c85fb32cb" compoundref="regrid__edge__values_8F90" startline="387" endline="545">edge_values_implicit_h4</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1a09a4c9f369606d81580116620975352e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine regrid_edge_values::linear_solver</definition>
        <argsstring>(N, A, R, X)</argsstring>
        <name>linear_solver</name>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>A</type>
          <defname>A</defname>
        </param>
        <param>
          <type>R</type>
          <defname>R</defname>
        </param>
        <param>
          <type>X</type>
          <defname>X</defname>
        </param>
        <briefdescription>
<para>Solve the linear system AX = R by Gaussian elimination. </para>
        </briefdescription>
        <detaileddescription>
<para>This routine uses Gauss&apos;s algorithm to transform the system&apos;s original matrix into an upper triangular matrix. Back substitution then yields the answer. The matrix A must be square, with the first index varing along the row. <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the system </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">a</parametername>
</parameternamelist>
<parameterdescription>
<para>The matrix being inverted [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">r</parametername>
</parameternamelist>
<parameterdescription>
<para>system right-hand side [A] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">x</parametername>
</parameternamelist>
<parameterdescription>
<para>solution vector [A] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="1383" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="1384" bodyend="1438"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespaceregrid__edge__values_1a7c3fb27d99df9e3594ff32d1d03e1b34" compoundref="regrid__edge__values_8F90" startline="867" endline="1097">edge_slopes_implicit_h5</referencedby>
        <referencedby refid="namespaceregrid__edge__values_1a9955c45dcd1bfec32fbf5602315cb5b1" compoundref="regrid__edge__values_8F90" startline="1137" endline="1330">edge_values_implicit_h6</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceregrid__edge__values_1aef5443593d35636eb95de2b580878a20" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine regrid_edge_values::test_line</definition>
        <argsstring>(msg, N, A, C, R, mag, tol)</argsstring>
        <name>test_line</name>
        <param>
          <type>msg</type>
          <defname>msg</defname>
        </param>
        <param>
          <type>N</type>
          <defname>N</defname>
        </param>
        <param>
          <type>A</type>
          <defname>A</defname>
        </param>
        <param>
          <type>C</type>
          <defname>C</defname>
        </param>
        <param>
          <type>R</type>
          <defname>R</defname>
        </param>
        <param>
          <type>mag</type>
          <defname>mag</defname>
        </param>
        <param>
          <type>tol</type>
          <defname>tol</defname>
        </param>
        <briefdescription>
<para>Test that A*C = R to within a tolerance, issuing a fatal error with an explanatory message if they do not. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">mag</parametername>
</parameternamelist>
<parameterdescription>
<para>The magnitude of leading order terms in this line </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of points in the system </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">a</parametername>
</parameternamelist>
<parameterdescription>
<para>One of the two vectors being multiplied </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">c</parametername>
</parameternamelist>
<parameterdescription>
<para>One of the two vectors being multiplied </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">r</parametername>
</parameternamelist>
<parameterdescription>
<para>The expected solution of the equation </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">msg</parametername>
</parameternamelist>
<parameterdescription>
<para>An identifying message for this test </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tol</parametername>
</parameternamelist>
<parameterdescription>
<para>The fractional tolerance for the two solutions </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="1444" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" bodystart="1445" bodyend="1470"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Edge value estimation for high-order resconstruction. </para>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/ALE/regrid_edge_values.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
