<?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__lateral__boundary__diffusion" kind="namespace" language="Fortran">
    <compoundname>mom_lateral_boundary_diffusion</compoundname>
    <innerclass refid="structmom__lateral__boundary__diffusion_1_1lateral__boundary__diffusion__cs" prot="public">mom_lateral_boundary_diffusion::lateral_boundary_diffusion_cs</innerclass>
      <sectiondef kind="var">
      <memberdef kind="variable" id="namespacemom__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" prot="public" static="no" mutable="no">
        <type>integer, parameter, public</type>
        <definition>integer, parameter, public mom_lateral_boundary_diffusion::surface</definition>
        <argsstring></argsstring>
        <name>surface</name>
        <initializer>= -1</initializer>
        <briefdescription>
<para>Set a value that corresponds to the surface bopundary. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="34" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="34" bodyend="34"/>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="375" endline="435">boundary_k_range</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a764405ce85234799f6b81be25a8df1b7" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="312" endline="358">bulk_average</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="444" endline="590">fluxes_layer_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1afac71bffe2368a84b543f4d7f60703e0" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="138" endline="306">lateral_boundary_diffusion</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" compoundref="MOM__neutral__diffusion_8F90" startline="284" endline="525">mom_neutral_diffusion::neutral_diffusion_calc_coeffs</referencedby>
      </memberdef>
      <memberdef kind="variable" id="namespacemom__lateral__boundary__diffusion_1a2d5308bf15dc0816cdbef33287152b4a" prot="public" static="no" mutable="no">
        <type>integer, parameter, public</type>
        <definition>integer, parameter, public mom_lateral_boundary_diffusion::bottom</definition>
        <argsstring></argsstring>
        <name>bottom</name>
        <initializer>= 1</initializer>
        <briefdescription>
<para>Set a value that corresponds to the bottom boundary. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="35" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="35" bodyend="35"/>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="375" endline="435">boundary_k_range</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a764405ce85234799f6b81be25a8df1b7" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="312" endline="358">bulk_average</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="444" endline="590">fluxes_layer_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="variable" id="namespacemom__lateral__boundary__diffusion_1a61c6b3e00d03dafc0c7625788a787b10" 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_lateral_boundary_diffusion::mdl</definition>
        <argsstring></argsstring>
        <name>mdl</name>
        <initializer>= &quot;MOM_lateral_boundary_diffusion&quot;</initializer>
        <briefdescription>
<para>Name of this module. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="61" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="61" bodyend="61"/>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a4eb098abd02dbf022558e4bedfe9cdef" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="68" endline="129">lateral_boundary_diffusion_init</referencedby>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1a4eb098abd02dbf022558e4bedfe9cdef" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function, public</type>
        <definition>logical function, public mom_lateral_boundary_diffusion::lateral_boundary_diffusion_init</definition>
        <argsstring>(Time, G, param_file, diag, diabatic_CSp, CS)</argsstring>
        <name>lateral_boundary_diffusion_init</name>
        <param>
          <type>Time</type>
          <defname>Time</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>diabatic_CSp</type>
          <defname>diabatic_CSp</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Initialization routine that reads runtime parameters and sets up pointers to other control structures that might be needed for lateral boundary diffusion. </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">param_file</parametername>
