<?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.14">
  <compounddef id="namespacemom__sponge" kind="namespace" language="Fortran">
    <compoundname>mom_sponge</compoundname>
    <innerclass refid="structmom__sponge_1_1p2d" prot="public">mom_sponge::p2d</innerclass>
    <innerclass refid="structmom__sponge_1_1p3d" prot="public">mom_sponge::p3d</innerclass>
    <innerclass refid="structmom__sponge_1_1sponge__cs" prot="public">mom_sponge::sponge_cs</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__sponge_1a2c3c6a03d98c13221031af667b42428d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_sponge::initialize_sponge</definition>
        <argsstring>(Iresttime, int_height, G, param_file, CS, GV, Iresttime_i_mean, int_height_i_mean)</argsstring>
        <name>initialize_sponge</name>
        <param>
          <type>Iresttime</type>
          <defname>Iresttime</defname>
        </param>
        <param>
          <type>int_height</type>
          <defname>int_height</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>Iresttime_i_mean</type>
          <defname>Iresttime_i_mean</defname>
        </param>
        <param>
          <type>int_height_i_mean</type>
          <defname>int_height_i_mean</defname>
        </param>
        <briefdescription>
<para>This subroutine determines the number of points which are within sponges in this computational domain. Only points that have positive values of Iresttime and which mask2dT indicates are ocean points are included in the sponges. It also stores the target interface heights. </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">iresttime</parametername>
</parameternamelist>
<parameterdescription>
<para>The inverse of the restoring time [T-1 ~&gt; s-1].</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">int_height</parametername>
</parameternamelist>
<parameterdescription>
<para>The interface heights to damp back toward [Z ~&gt; m].</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>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer that is set to point to the control structure for this module</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">iresttime_i_mean</parametername>
</parameternamelist>
<parameterdescription>
<para>The inverse of the restoring time for</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">int_height_i_mean</parametername>
</parameternamelist>
<parameterdescription>
<para>The interface heights toward which to </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="88" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" bodystart="90" bodyend="187"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacebfb__initialization_1af1bf4c8e60817f03359d3fd31aab5a90" compoundref="BFB__initialization_8F90" startline="80" endline="170">bfb_initialization::bfb_initialize_sponges_southonly</referencedby>
        <referencedby refid="namespacedome2d__initialization_1a0be7c5cc017fb5f8d3dd84934409a5ee" compoundref="DOME2d__initialization_8F90" startline="357" endline="517">dome2d_initialization::dome2d_initialize_sponges</referencedby>
        <referencedby refid="namespacedome__initialization_1a41b5a1805fffbbcbdce1ac7bfc7623f1" compoundref="DOME__initialization_8F90" startline="149" endline="241">dome_initialization::dome_initialize_sponges</referencedby>
        <referencedby refid="namespacemom__state__initialization_1ac672706eef5c8d6c07333f5e46e4cdff" compoundref="MOM__state__initialization_8F90" startline="1713" endline="1910">mom_state_initialization::initialize_sponges_file</referencedby>
        <referencedby refid="namespaceisomip__initialization_1a5605d312795e2d4770571052da07859f" compoundref="ISOMIP__initialization_8F90" startline="425" endline="672">isomip_initialization::isomip_initialize_sponges</referencedby>
        <referencedby refid="namespacephillips__initialization_1ac1b07586a1ded5ee253cba3c67d0249a" compoundref="Phillips__initialization_8F90" startline="202" endline="279">phillips_initialization::phillips_initialize_sponges</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__sponge_1ad4b2c0efb73f14a43936a11b39027f57" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_sponge::init_sponge_diags</definition>
        <argsstring>(Time, G, GV, US, diag, CS)</argsstring>
        <name>init_sponge_diags</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>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>This subroutine sets up diagnostics for the sponges. It is separate from initialize_sponge because it requires fields that are not readily available where initialize_sponge is called. </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="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 to the control structure for this module that is set by a previous call to initialize_sponge. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="193" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" bodystart="194" bodyend="207"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__sponge_1af3da4a8b352c4130919d7bfedf1a5a3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_sponge::set_up_sponge_field</definition>
        <argsstring>(sp_val, f_ptr, G, nlay, CS, sp_val_i_mean)</argsstring>
        <name>set_up_sponge_field</name>
        <param>
          <type>sp_val</type>
          <defname>sp_val</defname>
        </param>
        <param>
          <type>f_ptr</type>
          <defname>f_ptr</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>nlay</type>
          <defname>nlay</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>sp_val_i_mean</type>
          <defname>sp_val_i_mean</defname>
        </param>
        <briefdescription>
