<?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.17">
  <compounddef id="namespacemom__offline__main" kind="namespace" language="Fortran">
    <compoundname>mom_offline_main</compoundname>
    <innerclass refid="structmom__offline__main_1_1offline__transport__cs" prot="public">mom_offline_main::offline_transport_cs</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__offline__main_1ae85546d26ceb447742abe3c528cad2d7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_advection_ale</definition>
        <argsstring>(fluxes, Time_start, time_interval, CS, id_clock_ale, h_pre, uhtr, vhtr, converged)</argsstring>
        <name>offline_advection_ale</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>Time_start</type>
          <defname>Time_start</defname>
        </param>
        <param>
          <type>time_interval</type>
          <defname>time_interval</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>id_clock_ale</type>
          <defname>id_clock_ale</defname>
        </param>
        <param>
          <type>h_pre</type>
          <defname>h_pre</defname>
        </param>
        <param>
          <type>uhtr</type>
          <defname>uhtr</defname>
        </param>
        <param>
          <type>vhtr</type>
          <defname>vhtr</defname>
        </param>
        <param>
          <type>converged</type>
          <defname>converged</defname>
        </param>
        <briefdescription>
<para>3D advection is done by doing flux-limited nonlinear horizontal advection interspersed with an ALE regridding/remapping step. The loop in this routine is exited if remaining residual transports are below a runtime-specified value or a maximum number of iterations is reached. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>pointers to forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_start</parametername>
</parameternamelist>
<parameterdescription>
<para>starting time of a segment, as a time type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_interval</parametername>
</parameternamelist>
<parameterdescription>
<para>time interval </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>control structure for offline module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">id_clock_ale</parametername>
</parameternamelist>
<parameterdescription>
<para>Clock for ALE routines </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h_pre</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thicknesses before advection </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">uhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Zonal mass transport [H m2 ~&gt; m3 or kg] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">vhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Meridional mass transport [H m2 ~&gt; m3 or kg] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">converged</parametername>
</parameternamelist>
<parameterdescription>
<para>True if the iterations have converged </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="209" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="210" bodyend="415"/>
        <references refid="namespacemom__tracer__advect_1a28a6e28170a8d4f34337a1a202e0d902" compoundref="MOM__tracer__advect_8F90" startline="52" endline="331">mom_tracer_advect::advect_tracer</references>
        <references refid="namespacemom__ale_1a666f48c8fa163fe717e60bd6ed749a75" compoundref="MOM__ALE_8F90" startline="409" endline="456">mom_ale::ale_main_offline</references>
        <references refid="namespacemom__tracer__registry_1a86cd924ede0ff77b15065f5b3bd2cb29" compoundref="MOM__tracer__registry_8F90" startline="826" endline="845">mom_tracer_registry::mom_tracer_chkinv</references>
        <references refid="namespacemom__offline__main_1a713ee3448313842b0f07a5a750a01c60" compoundref="MOM__offline__main_8F90" startline="619" endline="647">remaining_transport_sum</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a312c47e83e64a6bdf064526f77a8a8ec" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_redistribute_residual</definition>
        <argsstring>(CS, h_pre, uhtr, vhtr, converged)</argsstring>
        <name>offline_redistribute_residual</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>h_pre</type>
          <defname>h_pre</defname>
        </param>
        <param>
          <type>uhtr</type>
          <defname>uhtr</defname>
        </param>
        <param>
          <type>vhtr</type>
          <defname>vhtr</defname>
        </param>
        <param>
          <type>converged</type>
          <defname>converged</defname>
        </param>
        <briefdescription>
