<?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.19" xml:lang="en-US">
  <compounddef id="namespacemom__forcing__type" kind="namespace" language="Fortran">
    <compoundname>mom_forcing_type</compoundname>
    <innerclass refid="interfacemom__forcing__type_1_1allocate__forcing__type" prot="private">mom_forcing_type::allocate_forcing_type</innerclass>
    <innerclass refid="interfacemom__forcing__type_1_1allocate__mech__forcing" prot="private">mom_forcing_type::allocate_mech_forcing</innerclass>
    <innerclass refid="structmom__forcing__type_1_1forcing" prot="public">mom_forcing_type::forcing</innerclass>
    <innerclass refid="structmom__forcing__type_1_1forcing__diags" prot="public">mom_forcing_type::forcing_diags</innerclass>
    <innerclass refid="structmom__forcing__type_1_1mech__forcing" prot="public">mom_forcing_type::mech_forcing</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__forcing__type_1a6bf986155aba959222a117ca40ba7e0d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::extractfluxes1d</definition>
        <argsstring>(G, GV, US, fluxes, optics, nsw, j, dt, FluxRescaleDepth, useRiverHeatContent, useCalvingHeatContent, h, T, netMassInOut, netMassOut, net_heat, net_salt, pen_SW_bnd, tv, aggregate_FW, nonpenSW, netmassInOut_rate, net_Heat_Rate, net_salt_rate, pen_sw_bnd_Rate, skip_diags)</argsstring>
        <name>extractfluxes1d</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>optics</type>
          <defname>optics</defname>
        </param>
        <param>
          <type>nsw</type>
          <defname>nsw</defname>
        </param>
        <param>
          <type>j</type>
          <defname>j</defname>
        </param>
        <param>
          <type>dt</type>
          <defname>dt</defname>
        </param>
        <param>
          <type>FluxRescaleDepth</type>
          <defname>FluxRescaleDepth</defname>
        </param>
        <param>
          <type>useRiverHeatContent</type>
          <defname>useRiverHeatContent</defname>
        </param>
        <param>
          <type>useCalvingHeatContent</type>
          <defname>useCalvingHeatContent</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>T</type>
          <defname>T</defname>
        </param>
        <param>
          <type>netMassInOut</type>
          <defname>netMassInOut</defname>
        </param>
        <param>
          <type>netMassOut</type>
          <defname>netMassOut</defname>
        </param>
        <param>
          <type>net_heat</type>
          <defname>net_heat</defname>
        </param>
        <param>
          <type>net_salt</type>
          <defname>net_salt</defname>
        </param>
        <param>
          <type>pen_SW_bnd</type>
          <defname>pen_SW_bnd</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>aggregate_FW</type>
          <defname>aggregate_FW</defname>
        </param>
        <param>
          <type>nonpenSW</type>
          <defname>nonpenSW</defname>
        </param>
        <param>
          <type>netmassInOut_rate</type>
          <defname>netmassInOut_rate</defname>
        </param>
        <param>
          <type>net_Heat_Rate</type>
          <defname>net_Heat_Rate</defname>
        </param>
        <param>
          <type>net_salt_rate</type>
          <defname>net_salt_rate</defname>
        </param>
        <param>
          <type>pen_sw_bnd_Rate</type>
          <defname>pen_sw_bnd_Rate</defname>
        </param>
        <param>
          <type>skip_diags</type>
          <defname>skip_diags</defname>
        </param>
        <briefdescription>
