<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16">
  <compounddef id="namespacemom__entrain__diffusive" kind="namespace" language="Fortran">
    <compoundname>mom_entrain_diffusive</compoundname>
    <innerclass refid="structmom__entrain__diffusive_1_1entrain__diffusive__cs" prot="public">mom_entrain_diffusive::entrain_diffusive_cs</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_entrain_diffusive::entrainment_diffusive</definition>
        <argsstring>(h, tv, fluxes, dt, G, GV, US, CS, ea, eb, kb_out, Kd_Lay, Kd_int)</argsstring>
        <name>entrainment_diffusive</name>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>dt</type>
          <defname>dt</defname>
        </param>
        <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>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>ea</type>
          <defname>ea</defname>
        </param>
        <param>
          <type>eb</type>
          <defname>eb</defname>
        </param>
        <param>
          <type>kb_out</type>
          <defname>kb_out</defname>
        </param>
        <param>
          <type>Kd_Lay</type>
          <defname>Kd_Lay</defname>
        </param>
        <param>
          <type>Kd_int</type>
          <defname>Kd_int</defname>
        </param>
        <briefdescription>
<para>This subroutine calculates ea and eb, the rates at which a layer entrains from the layers above and below. The entrainment rates are proportional to the buoyancy flux in a layer and inversely proportional to the density differences between layers. The scheme that is used here is described in detail in Hallberg, Mon. Wea. Rev. 2000. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s 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 thicknesses [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure of surface fluxes that may be used. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dt</parametername>
</parameternamelist>
<parameterdescription>
<para>The time increment [T ~&gt; s]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>The control structure returned by a previous call to entrain_diffusive_init. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">ea</parametername>
</parameternamelist>
<parameterdescription>
<para>The amount of fluid entrained from the layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">eb</parametername>
</parameternamelist>
<parameterdescription>
<para>The amount of fluid entrained from the layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kb_out</parametername>
</parameternamelist>
<parameterdescription>
<para>The index of the lightest layer denser than </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kd_lay</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity of layers </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kd_int</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity of interfaces </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="50" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="52" bodyend="888"/>
        <references refid="namespacemom__entrain__diffusive_1aa2d2f462912ba1e201b1b73e62a905f3" compoundref="MOM__entrain__diffusive_8F90" startline="1201" endline="1432">determine_dskb</references>
        <references refid="namespacemom__entrain__diffusive_1a541b3aadc418110f7359b0ae401e4e78" compoundref="MOM__entrain__diffusive_8F90" startline="1574" endline="1779">determine_ea_kb</references>
        <references refid="namespacemom__eos_1a782d326108e390902e520efc078e8296" compoundref="MOM__EOS_8F90" startline="1163" endline="1175">mom_eos::eos_domain</references>
        <references refid="namespacemom__entrain__diffusive_1adce1b1ba57f5245f1eda57e7a254d4df" compoundref="MOM__entrain__diffusive_8F90" startline="1441" endline="1564">f_kb_to_ea_kb</references>
        <references refid="namespacemom__entrain__diffusive_1a13bbe9f35e3198470100375d9d016b7a" compoundref="MOM__entrain__diffusive_8F90" startline="895" endline="1017">f_to_ent</references>
        <references refid="namespacemom__entrain__diffusive_1ae45dbf976314c3a9e278ebcebedab109" compoundref="MOM__entrain__diffusive_8F90" startline="1786" endline="2075">find_maxf_kb</references>
        <references refid="namespacemom__error__handler_1ad5f00a53059c72fe2332d1436c80ca71" compoundref="MOM__error__handler_8F90" startline="44" endline="48">mom_error_handler::is_root_pe</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__entrain__diffusive_1a363a25e7823043bb028e920e359733b0" compoundref="MOM__entrain__diffusive_8F90" startline="1025" endline="1184">set_ent_bl</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1a13bbe9f35e3198470100375d9d016b7a" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_entrain_diffusive::f_to_ent</definition>
        <argsstring>(F, h, kb, kmb, j, G, GV, CS, dsp1_ds, eakb, Ent_bl, ea, eb, do_i_in)</argsstring>
        <name>f_to_ent</name>
        <param>
          <type>F</type>
          <defname>F</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>kb</type>
          <defname>kb</defname>
        </param>
        <param>
          <type>kmb</type>
          <defname>kmb</defname>
        </param>
        <param>
          <type>j</type>
          <defname>j</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>dsp1_ds</type>
          <defname>dsp1_ds</defname>
        </param>
        <param>
          <type>eakb</type>
          <defname>eakb</defname>
        </param>
        <param>
          <type>Ent_bl</type>
          <defname>Ent_bl</defname>
        </param>
        <param>
          <type>ea</type>
          <defname>ea</defname>
        </param>
        <param>
          <type>eb</type>
          <defname>eb</defname>
        </param>
        <param>
          <type>do_i_in</type>
          <defname>do_i_in</defname>
        </param>
        <briefdescription>
<para>This subroutine calculates the actual entrainments (ea and eb) and the amount of surface forcing that is applied to each layer if there is no bulk mixed layer. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f</parametername>
</parameternamelist>
<parameterdescription>
<para>The density flux through a layer within a time step divided by the density difference across the interface below the layer [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thicknesses [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The index of the lightest layer denser than the deepest buffer layer. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kmb</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of mixed and buffer layers. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>The meridional index upon which to work. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>This module&apos;s control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dsp1_ds</parametername>
</parameternamelist>
<parameterdescription>
<para>The ratio of coordinate variable differences across the interfaces below a layer over the difference across the interface above the layer. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">eakb</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment from above by the layer below the buffer layer [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ent_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The average entrainment upward and downward across each interface around the buffer layers [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ea</parametername>
</parameternamelist>
<parameterdescription>
<para>The amount of fluid entrained from the layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">eb</parametername>
</parameternamelist>
<parameterdescription>
<para>The amount of fluid entrained from the layer </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">do_i_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Indicates which i-points to work on. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="894" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="895" bodyend="1017"/>
        <referencedby refid="namespacemom__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" compoundref="MOM__entrain__diffusive_8F90" startline="52" endline="888">entrainment_diffusive</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1a363a25e7823043bb028e920e359733b0" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_entrain_diffusive::set_ent_bl</definition>
        <argsstring>(h, dtKd_int, tv, kb, kmb, do_i, G, GV, US, CS, j, Ent_bl, Sref, h_bl)</argsstring>
        <name>set_ent_bl</name>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>dtKd_int</type>
          <defname>dtKd_int</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>kb</type>
          <defname>kb</defname>
        </param>
        <param>
          <type>kmb</type>
          <defname>kmb</defname>
        </param>
        <param>
          <type>do_i</type>
          <defname>do_i</defname>
        </param>
        <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>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>j</type>
          <defname>j</defname>
        </param>
        <param>
          <type>Ent_bl</type>
          <defname>Ent_bl</defname>
        </param>
        <param>
          <type>Sref</type>
          <defname>Sref</defname>
        </param>
        <param>
          <type>h_bl</type>
          <defname>h_bl</defname>
        </param>
        <briefdescription>
<para>This subroutine sets the average entrainment across each of the interfaces between buffer layers within a timestep. It also causes thin and relatively light interior layers to be entrained by the deepest buffer layer. Also find the initial coordinate potential densities (Sref) of each layer. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thicknesses [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dtkd_int</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity across </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The index of the lightest layer denser than the buffer layer or 1 if there is no buffer layer. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kmb</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of mixed and buffer layers. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">do_i</parametername>
</parameternamelist>
<parameterdescription>
<para>A logical variable indicating which i-points to work on. </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>This module&apos;s control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>The meridional index upon which to work. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">ent_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The average entrainment upward and </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">sref</parametername>
</parameternamelist>
<parameterdescription>
<para>The coordinate potential density minus 1000 for each layer [R ~&gt; kg m-3]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">h_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The thickness of each layer [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="1024" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="1025" bodyend="1184"/>
        <references refid="namespacemom__eos_1a782d326108e390902e520efc078e8296" compoundref="MOM__EOS_8F90" startline="1163" endline="1175">mom_eos::eos_domain</references>
        <referencedby refid="namespacemom__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" compoundref="MOM__entrain__diffusive_8F90" startline="52" endline="888">entrainment_diffusive</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1aa2d2f462912ba1e201b1b73e62a905f3" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_entrain_diffusive::determine_dskb</definition>
        <argsstring>(h_bl, Sref, Ent_bl, E_kb, is, ie, kmb, G, GV, limit, dSkb, ddSkb_dE, dSlay, ddSlay_dE, dS_anom_lim, do_i_in)</argsstring>
        <name>determine_dskb</name>
        <param>
          <type>h_bl</type>
          <defname>h_bl</defname>
        </param>
        <param>
          <type>Sref</type>
          <defname>Sref</defname>
        </param>
        <param>
          <type>Ent_bl</type>
          <defname>Ent_bl</defname>
        </param>
        <param>
          <type>E_kb</type>
          <defname>E_kb</defname>
        </param>
        <param>
          <type>is</type>
          <defname>is</defname>
        </param>
        <param>
          <type>ie</type>
          <defname>ie</defname>
        </param>
        <param>
          <type>kmb</type>
          <defname>kmb</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>limit</type>
          <defname>limit</defname>
        </param>
        <param>
          <type>dSkb</type>
          <defname>dSkb</defname>
        </param>
        <param>
          <type>ddSkb_dE</type>
          <defname>ddSkb_dE</defname>
        </param>
        <param>
          <type>dSlay</type>
          <defname>dSlay</defname>
        </param>
        <param>
          <type>ddSlay_dE</type>
          <defname>ddSlay_dE</defname>
        </param>
        <param>
          <type>dS_anom_lim</type>
          <defname>dS_anom_lim</defname>
        </param>
        <param>
          <type>do_i_in</type>
          <defname>do_i_in</defname>
        </param>
        <briefdescription>
<para>This subroutine determines the reference density difference between the bottommost buffer layer and the first interior after the mixing between mixed and buffer layers and mixing with the layer below. Within the mixed and buffer layers, entrainment from the layer above is increased when it is necessary to keep the layers from developing a negative thickness; otherwise it equals Ent_bl. At each interface, the upward and downward fluxes average out to Ent_bl, unless entrainment by the layer below is larger than twice Ent_bl. The density difference across the first interior layer may also be returned. It could also be limited to avoid negative values or values that greatly exceed the density differences across an interface. Additionally, the partial derivatives of dSkb and dSlay with E_kb could also be returned. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sref</parametername>
</parameternamelist>
<parameterdescription>
<para>Reference potential density [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ent_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The average entrainment upward and downward across each interface around the buffer layers [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">e_kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment by the top interior layer [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start of the i-index range to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end of the i-index range to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kmb</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of mixed and buffer layers. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">limit</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, limit dSkb and dSlay to avoid negative values. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">dskb</parametername>
</parameternamelist>
<parameterdescription>
<para>The limited potential density difference across the interface between the bottommost buffer layer and the topmost interior layer. [R ~&gt; kg m-3] dSkb &gt; 0. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ddskb_de</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of dSkb with E [R H-1 ~&gt; kg m-4 or m-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">dslay</parametername>
</parameternamelist>
<parameterdescription>
<para>The limited potential density difference across the topmost interior layer. 0 &lt; dSkb [R ~&gt; kg m-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ddslay_de</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of dSlay with E [R H-1 ~&gt; kg m-4 or m-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ds_anom_lim</parametername>
</parameternamelist>
<parameterdescription>
<para>A limiting value to use for the density anomalies below the buffer layer [R ~&gt; kg m-3]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">do_i_in</parametername>
</parameternamelist>
<parameterdescription>
<para>If present, determines which columns are worked on. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="1199" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="1201" bodyend="1432"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__entrain__diffusive_1a541b3aadc418110f7359b0ae401e4e78" compoundref="MOM__entrain__diffusive_8F90" startline="1574" endline="1779">determine_ea_kb</referencedby>
        <referencedby refid="namespacemom__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" compoundref="MOM__entrain__diffusive_8F90" startline="52" endline="888">entrainment_diffusive</referencedby>
        <referencedby refid="namespacemom__entrain__diffusive_1adce1b1ba57f5245f1eda57e7a254d4df" compoundref="MOM__entrain__diffusive_8F90" startline="1441" endline="1564">f_kb_to_ea_kb</referencedby>
        <referencedby refid="namespacemom__entrain__diffusive_1ae45dbf976314c3a9e278ebcebedab109" compoundref="MOM__entrain__diffusive_8F90" startline="1786" endline="2075">find_maxf_kb</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1adce1b1ba57f5245f1eda57e7a254d4df" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_entrain_diffusive::f_kb_to_ea_kb</definition>
        <argsstring>(h_bl, Sref, Ent_bl, I_dSkbp1, F_kb, kmb, i, G, GV, CS, ea_kb, tol_in)</argsstring>
        <name>f_kb_to_ea_kb</name>
        <param>
          <type>h_bl</type>
          <defname>h_bl</defname>
        </param>
        <param>
          <type>Sref</type>
          <defname>Sref</defname>
        </param>
        <param>
          <type>Ent_bl</type>
          <defname>Ent_bl</defname>
        </param>
        <param>
          <type>I_dSkbp1</type>
          <defname>I_dSkbp1</defname>
        </param>
        <param>
          <type>F_kb</type>
          <defname>F_kb</defname>
        </param>
        <param>
          <type>kmb</type>
          <defname>kmb</defname>
        </param>
        <param>
          <type>i</type>
          <defname>i</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>ea_kb</type>
          <defname>ea_kb</defname>
        </param>
        <param>
          <type>tol_in</type>
          <defname>tol_in</defname>
        </param>
        <briefdescription>
<para>Given an entrainment from below for layer kb, determine a consistent entrainment from above, such that dSkb * ea_kb = dSkbp1 * F_kb. The input value of ea_kb is both the maximum value that can be obtained and the first guess of the iterations. Ideally ea_kb should be an under-estimate. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness, with the top interior </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sref</parametername>
</parameternamelist>
<parameterdescription>
<para>The coordinate reference potential density, </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ent_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The average entrainment upward and downward </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i_dskbp1</parametername>
</parameternamelist>
<parameterdescription>
<para>The inverse of the difference in reference potential density across the base of the uppermost interior layer [R-1 ~&gt; m3 kg-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f_kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment from below by the uppermost interior layer [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kmb</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of mixed and buffer layers. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i</parametername>
</parameternamelist>
<parameterdescription>
<para>The i-index to work on </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>This module&apos;s control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ea_kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment from above by the layer below the buffer layer (i.e. layer kb) [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tol_in</parametername>
</parameternamelist>
<parameterdescription>
<para>A tolerance for the iterative determination of the entrainment [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="1439" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="1441" bodyend="1564"/>
        <references refid="namespacemom__entrain__diffusive_1aa2d2f462912ba1e201b1b73e62a905f3" compoundref="MOM__entrain__diffusive_8F90" startline="1201" endline="1432">determine_dskb</references>
        <references refid="namespacemom__entrain__diffusive_1ae45dbf976314c3a9e278ebcebedab109" compoundref="MOM__entrain__diffusive_8F90" startline="1786" endline="2075">find_maxf_kb</references>
        <referencedby refid="namespacemom__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" compoundref="MOM__entrain__diffusive_8F90" startline="52" endline="888">entrainment_diffusive</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1a541b3aadc418110f7359b0ae401e4e78" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_entrain_diffusive::determine_ea_kb</definition>
        <argsstring>(h_bl, dtKd_kb, Sref, I_dSkbp1, Ent_bl, ea_kbp1, min_eakb, max_eakb, kmb, is, ie, do_i, G, GV, CS, Ent, error, err_min_eakb0, err_max_eakb0, F_kb, dFdfm_kb)</argsstring>
        <name>determine_ea_kb</name>
        <param>
          <type>h_bl</type>
          <defname>h_bl</defname>
        </param>
        <param>
          <type>dtKd_kb</type>
          <defname>dtKd_kb</defname>
        </param>
        <param>
          <type>Sref</type>
          <defname>Sref</defname>
        </param>
        <param>
          <type>I_dSkbp1</type>
          <defname>I_dSkbp1</defname>
        </param>
        <param>
          <type>Ent_bl</type>
          <defname>Ent_bl</defname>
        </param>
        <param>
          <type>ea_kbp1</type>
          <defname>ea_kbp1</defname>
        </param>
        <param>
          <type>min_eakb</type>
          <defname>min_eakb</defname>
        </param>
        <param>
          <type>max_eakb</type>
          <defname>max_eakb</defname>
        </param>
        <param>
          <type>kmb</type>
          <defname>kmb</defname>
        </param>
        <param>
          <type>is</type>
          <defname>is</defname>
        </param>
        <param>
          <type>ie</type>
          <defname>ie</defname>
        </param>
        <param>
          <type>do_i</type>
          <defname>do_i</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>Ent</type>
          <defname>Ent</defname>
        </param>
        <param>
          <type>error</type>
          <defname>error</defname>
        </param>
        <param>
          <type>err_min_eakb0</type>
          <defname>err_min_eakb0</defname>
        </param>
        <param>
          <type>err_max_eakb0</type>
          <defname>err_max_eakb0</defname>
        </param>
        <param>
          <type>F_kb</type>
          <defname>F_kb</defname>
        </param>
        <param>
          <type>dFdfm_kb</type>
          <defname>dFdfm_kb</defname>
        </param>
        <briefdescription>
<para>This subroutine determines the entrainment from above by the top interior layer (labeled kb elsewhere) given an entrainment by the layer below it, constrained to be within the provided bounds. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness, with the top interior layer at k-index kmb+1 [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sref</parametername>
</parameternamelist>
<parameterdescription>
<para>The coordinate reference potential density, with the value of the topmost interior layer at layer kmb+1 [R ~&gt; kg m-3]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ent_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The average entrainment upward and downward across each interface around the buffer layers [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i_dskbp1</parametername>
</parameternamelist>
<parameterdescription>
<para>The inverse of the difference in reference potential density across the base of the uppermost interior layer [R-1 ~&gt; m3 kg-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dtkd_kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity in the top interior layer times the time step [H2 ~&gt; m2 or kg2 m-4]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ea_kbp1</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment from above by layer kb+1 [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">min_eakb</parametername>
</parameternamelist>
<parameterdescription>
<para>The minimum permissible rate of entrainment [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">max_eakb</parametername>
</parameternamelist>
<parameterdescription>
<para>The maximum permissible rate of entrainment [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kmb</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of mixed and buffer layers. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start of the i-index range to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end of the i-index range to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">do_i</parametername>
</parameternamelist>
<parameterdescription>
<para>A logical variable indicating which i-points to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>This module&apos;s control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ent</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment rate of the uppermost interior layer [H ~&gt; m or kg m-2]. The input value is the first guess. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">error</parametername>
</parameternamelist>
<parameterdescription>
<para>The error (locally defined in this routine) associated with the returned solution. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">err_min_eakb0</parametername>
</parameternamelist>
<parameterdescription>
<para>The errors (locally defined) associated with min_eakb when ea_kbp1 = 0, returned from a previous call to this fn. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">err_max_eakb0</parametername>
</parameternamelist>
<parameterdescription>
<para>The errors (locally defined) associated with min_eakb when ea_kbp1 = 0, returned from a previous call to this fn. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">f_kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The entrainment from below by the uppermost interior layer corresponding to the returned value of Ent [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">dfdfm_kb</parametername>
</parameternamelist>
<parameterdescription>
<para>The partial derivative of F_kb with ea_kbp1 [nondim]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="1571" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="1574" bodyend="1779"/>
        <references refid="namespacemom__entrain__diffusive_1aa2d2f462912ba1e201b1b73e62a905f3" compoundref="MOM__entrain__diffusive_8F90" startline="1201" endline="1432">determine_dskb</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__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" compoundref="MOM__entrain__diffusive_8F90" startline="52" endline="888">entrainment_diffusive</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1ae45dbf976314c3a9e278ebcebedab109" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_entrain_diffusive::find_maxf_kb</definition>
        <argsstring>(h_bl, Sref, Ent_bl, I_dSkbp1, min_ent_in, max_ent_in, kmb, is, ie, G, GV, CS, maxF, ent_maxF, do_i_in, F_lim_maxent, F_thresh)</argsstring>
        <name>find_maxf_kb</name>
        <param>
          <type>h_bl</type>
          <defname>h_bl</defname>
        </param>
        <param>
          <type>Sref</type>
          <defname>Sref</defname>
        </param>
        <param>
          <type>Ent_bl</type>
          <defname>Ent_bl</defname>
        </param>
        <param>
          <type>I_dSkbp1</type>
          <defname>I_dSkbp1</defname>
        </param>
        <param>
          <type>min_ent_in</type>
          <defname>min_ent_in</defname>
        </param>
        <param>
          <type>max_ent_in</type>
          <defname>max_ent_in</defname>
        </param>
        <param>
          <type>kmb</type>
          <defname>kmb</defname>
        </param>
        <param>
          <type>is</type>
          <defname>is</defname>
        </param>
        <param>
          <type>ie</type>
          <defname>ie</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>maxF</type>
          <defname>maxF</defname>
        </param>
        <param>
          <type>ent_maxF</type>
          <defname>ent_maxF</defname>
        </param>
        <param>
          <type>do_i_in</type>
          <defname>do_i_in</defname>
        </param>
        <param>
          <type>F_lim_maxent</type>
          <defname>F_lim_maxent</defname>
        </param>
        <param>
          <type>F_thresh</type>
          <defname>F_thresh</defname>
        </param>
        <briefdescription>
<para>Maximize F = ent*ds_kb*I_dSkbp1 in the range min_ent &lt; ent &lt; max_ent. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sref</parametername>
</parameternamelist>
<parameterdescription>
<para>Reference potential density [R ~&gt; kg m-3]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ent_bl</parametername>
</parameternamelist>
<parameterdescription>
<para>The average entrainment upward and </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i_dskbp1</parametername>
</parameternamelist>
<parameterdescription>
<para>The inverse of the difference in reference potential density across the base of the uppermost interior layer [R-1 ~&gt; m3 kg-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">min_ent_in</parametername>
</parameternamelist>
<parameterdescription>
<para>The minimum value of ent to search, [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">max_ent_in</parametername>
</parameternamelist>
<parameterdescription>
<para>The maximum value of ent to search, [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">kmb</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of mixed and buffer layers. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start of the i-index range to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end of the i-index range to work on. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>This module&apos;s control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">maxf</parametername>
</parameternamelist>
<parameterdescription>
<para>The maximum value of F = ent*ds_kb*I_dSkbp1 found in the range min_ent &lt; ent &lt; max_ent [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">ent_maxf</parametername>
</parameternamelist>
<parameterdescription>
<para>The value of ent at that maximum [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">do_i_in</parametername>
</parameternamelist>
<parameterdescription>
<para>A logical array indicating which columns </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">f_lim_maxent</parametername>
</parameternamelist>
<parameterdescription>
<para>If present, do not apply the limit in </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f_thresh</parametername>
</parameternamelist>
<parameterdescription>
<para>If F_thresh is present, return the first </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="1783" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="1786" bodyend="2075"/>
        <references refid="namespacemom__entrain__diffusive_1aa2d2f462912ba1e201b1b73e62a905f3" compoundref="MOM__entrain__diffusive_8F90" startline="1201" endline="1432">determine_dskb</references>
        <referencedby refid="namespacemom__entrain__diffusive_1ae68ab2fa707778de2f92ce179729f2ff" compoundref="MOM__entrain__diffusive_8F90" startline="52" endline="888">entrainment_diffusive</referencedby>
        <referencedby refid="namespacemom__entrain__diffusive_1adce1b1ba57f5245f1eda57e7a254d4df" compoundref="MOM__entrain__diffusive_8F90" startline="1441" endline="1564">f_kb_to_ea_kb</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1a08d3203366fac7ec13472c79681dea0e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_entrain_diffusive::entrain_diffusive_init</definition>
        <argsstring>(Time, G, GV, US, param_file, diag, CS, just_read_params)</argsstring>
        <name>entrain_diffusive_init</name>
        <param>
          <type>Time</type>
          <defname>Time</defname>
        </param>
        <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>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>just_read_params</type>
          <defname>just_read_params</defname>
        </param>
        <briefdescription>
<para>This subroutine initializes the parameters and memory associated with the entrain_diffusive module. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">time</parametername>
</parameternamelist>
<parameterdescription>
<para>The current model time. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s 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">param_file</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure to parse for run-time parameters. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure that is used to regulate diagnostic output. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer that is set to point to the control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">just_read_params</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, this call will only read parameters logging them or registering any diagnostics </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="2080" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="2081" bodyend="2142"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__entrain__diffusive_1a0e71b47abe1e1889f4b687139615ca14" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_entrain_diffusive::entrain_diffusive_end</definition>
        <argsstring>(CS)</argsstring>
        <name>entrain_diffusive_end</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>This subroutine cleans up and deallocates any memory associated with the entrain_diffusive module. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the control structure for this module that will be deallocated. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="2147" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" bodystart="2148" bodyend="2151"/>
        <referencedby refid="namespacemom__diabatic__driver_1a6eac8317c3b569e414fb5a6678afc598" compoundref="MOM__diabatic__driver_8F90" startline="3733" endline="3770">mom_diabatic_driver::diabatic_driver_end</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Diapycnal mixing and advection in isopycnal mode. </para>
    </briefdescription>
    <detaileddescription>
<para>By Robert Hallberg, September 1997 - July 2000</para>
<para>This file contains the subroutines that implement diapycnal mixing and advection in isopycnal layers. The main subroutine, calculate_entrainment, returns the entrainment by each layer across the interfaces above and below it. These are calculated subject to the constraints that no layers can be driven to neg- ative thickness and that the each layer maintains its target density, using the scheme described in Hallberg (MWR 2000). There may or may not be a bulk mixed layer above the isopycnal layers. The solution is iterated until the change in the entrainment between successive iterations is less than some small tolerance.</para>
<para>The dual-stream entrainment scheme of MacDougall and Dewar (JPO 1997) is used for combined diapycnal advection and diffusion, modified as described in Hallberg (MWR 2000) to be solved implicitly in time. Any profile of diffusivities may be used. Diapycnal advection is fundamentally the residual of diapycnal diffusion, so the fully implicit upwind differencing scheme that is used is entirely appropriate. The downward buoyancy flux in each layer is determined from an implicit calculation based on the previously calculated flux of the layer above and an estim- ated flux in the layer below. This flux is subject to the foll- owing conditions: (1) the flux in the top and bottom layers are set by the boundary conditions, and (2) no layer may be driven below an Angstrom thickness. If there is a bulk mixed layer, the mixed and buffer layers are treated as Eulerian layers, whose thicknesses only change due to entrainment by the interior layers. </para>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_entrain_diffusive.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
