<?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="namespacemom__neutral__diffusion" kind="namespace" language="Fortran">
    <compoundname>mom_neutral_diffusion</compoundname>
    <innerclass refid="structmom__neutral__diffusion_1_1neutral__diffusion__cs" prot="public">mom_neutral_diffusion::neutral_diffusion_cs</innerclass>
      <sectiondef kind="var">
      <memberdef kind="variable" id="namespacemom__neutral__diffusion_1afdf44450544eb51e29afe3454ecbc0cc" prot="public" static="no" mutable="no">
        <type><ref refid="version__variable_8h_1acda997fe1761de4c6bca0f27dc786964" kindref="member">character</ref>(len=40)</type>
        <definition>character(len=40) mom_neutral_diffusion::mdl</definition>
        <argsstring></argsstring>
        <name>mdl</name>
        <initializer>= &quot;MOM_neutral_diffusion&quot;</initializer>
        <briefdescription>
<para>module name </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="111" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="111" bodyend="111"/>
        <referencedby refid="namespacemom__neutral__diffusion_1a39ce023f4b8ebc8d30f25a9b1ca93925" compoundref="MOM__neutral__diffusion_8F90" startline="117" endline="278">neutral_diffusion_init</referencedby>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a39ce023f4b8ebc8d30f25a9b1ca93925" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function, public</type>
        <definition>logical function, public mom_neutral_diffusion::neutral_diffusion_init</definition>
        <argsstring>(Time, G, US, param_file, diag, EOS, diabatic_CSp, CS)</argsstring>
        <name>neutral_diffusion_init</name>
        <param>
          <type>Time</type>
          <defname>Time</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>EOS</type>
          <defname>EOS</defname>
        </param>
        <param>
          <type>diabatic_CSp</type>
          <defname>diabatic_CSp</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Read parameters and allocate control structure for neutral_diffusion module. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">time</parametername>
</parameternamelist>
<parameterdescription>
<para>Time structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>Diagnostics control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">param_file</parametername>
</parameternamelist>
<parameterdescription>
<para>Parameter file structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">eos</parametername>
</parameternamelist>
<parameterdescription>
<para>Equation of state </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>diabatic_csp</parametername>
</parameternamelist>
<parameterdescription>
<para>KPP control structure needed to get BLD </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="116" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="117" bodyend="278"/>
        <references refid="namespacemom__diabatic__driver_1a49144b7b0c0d44fde6cd835f1001dde5" compoundref="MOM__diabatic__driver_8F90" startline="2819" endline="2844">mom_diabatic_driver::extract_diabatic_member</references>
        <references refid="namespacemom__neutral__diffusion_1afdf44450544eb51e29afe3454ecbc0cc" compoundref="MOM__neutral__diffusion_8F90" startline="111" endline="111">mdl</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <references refid="namespacemom__remapping_1a5978c723e71e49b2f54768fea10000cb" compoundref="MOM__remapping_8F90" startline="71" endline="71">mom_remapping::remappingdefaultscheme</references>
        <references refid="namespacemom__remapping_1a8c5a45fb3f4f16cc89405a51fd7361cc" compoundref="MOM__remapping_8F90" startline="64" endline="70">mom_remapping::remappingschemesdoc</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_neutral_diffusion::neutral_diffusion_calc_coeffs</definition>
        <argsstring>(G, GV, US, h, T, S, CS, p_surf)</argsstring>
        <name>neutral_diffusion_calc_coeffs</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>T</type>
          <defname>T</defname>
        </param>
        <param>
          <type>S</type>
          <defname>S</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>p_surf</type>
          <defname>p_surf</defname>
        </param>
        <briefdescription>