<para>This subroutine extracts fluxes from the surface fluxes type. It works on a j-row for optimization purposes. The 2d (i,j) wrapper is the next subroutine below. This routine multiplies fluxes by dt, so that the result is an accumulation of fluxes over a time step. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>structure containing pointers to possible forcing fields. NULL unused fields. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>optics</parametername>
</parameternamelist>
<parameterdescription>
<para>pointer to optics </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nsw</parametername>
</parameternamelist>
<parameterdescription>
<para>number of bands of penetrating SW </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>j-index to work on </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dt</parametername>
</parameternamelist>
<parameterdescription>
<para>The time step for these fluxes [T ~&gt; s] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">fluxrescaledepth</parametername>
</parameternamelist>
<parameterdescription>
<para>min ocean depth before fluxes are scaled away [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">useriverheatcontent</parametername>
</parameternamelist>
<parameterdescription>
<para>logical for river heat content </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">usecalvingheatcontent</parametername>
</parameternamelist>
<parameterdescription>
<para>logical for calving heat content </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t</parametername>
</parameternamelist>
<parameterdescription>
<para>layer temperatures [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">netmassinout</parametername>
</parameternamelist>
<parameterdescription>
<para>net mass flux (non-Bouss) or volume flux (if Bouss) of water in/out of ocean over a time step [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">netmassout</parametername>
</parameternamelist>
<parameterdescription>
<para>net mass flux (non-Bouss) or volume flux (if Bouss) of water leaving ocean surface over a time step [H ~&gt; m or kg m-2]. netMassOut &lt; 0 means mass leaves ocean. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">net_heat</parametername>
</parameternamelist>
<parameterdescription>
<para>net heat at the surface accumulated over a time step for coupler + restoring. Exclude two terms from net_heat: (1) downwelling (penetrative) SW, (2) evaporation heat content, (since do not yet know evap temperature). [degC H ~&gt; degC m or degC kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">net_salt</parametername>
</parameternamelist>
<parameterdescription>
<para>surface salt flux into the ocean accumulated over a time step [ppt H ~&gt; ppt m or ppt kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">pen_sw_bnd</parametername>
</parameternamelist>
<parameterdescription>
<para>penetrating SW flux, split into bands. [degC H ~&gt; degC m or degC kg m-2] and array size nsw x G isd: G ied, where nsw=number of SW bands in pen_SW_bnd. This heat flux is not part of net_heat. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>structure containing pointers to available thermodynamic fields. Used to keep track of the heat flux associated with net mass fluxes into the ocean. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">aggregate_fw</parametername>
</parameternamelist>
<parameterdescription>
<para>For determining how to aggregate forcing. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">nonpensw</parametername>
</parameternamelist>
<parameterdescription>
<para>Non-penetrating SW used in net_heat </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">net_heat_rate</parametername>
</parameternamelist>
<parameterdescription>
<para>Rate of net surface heating </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">net_salt_rate</parametername>
</parameternamelist>
<parameterdescription>
<para>Surface salt flux into the ocean </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">netmassinout_rate</parametername>
</parameternamelist>
<parameterdescription>
<para>Rate of net mass flux into the ocean </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">pen_sw_bnd_rate</parametername>
</parameternamelist>
<parameterdescription>
<para>Rate of penetrative shortwave heating </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skip_diags</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, skip calculating diagnostics </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="360" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="365" bodyend="819"/>
        <references refid="namespacemom__opacity_1a4c1942f798619a9ad854d1152ebcab63" compoundref="MOM__opacity_8F90" startline="446" endline="479">mom_opacity::extract_optics_slice</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__opacity_1a349c6934f113d238e4e2ef229b931a0c" compoundref="MOM__opacity_8F90" startline="494" endline="498">mom_opacity::optics_nbands</references>
        <referencedby refid="namespacemom__diabatic__aux_1ae7a279c765fa370c302532c13a1adaca" compoundref="MOM__diabatic__aux_8F90" startline="932" endline="1476">mom_diabatic_aux::applyboundaryfluxesinout</referencedby>
        <referencedby refid="namespacemom__bulk__mixed__layer_1ad6b69cad68bd88aa1deee0481fd3cc59" compoundref="MOM__bulk__mixed__layer_8F90" startline="190" endline="798">mom_bulk_mixed_layer::bulkmixedlayer</referencedby>
        <referencedby refid="namespacemom__forcing__type_1a406a512f0d5b45c873fa91110ca7c387" compoundref="MOM__forcing__type_8F90" startline="889" endline="978">calculatebuoyancyflux1d</referencedby>
        <referencedby refid="namespacemom__forcing__type_1abb28aefef337fc656fd719eaff7a3b60" compoundref="MOM__forcing__type_8F90" startline="830" endline="879">extractfluxes2d</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1abb28aefef337fc656fd719eaff7a3b60" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::extractfluxes2d</definition>
        <argsstring>(G, GV, US, fluxes, optics, nsw, dt, FluxRescaleDepth, useRiverHeatContent, useCalvingHeatContent, h, T, netMassInOut, netMassOut, net_heat, Net_salt, Pen_SW_bnd, tv, aggregate_FW)</argsstring>
        <name>extractfluxes2d</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>optics</type>
          <defname>optics</defname>
        </param>
        <param>
          <type>nsw</type>
          <defname>nsw</defname>
        </param>
        <param>
          <type>dt</type>
          <defname>dt</defname>
        </param>
        <param>
          <type>FluxRescaleDepth</type>
          <defname>FluxRescaleDepth</defname>
        </param>
        <param>
          <type>useRiverHeatContent</type>
          <defname>useRiverHeatContent</defname>
        </param>
        <param>
          <type>useCalvingHeatContent</type>
          <defname>useCalvingHeatContent</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>T</type>
          <defname>T</defname>
        </param>
        <param>
          <type>netMassInOut</type>
          <defname>netMassInOut</defname>
        </param>
        <param>
          <type>netMassOut</type>
          <defname>netMassOut</defname>
        </param>
        <param>
          <type>net_heat</type>
          <defname>net_heat</defname>
        </param>
        <param>
          <type>Net_salt</type>
          <defname>Net_salt</defname>
        </param>
        <param>
          <type>Pen_SW_bnd</type>
          <defname>Pen_SW_bnd</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>aggregate_FW</type>
          <defname>aggregate_FW</defname>
        </param>
        <briefdescription>
<para>2d wrapper for 1d extract fluxes from surface fluxes type. This subroutine extracts fluxes from the surface fluxes type. It multiplies the fluxes by dt, so that the result is an accumulation of the fluxes over a time step. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>structure containing pointers to forcing. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>optics</parametername>
</parameternamelist>
<parameterdescription>
<para>pointer to optics </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nsw</parametername>
</parameternamelist>
<parameterdescription>
<para>number of bands of penetrating SW </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dt</parametername>
</parameternamelist>
<parameterdescription>
<para>The time step for these fluxes [T ~&gt; s] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">fluxrescaledepth</parametername>
</parameternamelist>
<parameterdescription>
<para>min ocean depth before fluxes are scaled away [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">useriverheatcontent</parametername>
</parameternamelist>
<parameterdescription>
<para>logical for river heat content </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">usecalvingheatcontent</parametername>
</parameternamelist>
<parameterdescription>
<para>logical for calving heat content </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t</parametername>
</parameternamelist>
<parameterdescription>
<para>layer temperatures [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">netmassinout</parametername>
</parameternamelist>
<parameterdescription>
<para>net mass flux (non-Bouss) or volume flux (if Bouss) of water in/out of ocean over a time step [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">netmassout</parametername>
</parameternamelist>
<parameterdescription>
<para>net mass flux (non-Bouss) or volume flux (if Bouss) of water leaving ocean surface over a time step [H ~&gt; m or kg m-2]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">net_heat</parametername>
</parameternamelist>
<parameterdescription>
<para>net heat at the surface accumulated over a time step associated with coupler + restore. Exclude two terms from net_heat: (1) downwelling (penetrative) SW, (2) evaporation heat content, (since do not yet know temperature of evap). [degC H ~&gt; degC m or degC kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">net_salt</parametername>
</parameternamelist>
<parameterdescription>
<para>surface salt flux into the ocean accumulated over a time step [ppt H ~&gt; ppt m or ppt kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">pen_sw_bnd</parametername>
</parameternamelist>
<parameterdescription>
<para>penetrating SW flux, by frequency band [degC H ~&gt; degC m or degC kg m-2] with array size nsw x G isd: G ied, where nsw=number of SW bands in pen_SW_bnd. This heat flux is not in net_heat. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>structure containing pointers to available thermodynamic fields. Here it is used to keep track of the heat flux associated with net mass fluxes into the ocean. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">aggregate_fw</parametername>
</parameternamelist>
<parameterdescription>
<para>For determining how to aggregate the forcing. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="826" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="830" bodyend="879"/>
        <references refid="namespacemom__forcing__type_1a6bf986155aba959222a117ca40ba7e0d" compoundref="MOM__forcing__type_8F90" startline="365" endline="819">extractfluxes1d</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a406a512f0d5b45c873fa91110ca7c387" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::calculatebuoyancyflux1d</definition>
        <argsstring>(G, GV, US, fluxes, optics, nsw, h, Temp, Salt, tv, j, buoyancyFlux, netHeatMinusSW, netSalt, skip_diags)</argsstring>
        <name>calculatebuoyancyflux1d</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>optics</type>
          <defname>optics</defname>
        </param>
        <param>
          <type>nsw</type>
          <defname>nsw</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>Temp</type>
          <defname>Temp</defname>
        </param>
        <param>
          <type>Salt</type>
          <defname>Salt</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>j</type>
          <defname>j</defname>
        </param>
        <param>
          <type>buoyancyFlux</type>
          <defname>buoyancyFlux</defname>
        </param>
        <param>
          <type>netHeatMinusSW</type>
          <defname>netHeatMinusSW</defname>
        </param>
        <param>
          <type>netSalt</type>
          <defname>netSalt</defname>
        </param>
        <param>
          <type>skip_diags</type>
          <defname>skip_diags</defname>
        </param>
        <briefdescription>
<para>This routine calculates surface buoyancy flux by adding up the heat, FW &amp; salt fluxes. These are actual fluxes, with units of stuff per time. Setting dt=1 in the call to extractFluxes routine allows us to get &quot;stuf per time&quot; rather than the time integrated fluxes needed in other routines that call extractFluxes. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean grid </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>surface fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>optics</parametername>
</parameternamelist>
<parameterdescription>
<para>penetrating SW optics </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nsw</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of frequency bands of penetrating shortwave radiation </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">temp</parametername>
</parameternamelist>
<parameterdescription>
<para>prognostic temp [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">salt</parametername>
</parameternamelist>
<parameterdescription>
<para>salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>thermodynamics type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>j-row to work on </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">buoyancyflux</parametername>
</parameternamelist>
<parameterdescription>
<para>buoyancy fluxes [L2 T-3 ~&gt; m2 s-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">netheatminussw</parametername>
</parameternamelist>
<parameterdescription>
<para>surf Heat flux [degC H s-1 ~&gt; degC m s-1 or degC kg m-2 s-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">netsalt</parametername>
</parameternamelist>
<parameterdescription>
<para>surf salt flux [ppt H s-1 ~&gt; ppt m s-1 or ppt kg m-2 s-1] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skip_diags</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, skip calculating diagnostics inside extractFluxes1d() </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="887" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="889" bodyend="978"/>
        <references refid="namespacemom__eos_1a782d326108e390902e520efc078e8296" compoundref="MOM__EOS_8F90" startline="1163" endline="1175">mom_eos::eos_domain</references>
        <references refid="namespacemom__forcing__type_1a6bf986155aba959222a117ca40ba7e0d" compoundref="MOM__forcing__type_8F90" startline="365" endline="819">extractfluxes1d</references>
        <references refid="namespacemom__opacity_1a349c6934f113d238e4e2ef229b931a0c" compoundref="MOM__opacity_8F90" startline="494" endline="498">mom_opacity::optics_nbands</references>
        <references refid="namespacemom__opacity_1ad27db4bd0d010d98a3f5a54902c7a05e" compoundref="MOM__opacity_8F90" startline="781" endline="913">mom_opacity::sumswoverbands</references>
        <referencedby refid="namespacemom__forcing__type_1ae84373c4a259bd04330ec673af0fa536" compoundref="MOM__forcing__type_8F90" startline="986" endline="1016">calculatebuoyancyflux2d</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1ae84373c4a259bd04330ec673af0fa536" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::calculatebuoyancyflux2d</definition>
        <argsstring>(G, GV, US, fluxes, optics, h, Temp, Salt, tv, buoyancyFlux, netHeatMinusSW, netSalt, skip_diags)</argsstring>
        <name>calculatebuoyancyflux2d</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>optics</type>
          <defname>optics</defname>
        </param>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>Temp</type>
          <defname>Temp</defname>
        </param>
        <param>
          <type>Salt</type>
          <defname>Salt</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>buoyancyFlux</type>
          <defname>buoyancyFlux</defname>
        </param>
        <param>
          <type>netHeatMinusSW</type>
          <defname>netHeatMinusSW</defname>
        </param>
        <param>
          <type>netSalt</type>
          <defname>netSalt</defname>
        </param>
        <param>
          <type>skip_diags</type>
          <defname>skip_diags</defname>
        </param>
        <briefdescription>
<para>Calculates surface buoyancy flux by adding up the heat, FW and salt fluxes, for 2d arrays. This is a wrapper for calculateBuoyancyFlux1d. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean grid </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>ocean vertical grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>surface fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>optics</parametername>
</parameternamelist>
<parameterdescription>
<para>SW ocean optics </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">h</parametername>
</parameternamelist>
<parameterdescription>
<para>layer thickness [H ~&gt; m or kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">temp</parametername>
</parameternamelist>
<parameterdescription>
<para>temperature [degC] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">salt</parametername>
</parameternamelist>
<parameterdescription>
<para>salinity [ppt] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>thermodynamics type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">buoyancyflux</parametername>
</parameternamelist>
<parameterdescription>
<para>buoyancy fluxes [L2 T-3 ~&gt; m2 s-3] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">netheatminussw</parametername>
</parameternamelist>
<parameterdescription>
<para>surf temp flux [degC H ~&gt; degC m or degC kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">netsalt</parametername>
</parameternamelist>
<parameterdescription>
<para>surf salt flux [ppt H ~&gt; ppt m or ppt kg m-2] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skip_diags</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, skip calculating diagnostics inside extractFluxes1d() </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="984" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="986" bodyend="1016"/>
        <references refid="namespacemom__forcing__type_1a406a512f0d5b45c873fa91110ca7c387" compoundref="MOM__forcing__type_8F90" startline="889" endline="978">calculatebuoyancyflux1d</references>
        <references refid="namespacemom__opacity_1a349c6934f113d238e4e2ef229b931a0c" compoundref="MOM__opacity_8F90" startline="494" endline="498">mom_opacity::optics_nbands</references>
        <referencedby refid="namespacemom__diabatic__driver_1ae57c48925de75712384e859a851c8c40" compoundref="MOM__diabatic__driver_8F90" startline="1173" endline="1848">mom_diabatic_driver::diabatic_ale</referencedby>
        <referencedby refid="namespacemom__diabatic__driver_1acf7394d08f436dd9575b568d1f18e18a" compoundref="MOM__diabatic__driver_8F90" startline="453" endline="1165">mom_diabatic_driver::diabatic_ale_legacy</referencedby>
        <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__forcing__type_1a1c4ecd1a779a55e9304b0997088a4815" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::mom_forcing_chksum</definition>
        <argsstring>(mesg, fluxes, G, US, haloshift)</argsstring>
        <name>mom_forcing_chksum</name>
        <param>
          <type>mesg</type>
          <defname>mesg</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>haloshift</type>
          <defname>haloshift</defname>
        </param>
        <briefdescription>
<para>Write out chksums for thermodynamic fluxes. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">mesg</parametername>
</parameternamelist>
<parameterdescription>
<para>message </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>grid type </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">haloshift</parametername>
</parameternamelist>
<parameterdescription>
<para>shift in halo </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1021" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1022" bodyend="1111"/>
        <referencedby refid="MOM__driver_8F90_1a08fffeb2d8e8acbf9ed4609be6d258c6" compoundref="MOM__driver_8F90" startline="1">mom_main</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1afe942ca75b30c226fdfcdedcecad920f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::mom_mech_forcing_chksum</definition>
        <argsstring>(mesg, forces, G, US, haloshift)</argsstring>
        <name>mom_mech_forcing_chksum</name>
        <param>
          <type>mesg</type>
          <defname>mesg</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>haloshift</type>
          <defname>haloshift</defname>
        </param>
        <briefdescription>
<para>Write out chksums for the driving mechanical forces. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">mesg</parametername>
</parameternamelist>
<parameterdescription>
<para>message </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>grid type </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">haloshift</parametername>
</parameternamelist>
<parameterdescription>
<para>shift in halo </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1115" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1116" bodyend="1140"/>
        <referencedby refid="MOM__driver_8F90_1a08fffeb2d8e8acbf9ed4609be6d258c6" compoundref="MOM__driver_8F90" startline="1">mom_main</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a2e3834f8d25c92142d450de74fa68f91" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::mech_forcing_singlepointprint</definition>
        <argsstring>(forces, G, i, j, mesg)</argsstring>
        <name>mech_forcing_singlepointprint</name>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>i</type>
          <defname>i</defname>
        </param>
        <param>
          <type>j</type>
          <defname>j</defname>
        </param>
        <param>
          <type>mesg</type>
          <defname>mesg</defname>
        </param>
        <briefdescription>
<para>Write out values of the mechanical forcing arrays at the i,j location. This is a debugging tool. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">mesg</parametername>
</parameternamelist>
<parameterdescription>
<para>Message </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i</parametername>
</parameternamelist>
<parameterdescription>
<para>i-index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>j-index </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1144" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1145" bodyend="1168"/>
        <references refid="MOM__forcing__type_8F90_1a44866f115b527c8a90369632eb0b6eda" compoundref="MOM__forcing__type_8F90" startline="1159" endline="1166">locmsg</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a1048a8e80ebd47f83b91772c02aedba2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::forcing_singlepointprint</definition>
        <argsstring>(fluxes, G, i, j, mesg)</argsstring>
        <name>forcing_singlepointprint</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>i</type>
          <defname>i</defname>
        </param>
        <param>
          <type>j</type>
          <defname>j</defname>
        </param>
        <param>
          <type>mesg</type>
          <defname>mesg</defname>
        </param>
        <briefdescription>
<para>Write out values of the fluxes arrays at the i,j location. This is a debugging tool. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">mesg</parametername>
</parameternamelist>
<parameterdescription>
<para>Message </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i</parametername>
</parameternamelist>
<parameterdescription>
<para>i-index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>j-index </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1172" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1173" bodyend="1227"/>
        <references refid="MOM__forcing__type_8F90_1a44866f115b527c8a90369632eb0b6eda" compoundref="MOM__forcing__type_8F90" startline="1159" endline="1166">locmsg</references>
        <referencedby refid="namespacemom__diabatic__aux_1ae7a279c765fa370c302532c13a1adaca" compoundref="MOM__diabatic__aux_8F90" startline="932" endline="1476">mom_diabatic_aux::applyboundaryfluxesinout</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1ad4a8e0b876c8082f77352a25a56b86e9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::register_forcing_type_diags</definition>
        <argsstring>(Time, diag, US, use_temperature, handles, use_berg_fluxes)</argsstring>
        <name>register_forcing_type_diags</name>
        <param>
          <type>Time</type>
          <defname>Time</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>use_temperature</type>
          <defname>use_temperature</defname>
        </param>
        <param>
          <type>handles</type>
          <defname>handles</defname>
        </param>
        <param>
          <type>use_berg_fluxes</type>
          <defname>use_berg_fluxes</defname>
        </param>
        <briefdescription>
<para>Register members of the forcing type for diagnostics. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">time</parametername>
</parameternamelist>
<parameterdescription>
<para>time type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>diagnostic control type </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">use_temperature</parametername>
</parameternamelist>
<parameterdescription>
<para>True if T/S are in use </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">handles</parametername>
</parameternamelist>
<parameterdescription>
<para>handles for diagnostics </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">use_berg_fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, allow iceberg flux diagnostics </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1232" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1233" bodyend="1889"/>
        <references refid="namespacemom__cpu__clock_1a7fda795074ed5ec5b00a26e7531c14f3" compoundref="MOM__cpu__clock_8F90" startline="23" endline="39">mom_cpu_clock::cpu_clock_id</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1aab6d8e5da1aafc8a73875e2de61822f9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::forcing_accumulate</definition>
        <argsstring>(flux_tmp, forces, fluxes, G, wt2)</argsstring>
        <name>forcing_accumulate</name>
        <param>
          <type>flux_tmp</type>
          <defname>flux_tmp</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>wt2</type>
          <defname>wt2</defname>
        </param>
        <briefdescription>
<para>Accumulate the forcing over time steps, taking input from a mechanical forcing type and a temporary forcing-flux type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">flux_tmp</parametername>
</parameternamelist>
<parameterdescription>
<para>A temporary structure with current thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing time-averaged thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">wt2</parametername>
</parameternamelist>
<parameterdescription>
<para>The relative weight of the new fluxes </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1894" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1895" bodyend="1909"/>
        <references refid="namespacemom__forcing__type_1a839c0241813c94b40b6861e2ad8bdc91" compoundref="MOM__forcing__type_8F90" startline="1914" endline="2055">fluxes_accumulate</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a839c0241813c94b40b6861e2ad8bdc91" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::fluxes_accumulate</definition>
        <argsstring>(flux_tmp, fluxes, G, wt2, forces)</argsstring>
        <name>fluxes_accumulate</name>
        <param>
          <type>flux_tmp</type>
          <defname>flux_tmp</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>wt2</type>
          <defname>wt2</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <briefdescription>
<para>Accumulate the thermodynamic fluxes over time steps. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">flux_tmp</parametername>
</parameternamelist>
<parameterdescription>
<para>A temporary structure with current thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing time-averaged thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">wt2</parametername>
</parameternamelist>
<parameterdescription>
<para>The relative weight of the new fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="1913" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="1914" bodyend="2055"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <referencedby refid="namespacemom__forcing__type_1aab6d8e5da1aafc8a73875e2de61822f9" compoundref="MOM__forcing__type_8F90" startline="1895" endline="1909">forcing_accumulate</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a44ade8a584921047fcf960f4cdb9914c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::copy_common_forcing_fields</definition>
        <argsstring>(forces, fluxes, G, skip_pres)</argsstring>
        <name>copy_common_forcing_fields</name>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>skip_pres</type>
          <defname>skip_pres</defname>
        </param>
        <briefdescription>
<para>This subroutine copies the computational domains of common forcing fields from a <ref refid="structmom__forcing__type_1_1mech__forcing" kindref="compound">mech_forcing</ref> type to a (thermodynamic) forcing type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">skip_pres</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, do not copy pressure fields. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2060" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2061" bodyend="2097"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a1e4c747c49b67bb20b322c7b807de036" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::set_derived_forcing_fields</definition>
        <argsstring>(forces, fluxes, G, US, Rho0)</argsstring>
        <name>set_derived_forcing_fields</name>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>Rho0</type>
          <defname>Rho0</defname>
        </param>
        <briefdescription>
<para>This subroutine calculates certain derived forcing fields based on information from a <ref refid="structmom__forcing__type_1_1mech__forcing" kindref="compound">mech_forcing</ref> type and stores them in a (thermodynamic) forcing type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>grid type </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">rho0</parametername>
</parameternamelist>
<parameterdescription>
<para>A reference density of seawater [R ~&gt; kg m-3], as used to calculate ustar. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2102" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2103" bodyend="2139"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a9ee72ee836f7326d0957a4094d8f0231" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::set_net_mass_forcing</definition>
        <argsstring>(fluxes, forces, G, US)</argsstring>
        <name>set_net_mass_forcing</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <briefdescription>
<para>This subroutine determines the net mass source to the ocean from a (thermodynamic) forcing type and stores it in a <ref refid="structmom__forcing__type_1_1mech__forcing" kindref="compound">mech_forcing</ref> type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </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">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean grid type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2145" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2146" bodyend="2153"/>
        <references refid="namespacemom__forcing__type_1a67f6972e0e0dd6c0b6b4bbea9ff6b5ef" compoundref="MOM__forcing__type_8F90" startline="2159" endline="2193">get_net_mass_forcing</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a67f6972e0e0dd6c0b6b4bbea9ff6b5ef" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::get_net_mass_forcing</definition>
        <argsstring>(fluxes, G, US, net_mass_src)</argsstring>
        <name>get_net_mass_forcing</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>net_mass_src</type>
          <defname>net_mass_src</defname>
        </param>
        <briefdescription>
<para>This subroutine calculates determines the net mass source to the ocean from a (thermodynamic) forcing type and stores it in a provided array. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean grid type </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="out">net_mass_src</parametername>
</parameternamelist>
<parameterdescription>
<para>The net mass flux of water into the ocean [kg m-2 s-1]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2158" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2159" bodyend="2193"/>
        <referencedby refid="namespacemom__forcing__type_1a9ee72ee836f7326d0957a4094d8f0231" compoundref="MOM__forcing__type_8F90" startline="2146" endline="2153">set_net_mass_forcing</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1aa8ee4e3dace6d294ceb8bfe445dead1b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::copy_back_forcing_fields</definition>
        <argsstring>(fluxes, forces, G)</argsstring>
        <name>copy_back_forcing_fields</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <briefdescription>
<para>This subroutine copies the computational domains of common forcing fields from a <ref refid="structmom__forcing__type_1_1mech__forcing" kindref="compound">mech_forcing</ref> type to a (thermodynamic) forcing type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure with the driving mechanical forces </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>grid type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2198" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2199" bodyend="2211"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a014d07725581af8ede287ea2a2322259" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::mech_forcing_diags</definition>
        <argsstring>(forces_in, dt, G, time_end, diag, handles)</argsstring>
        <name>mech_forcing_diags</name>
        <param>
          <type>forces_in</type>
          <defname>forces_in</defname>
        </param>
        <param>
          <type>dt</type>
          <defname>dt</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>time_end</type>
          <defname>time_end</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>handles</type>
          <defname>handles</defname>
        </param>
        <briefdescription>
<para>Offer mechanical forcing fields for diagnostics for those fields registered as part of register_forcing_type_diags. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces_in</parametername>
</parameternamelist>
<parameterdescription>
<para>mechanical forcing input fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dt</parametername>
</parameternamelist>
<parameterdescription>
<para>time step for the forcing [s] </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">time_end</parametername>
</parameternamelist>
<parameterdescription>
<para>The end time of the diagnostic interval. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>diagnostic type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">handles</parametername>
</parameternamelist>
<parameterdescription>
<para>diagnostic id for diag_manager </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2216" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2217" bodyend="2267"/>
        <references refid="namespacemom__forcing__type_1aaadc0cd523729cb059cb62a2a224970b" compoundref="MOM__forcing__type_8F90" startline="3167" endline="3181">deallocate_mech_forcing</references>
        <references refid="namespacemom__diag__mediator_1a1761df399ba39742e34ab989469da0f2" compoundref="MOM__diag__mediator_8F90" startline="1906" endline="1910">mom_diag_mediator::disable_averaging</references>
        <references refid="namespacemom__diag__mediator_1a91244f765f2964dfb11f8787f65042f1" compoundref="MOM__diag__mediator_8F90" startline="1871" endline="1881">mom_diag_mediator::enable_averaging</references>
        <references refid="namespacemom__forcing__type_1a7b1d8f7fa2ffad01d699febbf042ac74" compoundref="MOM__forcing__type_8F90" startline="3313" endline="3357">rotate_mech_forcing</references>
        <referencedby refid="MOM__driver_8F90_1a08fffeb2d8e8acbf9ed4609be6d258c6" compoundref="MOM__driver_8F90" startline="1">mom_main</referencedby>
        <referencedby refid="namespaceocean__model__mod_1a497d254b44f58fb797b9d75bc006eb60" compoundref="ocean__model__MOM_8F90" startline="424" endline="668">ocean_model_mod::update_ocean_model</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a18fc44b1946351373f626fcc5aabc340" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::forcing_diagnostics</definition>
        <argsstring>(fluxes_in, sfc_state, G_in, US, time_end, diag, handles)</argsstring>
        <name>forcing_diagnostics</name>
        <param>
          <type>fluxes_in</type>
          <defname>fluxes_in</defname>
        </param>
        <param>
          <type>sfc_state</type>
          <defname>sfc_state</defname>
        </param>
        <param>
          <type>G_in</type>
          <defname>G_in</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>time_end</type>
          <defname>time_end</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>handles</type>
          <defname>handles</defname>
        </param>
        <briefdescription>
<para>Offer buoyancy forcing fields for diagnostics for those fields registered as part of register_forcing_type_diags. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes_in</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">sfc_state</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing fields that describe the surface state of the ocean. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Input grid type </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">time_end</parametername>
</parameternamelist>
<parameterdescription>
<para>The end time of the diagnostic interval. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>diagnostic regulator </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">handles</parametername>
</parameternamelist>
<parameterdescription>
<para>diagnostic ids </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2273" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2274" bodyend="2860"/>
        <references refid="namespacemom__forcing__type_1a432b1cbc47ab082b64bf7007a8674973" compoundref="MOM__forcing__type_8F90" startline="3115" endline="3161">deallocate_forcing_type</references>
        <references refid="namespacemom__diag__mediator_1a1761df399ba39742e34ab989469da0f2" compoundref="MOM__diag__mediator_8F90" startline="1906" endline="1910">mom_diag_mediator::disable_averaging</references>
        <references refid="namespacemom__diag__mediator_1ada4d9d69fb0d79a0fe20a307eaf1ca9c" compoundref="MOM__diag__mediator_8F90" startline="1886" endline="1901">mom_diag_mediator::enable_averages</references>
        <references refid="namespacemom__spatial__means_1a25f8ecef035d51fed0f4e97dbf448b63" compoundref="MOM__spatial__means_8F90" startline="53" endline="79">mom_spatial_means::global_area_integral</references>
        <references refid="namespacemom__spatial__means_1a87cad4a44f65c4849de870d15cc3f2a6" compoundref="MOM__spatial__means_8F90" startline="29" endline="47">mom_spatial_means::global_area_mean</references>
        <references refid="namespacemom__forcing__type_1a904033b8a97fed683d795460b555ce9b" compoundref="MOM__forcing__type_8F90" startline="3187" endline="3308">rotate_forcing</references>
        <referencedby refid="MOM__driver_8F90_1a08fffeb2d8e8acbf9ed4609be6d258c6" compoundref="MOM__driver_8F90" startline="1">mom_main</referencedby>
        <referencedby refid="namespaceocean__model__mod_1a497d254b44f58fb797b9d75bc006eb60" compoundref="ocean__model__MOM_8F90" startline="424" endline="668">ocean_model_mod::update_ocean_model</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a392847be3b991a4fdda885dd759d2b78" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::allocate_forcing_by_group</definition>
        <argsstring>(G, fluxes, water, heat, ustar, press, shelf, iceberg, salt, fix_accum_bug)</argsstring>
        <name>allocate_forcing_by_group</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>water</type>
          <defname>water</defname>
        </param>
        <param>
          <type>heat</type>
          <defname>heat</defname>
        </param>
        <param>
          <type>ustar</type>
          <defname>ustar</defname>
        </param>
        <param>
          <type>press</type>
          <defname>press</defname>
        </param>
        <param>
          <type>shelf</type>
          <defname>shelf</defname>
        </param>
        <param>
          <type>iceberg</type>
          <defname>iceberg</defname>
        </param>
        <param>
          <type>salt</type>
          <defname>salt</defname>
        </param>
        <param>
          <type>fix_accum_bug</type>
          <defname>fix_accum_bug</defname>
        </param>
        <briefdescription>
<para>Conditionally allocate fields within the forcing type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing thermodynamic forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">water</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate water fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">heat</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate heat fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ustar</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate ustar and related fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">press</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate p_surf and related fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">shelf</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate fluxes for ice-shelf </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">iceberg</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate fluxes for icebergs </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">salt</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate salt fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">fix_accum_bug</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, avoid using a bug in accumulation of ustar_gustless </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2865" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2867" bodyend="2933"/>
        <references refid="namespacemom__forcing__type_1aa9a495456715378fe3dd5fb2bd21eec8" compoundref="MOM__forcing__type_8F90" startline="3101" endline="3110">myalloc</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a9217574bff645ceeff9e15dc133a6031" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::allocate_forcing_by_ref</definition>
        <argsstring>(fluxes_ref, G, fluxes)</argsstring>
        <name>allocate_forcing_by_ref</name>
        <param>
          <type>fluxes_ref</type>
          <defname>fluxes_ref</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Reference fluxes</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid metric of target fluxes</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Target fluxes </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2937" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2938" bodyend="2981"/>
        <references refid="namespacemom__forcing__type_1a237dc2330bf133bf3365a924d26b0b37" compoundref="MOM__forcing__type_8F90" startline="3046" endline="3071">get_forcing_groups</references>
        <references refid="namespacemom__forcing__type_1aa9a495456715378fe3dd5fb2bd21eec8" compoundref="MOM__forcing__type_8F90" startline="3101" endline="3110">myalloc</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1abd84b619cbabd15a33640be270be71a8" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::allocate_mech_forcing_by_group</definition>
        <argsstring>(G, forces, stress, ustar, shelf, press, iceberg)</argsstring>
        <name>allocate_mech_forcing_by_group</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>stress</type>
          <defname>stress</defname>
        </param>
        <param>
          <type>ustar</type>
          <defname>ustar</defname>
        </param>
        <param>
          <type>shelf</type>
          <defname>shelf</defname>
        </param>
        <param>
          <type>press</type>
          <defname>press</defname>
        </param>
        <param>
          <type>iceberg</type>
          <defname>iceberg</defname>
        </param>
        <briefdescription>
<para>Conditionally allocate fields within the mechanical forcing type using control flags. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Ocean grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>Forcing fields structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">stress</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate taux, tauy </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ustar</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate ustar and related fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">shelf</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate forces for ice-shelf </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">press</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate p_surf and related fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">iceberg</parametername>
</parameternamelist>
<parameterdescription>
<para>If present and true, allocate forces for icebergs </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2987" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="2989" bodyend="3021"/>
        <references refid="namespacemom__forcing__type_1aa9a495456715378fe3dd5fb2bd21eec8" compoundref="MOM__forcing__type_8F90" startline="3101" endline="3110">myalloc</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a8b0e58eae39f6285c6e929922b5874a9" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::allocate_mech_forcing_from_ref</definition>
        <argsstring>(forces_ref, G, forces)</argsstring>
        <name>allocate_mech_forcing_from_ref</name>
        <param>
          <type>forces_ref</type>
          <defname>forces_ref</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <briefdescription>
<para>Conditionally allocate fields within the mechanical forcing type based on a reference forcing. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces_ref</parametername>
</parameternamelist>
<parameterdescription>
<para>Reference forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid metric of target forcing </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>Mechanical forcing fields </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3027" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3028" bodyend="3039"/>
        <references refid="namespacemom__forcing__type_1a2db9d1c071a26c092f662bd30afb2039" compoundref="MOM__forcing__type_8F90" startline="3077" endline="3095">get_mech_forcing_groups</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a237dc2330bf133bf3365a924d26b0b37" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::get_forcing_groups</definition>
        <argsstring>(fluxes, water, heat, ustar, press, shelf, iceberg, salt, heat_added, buoy)</argsstring>
        <name>get_forcing_groups</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>water</type>
          <defname>water</defname>
        </param>
        <param>
          <type>heat</type>
          <defname>heat</defname>
        </param>
        <param>
          <type>ustar</type>
          <defname>ustar</defname>
        </param>
        <param>
          <type>press</type>
          <defname>press</defname>
        </param>
        <param>
          <type>shelf</type>
          <defname>shelf</defname>
        </param>
        <param>
          <type>iceberg</type>
          <defname>iceberg</defname>
        </param>
        <param>
          <type>salt</type>
          <defname>salt</defname>
        </param>
        <param>
          <type>heat_added</type>
          <defname>heat_added</defname>
        </param>
        <param>
          <type>buoy</type>
          <defname>buoy</defname>
        </param>
        <briefdescription>
<para>Return flags indicating which groups of forcings are allocated. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Reference flux fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">water</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains water-based fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">heat</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains heat-based fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">ustar</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains ustar fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">press</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains surface pressure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">shelf</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains ice shelf fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">iceberg</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains iceberg fluxes </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">salt</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains salt flux </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">heat_added</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains explicit heat </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">buoy</parametername>
</parameternamelist>
<parameterdescription>
<para>True if fluxes contains buoyancy fluxes </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3044" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3046" bodyend="3071"/>
        <referencedby refid="namespacemom__forcing__type_1a9217574bff645ceeff9e15dc133a6031" compoundref="MOM__forcing__type_8F90" startline="2938" endline="2981">allocate_forcing_by_ref</referencedby>
        <referencedby refid="namespacemom__forcing__type_1a904033b8a97fed683d795460b555ce9b" compoundref="MOM__forcing__type_8F90" startline="3187" endline="3308">rotate_forcing</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a2db9d1c071a26c092f662bd30afb2039" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::get_mech_forcing_groups</definition>
        <argsstring>(forces, stress, ustar, shelf, press, iceberg)</argsstring>
        <name>get_mech_forcing_groups</name>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <param>
          <type>stress</type>
          <defname>stress</defname>
        </param>
        <param>
          <type>ustar</type>
          <defname>ustar</defname>
        </param>
        <param>
          <type>shelf</type>
          <defname>shelf</defname>
        </param>
        <param>
          <type>press</type>
          <defname>press</defname>
        </param>
        <param>
          <type>iceberg</type>
          <defname>iceberg</defname>
        </param>
        <briefdescription>
<para>Return flags indicating which groups of mechanical forcings are allocated. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>Reference forcing fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">stress</parametername>
</parameternamelist>
<parameterdescription>
<para>True if forces contains wind stress fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">ustar</parametername>
</parameternamelist>
<parameterdescription>
<para>True if forces contains ustar field </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">shelf</parametername>
</parameternamelist>
<parameterdescription>
<para>True if forces contains ice shelf fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">press</parametername>
</parameternamelist>
<parameterdescription>
<para>True if forces contains pressure fields </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">iceberg</parametername>
</parameternamelist>
<parameterdescription>
<para>True if forces contains iceberg fields </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3076" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3077" bodyend="3095"/>
        <referencedby refid="namespacemom__forcing__type_1a8b0e58eae39f6285c6e929922b5874a9" compoundref="MOM__forcing__type_8F90" startline="3028" endline="3039">allocate_mech_forcing_from_ref</referencedby>
        <referencedby refid="namespacemom__forcing__type_1a7b1d8f7fa2ffad01d699febbf042ac74" compoundref="MOM__forcing__type_8F90" startline="3313" endline="3357">rotate_mech_forcing</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1aa9a495456715378fe3dd5fb2bd21eec8" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_forcing_type::myalloc</definition>
        <argsstring>(array, is, ie, js, je, flag)</argsstring>
        <name>myalloc</name>
        <param>
          <type>array</type>
          <defname>array</defname>
        </param>
        <param>
          <type>is</type>
          <defname>is</defname>
        </param>
        <param>
          <type>ie</type>
          <defname>ie</defname>
        </param>
        <param>
          <type>js</type>
          <defname>js</defname>
        </param>
        <param>
          <type>je</type>
          <defname>je</defname>
        </param>
        <param>
          <type>flag</type>
          <defname>flag</defname>
        </param>
        <briefdescription>
<para>Allocates and zeroes-out array. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>array</parametername>
</parameternamelist>
<parameterdescription>
<para>Array to be allocated </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>Start i-index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>End i-index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>Start j-index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>End j-index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">flag</parametername>
</parameternamelist>
<parameterdescription>
<para>Flag to indicate to allocate </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3100" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3101" bodyend="3110"/>
        <referencedby refid="namespacemom__forcing__type_1a392847be3b991a4fdda885dd759d2b78" compoundref="MOM__forcing__type_8F90" startline="2867" endline="2933">allocate_forcing_by_group</referencedby>
        <referencedby refid="namespacemom__forcing__type_1a9217574bff645ceeff9e15dc133a6031" compoundref="MOM__forcing__type_8F90" startline="2938" endline="2981">allocate_forcing_by_ref</referencedby>
        <referencedby refid="namespacemom__forcing__type_1abd84b619cbabd15a33640be270be71a8" compoundref="MOM__forcing__type_8F90" startline="2989" endline="3021">allocate_mech_forcing_by_group</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a432b1cbc47ab082b64bf7007a8674973" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::deallocate_forcing_type</definition>
        <argsstring>(fluxes)</argsstring>
        <name>deallocate_forcing_type</name>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <briefdescription>
<para>Deallocate the forcing type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Forcing fields structure </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3114" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3115" bodyend="3161"/>
        <referencedby refid="namespacemom__forcing__type_1a18fc44b1946351373f626fcc5aabc340" compoundref="MOM__forcing__type_8F90" startline="2274" endline="2860">forcing_diagnostics</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1aaadc0cd523729cb059cb62a2a224970b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::deallocate_mech_forcing</definition>
        <argsstring>(forces)</argsstring>
        <name>deallocate_mech_forcing</name>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <briefdescription>
<para>Deallocate the mechanical forcing type. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>Forcing fields structure </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3166" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3167" bodyend="3181"/>
        <referencedby refid="namespacemom__forcing__type_1a014d07725581af8ede287ea2a2322259" compoundref="MOM__forcing__type_8F90" startline="2217" endline="2267">mech_forcing_diags</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a904033b8a97fed683d795460b555ce9b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::rotate_forcing</definition>
        <argsstring>(fluxes_in, fluxes, turns)</argsstring>
        <name>rotate_forcing</name>
        <param>
          <type>fluxes_in</type>
          <defname>fluxes_in</defname>
        </param>
        <param>
          <type>fluxes</type>
          <defname>fluxes</defname>
        </param>
        <param>
          <type>turns</type>
          <defname>turns</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">fluxes_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Input forcing struct</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">fluxes</parametername>
</parameternamelist>
<parameterdescription>
<para>Rotated forcing struct</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">turns</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of quarter turns </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3186" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3187" bodyend="3308"/>
        <references refid="namespacemom__forcing__type_1a237dc2330bf133bf3365a924d26b0b37" compoundref="MOM__forcing__type_8F90" startline="3046" endline="3071">get_forcing_groups</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__forcing__type_1a18fc44b1946351373f626fcc5aabc340" compoundref="MOM__forcing__type_8F90" startline="2274" endline="2860">forcing_diagnostics</referencedby>
        <referencedby refid="namespacemom_1adf54a4e3a72611aa2088f46076e56e53" compoundref="MOM_8F90" startline="422" endline="940">mom::step_mom</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__forcing__type_1a7b1d8f7fa2ffad01d699febbf042ac74" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_forcing_type::rotate_mech_forcing</definition>
        <argsstring>(forces_in, turns, forces)</argsstring>
        <name>rotate_mech_forcing</name>
        <param>
          <type>forces_in</type>
          <defname>forces_in</defname>
        </param>
        <param>
          <type>turns</type>
          <defname>turns</defname>
        </param>
        <param>
          <type>forces</type>
          <defname>forces</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">forces_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Forcing on the input domain</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">turns</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of quarter-turns</para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">forces</parametername>
</parameternamelist>
<parameterdescription>
<para>Forcing on the rotated domain </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="3312" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" bodystart="3313" bodyend="3357"/>
        <references refid="namespacemom__forcing__type_1a2db9d1c071a26c092f662bd30afb2039" compoundref="MOM__forcing__type_8F90" startline="3077" endline="3095">get_mech_forcing_groups</references>
        <referencedby refid="namespacemom__forcing__type_1a014d07725581af8ede287ea2a2322259" compoundref="MOM__forcing__type_8F90" startline="2217" endline="2267">mech_forcing_diags</referencedby>
        <referencedby refid="namespacemom_1adf54a4e3a72611aa2088f46076e56e53" compoundref="MOM_8F90" startline="422" endline="940">mom::step_mom</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>This module implements boundary forcing for MOM6. </para>
    </briefdescription>
    <detaileddescription>
<sect1 id="namespacemom__forcing__type_1section_fluxes">
<title>Boundary fluxes</title>
<para>The ocean is a forced-dissipative system. Forcing occurs at the boundaries, and this module mediates the various forcing terms from momentum, heat, salt, and mass. Boundary fluxes from other tracers are treated by coupling to biogeochemical models. We here present elements of how MOM6 assumes boundary fluxes are passed into the ocean.</para>
<para>Note that all fluxes are positive into the ocean. For surface boundary fluxes, that means fluxes are positive downward. For example, a positive shortwave flux warms the ocean.</para>
<sect2 id="namespacemom__forcing__type_1subsection_momentum_fluxes">
<title>Surface boundary momentum fluxes</title>
<para>The ocean surface exchanges momentum with the overlying atmosphere, sea ice, and land ice. The momentum is exchanged as a horizontal stress (Newtons per squared meter: N/m2) imposed on the upper ocean grid cell.</para>
</sect2>
<sect2 id="namespacemom__forcing__type_1subsection_mass_fluxes">
<title>Surface boundary mass fluxes</title>
<para>The ocean gains or loses mass through evaporation, precipitation, sea ice melt/form, and and river runoff. Positive mass fluxes add mass to the liquid ocean. The boundary mass flux units are (kilogram per square meter per sec: kg/(m2/sec)).</para>
<para><itemizedlist>
<listitem><para>Evaporation field can in fact represent a mass loss (evaporation) or mass gain (condensation in foggy areas).</para>
</listitem><listitem><para>sea ice formation leads to mass moving from the liquid ocean to the ice model, and melt adds liquid to the ocean.</para>
</listitem><listitem><para>Precipitation can be liquid or frozen (snow). Furthermore, in some versions of the GFDL coupler, precipitation can be negative. The reason is that the ice model combines precipitation with ice melt and ice formation. This limitation of the ice model diagnostics should be overcome future versions.</para>
</listitem><listitem><para>River runoff can be liquid or frozen. Frozen runoff is often associated with calving land-ice and/or ice bergs.</para>
</listitem></itemizedlist>
</para>
</sect2>
<sect2 id="namespacemom__forcing__type_1subsection_salt_fluxes">
<title>Surface boundary salt fluxes</title>
<para>Over most of the ocean, there is no exchange of salt with the atmosphere. However, the liquid ocean exchanges salt with sea ice. When ice forms, it extracts salt from ice pockets and discharges the salt into the liquid ocean. The salt concentration of sea ice is therefore much lower (around 5ppt) than liquid seawater (around 30-35ppt in high latitudes).</para>
<para>For ocean-ice models run with a prescribed atmosphere, such as in the CORE/OMMIP simulations, it is necessary to employ a surface restoring term to the k=1 salinity equation, thus imposing a salt flux onto the ocean even outside of sea ice regimes. This salt flux is non-physical, and represents a limitation of the ocean-ice models run without an interactive atmosphere. Sometimes this salt flux is converted to an implied fresh water flux. However, doing so generally leads to changes in the sea level, unless a global normalization is provided to zero-out the net water flux. As a complement, for models with a restoring salt flux, one may choose to zero-out the net salt entering the ocean. There are pros/cons of each approach.</para>
</sect2>
<sect2 id="namespacemom__forcing__type_1subsection_heat_fluxes">
<title>Surface boundary heat fluxes</title>
<para>There are many terms that contribute to boundary-related heating of the k=1 surface model grid cell. We here outline details of this heat, with each term having units W/m2.</para>
<para>The net flux of heat crossing ocean surface is stored in the diagnostic array &quot;hfds&quot;. This array is computed as <formula id="216">\[ \mbox{hfds = shortwave + longwave + latent + sensible + mass transfer + frazil + restore + flux adjustments} \]</formula></para>
<para><itemizedlist>
<listitem><para>shortwave (SW) = shortwave radiation (always warms ocean)</para>
</listitem><listitem><para>longwave (LW) = longwave radiation (generally cools ocean)</para>
</listitem><listitem><para>latent (LAT) = turbulent latent heat loss due to evaporation (liquid to vapor) or melt (snow to liquid); generally cools the ocean</para>
</listitem><listitem><para>sensible (SENS) = turbulent heat transfer due to differences in air-sea or ice-sea temperature</para>
</listitem><listitem><para>mass transfer (MASS) = heat transfer due to heat content of mass (e.g., E-P+R) transferred across ocean surface; computed relative to 0 Celsius</para>
</listitem><listitem><para>frazil (FRAZ) = heat transferred to form frazil sea ice (positive heating of liquid ocean)</para>
</listitem><listitem><para>restore (RES) = heat from surface damping sometimes imposed in non-coupled model simulations .</para>
</listitem><listitem><para>restore (flux adjustments) = heat from surface flux adjustment.</para>
</listitem></itemizedlist>
</para>
<sect3 id="namespacemom__forcing__type_1subsubsection_SW">
<title>Treatment of shortwave</title>
<para>The shortwave field itself is split into two pieces:</para>
<para><itemizedlist>
<listitem><para>shortwave = penetrative SW + non-penetrative SW</para>
</listitem><listitem><para>non-penetrative = non-downwelling shortwave; portion of SW totally absorbed in the k=1 cell. The non-penetrative SW is combined with LW+LAT+SENS+seaice_melt_heat in net_heat inside routine extractFluxes1d. Notably, for many cases, non-penetrative SW = 0.</para>
</listitem><listitem><para>penetrative = that portion of shortwave penetrating below a tiny surface layer. This is the downwelling shortwave. Penetrative SW participates in the penetrative SW heating of k=1,nz cells, with the amount of penetration dependent on optical properties.</para>
</listitem></itemizedlist>
</para>
</sect3>
<sect3 id="namespacemom__forcing__type_1subsubsection_bdy_heating">
<title>Convergence of heat into the k=1 cell</title>
<para>The convergence of boundary-related heat into surface grid cell is given by the difference in the net heat entering the top of the k=1 cell and the penetrative SW leaving the bottom of the cell. <formula id="217">\begin{eqnarray*} Q(k=1) &amp;=&amp; \mbox{hfds} - \mbox{pen}\_\mbox{SW(leaving bottom of k=1)} \\ &amp;=&amp; \mbox{nonpen}\_\mbox{SW} + (\mbox{pen}\_\mbox{SW(enter k=1)}-\mbox{pen}\_\mbox{SW(leave k=1)}) + \mbox{LW+LAT+SENS+MASS+FRAZ+RES} \\ &amp;=&amp; \mbox{nonpen}\_\mbox{SW}+ \mbox{LW+LAT+SENS+MASS+FRAZ+RES} + [\mbox{pen}\_\mbox{SW(enter k=1)} - \mbox{pen}\_\mbox{SW(leave k=1)}] \end{eqnarray*}</formula> The convergence of the penetrative shortwave flux is given by <formula id="218">$ \mbox{pen}\_\mbox{SW (enter k)}-\mbox{pen}\_\mbox{SW (leave k)}$</formula>. This term appears for all cells k=1,nz. It is diagnosed as &quot;rsdoabsorb&quot; inside module MOM6/src/parameterizations/vertical/MOM_diabatic_aux.F90 </para>
</sect3>
</sect2>
</sect1>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_forcing_type.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