<para>This subroutine stores the reference profile for the variable whose address is given by f_ptr. nlay is the number of layers in this variable. </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">sp_val</parametername>
</parameternamelist>
<parameterdescription>
<para>The reference profiles of the quantity being registered.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">f_ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>a pointer to the field which will be damped</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nlay</parametername>
</parameternamelist>
<parameterdescription>
<para>the number of layers in this quantity</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the control structure for this module that is set by a previous call to initialize_sponge.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sp_val_i_mean</parametername>
</parameternamelist>
<parameterdescription>
<para>The i-mean reference value for </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="213" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" bodystart="214" bodyend="270"/>
        <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>
        <referencedby refid="namespacedome__initialization_1a41b5a1805fffbbcbdce1ac7bfc7623f1" compoundref="DOME__initialization_8F90" startline="149" endline="241">dome_initialization::dome_initialize_sponges</referencedby>
        <referencedby refid="namespacedome__tracer_1a06a4e3eaa52d9e63528e5997081f989e" compoundref="DOME__tracer_8F90" startline="144" endline="276">dome_tracer::initialize_dome_tracer</referencedby>
        <referencedby refid="namespacergc__tracer_1ad2da37dd791644961aab6e66a2452793" compoundref="RGC__tracer_8F90" startline="156" endline="269">rgc_tracer::initialize_rgc_tracer</referencedby>
        <referencedby refid="namespaceisomip__initialization_1a5605d312795e2d4770571052da07859f" compoundref="ISOMIP__initialization_8F90" startline="425" endline="672">isomip_initialization::isomip_initialize_sponges</referencedby>
        <referencedby refid="namespaceuser__tracer__example_1a00806c17a421a7f59d45022ad2472bf3" compoundref="tracer__example_8F90" startline="141" endline="255">user_tracer_example::user_initialize_tracer</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__sponge_1ac5a144fffdfc612c6e3de802261cc85c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_sponge::set_up_sponge_ml_density</definition>
        <argsstring>(sp_val, G, CS, sp_val_i_mean)</argsstring>
        <name>set_up_sponge_ml_density</name>
        <param>
          <type>sp_val</type>
          <defname>sp_val</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>sp_val_i_mean</type>
          <defname>sp_val_i_mean</defname>
        </param>
        <briefdescription>
<para>This subroutine stores the reference value for mixed layer density. It is handled differently from other values because it is only used in determining which layers can be inflated. </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">sp_val</parametername>
</parameternamelist>
<parameterdescription>
<para>The reference values of the mixed layer density [R ~&gt; kg m-3]</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the control structure for this module that is set by a previous call to initialize_sponge.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sp_val_i_mean</parametername>
</parameternamelist>
<parameterdescription>
<para>the reference values of the zonal mean mixed </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="276" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" bodystart="277" bodyend="318"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacergc__initialization_1aab8f879daf1bf72d05b7f7ccd8770256" compoundref="RGC__initialization_8F90" startline="51" endline="228">rgc_initialization::rgc_initialize_sponges</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__sponge_1a0b8b22a1b577bdcf336c8d22b85b45d7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_sponge::apply_sponge</definition>
        <argsstring>(h, dt, G, GV, US, ea, eb, CS, Rcv_ml)</argsstring>
        <name>apply_sponge</name>
        <param>
          <type>h</type>
          <defname>h</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>ea</type>
          <defname>ea</defname>
        </param>
        <param>
          <type>eb</type>
          <defname>eb</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>Rcv_ml</type>
          <defname>Rcv_ml</defname>
        </param>
        <briefdescription>
<para>This subroutine applies damping to the layers thicknesses, mixed layer buoyancy, and a variety of tracers for every column where there is damping. </para>        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">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="inout">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thicknesses [H ~&gt; m or kg m-2]</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dt</parametername>
</parameternamelist>
<parameterdescription>
<para>The amount of time covered by this call [T ~&gt; s].</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ea</parametername>
</parameternamelist>
<parameterdescription>
<para>An array to which the amount of fluid entrained</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">eb</parametername>
</parameternamelist>
<parameterdescription>
<para>An array to which the amount of fluid entrained</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the control structure for this module that is set by a previous call to initialize_sponge.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">rcv_ml</parametername>
</parameternamelist>
<parameterdescription>
<para>The coordinate density of the mixed layer [R ~&gt; kg m-3]. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="323" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" bodystart="324" bodyend="588"/>
        <references refid="namespacemom__spatial__means_1a257babe85df2c4435f119236b94eafe9" compoundref="MOM__spatial__means_8F90" startline="197" endline="277">mom_spatial_means::global_i_mean</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__diabatic__driver_1a71d8d849db16be4b87c2650b49f01c82" compoundref="MOM__diabatic__driver_8F90" startline="1855" endline="2812">mom_diabatic_driver::layered_diabatic</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__sponge_1a9b62e032925716da3a7b099364ddd720" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_sponge::sponge_end</definition>
        <argsstring>(CS)</argsstring>
        <name>sponge_end</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>This call deallocates any memory in the sponge control structure. </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 is set by a previous call to initialize_sponge. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="592" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" bodystart="593" bodyend="617"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Implements sponge regions in isopycnal mode. </para>    </briefdescription>
    <detaileddescription>
<para>By Robert Hallberg, March 1999-June 2000.</para><para>This program contains the subroutines that implement sponge regions, in which the stratification and water mass properties are damped toward some profiles. There are three externally callable subroutines in this file.</para><para>initialize_sponge determines the mapping from the model variables into the arrays of damped columns. This remapping is done for efficiency and to conserve memory. Only columns which have positive inverse damping times and which are deeper than a supplied depth are placed in sponges. The inverse damping time is also stored in this subroutine, and memory is allocated for all of the reference profiles which will subsequently be provided through calls to set_up_sponge_field. The first two arguments are a two-dimensional array containing the damping rates, and the interface heights to damp towards.</para><para>set_up_sponge_field is called to provide a reference profile and the location of the field that will be damped back toward that reference profile. A third argument, the number of layers in the field is also provided, but this should always be nz.</para><para>Apply_sponge damps all of the fields that have been registered with set_up_sponge_field toward their reference profiles. The four arguments are the thickness to be damped, the amount of time over which the damping occurs, and arrays to which the movement of fluid into a layer from above and below will be added. The effect on momentum of the sponge may be accounted for later using the movement of water recorded in these later arrays. </para>    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/parameterizations/vertical/MOM_sponge.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