</parameternamelist>
<parameterdescription>
<para>Parameter file structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>Diagnostics control structure </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>Lateral boundary mixing control structure </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="67" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="68" bodyend="129"/>
        <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__lateral__boundary__diffusion_1a61c6b3e00d03dafc0c7625788a787b10" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="61" endline="61">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__lateral__boundary__diffusion_1afac71bffe2368a84b543f4d7f60703e0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_lateral_boundary_diffusion::lateral_boundary_diffusion</definition>
        <argsstring>(G, GV, US, h, Coef_x, Coef_y, dt, Reg, CS)</argsstring>
        <name>lateral_boundary_diffusion</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>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>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Driver routine for calculating lateral diffusive fluxes near the top and bottom boundaries. Two different methods are available: Method 1: lower order representation, calculate fluxes from bulk layer integrated quantities. Method 2: more straight forward, diffusion is applied layer by layer using only information from neighboring cells. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid type </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">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 (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">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure for this module </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="137" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="138" bodyend="306"/>
        <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="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="444" endline="590">fluxes_layer_method</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__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">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__lateral__boundary__diffusion_1a764405ce85234799f6b81be25a8df1b7" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_lateral_boundary_diffusion::bulk_average</definition>
        <argsstring>(boundary, nk, deg, h, hBLT, phi, ppoly0_E, ppoly0_coefs, method, k_top, zeta_top, k_bot, zeta_bot)</argsstring>
        <name>bulk_average</name>
        <param>
          <type>boundary</type>
          <defname>boundary</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>deg</type>
          <defname>deg</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>hBLT</type>
          <defname>hBLT</defname>
        </param>
        <param>
          <type>phi</type>
          <defname>phi</defname>
        </param>
        <param>
          <type>ppoly0_E</type>
          <defname>ppoly0_E</defname>
        </param>
        <param>
          <type>ppoly0_coefs</type>
          <defname>ppoly0_coefs</defname>
        </param>
        <param>
          <type>method</type>
          <defname>method</defname>
        </param>
        <param>
          <type>k_top</type>
          <defname>k_top</defname>
        </param>
        <param>
          <type>zeta_top</type>
          <defname>zeta_top</defname>
        </param>
        <param>
          <type>k_bot</type>
          <defname>k_bot</defname>
        </param>
        <param>
          <type>zeta_bot</type>
          <defname>zeta_bot</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>boundary</parametername>
</parameternamelist>
<parameterdescription>
<para>SURFACE or BOTTOM [nondim]</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers [nondim]</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>deg</parametername>
</parameternamelist>
<parameterdescription>
<para>Degree of polynomial [nondim]</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thicknesses [H ~&gt; m or kg m-2]</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>hblt</parametername>
</parameternamelist>
<parameterdescription>
<para>Depth of the boundary layer [H ~&gt; m or kg m-2]</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>phi</parametername>
</parameternamelist>
<parameterdescription>
<para>Scalar quantity</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>ppoly0_e</parametername>
</parameternamelist>
<parameterdescription>
<para>Edge value of polynomial</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>ppoly0_coefs</parametername>
</parameternamelist>
<parameterdescription>
<para>Coefficients of polynomial</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>method</parametername>
</parameternamelist>
<parameterdescription>
<para>Remapping scheme to use</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>k_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of the first layer within the boundary</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>zeta_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Fraction of the layer encompassed by the bottom boundary layer (0 if none, 1. if all). For the surface, this is always 0. because integration starts at the surface [nondim]</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>k_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of the last layer within the boundary</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>zeta_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Fraction of the layer encompassed by the surface boundary layer (0 if none, 1. if all). For the bottom boundary layer, this is always 1. because integration starts at the bottom [nondim] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="310" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="312" bodyend="358"/>
        <references refid="namespacemom__remapping_1a89dde73fbc6eec035c8dabc225a9c210" compoundref="MOM__remapping_8F90" startline="930" endline="1026">mom_remapping::average_value_ppoly</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a2d5308bf15dc0816cdbef33287152b4a" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="35" endline="35">bottom</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__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">surface</references>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1a6c98f54ad462ab45918fdccc0b403948" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_lateral_boundary_diffusion::harmonic_mean</definition>
        <argsstring>(h1, h2)</argsstring>
        <name>harmonic_mean</name>
        <param>
          <type>h1</type>
          <defname>h1</defname>
        </param>
        <param>
          <type>h2</type>
          <defname>h2</defname>
        </param>
        <briefdescription>
<para>Calculate the harmonic mean of two quantities See <ref refid="namespacemom__lateral__boundary__diffusion_1section_harmonic_mean" kindref="member">Harmonic Mean</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>h1</parametername>
</parameternamelist>
<parameterdescription>
<para>Scalar quantity </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>h2</parametername>
</parameternamelist>
<parameterdescription>
<para>Scalar quantity </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="363" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="364" bodyend="370"/>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="444" endline="590">fluxes_layer_method</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_lateral_boundary_diffusion::boundary_k_range</definition>
        <argsstring>(boundary, nk, h, hbl, k_top, zeta_top, k_bot, zeta_bot)</argsstring>
        <name>boundary_k_range</name>
        <param>
          <type>boundary</type>
          <defname>boundary</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>hbl</type>
          <defname>hbl</defname>
        </param>
        <param>
          <type>k_top</type>
          <defname>k_top</defname>
        </param>
        <param>
          <type>zeta_top</type>
          <defname>zeta_top</defname>
        </param>
        <param>
          <type>k_bot</type>
          <defname>k_bot</defname>
        </param>
        <param>
          <type>zeta_bot</type>
          <defname>zeta_bot</defname>
        </param>
        <briefdescription>