<para>Calculate remapping factors for u/v columns used to map adjoining columns to a shared coordinate space. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t</parametername>
</parameternamelist>
<parameterdescription>
<para>Potential temperature [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_surf</parametername>
</parameternamelist>
<parameterdescription>
<para>Surface pressure to include in pressures used for equation of state calculations [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="283" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="284" bodyend="525"/>
        <references refid="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="375" endline="435">mom_lateral_boundary_diffusion::boundary_k_range</references>
        <references refid="namespacemom__energetic__pbl_1af3a7ca5357ed9a1383c9556b117116dc" compoundref="MOM__energetic__PBL_8F90" startline="1952" endline="1967">mom_energetic_pbl::energetic_pbl_get_mld</references>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespacemom__neutral__diffusion_1acb07c024cb6aa162a8789a4f50139aa5" compoundref="MOM__neutral__diffusion_8F90" startline="933" endline="1136">find_neutral_surface_positions_continuous</references>
        <references refid="namespacemom__neutral__diffusion_1a72eca09bc6cc25f8a3831ad8e2be91d4" compoundref="MOM__neutral__diffusion_8F90" startline="1187" endline="1414">find_neutral_surface_positions_discontinuous</references>
        <references refid="namespacemom__neutral__diffusion_1aec9b89b6a5ddc81f102309b964a0b969" compoundref="MOM__neutral__diffusion_8F90" startline="693" endline="725">interface_scalar</references>
        <references refid="namespacemom__cvmix__kpp_1abcb80984f564e5aaf4567aaead111734" compoundref="MOM__CVMix__KPP_8F90" startline="1367" endline="1384">mom_cvmix_kpp::kpp_get_bld</references>
        <references refid="namespacemom__neutral__diffusion_1a3ef7040590d6448a34013763e17edf47" compoundref="MOM__neutral__diffusion_8F90" startline="1419" endline="1433">mark_unstable_cells</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">mom_lateral_boundary_diffusion::surface</references>
        <referencedby refid="namespacemom__tracer__hor__diff_1a098229e37012e7bd93d13036bfc864ac" compoundref="MOM__tracer__hor__diff_8F90" startline="107" endline="580">mom_tracer_hor_diff::tracer_hordiff</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a5469b7be43f8c428f092b58dd5ca41c8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_neutral_diffusion::neutral_diffusion</definition>
        <argsstring>(G, GV, h, Coef_x, Coef_y, dt, Reg, US, CS)</argsstring>
        <name>neutral_diffusion</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>Coef_x</type>
          <defname>Coef_x</defname>
        </param>
        <param>
          <type>Coef_y</type>
          <defname>Coef_y</defname>
        </param>
        <param>
          <type>dt</type>
          <defname>dt</defname>
        </param>
        <param>
          <type>Reg</type>
          <defname>Reg</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Update tracer concentration due to neutral diffusion; layer thickness unchanged by this update. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">coef_x</parametername>
</parameternamelist>
<parameterdescription>
<para>dt * Kh * dy / dx at u-points [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">coef_y</parametername>
</parameternamelist>
<parameterdescription>
<para>dt * Kh * dx / dy at v-points [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dt</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer time step * I_numitts [T ~&gt; s] (I_numitts in tracer_hordiff) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>reg</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer registry </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="529" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="530" bodyend="688"/>
        <references refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</references>
        <referencedby refid="namespacemom__tracer__hor__diff_1a098229e37012e7bd93d13036bfc864ac" compoundref="MOM__tracer__hor__diff_8F90" startline="107" endline="580">mom_tracer_hor_diff::tracer_hordiff</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1aec9b89b6a5ddc81f102309b964a0b969" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::interface_scalar</definition>
        <argsstring>(nk, h, S, Si, i_method, h_neglect)</argsstring>
        <name>interface_scalar</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>S</type>
          <defname>S</defname>
        </param>
        <param>
          <type>Si</type>
          <defname>Si</defname>
        </param>
        <param>
          <type>i_method</type>
          <defname>i_method</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <briefdescription>
<para>Returns interface scalar, Si, for a column of layer values, S. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer scalar (conc, e.g. ppt) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">si</parametername>
</parameternamelist>
<parameterdescription>
<para>Interface scalar (conc, e.g. ppt) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i_method</parametername>
</parameternamelist>
<parameterdescription>
<para>=1 use average of PLM edges =2 use continuous PPM edge interpolation </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="692" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="693" bodyend="725"/>
        <references refid="namespacemom__neutral__diffusion_1ac211ae488cb6e3c6685df85d24ecd0dd" compoundref="MOM__neutral__diffusion_8F90" startline="809" endline="868">plm_diff</references>
        <references refid="namespacemom__neutral__diffusion_1ae931a15b9ab6a7672b005eb5fe382219" compoundref="MOM__neutral__diffusion_8F90" startline="731" endline="765">ppm_edge</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" compoundref="MOM__neutral__diffusion_8F90" startline="284" endline="525">neutral_diffusion_calc_coeffs</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ae931a15b9ab6a7672b005eb5fe382219" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::ppm_edge</definition>
        <argsstring>(hkm1, hk, hkp1, hkp2, Ak, Akp1, Pk, Pkp1, h_neglect)</argsstring>
        <name>ppm_edge</name>
        <param>
          <type>hkm1</type>
          <defname>hkm1</defname>
        </param>
        <param>
          <type>hk</type>
          <defname>hk</defname>
        </param>
        <param>
          <type>hkp1</type>
          <defname>hkp1</defname>
        </param>
        <param>
          <type>hkp2</type>
          <defname>hkp2</defname>
        </param>
        <param>
          <type>Ak</type>
          <defname>Ak</defname>
        </param>
        <param>
          <type>Akp1</type>
          <defname>Akp1</defname>
        </param>
        <param>
          <type>Pk</type>
          <defname>Pk</defname>
        </param>
        <param>
          <type>Pkp1</type>
          <defname>Pkp1</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <briefdescription>
<para>Returns the PPM quasi-fourth order edge value at k+1/2 following equation 1.6 in Colella &amp; Woodward, 1984: JCP 54, 174-201. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">hkm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Width of cell k-1 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hk</parametername>
</parameternamelist>
<parameterdescription>
<para>Width of cell k </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Width of cell k+1 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkp2</parametername>
</parameternamelist>
<parameterdescription>
<para>Width of cell k+2 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ak</parametername>
</parameternamelist>
<parameterdescription>
<para>Average scalar value of cell k </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">akp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Average scalar value of cell k+1 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pk</parametername>
</parameternamelist>
<parameterdescription>
<para>PLM slope for cell k </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pkp1</parametername>
</parameternamelist>
<parameterdescription>
<para>PLM slope for cell k+1 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="730" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="731" bodyend="765"/>
        <referencedby refid="namespacemom__neutral__diffusion_1aec9b89b6a5ddc81f102309b964a0b969" compoundref="MOM__neutral__diffusion_8F90" startline="693" endline="725">interface_scalar</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a6931d9a07d09aa5d76d5abd2e47a54df" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::ppm_ave</definition>
        <argsstring>(xL, xR, aL, aR, aMean)</argsstring>
        <name>ppm_ave</name>
        <param>
          <type>xL</type>
          <defname>xL</defname>
        </param>
        <param>
          <type>xR</type>
          <defname>xR</defname>
        </param>
        <param>
          <type>aL</type>
          <defname>aL</defname>
        </param>
        <param>
          <type>aR</type>
          <defname>aR</defname>
        </param>
        <param>
          <type>aMean</type>
          <defname>aMean</defname>
        </param>
        <briefdescription>
<para>Returns the average of a PPM reconstruction between two fractional positions. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">xl</parametername>
</parameternamelist>
<parameterdescription>
<para>Fraction position of left bound (0,1) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">xr</parametername>
</parameternamelist>
<parameterdescription>
<para>Fraction position of right bound (0,1) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">al</parametername>
</parameternamelist>
<parameterdescription>
<para>Left edge scalar value, at x=0 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ar</parametername>
</parameternamelist>
<parameterdescription>
<para>Right edge scalar value, at x=1 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">amean</parametername>
</parameternamelist>
<parameterdescription>
<para>Average scalar value of cell </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="770" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="771" bodyend="793"/>
        <referencedby refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a118ace85483009d5b7a1841e3c745499" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::signum</definition>
        <argsstring>(a, x)</argsstring>
        <name>signum</name>
        <param>
          <type>a</type>
          <defname>a</defname>
        </param>
        <param>
          <type>x</type>
          <defname>x</defname>
        </param>
        <briefdescription>
<para>A true signum function that returns either -abs(a), when x&lt;0; or abs(a) when x&gt;0; or 0 when x=0. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">a</parametername>
</parameternamelist>
<parameterdescription>
<para>The magnitude argument </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">x</parametername>
</parameternamelist>
<parameterdescription>
<para>The sign (or zero) argument </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="797" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="798" bodyend="803"/>
        <referencedby refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1ac211ae488cb6e3c6685df85d24ecd0dd" compoundref="MOM__neutral__diffusion_8F90" startline="809" endline="868">plm_diff</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a9b380e21dcc9c53efcec4712228b931f" compoundref="MOM__neutral__diffusion_8F90" startline="2056" endline="2075">ppm_left_right_edge_values</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ac211ae488cb6e3c6685df85d24ecd0dd" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::plm_diff</definition>
        <argsstring>(nk, h, S, c_method, b_method, diff)</argsstring>
        <name>plm_diff</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>S</type>
          <defname>S</defname>
        </param>
        <param>
          <type>c_method</type>
          <defname>c_method</defname>
        </param>
        <param>
          <type>b_method</type>
          <defname>b_method</defname>
        </param>
        <param>
          <type>diff</type>
          <defname>diff</defname>
        </param>
        <briefdescription>
<para>Returns PLM slopes for a column where the slopes are the difference in value across each cell. The limiting follows equation 1.8 in Colella &amp; Woodward, 1984: JCP 54, 174-201. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer salinity (conc, e.g. ppt) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">c_method</parametername>
</parameternamelist>
<parameterdescription>
<para>Method to use for the centered difference </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">b_method</parametername>
</parameternamelist>
<parameterdescription>
<para>=1, use PCM in first/last cell, =2 uses linear extrapolation </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diff</parametername>
</parameternamelist>
<parameterdescription>
<para>Scalar difference across layer (conc, e.g. ppt) determined by the following values for c_method:<orderedlist>
<listitem><para>Second order finite difference (not recommended)</para>
</listitem><listitem><para>Second order finite volume (used in original PPM)</para>
</listitem><listitem><para>Finite-volume weighted least squares linear fit </para>
</listitem></orderedlist>
</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<xrefsect id="todo_1_todo000008"><xreftitle>Todo</xreftitle><xrefdescription><para>The use of c_method to choose a scheme is inefficient and should eventually be moved up the call tree. </para>
</xrefdescription></xrefsect></para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="808" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="809" bodyend="868"/>
        <references refid="namespacemom__neutral__diffusion_1a1c5ac28d7c54581cdd872fe58ef0b204" compoundref="MOM__neutral__diffusion_8F90" startline="876" endline="894">fv_diff</references>
        <references refid="namespacemom__neutral__diffusion_1a6ed3814088af470ad6fc4a3a80926fd7" compoundref="MOM__neutral__diffusion_8F90" startline="902" endline="926">fvlsq_slope</references>
        <references refid="namespacemom__neutral__diffusion_1a118ace85483009d5b7a1841e3c745499" compoundref="MOM__neutral__diffusion_8F90" startline="798" endline="803">signum</references>
        <referencedby refid="namespacemom__neutral__diffusion_1aec9b89b6a5ddc81f102309b964a0b969" compoundref="MOM__neutral__diffusion_8F90" startline="693" endline="725">interface_scalar</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a1c5ac28d7c54581cdd872fe58ef0b204" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::fv_diff</definition>
        <argsstring>(hkm1, hk, hkp1, Skm1, Sk, Skp1)</argsstring>
        <name>fv_diff</name>
        <param>
          <type>hkm1</type>
          <defname>hkm1</defname>
        </param>
        <param>
          <type>hk</type>
          <defname>hk</defname>
        </param>
        <param>
          <type>hkp1</type>
          <defname>hkp1</defname>
        </param>
        <param>
          <type>Skm1</type>
          <defname>Skm1</defname>
        </param>
        <param>
          <type>Sk</type>
          <defname>Sk</defname>
        </param>
        <param>
          <type>Skp1</type>
          <defname>Skp1</defname>
        </param>
        <briefdescription>
<para>Returns the cell-centered second-order finite volume (unlimited PLM) slope using three consecutive cell widths and average values. Slope is returned as a difference across the central cell (i.e. units of scalar S). Discretization follows equation 1.7 in Colella &amp; Woodward, 1984: JCP 54, 174-201. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">hkm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell average value </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="875" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="876" bodyend="894"/>
        <referencedby refid="namespacemom__neutral__diffusion_1ac211ae488cb6e3c6685df85d24ecd0dd" compoundref="MOM__neutral__diffusion_8F90" startline="809" endline="868">plm_diff</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1ac51219df490c739774d70d9958bae047" compoundref="MOM__neutral__diffusion_8F90" startline="2610" endline="2637">test_fv_diff</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a6ed3814088af470ad6fc4a3a80926fd7" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::fvlsq_slope</definition>
        <argsstring>(hkm1, hk, hkp1, Skm1, Sk, Skp1)</argsstring>
        <name>fvlsq_slope</name>
        <param>
          <type>hkm1</type>
          <defname>hkm1</defname>
        </param>
        <param>
          <type>hk</type>
          <defname>hk</defname>
        </param>
        <param>
          <type>hkp1</type>
          <defname>hkp1</defname>
        </param>
        <param>
          <type>Skm1</type>
          <defname>Skm1</defname>
        </param>
        <param>
          <type>Sk</type>
          <defname>Sk</defname>
        </param>
        <param>
          <type>Skp1</type>
          <defname>Skp1</defname>
        </param>
        <briefdescription>
<para>Returns the cell-centered second-order weighted least squares slope using three consecutive cell widths and average values. Slope is returned as a gradient (i.e. units of scalar S over width units). </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">hkm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell average value </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="901" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="902" bodyend="926"/>
        <referencedby refid="namespacemom__neutral__diffusion_1ac211ae488cb6e3c6685df85d24ecd0dd" compoundref="MOM__neutral__diffusion_8F90" startline="809" endline="868">plm_diff</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1ad964ab49cd5901b79dc32f2367d24aed" compoundref="MOM__neutral__diffusion_8F90" startline="2642" endline="2669">test_fvlsq_slope</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1acb07c024cb6aa162a8789a4f50139aa5" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::find_neutral_surface_positions_continuous</definition>
        <argsstring>(nk, Pl, Tl, Sl, dRdTl, dRdSl, Pr, Tr, Sr, dRdTr, dRdSr, PoL, PoR, KoL, KoR, hEff, bl_kl, bl_kr, bl_zl, bl_zr)</argsstring>
        <name>find_neutral_surface_positions_continuous</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>Pl</type>
          <defname>Pl</defname>
        </param>
        <param>
          <type>Tl</type>
          <defname>Tl</defname>
        </param>
        <param>
          <type>Sl</type>
          <defname>Sl</defname>
        </param>
        <param>
          <type>dRdTl</type>
          <defname>dRdTl</defname>
        </param>
        <param>
          <type>dRdSl</type>
          <defname>dRdSl</defname>
        </param>
        <param>
          <type>Pr</type>
          <defname>Pr</defname>
        </param>
        <param>
          <type>Tr</type>
          <defname>Tr</defname>
        </param>
        <param>
          <type>Sr</type>
          <defname>Sr</defname>
        </param>
        <param>
          <type>dRdTr</type>
          <defname>dRdTr</defname>
        </param>
        <param>
          <type>dRdSr</type>
          <defname>dRdSr</defname>
        </param>
        <param>
          <type>PoL</type>
          <defname>PoL</defname>
        </param>
        <param>
          <type>PoR</type>
          <defname>PoR</defname>
        </param>
        <param>
          <type>KoL</type>
          <defname>KoL</defname>
        </param>
        <param>
          <type>KoR</type>
          <defname>KoR</defname>
        </param>
        <param>
          <type>hEff</type>
          <defname>hEff</defname>
        </param>
        <param>
          <type>bl_kl</type>
          <defname>bl_kl</defname>
        </param>
        <param>
          <type>bl_kr</type>
          <defname>bl_kr</defname>
        </param>
        <param>
          <type>bl_zl</type>
          <defname>bl_zl</defname>
        </param>
        <param>
          <type>bl_zr</type>
          <defname>bl_zr</defname>
        </param>
        <briefdescription>
<para>Returns positions within left/right columns of combined interfaces using continuous reconstructions of T/S. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column interface pressure [R L2 T-2 ~&gt; Pa] or other units </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column interface potential temperature [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column interface salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdtl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column dRho/dT [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdsl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column dRho/dS [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column interface pressure [R L2 T-2 ~&gt; Pa] or other units </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column interface potential temperature [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column interface salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column dRho/dT [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdsr</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column dRho/dS [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">pol</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoL of left column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">por</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoR of right column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kol</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first left interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kor</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first right interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">heff</parametername>
</parameternamelist>
<parameterdescription>
<para>Effective thickness between two neutral surfaces [R L2 T-2 ~&gt; Pa] or other units following Pl and Pr. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">bl_kl</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer index of the boundary layer (left) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">bl_kr</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer index of the boundary layer (right) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">bl_zl</parametername>
</parameternamelist>
<parameterdescription>
<para>Nondimensional position of the boundary layer (left) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">bl_zr</parametername>
</parameternamelist>
<parameterdescription>
<para>Nondimensional position of the boundary layer (right) </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="931" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="933" bodyend="1136"/>
        <references refid="namespacemom__neutral__diffusion_1a16279fc70f169ee1011030e7afecdd4e" compoundref="MOM__neutral__diffusion_8F90" startline="1837" endline="1851">absolute_position</references>
        <references refid="namespacemom__neutral__diffusion_1a666836e70bdae7ef4ec271246cf91993" compoundref="MOM__neutral__diffusion_8F90" startline="1143" endline="1177">interpolate_for_nondim_position</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" compoundref="MOM__neutral__diffusion_8F90" startline="284" endline="525">neutral_diffusion_calc_coeffs</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a666836e70bdae7ef4ec271246cf91993" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::interpolate_for_nondim_position</definition>
        <argsstring>(dRhoNeg, Pneg, dRhoPos, Ppos)</argsstring>
        <name>interpolate_for_nondim_position</name>
        <param>
          <type>dRhoNeg</type>
          <defname>dRhoNeg</defname>
        </param>
        <param>
          <type>Pneg</type>
          <defname>Pneg</defname>
        </param>
        <param>
          <type>dRhoPos</type>
          <defname>dRhoPos</defname>
        </param>
        <param>
          <type>Ppos</type>
          <defname>Ppos</defname>
        </param>
        <briefdescription>
<para>Returns the non-dimensional position between Pneg and Ppos where the interpolated density difference equals zero. The result is always bounded to be between 0 and 1. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">drhoneg</parametername>
</parameternamelist>
<parameterdescription>
<para>Negative density difference [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pneg</parametername>
</parameternamelist>
<parameterdescription>
<para>Position of negative density difference [R L2 T-2 ~&gt; Pa] or [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drhopos</parametername>
</parameternamelist>
<parameterdescription>
<para>Positive density difference [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppos</parametername>
</parameternamelist>
<parameterdescription>
<para>Position of positive density difference [R L2 T-2 ~&gt; Pa] or [nondim] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1142" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1143" bodyend="1177"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__neutral__diffusion_1acb07c024cb6aa162a8789a4f50139aa5" compoundref="MOM__neutral__diffusion_8F90" startline="933" endline="1136">find_neutral_surface_positions_continuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a2952cbcce84dbdae01fce09240f819c5" compoundref="MOM__neutral__diffusion_8F90" startline="1439" endline="1502">search_other_column</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a1a21234946c77d1e4ed852a4173503f1" compoundref="MOM__neutral__diffusion_8F90" startline="2674" endline="2701">test_ifndp</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a72eca09bc6cc25f8a3831ad8e2be91d4" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::find_neutral_surface_positions_discontinuous</definition>
        <argsstring>(CS, nk, Pres_l, hcol_l, Tl, Sl, ppoly_T_l, ppoly_S_l, stable_l, Pres_r, hcol_r, Tr, Sr, ppoly_T_r, ppoly_S_r, stable_r, PoL, PoR, KoL, KoR, hEff, zeta_bot_L, zeta_bot_R, k_bot_L, k_bot_R, hard_fail_heff)</argsstring>
        <name>find_neutral_surface_positions_discontinuous</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>Pres_l</type>
          <defname>Pres_l</defname>
        </param>
        <param>
          <type>hcol_l</type>
          <defname>hcol_l</defname>
        </param>
        <param>
          <type>Tl</type>
          <defname>Tl</defname>
        </param>
        <param>
          <type>Sl</type>
          <defname>Sl</defname>
        </param>
        <param>
          <type>ppoly_T_l</type>
          <defname>ppoly_T_l</defname>
        </param>
        <param>
          <type>ppoly_S_l</type>
          <defname>ppoly_S_l</defname>
        </param>
        <param>
          <type>stable_l</type>
          <defname>stable_l</defname>
        </param>
        <param>
          <type>Pres_r</type>
          <defname>Pres_r</defname>
        </param>
        <param>
          <type>hcol_r</type>
          <defname>hcol_r</defname>
        </param>
        <param>
          <type>Tr</type>
          <defname>Tr</defname>
        </param>
        <param>
          <type>Sr</type>
          <defname>Sr</defname>
        </param>
        <param>
          <type>ppoly_T_r</type>
          <defname>ppoly_T_r</defname>
        </param>
        <param>
          <type>ppoly_S_r</type>
          <defname>ppoly_S_r</defname>
        </param>
        <param>
          <type>stable_r</type>
          <defname>stable_r</defname>
        </param>
        <param>
          <type>PoL</type>
          <defname>PoL</defname>
        </param>
        <param>
          <type>PoR</type>
          <defname>PoR</defname>
        </param>
        <param>
          <type>KoL</type>
          <defname>KoL</defname>
        </param>
        <param>
          <type>KoR</type>
          <defname>KoR</defname>
        </param>
        <param>
          <type>hEff</type>
          <defname>hEff</defname>
        </param>
        <param>
          <type>zeta_bot_L</type>
          <defname>zeta_bot_L</defname>
        </param>
        <param>
          <type>zeta_bot_R</type>
          <defname>zeta_bot_R</defname>
        </param>
        <param>
          <type>k_bot_L</type>
          <defname>k_bot_L</defname>
        </param>
        <param>
          <type>k_bot_R</type>
          <defname>k_bot_R</defname>
        </param>
        <param>
          <type>hard_fail_heff</type>
          <defname>hard_fail_heff</defname>
        </param>
        <briefdescription>
<para>Higher order version of find_neutral_surface_positions. Returns positions within left/right columns of combined interfaces using intracell reconstructions of T/S. Note that the polynomial reconstrcutions of T and S are optional to aid with unit testing, but will always be passed otherwise. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pres_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column interface pressure [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hcol_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column layer thicknesses [H ~&gt; m or kg m-2] or other units </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column top interface potential temperature [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column top interface salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_t_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column coefficients of T reconstruction [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_s_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column coefficients of S reconstruction [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">stable_l</parametername>
</parameternamelist>
<parameterdescription>
<para>True where the left-column is stable </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pres_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column interface pressure [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hcol_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column layer thicknesses [H ~&gt; m or kg m-2] or other units </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column top interface potential temperature [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column top interface salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_t_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column coefficients of T reconstruction [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_s_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column coefficients of S reconstruction [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">stable_r</parametername>
</parameternamelist>
<parameterdescription>
<para>True where the right-column is stable </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">pol</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoL of left column [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">por</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoR of right column [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kol</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first left interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kor</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first right interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">heff</parametername>
</parameternamelist>
<parameterdescription>
<para>Effective thickness between two neutral surfaces [H ~&gt; m or kg m-2] or other units taken from hcol_l </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">zeta_bot_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Non-dimensional distance to where the boundary layer intersetcs the cell (left) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">zeta_bot_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Non-dimensional distance to where the boundary layer intersetcs the cell (right) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">k_bot_l</parametername>
</parameternamelist>
<parameterdescription>
<para>k-index for the boundary layer (left) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">k_bot_r</parametername>
</parameternamelist>
<parameterdescription>
<para>k-index for the boundary layer (right) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hard_fail_heff</parametername>
</parameternamelist>
<parameterdescription>
<para>If true (default) bring down the model if the neutral surfaces ever cross [logical] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1183" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1187" bodyend="1414"/>
        <references refid="namespacemom__neutral__diffusion_1a096623adeec0973cbb99cb9048946ad3" compoundref="MOM__neutral__diffusion_8F90" startline="1756" endline="1809">calc_delta_rho_and_derivs</references>
        <references refid="namespacemom__neutral__diffusion_1aa8a9c4a6e7e96ae356f913d4e8611f17" compoundref="MOM__neutral__diffusion_8F90" startline="1507" endline="1529">increment_interface</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <references refid="namespacemom__neutral__diffusion_1a2952cbcce84dbdae01fce09240f819c5" compoundref="MOM__neutral__diffusion_8F90" startline="1439" endline="1502">search_other_column</references>
        <referencedby refid="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" compoundref="MOM__neutral__diffusion_8F90" startline="2354" endline="2605">ndiff_unit_tests_discontinuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" compoundref="MOM__neutral__diffusion_8F90" startline="284" endline="525">neutral_diffusion_calc_coeffs</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a3ef7040590d6448a34013763e17edf47" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::mark_unstable_cells</definition>
        <argsstring>(CS, nk, T, S, P, stable_cell)</argsstring>
        <name>mark_unstable_cells</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>T</type>
          <defname>T</defname>
        </param>
        <param>
          <type>S</type>
          <defname>S</defname>
        </param>
        <param>
          <type>P</type>
          <defname>P</defname>
        </param>
        <param>
          <type>stable_cell</type>
          <defname>stable_cell</defname>
        </param>
        <briefdescription>
<para>Sweep down through the column and mark as stable if the bottom interface of a cell is denser than the top. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels in a column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at interfaces [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at interfaces [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at interfaces [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">stable_cell</parametername>
</parameternamelist>
<parameterdescription>
<para>True if this cell is unstably stratified </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1418" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1419" bodyend="1433"/>
        <references refid="namespacemom__neutral__diffusion_1a096623adeec0973cbb99cb9048946ad3" compoundref="MOM__neutral__diffusion_8F90" startline="1756" endline="1809">calc_delta_rho_and_derivs</references>
        <referencedby refid="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" compoundref="MOM__neutral__diffusion_8F90" startline="2354" endline="2605">ndiff_unit_tests_discontinuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" compoundref="MOM__neutral__diffusion_8F90" startline="284" endline="525">neutral_diffusion_calc_coeffs</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a2952cbcce84dbdae01fce09240f819c5" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::search_other_column</definition>
        <argsstring>(CS, ksurf, pos_last, T_from, S_from, P_from, T_top, S_top, P_top, T_bot, S_bot, P_bot, T_poly, S_poly)</argsstring>
        <name>search_other_column</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>ksurf</type>
          <defname>ksurf</defname>
        </param>
        <param>
          <type>pos_last</type>
          <defname>pos_last</defname>
        </param>
        <param>
          <type>T_from</type>
          <defname>T_from</defname>
        </param>
        <param>
          <type>S_from</type>
          <defname>S_from</defname>
        </param>
        <param>
          <type>P_from</type>
          <defname>P_from</defname>
        </param>
        <param>
          <type>T_top</type>
          <defname>T_top</defname>
        </param>
        <param>
          <type>S_top</type>
          <defname>S_top</defname>
        </param>
        <param>
          <type>P_top</type>
          <defname>P_top</defname>
        </param>
        <param>
          <type>T_bot</type>
          <defname>T_bot</defname>
        </param>
        <param>
          <type>S_bot</type>
          <defname>S_bot</defname>
        </param>
        <param>
          <type>P_bot</type>
          <defname>P_bot</defname>
        </param>
        <param>
          <type>T_poly</type>
          <defname>T_poly</defname>
        </param>
        <param>
          <type>S_poly</type>
          <defname>S_poly</defname>
        </param>
        <briefdescription>
<para>Searches the &quot;other&quot; (searched) column for the position of the neutral surface. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ksurf</parametername>
</parameternamelist>
<parameterdescription>
<para>Current index of neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pos_last</parametername>
</parameternamelist>
<parameterdescription>
<para>Last position within the current layer, used as the lower bound in the root finding algorithm [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_from</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at the searched from interface [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_from</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at the searched from interface [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_from</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at the searched from interface [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at the searched to top interface [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at the searched to top interface [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at the searched to top interface [R L2 T-2 ~&gt; Pa] interface [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at the searched to bottom interface [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at the searched to bottom interface [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at the searched to bottom interface [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_poly</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature polynomial reconstruction coefficients [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_poly</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity polynomial reconstruction coefficients [ppt] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1437" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1439" bodyend="1502"/>
        <references refid="namespacemom__neutral__diffusion_1a096623adeec0973cbb99cb9048946ad3" compoundref="MOM__neutral__diffusion_8F90" startline="1756" endline="1809">calc_delta_rho_and_derivs</references>
        <references refid="namespacemom__neutral__diffusion_1a8bef35a99b64bf7afad086a557ba7c1d" compoundref="MOM__neutral__diffusion_8F90" startline="1662" endline="1750">find_neutral_pos_full</references>
        <references refid="namespacemom__neutral__diffusion_1a464e946951f3bbf7e2df500831c7afd4" compoundref="MOM__neutral__diffusion_8F90" startline="1542" endline="1656">find_neutral_pos_linear</references>
        <references refid="namespacemom__neutral__diffusion_1a666836e70bdae7ef4ec271246cf91993" compoundref="MOM__neutral__diffusion_8F90" startline="1143" endline="1177">interpolate_for_nondim_position</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a72eca09bc6cc25f8a3831ad8e2be91d4" compoundref="MOM__neutral__diffusion_8F90" startline="1187" endline="1414">find_neutral_surface_positions_discontinuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1aa8a9c4a6e7e96ae356f913d4e8611f17" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::increment_interface</definition>
        <argsstring>(nk, kl, ki, reached_bottom, searching_this_column, searching_other_column)</argsstring>
        <name>increment_interface</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>kl</type>
          <defname>kl</defname>
        </param>
        <param>
          <type>ki</type>
          <defname>ki</defname>
        </param>
        <param>
          <type>reached_bottom</type>
          <defname>reached_bottom</defname>
        </param>
        <param>
          <type>searching_this_column</type>
          <defname>searching_this_column</defname>
        </param>
        <param>
          <type>searching_other_column</type>
          <defname>searching_other_column</defname>
        </param>
        <briefdescription>
<para>Increments the interface which was just connected and also set flags if the bottom is reached. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of vertical levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kl</parametername>
</parameternamelist>
<parameterdescription>
<para>Current layer (potentially updated) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ki</parametername>
</parameternamelist>
<parameterdescription>
<para>Current interface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">reached_bottom</parametername>
</parameternamelist>
<parameterdescription>
<para>Updated when kl == nk and ki == 2 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">searching_this_column</parametername>
</parameternamelist>
<parameterdescription>
<para>Updated when kl == nk and ki == 2 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">searching_other_column</parametername>
</parameternamelist>
<parameterdescription>
<para>Updated when kl == nk and ki == 2 </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1506" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1507" bodyend="1529"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a72eca09bc6cc25f8a3831ad8e2be91d4" compoundref="MOM__neutral__diffusion_8F90" startline="1187" endline="1414">find_neutral_surface_positions_discontinuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a464e946951f3bbf7e2df500831c7afd4" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::find_neutral_pos_linear</definition>
        <argsstring>(CS, z0, T_ref, S_ref, dRdT_ref, dRdS_ref, dRdT_top, dRdS_top, dRdT_bot, dRdS_bot, ppoly_T, ppoly_S)</argsstring>
        <name>find_neutral_pos_linear</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>z0</type>
          <defname>z0</defname>
        </param>
        <param>
          <type>T_ref</type>
          <defname>T_ref</defname>
        </param>
        <param>
          <type>S_ref</type>
          <defname>S_ref</defname>
        </param>
        <param>
          <type>dRdT_ref</type>
          <defname>dRdT_ref</defname>
        </param>
        <param>
          <type>dRdS_ref</type>
          <defname>dRdS_ref</defname>
        </param>
        <param>
          <type>dRdT_top</type>
          <defname>dRdT_top</defname>
        </param>
        <param>
          <type>dRdS_top</type>
          <defname>dRdS_top</defname>
        </param>
        <param>
          <type>dRdT_bot</type>
          <defname>dRdT_bot</defname>
        </param>
        <param>
          <type>dRdS_bot</type>
          <defname>dRdS_bot</defname>
        </param>
        <param>
          <type>ppoly_T</type>
          <defname>ppoly_T</defname>
        </param>
        <param>
          <type>ppoly_S</type>
          <defname>ppoly_S</defname>
        </param>
        <briefdescription>
<para>Search a layer to find where delta_rho = 0 based on a linear interpolation of alpha and beta of the top and bottom being searched and polynomial reconstructions of T and S. Compressibility is not needed because either, we are assuming incompressibility in the equation of state for this module or alpha and beta are calculated having been displaced to the average pressures of the two pressures We need Newton&apos;s method because the T and S reconstructions make delta_rho a polynomial function of z if using PPM or higher. If Newton&apos;s method would search fall out of the interval [0,1], a bisection step would be taken instead. Also this linearization of alpha, beta means that second derivatives of the EOS are not needed. Note that delta in variable names below refers to horizontal differences and &apos;d&apos; refers to vertical differences. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure with parameters for this module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">z0</parametername>
</parameternamelist>
<parameterdescription>
<para>Lower bound of position, also serves as the initial guess [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at the searched from interface [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at the searched from interface [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdt_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>dRho/dT at the searched from interface [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drds_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>dRho/dS at the searched from interface [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdt_top</parametername>
</parameternamelist>
<parameterdescription>
<para>dRho/dT at top of layer being searched [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drds_top</parametername>
</parameternamelist>
<parameterdescription>
<para>dRho/dS at top of layer being searched [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drdt_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>dRho/dT at bottom of layer being searched [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">drds_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>dRho/dS at bottom of layer being searched [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_t</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of the polynomial reconstruction of T within the layer to be searched [degC]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_s</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of the polynomial reconstruction of S within the layer to be searched [ppt]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>Position where drho = 0 [nondim] </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1540" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1542" bodyend="1656"/>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespacepolynomial__functions_1a38462b1bc63d3f1f441e4d340c2b4627" compoundref="polynomial__functions_8F90" startline="44" endline="57">polynomial_functions::first_derivative_polynomial</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" compoundref="MOM__neutral__diffusion_8F90" startline="2354" endline="2605">ndiff_unit_tests_discontinuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a2952cbcce84dbdae01fce09240f819c5" compoundref="MOM__neutral__diffusion_8F90" startline="1439" endline="1502">search_other_column</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a8bef35a99b64bf7afad086a557ba7c1d" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::find_neutral_pos_full</definition>
        <argsstring>(CS, z0, T_ref, S_ref, P_ref, P_top, P_bot, ppoly_T, ppoly_S)</argsstring>
        <name>find_neutral_pos_full</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>z0</type>
          <defname>z0</defname>
        </param>
        <param>
          <type>T_ref</type>
          <defname>T_ref</defname>
        </param>
        <param>
          <type>S_ref</type>
          <defname>S_ref</defname>
        </param>
        <param>
          <type>P_ref</type>
          <defname>P_ref</defname>
        </param>
        <param>
          <type>P_top</type>
          <defname>P_top</defname>
        </param>
        <param>
          <type>P_bot</type>
          <defname>P_bot</defname>
        </param>
        <param>
          <type>ppoly_T</type>
          <defname>ppoly_T</defname>
        </param>
        <param>
          <type>ppoly_S</type>
          <defname>ppoly_S</defname>
        </param>
        <briefdescription>
<para>Use the full equation of state to calculate the difference in locally referenced potential density. The derivatives in this case are not trivial to calculate, so instead we use a regula falsi method. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure with parameters for this module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">z0</parametername>
</parameternamelist>
<parameterdescription>
<para>Lower bound of position, also serves as the initial guess [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at the searched from interface [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at the searched from interface [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at the searched from interface [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at top of layer being searched [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at bottom of layer being searched [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_t</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of the polynomial reconstruction of T within the layer to be searched [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly_s</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of the polynomial reconstruction of T within the layer to be searched [ppt] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>Position where drho = 0 [nondim] </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1661" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1662" bodyend="1750"/>
        <references refid="namespacemom__neutral__diffusion_1a096623adeec0973cbb99cb9048946ad3" compoundref="MOM__neutral__diffusion_8F90" startline="1756" endline="1809">calc_delta_rho_and_derivs</references>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a2952cbcce84dbdae01fce09240f819c5" compoundref="MOM__neutral__diffusion_8F90" startline="1439" endline="1502">search_other_column</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a096623adeec0973cbb99cb9048946ad3" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::calc_delta_rho_and_derivs</definition>
        <argsstring>(CS, T1, S1, p1_in, T2, S2, p2_in, drho, drdt1_out, drds1_out, drdt2_out, drds2_out)</argsstring>
        <name>calc_delta_rho_and_derivs</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>T1</type>
          <defname>T1</defname>
        </param>
        <param>
          <type>S1</type>
          <defname>S1</defname>
        </param>
        <param>
          <type>p1_in</type>
          <defname>p1_in</defname>
        </param>
        <param>
          <type>T2</type>
          <defname>T2</defname>
        </param>
        <param>
          <type>S2</type>
          <defname>S2</defname>
        </param>
        <param>
          <type>p2_in</type>
          <defname>p2_in</defname>
        </param>
        <param>
          <type>drho</type>
          <defname>drho</defname>
        </param>
        <param>
          <type>drdt1_out</type>
          <defname>drdt1_out</defname>
        </param>
        <param>
          <type>drds1_out</type>
          <defname>drds1_out</defname>
        </param>
        <param>
          <type>drdt2_out</type>
          <defname>drdt2_out</defname>
        </param>
        <param>
          <type>drds2_out</type>
          <defname>drds2_out</defname>
        </param>
        <briefdescription>
<para>Calculate the difference in density between two points in a variety of ways. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t1</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at point 1 [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s1</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at point 1 [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p1_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at point 1 [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t2</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at point 2 [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s2</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at point 2 [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">p2_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at point 2 [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">drho</parametername>
</parameternamelist>
<parameterdescription>
<para>Difference in density between the two points [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">drdt1_out</parametername>
</parameternamelist>
<parameterdescription>
<para>drho_dt at point 1 [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">drds1_out</parametername>
</parameternamelist>
<parameterdescription>
<para>drho_ds at point 1 [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">drdt2_out</parametername>
</parameternamelist>
<parameterdescription>
<para>drho_dt at point 2 [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">drds2_out</parametername>
</parameternamelist>
<parameterdescription>
<para>drho_ds at point 2 [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1754" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1756" bodyend="1809"/>
        <references refid="namespacemom__neutral__diffusion_1ae0420673e01c23b26e87dc68317347a1" compoundref="MOM__neutral__diffusion_8F90" startline="1818" endline="1832">delta_rho_from_derivs</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a8bef35a99b64bf7afad086a557ba7c1d" compoundref="MOM__neutral__diffusion_8F90" startline="1662" endline="1750">find_neutral_pos_full</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a72eca09bc6cc25f8a3831ad8e2be91d4" compoundref="MOM__neutral__diffusion_8F90" startline="1187" endline="1414">find_neutral_surface_positions_discontinuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a3ef7040590d6448a34013763e17edf47" compoundref="MOM__neutral__diffusion_8F90" startline="1419" endline="1433">mark_unstable_cells</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a2952cbcce84dbdae01fce09240f819c5" compoundref="MOM__neutral__diffusion_8F90" startline="1439" endline="1502">search_other_column</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ae0420673e01c23b26e87dc68317347a1" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::delta_rho_from_derivs</definition>
        <argsstring>(T1, S1, P1, dRdT1, dRdS1, T2, S2, P2, dRdT2, dRdS2)</argsstring>
        <name>delta_rho_from_derivs</name>
        <param>
          <type>T1</type>
          <defname>T1</defname>
        </param>
        <param>
          <type>S1</type>
          <defname>S1</defname>
        </param>
        <param>
          <type>P1</type>
          <defname>P1</defname>
        </param>
        <param>
          <type>dRdT1</type>
          <defname>dRdT1</defname>
        </param>
        <param>
          <type>dRdS1</type>
          <defname>dRdS1</defname>
        </param>
        <param>
          <type>T2</type>
          <defname>T2</defname>
        </param>
        <param>
          <type>S2</type>
          <defname>S2</defname>
        </param>
        <param>
          <type>P2</type>
          <defname>P2</defname>
        </param>
        <param>
          <type>dRdT2</type>
          <defname>dRdT2</defname>
        </param>
        <param>
          <type>dRdS2</type>
          <defname>dRdS2</defname>
        </param>
        <briefdescription>
<para>Calculate delta rho from derivatives and gradients of properties <formula id="523">$ \Delta \rho = \frac{1}{2}\left[ (\alpha_1 + \alpha_2)*(T_1-T_2) + (\beta_1 + \beta_2)*(S_1-S_2) + (\gamma^{-1}_1 + \gamma^{-1}_2)*(P_1-P_2) \right] $</formula>. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>t1</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at point 1 [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>s1</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at point 1 [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>p1</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at point 1 [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>drdt1</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of density with temperature at point 1 [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>drds1</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of density with salinity at point 1 [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>t2</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature at point 2 [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>s2</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity at point 2 [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>p2</parametername>
</parameternamelist>
<parameterdescription>
<para>Pressure at point 2 [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>drdt2</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of density with temperature at point 2 [R degC-1 ~&gt; kg m-3 degC-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>drds2</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of density with salinity at point 2 [R ppt-1 ~&gt; kg m-3 ppt-1] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1816" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1818" bodyend="1832"/>
        <referencedby refid="namespacemom__neutral__diffusion_1a096623adeec0973cbb99cb9048946ad3" compoundref="MOM__neutral__diffusion_8F90" startline="1756" endline="1809">calc_delta_rho_and_derivs</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a16279fc70f169ee1011030e7afecdd4e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_neutral_diffusion::absolute_position</definition>
        <argsstring>(n, ns, Pint, Karr, NParr, k_surface)</argsstring>
        <name>absolute_position</name>
        <param>
          <type>n</type>
          <defname>n</defname>
        </param>
        <param>
          <type>ns</type>
          <defname>ns</defname>
        </param>
        <param>
          <type>Pint</type>
          <defname>Pint</defname>
        </param>
        <param>
          <type>Karr</type>
          <defname>Karr</defname>
        </param>
        <param>
          <type>NParr</type>
          <defname>NParr</defname>
        </param>
        <param>
          <type>k_surface</type>
          <defname>k_surface</defname>
        </param>
        <briefdescription>
<para>Converts non-dimensional position within a layer to absolute position (for debugging) </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ns</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of neutral surfaces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pint</parametername>
</parameternamelist>
<parameterdescription>
<para>Position of interfaces [R L2 T-2 ~&gt; Pa] or other units </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">karr</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of interface above position </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nparr</parametername>
</parameternamelist>
<parameterdescription>
<para>Non-dimensional position within layer Karr(:) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">k_surface</parametername>
</parameternamelist>
<parameterdescription>
<para>k-interface to query </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The absolute position of a location [R L2 T-2 ~&gt; Pa] or other units following Pint </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1836" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1837" bodyend="1851"/>
        <referencedby refid="namespacemom__neutral__diffusion_1a515d1738f61e410218b0c268c37807b3" compoundref="MOM__neutral__diffusion_8F90" startline="1856" endline="1871">absolute_positions</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1acb07c024cb6aa162a8789a4f50139aa5" compoundref="MOM__neutral__diffusion_8F90" startline="933" endline="1136">find_neutral_surface_positions_continuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a515d1738f61e410218b0c268c37807b3" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function, dimension(ns)</type>
        <definition>real function, dimension(ns) mom_neutral_diffusion::absolute_positions</definition>
        <argsstring>(n, ns, Pint, Karr, NParr)</argsstring>
        <name>absolute_positions</name>
        <param>
          <type>n</type>
          <defname>n</defname>
        </param>
        <param>
          <type>ns</type>
          <defname>ns</defname>
        </param>
        <param>
          <type>Pint</type>
          <defname>Pint</defname>
        </param>
        <param>
          <type>Karr</type>
          <defname>Karr</defname>
        </param>
        <param>
          <type>NParr</type>
          <defname>NParr</defname>
        </param>
        <briefdescription>
<para>Converts non-dimensional positions within layers to absolute positions (for debugging) </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">n</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ns</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of neutral surfaces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pint</parametername>
</parameternamelist>
<parameterdescription>
<para>Position of interface [R L2 T-2 ~&gt; Pa] or other units </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">karr</parametername>
</parameternamelist>
<parameterdescription>
<para>Indexes of interfaces about positions </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nparr</parametername>
</parameternamelist>
<parameterdescription>
<para>Non-dimensional positions within layers Karr(:) </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>Absolute positions [R L2 T-2 ~&gt; Pa] or other units following Pint </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1855" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1856" bodyend="1871"/>
        <references refid="namespacemom__neutral__diffusion_1a16279fc70f169ee1011030e7afecdd4e" compoundref="MOM__neutral__diffusion_8F90" startline="1837" endline="1851">absolute_position</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::neutral_surface_flux</definition>
        <argsstring>(nk, nsurf, deg, hl, hr, Tl, Tr, PiL, PiR, KoL, KoR, hEff, Flx, continuous, h_neglect, remap_CS, h_neglect_edge)</argsstring>
        <name>neutral_surface_flux</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>nsurf</type>
          <defname>nsurf</defname>
        </param>
        <param>
          <type>deg</type>
          <defname>deg</defname>
        </param>
        <param>
          <type>hl</type>
          <defname>hl</defname>
        </param>
        <param>
          <type>hr</type>
          <defname>hr</defname>
        </param>
        <param>
          <type>Tl</type>
          <defname>Tl</defname>
        </param>
        <param>
          <type>Tr</type>
          <defname>Tr</defname>
        </param>
        <param>
          <type>PiL</type>
          <defname>PiL</defname>
        </param>
        <param>
          <type>PiR</type>
          <defname>PiR</defname>
        </param>
        <param>
          <type>KoL</type>
          <defname>KoL</defname>
        </param>
        <param>
          <type>KoR</type>
          <defname>KoR</defname>
        </param>
        <param>
          <type>hEff</type>
          <defname>hEff</defname>
        </param>
        <param>
          <type>Flx</type>
          <defname>Flx</defname>
        </param>
        <param>
          <type>continuous</type>
          <defname>continuous</defname>
        </param>
        <param>
          <type>h_neglect</type>
          <defname>h_neglect</defname>
        </param>
        <param>
          <type>remap_CS</type>
          <defname>remap_CS</defname>
        </param>
        <param>
          <type>h_neglect_edge</type>
          <defname>h_neglect_edge</defname>
        </param>
        <briefdescription>
<para>Returns a single column of neutral diffusion fluxes of a tracer. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nsurf</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of neutral surfaces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">deg</parametername>
</parameternamelist>
<parameterdescription>
<para>Degree of polynomial reconstructions </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tl</parametername>
</parameternamelist>
<parameterdescription>
<para>Left-column layer tracer (conc, e.g. degC) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tr</parametername>
</parameternamelist>
<parameterdescription>
<para>Right-column layer tracer (conc, e.g. degC) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pil</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoL of left column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pir</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoR of right column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kol</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first left interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kor</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first right interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">heff</parametername>
</parameternamelist>
<parameterdescription>
<para>Effective thickness between two neutral surfaces [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">flx</parametername>
</parameternamelist>
<parameterdescription>
<para>Flux of tracer between pairs of neutral layers (conc H) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">continuous</parametername>
</parameternamelist>
<parameterdescription>
<para>True if using continuous reconstruction </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 ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">remap_cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Remapping control structure used to create sublayers </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_neglect_edge</parametername>
</parameternamelist>
<parameterdescription>
<para>A negligibly small width used for edge value calculations if continuous is false [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="1875" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="1877" bodyend="1998"/>
        <references refid="namespacemom__neutral__diffusion_1aec9b89b6a5ddc81f102309b964a0b969" compoundref="MOM__neutral__diffusion_8F90" startline="693" endline="725">interface_scalar</references>
        <references refid="namespacemom__neutral__diffusion_1a005d759280cfcb84cafa23a984ffc818" compoundref="MOM__neutral__diffusion_8F90" startline="2004" endline="2051">neutral_surface_t_eval</references>
        <references refid="namespacemom__neutral__diffusion_1a6931d9a07d09aa5d76d5abd2e47a54df" compoundref="MOM__neutral__diffusion_8F90" startline="771" endline="793">ppm_ave</references>
        <references refid="namespacemom__neutral__diffusion_1a9b380e21dcc9c53efcec4712228b931f" compoundref="MOM__neutral__diffusion_8F90" startline="2056" endline="2075">ppm_left_right_edge_values</references>
        <references refid="namespacemom__neutral__diffusion_1a118ace85483009d5b7a1841e3c745499" compoundref="MOM__neutral__diffusion_8F90" startline="798" endline="803">signum</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1a5469b7be43f8c428f092b58dd5ca41c8" compoundref="MOM__neutral__diffusion_8F90" startline="530" endline="688">neutral_diffusion</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a005d759280cfcb84cafa23a984ffc818" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::neutral_surface_t_eval</definition>
        <argsstring>(nk, ns, k_sub, Ks, Ps, T_mean, T_int, deg, iMethod, T_poly, T_top, T_bot, T_sub, T_top_int, T_bot_int, T_layer)</argsstring>
        <name>neutral_surface_t_eval</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>ns</type>
          <defname>ns</defname>
        </param>
        <param>
          <type>k_sub</type>
          <defname>k_sub</defname>
        </param>
        <param>
          <type>Ks</type>
          <defname>Ks</defname>
        </param>
        <param>
          <type>Ps</type>
          <defname>Ps</defname>
        </param>
        <param>
          <type>T_mean</type>
          <defname>T_mean</defname>
        </param>
        <param>
          <type>T_int</type>
          <defname>T_int</defname>
        </param>
        <param>
          <type>deg</type>
          <defname>deg</defname>
        </param>
        <param>
          <type>iMethod</type>
          <defname>iMethod</defname>
        </param>
        <param>
          <type>T_poly</type>
          <defname>T_poly</defname>
        </param>
        <param>
          <type>T_top</type>
          <defname>T_top</defname>
        </param>
        <param>
          <type>T_bot</type>
          <defname>T_bot</defname>
        </param>
        <param>
          <type>T_sub</type>
          <defname>T_sub</defname>
        </param>
        <param>
          <type>T_top_int</type>
          <defname>T_top_int</defname>
        </param>
        <param>
          <type>T_bot_int</type>
          <defname>T_bot_int</defname>
        </param>
        <param>
          <type>T_layer</type>
          <defname>T_layer</defname>
        </param>
        <briefdescription>
<para>Evaluate various parts of the reconstructions to calculate gradient-based flux limter. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of cell everages </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ns</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of neutral surfaces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">k_sub</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of current neutral layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ks</parametername>
</parameternamelist>
<parameterdescription>
<para>List of the layers associated with each neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ps</parametername>
</parameternamelist>
<parameterdescription>
<para>List of the positions within a layer of each surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_mean</parametername>
</parameternamelist>
<parameterdescription>
<para>Cell average of tracer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_int</parametername>
</parameternamelist>
<parameterdescription>
<para>Cell interface values of tracer from reconstruction </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">deg</parametername>
</parameternamelist>
<parameterdescription>
<para>Degree of reconstruction polynomial (e.g. 1 is linear) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">imethod</parametername>
</parameternamelist>
<parameterdescription>
<para>Method of integration to use </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_poly</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of polynomial reconstructions </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">t_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer value at top (across discontinuity if necessary) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">t_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer value at bottom (across discontinuity if necessary) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">t_sub</parametername>
</parameternamelist>
<parameterdescription>
<para>Average of the tracer value over the sublayer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">t_top_int</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer value at top interface of neutral layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">t_bot_int</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer value at bottom interface of neutral layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">t_layer</parametername>
</parameternamelist>
<parameterdescription>
<para>Cell-average that the the reconstruction belongs to </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2002" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2004" bodyend="2051"/>
        <references refid="namespacemom__remapping_1a89dde73fbc6eec035c8dabc225a9c210" compoundref="MOM__remapping_8F90" startline="930" endline="1026">mom_remapping::average_value_ppoly</references>
        <references refid="namespacepolynomial__functions_1adb2b5d18db527314545e8e21638a2872" compoundref="polynomial__functions_8F90" startline="20" endline="33">polynomial_functions::evaluation_polynomial</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a9b380e21dcc9c53efcec4712228b931f" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_neutral_diffusion::ppm_left_right_edge_values</definition>
        <argsstring>(nk, Tl, Ti, aL, aR)</argsstring>
        <name>ppm_left_right_edge_values</name>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>Tl</type>
          <defname>Tl</defname>
        </param>
        <param>
          <type>Ti</type>
          <defname>Ti</defname>
        </param>
        <param>
          <type>aL</type>
          <defname>aL</defname>
        </param>
        <param>
          <type>aR</type>
          <defname>aR</defname>
        </param>
        <briefdescription>
<para>Discontinuous PPM reconstructions of the left/right edge values within a cell. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of levels </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tl</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer tracer (conc, e.g. degC) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ti</parametername>
</parameternamelist>
<parameterdescription>
<para>Interface tracer (conc, e.g. degC) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">al</parametername>
</parameternamelist>
<parameterdescription>
<para>Left edge value of tracer (conc, e.g. degC) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ar</parametername>
</parameternamelist>
<parameterdescription>
<para>Right edge value of tracer (conc, e.g. degC) </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2055" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2056" bodyend="2075"/>
        <references refid="namespacemom__neutral__diffusion_1a118ace85483009d5b7a1841e3c745499" compoundref="MOM__neutral__diffusion_8F90" startline="798" endline="803">signum</references>
        <referencedby refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a6f91c93a6363fb39395796420f25fad2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function, public</type>
        <definition>logical function, public mom_neutral_diffusion::neutral_diffusion_unit_tests</definition>
        <argsstring>(verbose)</argsstring>
        <name>neutral_diffusion_unit_tests</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <briefdescription>
<para>Returns true if unit tests of neutral_diffusion functions fail. Otherwise returns false. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2079" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2080" bodyend="2084"/>
        <references refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</references>
        <references refid="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" compoundref="MOM__neutral__diffusion_8F90" startline="2354" endline="2605">ndiff_unit_tests_discontinuous</references>
        <referencedby refid="namespacemom__unit__tests_1a57645db02bc734c32de50d028ef906ac" compoundref="MOM__unit__tests_8F90" startline="24" endline="45">mom_unit_tests::unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::ndiff_unit_tests_continuous</definition>
        <argsstring>(verbose)</argsstring>
        <name>ndiff_unit_tests_continuous</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <briefdescription>
<para>Returns true if unit tests of neutral_diffusion functions fail. Otherwise returns false. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2088" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2089" bodyend="2350"/>
        <references refid="namespacemom__neutral__diffusion_1a515d1738f61e410218b0c268c37807b3" compoundref="MOM__neutral__diffusion_8F90" startline="1856" endline="1871">absolute_positions</references>
        <references refid="namespacemom__neutral__diffusion_1acb07c024cb6aa162a8789a4f50139aa5" compoundref="MOM__neutral__diffusion_8F90" startline="933" endline="1136">find_neutral_surface_positions_continuous</references>
        <references refid="namespacemom__neutral__diffusion_1aec9b89b6a5ddc81f102309b964a0b969" compoundref="MOM__neutral__diffusion_8F90" startline="693" endline="725">interface_scalar</references>
        <references refid="namespacemom__neutral__diffusion_1aa394289328ee392cdb17000fb6fa90e8" compoundref="MOM__neutral__diffusion_8F90" startline="1877" endline="1998">neutral_surface_flux</references>
        <references refid="namespacemom__neutral__diffusion_1a2870eae4b580e548577943e34321b8f0" compoundref="MOM__neutral__diffusion_8F90" startline="2706" endline="2736">test_data1d</references>
        <references refid="namespacemom__neutral__diffusion_1ac51219df490c739774d70d9958bae047" compoundref="MOM__neutral__diffusion_8F90" startline="2610" endline="2637">test_fv_diff</references>
        <references refid="namespacemom__neutral__diffusion_1ad964ab49cd5901b79dc32f2367d24aed" compoundref="MOM__neutral__diffusion_8F90" startline="2642" endline="2669">test_fvlsq_slope</references>
        <references refid="namespacemom__neutral__diffusion_1a1a21234946c77d1e4ed852a4173503f1" compoundref="MOM__neutral__diffusion_8F90" startline="2674" endline="2701">test_ifndp</references>
        <references refid="namespacemom__neutral__diffusion_1ab5eaa2002c1f6405f5037645bbca3101" compoundref="MOM__neutral__diffusion_8F90" startline="2775" endline="2824">test_nsp</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a6f91c93a6363fb39395796420f25fad2" compoundref="MOM__neutral__diffusion_8F90" startline="2080" endline="2084">neutral_diffusion_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::ndiff_unit_tests_discontinuous</definition>
        <argsstring>(verbose)</argsstring>
        <name>ndiff_unit_tests_discontinuous</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>It true, write results to stdout </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2353" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2354" bodyend="2605"/>
        <references refid="namespacemom__eos_1a230a2f280b1e27ee913e1b3cf4c412b8" compoundref="MOM__EOS_8F90" startline="137" endline="137">mom_eos::eos_linear</references>
        <references refid="namespacemom__neutral__diffusion_1a464e946951f3bbf7e2df500831c7afd4" compoundref="MOM__neutral__diffusion_8F90" startline="1542" endline="1656">find_neutral_pos_linear</references>
        <references refid="namespacemom__neutral__diffusion_1a72eca09bc6cc25f8a3831ad8e2be91d4" compoundref="MOM__neutral__diffusion_8F90" startline="1187" endline="1414">find_neutral_surface_positions_discontinuous</references>
        <references refid="namespacemom__neutral__diffusion_1a3ef7040590d6448a34013763e17edf47" compoundref="MOM__neutral__diffusion_8F90" startline="1419" endline="1433">mark_unstable_cells</references>
        <references refid="namespacemom__neutral__diffusion_1ab5eaa2002c1f6405f5037645bbca3101" compoundref="MOM__neutral__diffusion_8F90" startline="2775" endline="2824">test_nsp</references>
        <references refid="namespacemom__neutral__diffusion_1ab75333897fa8800441d8eddc1720f631" compoundref="MOM__neutral__diffusion_8F90" startline="2847" endline="2859">test_rnp</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a6f91c93a6363fb39395796420f25fad2" compoundref="MOM__neutral__diffusion_8F90" startline="2080" endline="2084">neutral_diffusion_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ac51219df490c739774d70d9958bae047" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_fv_diff</definition>
        <argsstring>(verbose, hkm1, hk, hkp1, Skm1, Sk, Skp1, Ptrue, title)</argsstring>
        <name>test_fv_diff</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>hkm1</type>
          <defname>hkm1</defname>
        </param>
        <param>
          <type>hk</type>
          <defname>hk</defname>
        </param>
        <param>
          <type>hkp1</type>
          <defname>hkp1</defname>
        </param>
        <param>
          <type>Skm1</type>
          <defname>Skm1</defname>
        </param>
        <param>
          <type>Sk</type>
          <defname>Sk</defname>
        </param>
        <param>
          <type>Skp1</type>
          <defname>Skp1</defname>
        </param>
        <param>
          <type>Ptrue</type>
          <defname>Ptrue</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Returns true if a test of <ref refid="namespacemom__neutral__diffusion_1a1c5ac28d7c54581cdd872fe58ef0b204" kindref="member">fv_diff()</ref> fails, and conditionally writes results to stream. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell width [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell width [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell width [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ptrue</parametername>
</parameternamelist>
<parameterdescription>
<para>True answer [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>Title for messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2609" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2610" bodyend="2637"/>
        <references refid="namespacemom__neutral__diffusion_1a1c5ac28d7c54581cdd872fe58ef0b204" compoundref="MOM__neutral__diffusion_8F90" startline="876" endline="894">fv_diff</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ad964ab49cd5901b79dc32f2367d24aed" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_fvlsq_slope</definition>
        <argsstring>(verbose, hkm1, hk, hkp1, Skm1, Sk, Skp1, Ptrue, title)</argsstring>
        <name>test_fvlsq_slope</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>hkm1</type>
          <defname>hkm1</defname>
        </param>
        <param>
          <type>hk</type>
          <defname>hk</defname>
        </param>
        <param>
          <type>hkp1</type>
          <defname>hkp1</defname>
        </param>
        <param>
          <type>Skm1</type>
          <defname>Skm1</defname>
        </param>
        <param>
          <type>Sk</type>
          <defname>Sk</defname>
        </param>
        <param>
          <type>Skp1</type>
          <defname>Skp1</defname>
        </param>
        <param>
          <type>Ptrue</type>
          <defname>Ptrue</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Returns true if a test of <ref refid="namespacemom__neutral__diffusion_1a6ed3814088af470ad6fc4a3a80926fd7" kindref="member">fvlsq_slope()</ref> fails, and conditionally writes results to stream. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hkp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell width </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skm1</parametername>
</parameternamelist>
<parameterdescription>
<para>Left cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sk</parametername>
</parameternamelist>
<parameterdescription>
<para>Center cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skp1</parametername>
</parameternamelist>
<parameterdescription>
<para>Right cell average value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ptrue</parametername>
</parameternamelist>
<parameterdescription>
<para>True answer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>Title for messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2641" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2642" bodyend="2669"/>
        <references refid="namespacemom__neutral__diffusion_1a6ed3814088af470ad6fc4a3a80926fd7" compoundref="MOM__neutral__diffusion_8F90" startline="902" endline="926">fvlsq_slope</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a1a21234946c77d1e4ed852a4173503f1" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_ifndp</definition>
        <argsstring>(verbose, rhoNeg, Pneg, rhoPos, Ppos, Ptrue, title)</argsstring>
        <name>test_ifndp</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>rhoNeg</type>
          <defname>rhoNeg</defname>
        </param>
        <param>
          <type>Pneg</type>
          <defname>Pneg</defname>
        </param>
        <param>
          <type>rhoPos</type>
          <defname>rhoPos</defname>
        </param>
        <param>
          <type>Ppos</type>
          <defname>Ppos</defname>
        </param>
        <param>
          <type>Ptrue</type>
          <defname>Ptrue</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Returns true if a test of <ref refid="namespacemom__neutral__diffusion_1a666836e70bdae7ef4ec271246cf91993" kindref="member">interpolate_for_nondim_position()</ref> fails, and conditionally writes results to stream. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">rhoneg</parametername>
</parameternamelist>
<parameterdescription>
<para>Lighter density [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pneg</parametername>
</parameternamelist>
<parameterdescription>
<para>Interface position of lighter density [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">rhopos</parametername>
</parameternamelist>
<parameterdescription>
<para>Heavier density [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppos</parametername>
</parameternamelist>
<parameterdescription>
<para>Interface position of heavier density [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ptrue</parametername>
</parameternamelist>
<parameterdescription>
<para>True answer [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>Title for messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2673" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2674" bodyend="2701"/>
        <references refid="namespacemom__neutral__diffusion_1a666836e70bdae7ef4ec271246cf91993" compoundref="MOM__neutral__diffusion_8F90" startline="1143" endline="1177">interpolate_for_nondim_position</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a2870eae4b580e548577943e34321b8f0" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_data1d</definition>
        <argsstring>(verbose, nk, Po, Ptrue, title)</argsstring>
        <name>test_data1d</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>Po</type>
          <defname>Po</defname>
        </param>
        <param>
          <type>Ptrue</type>
          <defname>Ptrue</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Returns true if comparison of Po and Ptrue fails, and conditionally writes results to stream. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">po</parametername>
</parameternamelist>
<parameterdescription>
<para>Calculated answer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ptrue</parametername>
</parameternamelist>
<parameterdescription>
<para>True answer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>Title for messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2705" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2706" bodyend="2736"/>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1aaa2d682e80cdba470a09bcff6bda1767" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_data1di</definition>
        <argsstring>(verbose, nk, Po, Ptrue, title)</argsstring>
        <name>test_data1di</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>Po</type>
          <defname>Po</defname>
        </param>
        <param>
          <type>Ptrue</type>
          <defname>Ptrue</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Returns true if comparison of Po and Ptrue fails, and conditionally writes results to stream. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">po</parametername>
</parameternamelist>
<parameterdescription>
<para>Calculated answer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ptrue</parametername>
</parameternamelist>
<parameterdescription>
<para>True answer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>Title for messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2740" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2741" bodyend="2769"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ab5eaa2002c1f6405f5037645bbca3101" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_nsp</definition>
        <argsstring>(verbose, ns, KoL, KoR, pL, pR, hEff, KoL0, KoR0, pL0, pR0, hEff0, title)</argsstring>
        <name>test_nsp</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>ns</type>
          <defname>ns</defname>
        </param>
        <param>
          <type>KoL</type>
          <defname>KoL</defname>
        </param>
        <param>
          <type>KoR</type>
          <defname>KoR</defname>
        </param>
        <param>
          <type>pL</type>
          <defname>pL</defname>
        </param>
        <param>
          <type>pR</type>
          <defname>pR</defname>
        </param>
        <param>
          <type>hEff</type>
          <defname>hEff</defname>
        </param>
        <param>
          <type>KoL0</type>
          <defname>KoL0</defname>
        </param>
        <param>
          <type>KoR0</type>
          <defname>KoR0</defname>
        </param>
        <param>
          <type>pL0</type>
          <defname>pL0</defname>
        </param>
        <param>
          <type>pR0</type>
          <defname>pR0</defname>
        </param>
        <param>
          <type>hEff0</type>
          <defname>hEff0</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Returns true if output of find_neutral_surface_positions() does not match correct values, and conditionally writes results to stream. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write results to stdout </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ns</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of surfaces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kol</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first left interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kor</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first right interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pl</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoL of left column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pr</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoR of right column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">heff</parametername>
</parameternamelist>
<parameterdescription>
<para>Effective thickness between two neutral surfaces [R L2 T-2 ~&gt; Pa] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kol0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for KoL </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kor0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for KoR </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pl0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for pL </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pr0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for pR </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">heff0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for hEff </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>Title for messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2774" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2775" bodyend="2824"/>
        <references refid="namespacemom__neutral__diffusion_1a5725b17791c79900343532931ac04503" compoundref="MOM__neutral__diffusion_8F90" startline="2829" endline="2842">compare_nsp_row</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__neutral__diffusion_1a9aaf0988f76c9992d8f1db48ce23bf34" compoundref="MOM__neutral__diffusion_8F90" startline="2089" endline="2350">ndiff_unit_tests_continuous</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" compoundref="MOM__neutral__diffusion_8F90" startline="2354" endline="2605">ndiff_unit_tests_discontinuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1a5725b17791c79900343532931ac04503" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::compare_nsp_row</definition>
        <argsstring>(KoL, KoR, pL, pR, KoL0, KoR0, pL0, pR0)</argsstring>
        <name>compare_nsp_row</name>
        <param>
          <type>KoL</type>
          <defname>KoL</defname>
        </param>
        <param>
          <type>KoR</type>
          <defname>KoR</defname>
        </param>
        <param>
          <type>pL</type>
          <defname>pL</defname>
        </param>
        <param>
          <type>pR</type>
          <defname>pR</defname>
        </param>
        <param>
          <type>KoL0</type>
          <defname>KoL0</defname>
        </param>
        <param>
          <type>KoR0</type>
          <defname>KoR0</defname>
        </param>
        <param>
          <type>pL0</type>
          <defname>pL0</defname>
        </param>
        <param>
          <type>pR0</type>
          <defname>pR0</defname>
        </param>
        <briefdescription>
<para>Compares a single row, k, of output from find_neutral_surface_positions() </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">kol</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first left interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kor</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of first right interface above neutral surface </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pl</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoL of left column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pr</parametername>
</parameternamelist>
<parameterdescription>
<para>Fractional position of neutral surface within layer KoR of right column </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kol0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for KoL </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kor0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for KoR </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pl0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for pL </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">pr0</parametername>
</parameternamelist>
<parameterdescription>
<para>Correct value for pR </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2828" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2829" bodyend="2842"/>
        <referencedby refid="namespacemom__neutral__diffusion_1ab5eaa2002c1f6405f5037645bbca3101" compoundref="MOM__neutral__diffusion_8F90" startline="2775" endline="2824">test_nsp</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ab75333897fa8800441d8eddc1720f631" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_neutral_diffusion::test_rnp</definition>
        <argsstring>(expected_pos, test_pos, title)</argsstring>
        <name>test_rnp</name>
        <param>
          <type>expected_pos</type>
          <defname>expected_pos</defname>
        </param>
        <param>
          <type>test_pos</type>
          <defname>test_pos</defname>
        </param>
        <param>
          <type>title</type>
          <defname>title</defname>
        </param>
        <briefdescription>
<para>Compares output position from refine_nondim_position with an expected value. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">expected_pos</parametername>
</parameternamelist>
<parameterdescription>
<para>The expected position </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">test_pos</parametername>
</parameternamelist>
<parameterdescription>
<para>The position returned by the code </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">title</parametername>
</parameternamelist>
<parameterdescription>
<para>A label for this test </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2846" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2847" bodyend="2859"/>
        <referencedby refid="namespacemom__neutral__diffusion_1aa44f980bb24df5dc71913b32892b2f71" compoundref="MOM__neutral__diffusion_8F90" startline="2354" endline="2605">ndiff_unit_tests_discontinuous</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__neutral__diffusion_1ae8a313d25818dfa8c3bc056210fac76b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_neutral_diffusion::neutral_diffusion_end</definition>
        <argsstring>(CS)</argsstring>
        <name>neutral_diffusion_end</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Deallocates neutral_diffusion control structure. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Neutral diffusion control structure </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2862" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" bodystart="2863" bodyend="2866"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>A column-wise toolbox for implementing neutral diffusion. </para>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_neutral_diffusion.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