<para>In the case where the main advection routine did not converge, something needs to be done with the remaining transport. Two different ways are offered, &apos;barotropic&apos; means that the residual is distributed equally throughout the water column. &apos;upwards&apos; attempts to redistribute the transport in the layers above and will eventually work down the entire water column. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>control structure from initialize_MOM </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h_pre</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thicknesses before advection </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">uhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Zonal mass transport </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">vhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Meridional mass transport </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">converged</parametername>
</parameternamelist>
<parameterdescription>
<para>True if the iterations have converged </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="422" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="423" bodyend="614"/>
        <references refid="namespacemom__tracer__advect_1a28a6e28170a8d4f34337a1a202e0d902" compoundref="MOM__tracer__advect_8F90" startline="52" endline="331">mom_tracer_advect::advect_tracer</references>
        <references refid="namespacemom__offline__aux_1a926820f5e1a788c56f1f5f485f667a1f" compoundref="MOM__offline__aux_8F90" startline="384" endline="474">mom_offline_aux::distribute_residual_uh_upwards</references>
        <references refid="namespacemom__offline__aux_1ae89d0bdb8c648bc137a188c4f7fa956d" compoundref="MOM__offline__aux_8F90" startline="480" endline="571">mom_offline_aux::distribute_residual_vh_upwards</references>
        <references refid="namespacemom__tracer__registry_1a86cd924ede0ff77b15065f5b3bd2cb29" compoundref="MOM__tracer__registry_8F90" startline="826" endline="845">mom_tracer_registry::mom_tracer_chkinv</references>
        <references refid="namespacemom__tracer__registry_1ad350bb834bb3dcfd6e603bb136bd8098" compoundref="MOM__tracer__registry_8F90" startline="809" endline="821">mom_tracer_registry::mom_tracer_chksum</references>
        <references refid="namespacemom__offline__main_1a713ee3448313842b0f07a5a750a01c60" compoundref="MOM__offline__main_8F90" startline="619" endline="647">remaining_transport_sum</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a713ee3448313842b0f07a5a750a01c60" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_offline_main::remaining_transport_sum</definition>
        <argsstring>(CS, uhtr, vhtr)</argsstring>
        <name>remaining_transport_sum</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>uhtr</type>
          <defname>uhtr</defname>
        </param>
        <param>
          <type>vhtr</type>
          <defname>vhtr</defname>
        </param>
        <briefdescription>
<para>Sums any non-negligible remaining transport to check for advection convergence. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>control structure for offline module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">uhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Zonal mass transport </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">vhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Meridional mass transport </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="618" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="619" bodyend="647"/>
        <referencedby refid="namespacemom__offline__main_1ae85546d26ceb447742abe3c528cad2d7" compoundref="MOM__offline__main_8F90" startline="210" endline="415">offline_advection_ale</referencedby>
        <referencedby refid="namespacemom__offline__main_1a312c47e83e64a6bdf064526f77a8a8ec" compoundref="MOM__offline__main_8F90" startline="423" endline="614">offline_redistribute_residual</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1aaef35c02f93931567c41ae8bc0544bdd" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_diabatic_ale</definition>
        <argsstring>(fluxes, Time_start, Time_end, CS, h_pre, eatr, ebtr)</argsstring>
        <name>offline_diabatic_ale</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>Time_start</type>
          <defname>Time_start</defname>
        </param>
        <param>
          <type>Time_end</type>
          <defname>Time_end</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>h_pre</type>
          <defname>h_pre</defname>
        </param>
        <param>
          <type>eatr</type>
          <defname>eatr</defname>
        </param>
        <param>
          <type>ebtr</type>
          <defname>ebtr</defname>
        </param>
        <briefdescription>