<para>Find the k-index range corresponding to the layers that are within the boundary-layer region. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">boundary</parametername>
</parameternamelist>
<parameterdescription>
<para>SURFACE or BOTTOM [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thicknesses of the column [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hbl</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of the boundary layer [H ~&gt; m or kg m-2] If surface, with respect to zbl_ref = 0. If bottom, with respect to zbl_ref = SUM(h) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">k_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of the first layer within the boundary </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">zeta_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Distance from the top of a layer to the intersection of the top extent of the boundary layer (0 at top, 1 at bottom) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">k_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of the last layer within the boundary </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">zeta_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Distance of the lower layer to the boundary layer depth (0 at top, 1 at bottom) [nondim] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="374" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="375" bodyend="435"/>
        <references refid="namespacemom__lateral__boundary__diffusion_1a2d5308bf15dc0816cdbef33287152b4a" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="35" endline="35">bottom</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__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">surface</references>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="444" endline="590">fluxes_layer_method</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
        <referencedby refid="namespacemom__neutral__diffusion_1abc3fd398047ffb61825ceced9ae5ff41" compoundref="MOM__neutral__diffusion_8F90" startline="284" endline="525">mom_neutral_diffusion::neutral_diffusion_calc_coeffs</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_lateral_boundary_diffusion::fluxes_layer_method</definition>
        <argsstring>(boundary, nk, deg, h_L, h_R, hbl_L, hbl_R, area_L, area_R, phi_L, phi_R, ppoly0_coefs_L, ppoly0_coefs_R, ppoly0_E_L, ppoly0_E_R, method, khtr_u, F_layer, linear_decay)</argsstring>
        <name>fluxes_layer_method</name>
        <param>
          <type>boundary</type>
          <defname>boundary</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>deg</type>
          <defname>deg</defname>
        </param>
        <param>
          <type>h_L</type>
          <defname>h_L</defname>
        </param>
        <param>
          <type>h_R</type>
          <defname>h_R</defname>
        </param>
        <param>
          <type>hbl_L</type>
          <defname>hbl_L</defname>
        </param>
        <param>
          <type>hbl_R</type>
          <defname>hbl_R</defname>
        </param>
        <param>
          <type>area_L</type>
          <defname>area_L</defname>
        </param>
        <param>
          <type>area_R</type>
          <defname>area_R</defname>
        </param>
        <param>
          <type>phi_L</type>
          <defname>phi_L</defname>
        </param>
        <param>
          <type>phi_R</type>
          <defname>phi_R</defname>
        </param>
        <param>
          <type>ppoly0_coefs_L</type>
          <defname>ppoly0_coefs_L</defname>
        </param>
        <param>
          <type>ppoly0_coefs_R</type>
          <defname>ppoly0_coefs_R</defname>
        </param>
        <param>
          <type>ppoly0_E_L</type>
          <defname>ppoly0_E_L</defname>
        </param>
        <param>
          <type>ppoly0_E_R</type>
          <defname>ppoly0_E_R</defname>
        </param>
        <param>
          <type>method</type>
          <defname>method</defname>
        </param>
        <param>
          <type>khtr_u</type>
          <defname>khtr_u</defname>
        </param>
        <param>
          <type>F_layer</type>
          <defname>F_layer</defname>
        </param>
        <param>
          <type>linear_decay</type>
          <defname>linear_decay</defname>
        </param>
        <briefdescription>
<para>Calculate the lateral boundary diffusive fluxes using the layer by layer method. See <ref refid="namespacemom__lateral__boundary__diffusion_1section_method1" kindref="member">Along layer approach (Method #1)</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">boundary</parametername>
</parameternamelist>
<parameterdescription>
<para>Which boundary layer SURFACE or BOTTOM [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">deg</parametername>
</parameternamelist>
<parameterdescription>
<para>order of the polynomial reconstruction [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness (left) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness (right) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hbl_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of the boundary boundary layer (left) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hbl_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of the boundary boundary layer (right) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">area_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Area of the horizontal grid (left) [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">area_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Area of the horizontal grid (right) [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">phi_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer values (left) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">phi_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer values (right) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_coefs_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer reconstruction (left) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_coefs_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer reconstruction (right) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_e_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Polynomial edge values (left) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_e_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Polynomial edge values (right) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">method</parametername>
</parameternamelist>
<parameterdescription>
<para>Method of polynomial integration [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">khtr_u</parametername>
</parameternamelist>
<parameterdescription>
<para>Horizontal diffusivities times delta t at a velocity point [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">f_layer</parametername>
</parameternamelist>
<parameterdescription>
<para>Layerwise diffusive flux at U- or V-point [H L2 conc ~&gt; m3 conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">linear_decay</parametername>
</parameternamelist>
<parameterdescription>
<para>If True, apply a linear transition at the base of the boundary layer </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="441" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="444" bodyend="590"/>
        <references refid="namespacemom__remapping_1a89dde73fbc6eec035c8dabc225a9c210" compoundref="MOM__remapping_8F90" startline="930" endline="1026">mom_remapping::average_value_ppoly</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a2d5308bf15dc0816cdbef33287152b4a" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="35" endline="35">bottom</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="375" endline="435">boundary_k_range</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a6c98f54ad462ab45918fdccc0b403948" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="364" endline="370">harmonic_mean</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">surface</references>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1afac71bffe2368a84b543f4d7f60703e0" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="138" endline="306">lateral_boundary_diffusion</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_lateral_boundary_diffusion::fluxes_bulk_method</definition>
        <argsstring>(boundary, nk, deg, h_L, h_R, hbl_L, hbl_R, area_L, area_R, phi_L, phi_R, ppoly0_coefs_L, ppoly0_coefs_R, ppoly0_E_L, ppoly0_E_R, method, khtr_u, F_bulk, F_layer, F_limit, linear_decay)</argsstring>
        <name>fluxes_bulk_method</name>
        <param>
          <type>boundary</type>
          <defname>boundary</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>deg</type>
          <defname>deg</defname>
        </param>
        <param>
          <type>h_L</type>
          <defname>h_L</defname>
        </param>
        <param>
          <type>h_R</type>
          <defname>h_R</defname>
        </param>
        <param>
          <type>hbl_L</type>
          <defname>hbl_L</defname>
        </param>
        <param>
          <type>hbl_R</type>
          <defname>hbl_R</defname>
        </param>
        <param>
          <type>area_L</type>
          <defname>area_L</defname>
        </param>
        <param>
          <type>area_R</type>
          <defname>area_R</defname>
        </param>
        <param>
          <type>phi_L</type>
          <defname>phi_L</defname>
        </param>
        <param>
          <type>phi_R</type>
          <defname>phi_R</defname>
        </param>
        <param>
          <type>ppoly0_coefs_L</type>
          <defname>ppoly0_coefs_L</defname>
        </param>
        <param>
          <type>ppoly0_coefs_R</type>
          <defname>ppoly0_coefs_R</defname>
        </param>
        <param>
          <type>ppoly0_E_L</type>
          <defname>ppoly0_E_L</defname>
        </param>
        <param>
          <type>ppoly0_E_R</type>
          <defname>ppoly0_E_R</defname>
        </param>
        <param>
          <type>method</type>
          <defname>method</defname>
        </param>
        <param>
          <type>khtr_u</type>
          <defname>khtr_u</defname>
        </param>
        <param>
          <type>F_bulk</type>
          <defname>F_bulk</defname>
        </param>
        <param>
          <type>F_layer</type>
          <defname>F_layer</defname>
        </param>
        <param>
          <type>F_limit</type>
          <defname>F_limit</defname>
        </param>
        <param>
          <type>linear_decay</type>
          <defname>linear_decay</defname>
        </param>
        <briefdescription>
<para>Apply the lateral boundary diffusive fluxes calculated from a &apos;bulk model&apos; See <ref refid="namespacemom__lateral__boundary__diffusion_1section_method2" kindref="member">Bulk layer approach (Method #2)</ref>. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">boundary</parametername>
</parameternamelist>
<parameterdescription>
<para>Which boundary layer SURFACE or BOTTOM [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">deg</parametername>
</parameternamelist>
<parameterdescription>
<para>order of the polynomial reconstruction [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness (left) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness (right) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hbl_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of the boundary boundary layer (left) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hbl_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Thickness of the boundary boundary layer (left) [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">area_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Area of the horizontal grid (left) [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">area_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Area of the horizontal grid (right) [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">phi_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer values (left) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">phi_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer values (right) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_coefs_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer reconstruction (left) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_coefs_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Tracer reconstruction (right) [conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_e_l</parametername>
</parameternamelist>
<parameterdescription>
<para>Polynomial edge values (left) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ppoly0_e_r</parametername>
</parameternamelist>
<parameterdescription>
<para>Polynomial edge values (right) [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">method</parametername>
</parameternamelist>
<parameterdescription>
<para>Method of polynomial integration [nondim] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">khtr_u</parametername>
</parameternamelist>
<parameterdescription>
<para>Horizontal diffusivities times delta t at a velocity point [L2 ~&gt; m2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">f_bulk</parametername>
</parameternamelist>
<parameterdescription>
<para>The bulk mixed layer lateral flux [H L2 conc ~&gt; m3 conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">f_layer</parametername>
</parameternamelist>
<parameterdescription>
<para>Layerwise diffusive flux at U- or V-point [H L2 conc ~&gt; m3 conc] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f_limit</parametername>
</parameternamelist>
<parameterdescription>
<para>If True, apply a limiter </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">linear_decay</parametername>
</parameternamelist>
<parameterdescription>
<para>If True, apply a linear transition at the base of the boundary layer </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="595" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="598" bodyend="802"/>
        <references refid="namespacemom__lateral__boundary__diffusion_1a2d5308bf15dc0816cdbef33287152b4a" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="35" endline="35">bottom</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="375" endline="435">boundary_k_range</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a764405ce85234799f6b81be25a8df1b7" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="312" endline="358">bulk_average</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a6c98f54ad462ab45918fdccc0b403948" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="364" endline="370">harmonic_mean</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">surface</references>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1afac71bffe2368a84b543f4d7f60703e0" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="138" endline="306">lateral_boundary_diffusion</referencedby>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function, public</type>
        <definition>logical function, public mom_lateral_boundary_diffusion::near_boundary_unit_tests</definition>
        <argsstring>(verbose)</argsstring>
        <name>near_boundary_unit_tests</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <briefdescription>
<para>Unit tests for near-boundary horizontal mixing. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, output additional information for debugging unit tests </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="806" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="807" bodyend="1101"/>
        <references refid="namespacemom__lateral__boundary__diffusion_1a2d5308bf15dc0816cdbef33287152b4a" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="35" endline="35">bottom</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a9cd84e0a8f4ddaba3c8ece5f149c7a9f" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="375" endline="435">boundary_k_range</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a4c19afd5acc655501aebc2ec1a4fe396" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="598" endline="802">fluxes_bulk_method</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ae8390123e94524264b952483ef9d79f8" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="444" endline="590">fluxes_layer_method</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ace1430e08cc68a474c478e53f955c715" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="34" endline="34">surface</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1ac7d1d46aeb36ab434b1a6533b47246ce" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="1133" endline="1162">test_boundary_k_range</references>
        <references refid="namespacemom__lateral__boundary__diffusion_1a9c689c24bc59f46aa960b33119fe7e59" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="1107" endline="1127">test_layer_fluxes</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__lateral__boundary__diffusion_1a9c689c24bc59f46aa960b33119fe7e59" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_lateral_boundary_diffusion::test_layer_fluxes</definition>
        <argsstring>(verbose, nk, test_name, F_calc, F_ans)</argsstring>
        <name>test_layer_fluxes</name>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <param>
          <type>test_name</type>
          <defname>test_name</defname>
        </param>
        <param>
          <type>F_calc</type>
          <defname>F_calc</defname>
        </param>
        <param>
          <type>F_ans</type>
          <defname>F_ans</defname>
        </param>
        <briefdescription>
<para>Returns true if output of near-boundary unit tests does not match correct computed 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">test_name</parametername>
</parameternamelist>
<parameterdescription>
<para>Brief description of the unit test </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of layers </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f_calc</parametername>
</parameternamelist>
<parameterdescription>
<para>Fluxes of the unitless tracer from the algorithm [s^-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f_ans</parametername>
</parameternamelist>
<parameterdescription>
<para>Fluxes of the unitless tracer calculated by hand [s^-1] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="1106" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="1107" bodyend="1127"/>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__lateral__boundary__diffusion_1ac7d1d46aeb36ab434b1a6533b47246ce" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function mom_lateral_boundary_diffusion::test_boundary_k_range</definition>
        <argsstring>(k_top, zeta_top, k_bot, zeta_bot, k_top_ans, zeta_top_ans, k_bot_ans, zeta_bot_ans, test_name, verbose)</argsstring>
        <name>test_boundary_k_range</name>
        <param>
          <type>k_top</type>
          <defname>k_top</defname>
        </param>
        <param>
          <type>zeta_top</type>
          <defname>zeta_top</defname>
        </param>
        <param>
          <type>k_bot</type>
          <defname>k_bot</defname>
        </param>
        <param>
          <type>zeta_bot</type>
          <defname>zeta_bot</defname>
        </param>
        <param>
          <type>k_top_ans</type>
          <defname>k_top_ans</defname>
        </param>
        <param>
          <type>zeta_top_ans</type>
          <defname>zeta_top_ans</defname>
        </param>
        <param>
          <type>k_bot_ans</type>
          <defname>k_bot_ans</defname>
        </param>
        <param>
          <type>zeta_bot_ans</type>
          <defname>zeta_bot_ans</defname>
        </param>
        <param>
          <type>test_name</type>
          <defname>test_name</defname>
        </param>
        <param>
          <type>verbose</type>
          <defname>verbose</defname>
        </param>
        <briefdescription>
<para>Return true if output of unit tests for boundary_k_range does not match answers. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>k_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of cell containing top of boundary </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>zeta_top</parametername>
</parameternamelist>
<parameterdescription>
<para>Nondimension position </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>k_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of cell containing bottom of boundary </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>zeta_bot</parametername>
</parameternamelist>
<parameterdescription>
<para>Nondimension position </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>k_top_ans</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of cell containing top of boundary </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>zeta_top_ans</parametername>
</parameternamelist>
<parameterdescription>
<para>Nondimension position </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>k_bot_ans</parametername>
</parameternamelist>
<parameterdescription>
<para>Index of cell containing bottom of boundary </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>zeta_bot_ans</parametername>
</parameternamelist>
<parameterdescription>
<para>Nondimension position </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>test_name</parametername>
</parameternamelist>
<parameterdescription>
<para>Name of the unit test </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>verbose</parametername>
</parameternamelist>
<parameterdescription>
<para>If true always print output </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="1131" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" bodystart="1133" bodyend="1162"/>
        <referencedby refid="namespacemom__lateral__boundary__diffusion_1a5590830aab282e34bcd5d4df052d4578" compoundref="MOM__lateral__boundary__diffusion_8F90" startline="807" endline="1101">near_boundary_unit_tests</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Calculates and applies diffusive fluxes as a parameterization of lateral mixing (non-neutral) by mesoscale eddies near the top and bottom (to be implemented) boundary layers of the ocean. </para>
    </briefdescription>
    <detaileddescription>
<sect1 id="namespacemom__lateral__boundary__diffusion_1section_LBD">
<title>The Lateral Boundary Diffusion (LBD) framework</title>
<para>The LBD framework accounts for the effects of diabatic mesoscale fluxes within surface and bottom boundary layers. Unlike the equivalent adiabatic fluxes, which is applied along neutral density surfaces, LBD is purely horizontal.</para>
<para>The bottom boundary layer fluxes remain to be implemented, although most of the steps needed to do so have already been added and tested.</para>
<para>Boundary lateral diffusion can be applied using one of the three methods:</para>
<para><itemizedlist>
<listitem><para><ref refid="namespacemom__lateral__boundary__diffusion_1section_method2" kindref="member">Method #1: Along layer</ref> (default);</para>
</listitem><listitem><para><ref refid="namespacemom__lateral__boundary__diffusion_1section_method1" kindref="member">Method #2: Bulk layer</ref>;</para>
</listitem></itemizedlist>
</para>
<para>A brief summary of these methods is provided below.</para>
<sect2 id="namespacemom__lateral__boundary__diffusion_1section_method1">
<title>Along layer approach (Method #1)</title>
<para>This is the recommended and more straight forward method where diffusion is applied layer by layer using only information from neighboring cells.</para>
<para>Step #1: compute vertical indices containing boundary layer (boundary_k_range). For the TOP boundary layer, these are:</para>
<para>k_top, k_bot, zeta_top, zeta_bot</para>
<para>Step #2: calculate the diffusive flux at each layer:</para>
<para><formula id="515">\[ F_{k} = -KHTR \times h_{eff}(k) \times (\phi_R(k) - \phi_L(k)), \]</formula> where h_eff is the <ref refid="namespacemom__lateral__boundary__diffusion_1section_harmonic_mean" kindref="member">harmonic mean</ref> of the layer thickness in the left and right columns. This method does not require a limiter since KHTR is already limted based on a diffusive CFL condition prior to the call of this module.</para>
<para>Step #3: option to linearly decay the flux from k_bot_min to k_bot_max:</para>
<para>If LBD_LINEAR_TRANSITION = True and k_bot_diff &gt; 1, the diffusive flux will decay linearly between the top interface of the layer containing the minimum boundary layer depth (k_bot_min) and the lower interface of the layer containing the maximum layer depth (k_bot_max).</para>
</sect2>
<sect2 id="namespacemom__lateral__boundary__diffusion_1section_method2">
<title>Bulk layer approach (Method #2)</title>
<para>Apply the lateral boundary diffusive fluxes calculated from a &apos;bulk model&apos;.This is a lower order representation (Kraus-Turner like approach) which assumes that eddies are acting along well mixed layers (i.e., eddies do not know care about vertical tracer gradients within the boundary layer).</para>
<para>Step #1: compute vertical indices containing boundary layer (boundary_k_range). For the TOP boundary layer, these are:</para>
<para>k_top, k_bot, zeta_top, zeta_bot</para>
<para>Step #2: compute bulk averages (thickness weighted) tracer averages (phi_L and phi_R), then calculate the bulk diffusive flux (F_{bulk}):</para>
<para><formula id="516">\[ F_{bulk} = -KHTR \times h_{eff} \times (\phi_R - \phi_L), \]</formula> where h_eff is the <ref refid="namespacemom__lateral__boundary__diffusion_1section_harmonic_mean" kindref="member">harmonic mean</ref> of the boundary layer depth in the left and right columns ( <formula id="517">\[ HBL_L \]</formula> and <formula id="518">\[ HBL_R \]</formula>, respectively).</para>
<para>Step #3: decompose F_bulk onto individual layers:</para>
<para><formula id="519">\[ F_{layer}(k) = F_{bulk} \times h_{frac}(k) , \]</formula></para>
<para>where h_{frac} is</para>
<para><formula id="520">\[ h_{frac}(k) = h_u(k) \times \frac{1}{\sum(h_u)}. \]</formula></para>
<para>h_u is the <ref refid="namespacemom__lateral__boundary__diffusion_1section_harmonic_mean" kindref="member">harmonic mean</ref> of thicknesses at each layer. Special care (layer reconstruction) must be taken at k_min = min(k_botL, k_bot_R).</para>
<para>Step #4: option to linearly decay the flux from k_bot_min to k_bot_max:</para>
<para>If LBD_LINEAR_TRANSITION = True and k_bot_diff &gt; 1, the diffusive flux will decay linearly between the top interface of the layer containing the minimum boundary layer depth (k_bot_min) and the lower interface of the layer containing the maximum layer depth (k_bot_max).</para>
<para>Step #5: limit the tracer flux so that 1) only down-gradient fluxes are applied, and 2) the flux cannot be larger than F_max, which is defined using the tracer gradient:</para>
<para><formula id="521">\[ F_{max} = -0.2 \times [(V_R(k) \times \phi_R(k)) - (V_L(k) \times \phi_L(k))], \]</formula> where V is the cell volume. Why 0.2? t=0 t=inf 0 .2 0 1 0 .2.2.2 0 .2</para>
</sect2>
<sect2 id="namespacemom__lateral__boundary__diffusion_1section_harmonic_mean">
<title>Harmonic Mean</title>
<para>The harmonic mean (HM) betwen h1 and h2 is defined as:</para>
<para><formula id="522">\[ HM = \frac{2 \times h1 \times h2}{h1 + h2} \]</formula> </para>
</sect2>
</sect1>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_lateral_boundary_diffusion.F90" line="4" column="1"/>
  </compounddef>
</doxygen>