<para>The vertical/diabatic driver for offline tracers. First the eatr/ebtr associated with the interpolated vertical diffusivities are calculated and then any tracer column functions are done which can include vertical diffuvities and source/sink terms. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>pointers to forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_start</parametername>
</parameternamelist>
<parameterdescription>
<para>starting time of a segment, as a time type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_end</parametername>
</parameternamelist>
<parameterdescription>
<para>time interval </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>control structure from initialize_MOM </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h_pre</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thicknesses before advection [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">eatr</parametername>
</parameternamelist>
<parameterdescription>
<para>Entrainment from layer above [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ebtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Entrainment from layer below [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="653" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="654" bodyend="754"/>
        <references refid="namespacemom__tracer__flow__control_1ae4af301529462d180014b52d0ceea67c" compoundref="MOM__tracer__flow__control_8F90" startline="381" endline="537">mom_tracer_flow_control::call_tracer_column_fns</references>
        <references refid="namespacemom__tracer__registry_1a86cd924ede0ff77b15065f5b3bd2cb29" compoundref="MOM__tracer__registry_8F90" startline="826" endline="845">mom_tracer_registry::mom_tracer_chkinv</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a04d329761570d6d9fbc38589bea929cc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_fw_fluxes_into_ocean</definition>
        <argsstring>(G, GV, CS, fluxes, h, in_flux_optional)</argsstring>
        <name>offline_fw_fluxes_into_ocean</name>
        <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>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>in_flux_optional</type>
          <defname>in_flux_optional</defname>
        </param>
        <briefdescription>
<para>Apply positive freshwater fluxes (into the ocean) and update netMassOut with only the negative (out of the ocean) fluxes. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Offline control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Surface fluxes container </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">in_flux_optional</parametername>
</parameternamelist>
<parameterdescription>
<para>The total time-integrated amount </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="759" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="760" bodyend="805"/>
        <references refid="namespacemom__tracer__diabatic_1ad4d3d4de0f2b84c15bccc5eb2f767df3" compoundref="MOM__tracer__diabatic_8F90" startline="230" endline="443">mom_tracer_diabatic::applytracerboundaryfluxesinout</references>
        <references refid="namespacemom__tracer__registry_1a86cd924ede0ff77b15065f5b3bd2cb29" compoundref="MOM__tracer__registry_8F90" startline="826" endline="845">mom_tracer_registry::mom_tracer_chkinv</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1ad96c09ff7c8f34d9602fd111ec492cfe" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_fw_fluxes_out_ocean</definition>
        <argsstring>(G, GV, CS, fluxes, h, out_flux_optional)</argsstring>
        <name>offline_fw_fluxes_out_ocean</name>
        <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>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>out_flux_optional</type>
          <defname>out_flux_optional</defname>
        </param>
        <briefdescription>
<para>Apply negative freshwater fluxes (out of the ocean) </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Offline control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Surface fluxes container </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h</parametername>
</parameternamelist>
<parameterdescription>
<para>Layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">out_flux_optional</parametername>
</parameternamelist>
<parameterdescription>
<para>The total time-integrated amount </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="809" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="810" bodyend="840"/>
        <references refid="namespacemom__tracer__diabatic_1ad4d3d4de0f2b84c15bccc5eb2f767df3" compoundref="MOM__tracer__diabatic_8F90" startline="230" endline="443">mom_tracer_diabatic::applytracerboundaryfluxesinout</references>
        <references refid="namespacemom__tracer__registry_1a86cd924ede0ff77b15065f5b3bd2cb29" compoundref="MOM__tracer__registry_8F90" startline="826" endline="845">mom_tracer_registry::mom_tracer_chkinv</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a887d59c64eb269aad257eacc8cf30444" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_advection_layer</definition>
        <argsstring>(fluxes, Time_start, time_interval, CS, h_pre, eatr, ebtr, uhtr, vhtr)</argsstring>
        <name>offline_advection_layer</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>Time_start</type>
          <defname>Time_start</defname>
        </param>
        <param>
          <type>time_interval</type>
          <defname>time_interval</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>h_pre</type>
          <defname>h_pre</defname>
        </param>
        <param>
          <type>eatr</type>
          <defname>eatr</defname>
        </param>
        <param>
          <type>ebtr</type>
          <defname>ebtr</defname>
        </param>
        <param>
          <type>uhtr</type>
          <defname>uhtr</defname>
        </param>
        <param>
          <type>vhtr</type>
          <defname>vhtr</defname>
        </param>
        <briefdescription>
<para>When in layer mode, 3D horizontal advection using stored mass fluxes must be used. Horizontal advection is done via tracer_advect, whereas the vertical component is actually handled by vertdiff in tracer_column_fns. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>pointers to forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_start</parametername>
</parameternamelist>
<parameterdescription>
<para>starting time of a segment, as a time type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_interval</parametername>
</parameternamelist>
<parameterdescription>
<para>Offline transport time interval </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure for offline module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h_pre</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thicknesses before advection </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">eatr</parametername>
</parameternamelist>
<parameterdescription>
<para>Entrainment from layer above </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">ebtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Entrainment from layer below </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">uhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Zonal mass transport </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">vhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Meridional mass transport </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="845" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="846" bodyend="1013"/>
        <references refid="namespacemom__tracer__advect_1a28a6e28170a8d4f34337a1a202e0d902" compoundref="MOM__tracer__advect_8F90" startline="52" endline="331">mom_tracer_advect::advect_tracer</references>
        <references refid="namespacemom__tracer__flow__control_1ae4af301529462d180014b52d0ceea67c" compoundref="MOM__tracer__flow__control_8F90" startline="381" endline="537">mom_tracer_flow_control::call_tracer_column_fns</references>
        <referencedby refid="namespacemom_1ade4f7557fcda73ffc12284d3cecf4182" compoundref="MOM_8F90" startline="1405" endline="1596">mom::step_offline</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a2e59b996b88713928c04f72d57c5a531" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::update_offline_fields</definition>
        <argsstring>(CS, h, fluxes, do_ale)</argsstring>
        <name>update_offline_fields</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>do_ale</type>
          <defname>do_ale</defname>
        </param>
        <briefdescription>
<para>Update fields used in this round of offline transport. First fields are updated from files or from arrays read during initialization. Then if in an ALE-dependent coordinate, regrid/remap fields. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure for offline module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>h</parametername>
</parameternamelist>
<parameterdescription>
<para>The regridded layer thicknesses </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Pointers to forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">do_ale</parametername>
</parameternamelist>
<parameterdescription>
<para>True if using ALE </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1018" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1019" bodyend="1110"/>
        <references refid="namespacemom__ale_1ae95451e2fbd4805eec01d00bebb268b4" compoundref="MOM__ALE_8F90" startline="463" endline="536">mom_ale::ale_offline_inputs</references>
        <references refid="namespacemom__error__handler_1a9cda07a87815f0e5594066162b4345c3" compoundref="MOM__error__handler_8F90" startline="130" endline="146">mom_error_handler::calltree_enter</references>
        <references refid="namespacemom__error__handler_1a88ea67781e2ed9b73ab7eac8ea5e8578" compoundref="MOM__error__handler_8F90" startline="151" endline="156">mom_error_handler::calltree_leave</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a0adf88ec8f84684573c1bafd91b22cf6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::register_diags_offline_transport</definition>
        <argsstring>(Time, diag, CS)</argsstring>
        <name>register_diags_offline_transport</name>
        <param>
          <type>Time</type>
          <defname>Time</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Initialize additional diagnostics required for offline tracer transport. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure for offline module </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time</parametername>
</parameternamelist>
<parameterdescription>
<para>current model time </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>Structure that regulates diagnostic output </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1114" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1115" bodyend="1167"/>
        <references refid="namespacemom__diag__mediator_1ada491446bf7216fe101e6b0f6ed551e1" compoundref="MOM__diag__mediator_8F90" startline="1944" endline="2177">mom_diag_mediator::register_diag_field</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1ad773f8f414f53f000cab30ad097aeaab" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::post_offline_convergence_diags</definition>
        <argsstring>(CS, h_off, h_end, uhtr, vhtr)</argsstring>
        <name>post_offline_convergence_diags</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>h_off</type>
          <defname>h_off</defname>
        </param>
        <param>
          <type>h_end</type>
          <defname>h_end</defname>
        </param>
        <param>
          <type>uhtr</type>
          <defname>uhtr</defname>
        </param>
        <param>
          <type>vhtr</type>
          <defname>vhtr</defname>
        </param>
        <briefdescription>
<para>Posts diagnostics related to offline convergence diagnostics. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Offline control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h_off</parametername>
</parameternamelist>
<parameterdescription>
<para>Thicknesses at end of offline step </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">h_end</parametername>
</parameternamelist>
<parameterdescription>
<para>Stored thicknesses </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">uhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Remaining zonal mass transport </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">vhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Remaining meridional mass transport </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1171" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1172" bodyend="1198"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a9c797acd29d9ecf43fb1194392b8f2bb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::extract_offline_main</definition>
        <argsstring>(CS, uhtr, vhtr, eatr, ebtr, h_end, accumulated_time, vertical_time, dt_offline, dt_offline_vertical, skip_diffusion)</argsstring>
        <name>extract_offline_main</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>uhtr</type>
          <defname>uhtr</defname>
        </param>
        <param>
          <type>vhtr</type>
          <defname>vhtr</defname>
        </param>
        <param>
          <type>eatr</type>
          <defname>eatr</defname>
        </param>
        <param>
          <type>ebtr</type>
          <defname>ebtr</defname>
        </param>
        <param>
          <type>h_end</type>
          <defname>h_end</defname>
        </param>
        <param>
          <type>accumulated_time</type>
          <defname>accumulated_time</defname>
        </param>
        <param>
          <type>vertical_time</type>
          <defname>vertical_time</defname>
        </param>
        <param>
          <type>dt_offline</type>
          <defname>dt_offline</defname>
        </param>
        <param>
          <type>dt_offline_vertical</type>
          <defname>dt_offline_vertical</defname>
        </param>
        <param>
          <type>skip_diffusion</type>
          <defname>skip_diffusion</defname>
        </param>
        <briefdescription>
<para>Extracts members of the offline main control structure. All arguments are optional except the control structure itself. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Offline control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>uhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Remaining zonal mass transport [H m2 ~&gt; m3 or kg] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>vhtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Remaining meridional mass transport [H m2 ~&gt; m3 or kg] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>eatr</parametername>
</parameternamelist>
<parameterdescription>
<para>Amount of fluid entrained from the layer above within one time step [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>ebtr</parametername>
</parameternamelist>
<parameterdescription>
<para>Amount of fluid entrained from the layer below within one time step [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>h_end</parametername>
</parameternamelist>
<parameterdescription>
<para>Thicknesses at the end of offline timestep [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>accumulated_time</parametername>
</parameternamelist>
<parameterdescription>
<para>Length of time accumulated in the current offline interval </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>vertical_time</parametername>
</parameternamelist>
<parameterdescription>
<para>The next value of accumulate_time at which to vertical processes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">dt_offline</parametername>
</parameternamelist>
<parameterdescription>
<para>Timestep used for offline tracers [T ~&gt; s] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">dt_offline_vertical</parametername>
</parameternamelist>
<parameterdescription>
<para>Timestep used for calls to tracer vertical physics [T ~&gt; s] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">skip_diffusion</parametername>
</parameternamelist>
<parameterdescription>
<para>Skips horizontal diffusion of tracers </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1203" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1205" bodyend="1239"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1aadf3150c45b59adac6e70933971e6f8a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::insert_offline_main</definition>
        <argsstring>(CS, ALE_CSp, diabatic_CSp, diag, OBC, tracer_adv_CSp, tracer_flow_CSp, tracer_Reg, tv, G, GV, x_before_y, debug)</argsstring>
        <name>insert_offline_main</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>ALE_CSp</type>
          <defname>ALE_CSp</defname>
        </param>
        <param>
          <type>diabatic_CSp</type>
          <defname>diabatic_CSp</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>OBC</type>
          <defname>OBC</defname>
        </param>
        <param>
          <type>tracer_adv_CSp</type>
          <defname>tracer_adv_CSp</defname>
        </param>
        <param>
          <type>tracer_flow_CSp</type>
          <defname>tracer_flow_CSp</defname>
        </param>
        <param>
          <type>tracer_Reg</type>
          <defname>tracer_Reg</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>x_before_y</type>
          <defname>x_before_y</defname>
        </param>
        <param>
          <type>debug</type>
          <defname>debug</defname>
        </param>
        <briefdescription>
<para>Inserts (assigns values to) members of the offline main control structure. All arguments are optional except for the CS itself. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Offline control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ale_csp</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the ALE control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diabatic_csp</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the diabatic control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the structure that regulates diagnostic output </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">obc</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the open boundary condition control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tracer_adv_csp</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the tracer advection control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tracer_flow_csp</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the tracer flow control control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tracer_reg</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to the tracer registry </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure pointing to various thermodynamic variables </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">x_before_y</parametername>
</parameternamelist>
<parameterdescription>
<para>Indicates which horizontal direction is advected first </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">debug</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, write verbose debugging messages </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1244" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1246" bodyend="1284"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1ae68ac2570f0623013b09714d467ef857" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_transport_init</definition>
        <argsstring>(param_file, CS, diabatic_CSp, G, GV, US)</argsstring>
        <name>offline_transport_init</name>
        <param>
          <type>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>diabatic_CSp</type>
          <defname>diabatic_CSp</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>
        <briefdescription>
<para>Initializes the control structure for offline transport and reads in some of the. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><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>Offline control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diabatic_csp</parametername>
</parameternamelist>
<parameterdescription>
<para>The diabatic control structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1289" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1290" bodyend="1460"/>
        <references refid="namespacemom__error__handler_1a9cda07a87815f0e5594066162b4345c3" compoundref="MOM__error__handler_8F90" startline="130" endline="146">mom_error_handler::calltree_enter</references>
        <references refid="namespacemom__error__handler_1a88ea67781e2ed9b73ab7eac8ea5e8578" compoundref="MOM__error__handler_8F90" startline="151" endline="156">mom_error_handler::calltree_leave</references>
        <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__offline__main_1abc6fd7e877d8e70014cbad2d4e3f11c5" compoundref="MOM__offline__main_8F90" startline="1466" endline="1501">read_all_input</references>
        <references refid="namespacemom__time__manager_1ae2d8736d03ab62310f32ddf01e44a961" compoundref="MOM__time__manager_8F90" startline="47" endline="60">mom_time_manager::real_to_time</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1abc6fd7e877d8e70014cbad2d4e3f11c5" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_offline_main::read_all_input</definition>
        <argsstring>(CS)</argsstring>
        <name>read_all_input</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Coordinates the allocation and reading in all time levels of uh, vh, hend, temp, and salt from files. Used when read_all_ts_uvh. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure for offline module </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1465" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1466" bodyend="1501"/>
        <referencedby refid="namespacemom__offline__main_1ae68ac2570f0623013b09714d467ef857" compoundref="MOM__offline__main_8F90" startline="1290" endline="1460">offline_transport_init</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__offline__main_1a853e9fbade83984621d26f51c1a2d651" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_offline_main::offline_transport_end</definition>
        <argsstring>(CS)</argsstring>
        <name>offline_transport_end</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Deallocates (if necessary) arrays within the offline control structure. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Control structure for offline module </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="1505" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" bodystart="1506" bodyend="1527"/>
        <referencedby refid="namespacemom_1ae6dad976fb4be1c7ba7fc1aff809616b" compoundref="MOM_8F90" startline="3486" endline="3525">mom::mom_end</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>The routines here implement the offline tracer algorithm used in MOM6. These are called from step_offline Some routines called here can be found in the MOM_offline_aux module. </para>
    </briefdescription>
    <detaileddescription>
<sect1 id="namespacemom__offline__main_1offline_overview">
<title>Offline Tracer Transport in MOM6</title>
<para>&apos;Offline tracer modeling&apos; uses physical fields (e.g. mass transports and layer thicknesses) saved from a previous integration of the physical model to transport passive tracers. These fields are accumulated or averaged over a period of time (in this test case, 1 day) and used to integrate portions of the MOM6 code base that handle the 3d advection and diffusion of passive tracers.</para>
<para>The distribution of tracers in the ocean modeled offline should not be expected to match an online simulation. Accumulating transports over more than one online model timestep implicitly assumes homogeneity over that time period and essentially aliases over processes that occur with higher frequency. For example, consider the case of a surface boundary layer with a strong diurnal cycle. An offline simulation with a 1 day timestep, captures the net transport into or out of that layer, but not the exact cycling. This effective aliasing may also complicate online model configurations which strongly-eddying regions. In this case, the offline model timestep must be limited to some fraction of the eddy correlation timescale. Lastly, the nonlinear advection scheme which applies limited mass-transports over a sequence of iterations means that tracers are not transported along exactly the same path as they are in the online model.</para>
<para>This capability has currently targeted the Baltic_ALE_z test case, though some work has also been done with the OM4 1/2 degree configuration. Work is ongoing to develop recommendations and best practices for investigators seeking to use MOM6 for offline tracer modeling.</para>
</sect1>
<sect1 id="namespacemom__offline__main_1offline_technical">
<title>Implementation of offline routine in MOM6</title>
<para>The subroutine step_tracers that coordinates this can be found in <ref refid="MOM_8F90" kindref="compound">MOM.F90</ref> and is only called using the solo ocean driver. This is to avoid issues with coupling to other climate components that may be relying on fluxes from the ocean to be coupled more often than the offline time step. Other routines related to offline tracer modeling can be found in tracers/MOM_offline_control.F90</para>
<para>As can also be seen in the comments for the step_tracers subroutine, an offline time step comprises the following steps:<orderedlist>
<listitem><para>Using the layer thicknesses and tracer concentrations from the previous timestep, half of the accumulated vertical mixing (eatr and ebtr) is applied in the call to tracer_column_fns. For tracers whose source/sink terms need dt, this value is set to 1/2 dt_offline</para>
</listitem><listitem><para>Half of the accumulated surface freshwater fluxes are applied START ITERATION</para>
</listitem><listitem><para>Accumulated mass fluxes are used to do horizontal transport. The number of iterations used in advect_tracer is limited to 2 (e.g x-&gt;y-&gt;x-&gt;y). The remaining mass fluxes are stored for later use and resulting layer thicknesses fed into the next step</para>
</listitem><listitem><para>Tracers and the h-grid are regridded and remapped in a call to ALE. This allows for layers which might &apos;vanish&apos; because of horizontal mass transport to be &apos;reinflated&apos; and essentially allows for the vertical transport of tracers</para>
</listitem><listitem><para>Check that transport is done if the remaining mass fluxes equals 0 or if the max number of iterations has been reached END ITERATION</para>
</listitem><listitem><para>Repeat steps 1 and 2</para>
</listitem><listitem><para>Redistribute any residual mass fluxes that remain after the advection iterations in a barotropic manner, progressively upward through the water column.</para>
</listitem><listitem><para>Force a remapping to the stored layer thicknesses that correspond to the snapshot of the online model at the end of an accumulation interval</para>
</listitem><listitem><para>Reset T/S and h to their stored snapshotted values to prevent model drift</para>
</listitem></orderedlist>
</para>
</sect1>
<sect1 id="namespacemom__offline__main_1offline_evaluation">
<title>Evaluating the utility of an offline tracer model</title>
<para>How well an offline tracer model can be used as an alternative to integrating tracers online with the prognostic model must be evaluated for each application. This efficacy may be related to the native coordinate of the online model, to the length of the offline timestep, and to the behavior of the tracer itself.</para>
<para>A framework for formally regression testing the offline capability still needs to be developed. However, as a simple way of testing whether the offline model is nominally behaving as expected, the total inventory of the advection test tracers (tr1, tr2, etc.) should be conserved between time steps except for the last 4 decimal places. As a general guideline, an offline timestep of 5 days or less.</para>
</sect1>
<sect1 id="namespacemom__offline__main_1offline_parameters">
<title>Runtime parameters for offline tracers</title>
<para><itemizedlist>
<listitem><para>OFFLINEDIR: Input directory where the offline fields can be found</para>
</listitem><listitem><para>OFF_SUM_FILE: Filename where the accumulated fields can be found (e.g. horizontal mass transports)</para>
</listitem><listitem><para>OFF_SNAP_FILE: Filename where snapshot fields can be found (e.g. end of timestep layer thickness)</para>
</listitem><listitem><para>START_INDEX: Which timelevel of the input files to read first</para>
</listitem><listitem><para>NUMTIME: How many timelevels to read before &apos;looping&apos; back to 1</para>
</listitem><listitem><para>FIELDS_ARE_OFFSET: True if the time-averaged fields and snapshot fields are offset by one time level, probably not needed -NUM_OFF_ITER: Maximum number of iterations to do for the nonlinear advection scheme -REDISTRIBUTE_METHOD: Redistributes any remaining horizontal fluxes throughout the rest of water column. Options are &apos;barotropic&apos; which "evenly distributes flux throughout the entire water column,&apos;upwards&apos; which adds the maximum of the remaining flux in each layer above, and &apos;none&apos; which does no redistribution" </para>
</listitem></itemizedlist>
</para>
</sect1>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/tracer/MOM_offline_main.F90" line="3" column="1"/>
  </compounddef>
</doxygen>
