<?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.20" xml:lang="en-US">
  <compounddef id="interfacemom__diag__mediator_1_1downsample__field" kind="interface" language="Fortran" prot="private">
    <compoundname>mom_diag_mediator::downsample_field</compoundname>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="interfacemom__diag__mediator_1_1downsample__field_1a4132786a946807df4a4a5912d353942e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_diag_mediator::downsample_field::downsample_field_2d</definition>
        <argsstring>(field_in, field_out, dl, method, mask, diag_cs, diag, isv_o, jsv_o, isv_d, iev_d, jsv_d, jev_d)</argsstring>
        <name>downsample_field_2d</name>
        <param>
          <type>field_in</type>
          <defname>field_in</defname>
        </param>
        <param>
          <type>field_out</type>
          <defname>field_out</defname>
        </param>
        <param>
          <type>dl</type>
          <defname>dl</defname>
        </param>
        <param>
          <type>method</type>
          <defname>method</defname>
        </param>
        <param>
          <type>mask</type>
          <defname>mask</defname>
        </param>
        <param>
          <type>diag_cs</type>
          <defname>diag_cs</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>isv_o</type>
          <defname>isv_o</defname>
        </param>
        <param>
          <type>jsv_o</type>
          <defname>jsv_o</defname>
        </param>
        <param>
          <type>isv_d</type>
          <defname>isv_d</defname>
        </param>
        <param>
          <type>iev_d</type>
          <defname>iev_d</defname>
        </param>
        <param>
          <type>jsv_d</type>
          <defname>jsv_d</defname>
        </param>
        <param>
          <type>jev_d</type>
          <defname>jev_d</defname>
        </param>
        <briefdescription>
<para>This subroutine allocates and computes a down sampled 2d array given an input array The down sample method is based on the &quot;cell_methods&quot; for the diagnostics as explained in the above table. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>field_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Original field to be down sampled </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>field_out</parametername>
</parameternamelist>
<parameterdescription>
<para>Down sampled field </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dl</parametername>
</parameternamelist>
<parameterdescription>
<para>Level of down sampling </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">method</parametername>
</parameternamelist>
<parameterdescription>
<para>Sampling method </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>mask</parametername>
</parameternamelist>
<parameterdescription>
<para>Mask for field </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diag_cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Structure used to regulate diagnostic output </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure describing the diagnostic to post </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">isv_o</parametername>
</parameternamelist>
<parameterdescription>
<para>Original i-start index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">jsv_o</parametername>
</parameternamelist>
<parameterdescription>
<para>Original j-start index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">isv_d</parametername>
</parameternamelist>
<parameterdescription>
<para>i-start index of down sampled data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">iev_d</parametername>
</parameternamelist>
<parameterdescription>
<para>i-end index of down sampled data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">jsv_d</parametername>
</parameternamelist>
<parameterdescription>
<para>j-start index of down sampled data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">jev_d</parametername>
</parameternamelist>
<parameterdescription>
<para>j-end index of down sampled data </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_diag_mediator.F90" line="4105" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_diag_mediator.F90" bodystart="4107" bodyend="4245"/>
      </memberdef>
      <memberdef kind="function" id="interfacemom__diag__mediator_1_1downsample__field_1ad2a7ea1af24e10714f1324470d0886fe" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_diag_mediator::downsample_field::downsample_field_3d</definition>
        <argsstring>(field_in, field_out, dl, method, mask, diag_cs, diag, isv_o, jsv_o, isv_d, iev_d, jsv_d, jev_d)</argsstring>
        <name>downsample_field_3d</name>
        <param>
          <type>field_in</type>
          <defname>field_in</defname>
        </param>
        <param>
          <type>field_out</type>
          <defname>field_out</defname>
        </param>
        <param>
          <type>dl</type>
          <defname>dl</defname>
        </param>
        <param>
          <type>method</type>
          <defname>method</defname>
        </param>
        <param>
          <type>mask</type>
          <defname>mask</defname>
        </param>
        <param>
          <type>diag_cs</type>
          <defname>diag_cs</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>isv_o</type>
          <defname>isv_o</defname>
        </param>
        <param>
          <type>jsv_o</type>
          <defname>jsv_o</defname>
        </param>
        <param>
          <type>isv_d</type>
          <defname>isv_d</defname>
        </param>
        <param>
          <type>iev_d</type>
          <defname>iev_d</defname>
        </param>
        <param>
          <type>jsv_d</type>
          <defname>jsv_d</defname>
        </param>
        <param>
          <type>jev_d</type>
          <defname>jev_d</defname>
        </param>
        <briefdescription>
<para>This subroutine allocates and computes a down sampled 3d array given an input array The down sample method is based on the &quot;cell_methods&quot; for the diagnostics as explained in the above table. </para>
        </briefdescription>
        <detaileddescription>
<sect1 id="namespacemom__diag__mediator_1downsampling">
<title>The down sample algorithm</title>
<para>The down sample method could be deduced (before send_data call) from the diagx_cell_method, diagy_cell_method and diagv_cell_method</para>
<para>This is the summary of the down sample algoritm for a diagnostic field f: <formula id="238">\[ f(Id,Jd) = \sum_{i,j} f(Id+i,Jd+j) * weight(Id+i,Jd+j) / [ \sum_{i,j} weight(Id+i,Jd+j)] \]</formula> Here, i and j run from 0 to dl-1 (dl being the down sample level). Id,Jd are the down sampled (coarse grid) indices run over the coarsened compute grid, if and jf are the original (fine grid) indices.</para>
<para><verbatim> Example   x_cell y_cell v_cell algorithm_id    implemented weight(if,jf)
 ---------------------------------------------------------------------------------------
 theta     mean   mean   mean   MMM =222        G%areaT(if,jf)*h(if,jf)
 u         point  mean   mean   PMM =022        dyCu(if,jf)*h(if,jf)*delta(if,Id)
 v         mean   point  mean   MPM =202        dxCv(if,jf)*h(if,jf)*delta(jf,Jd)
 ?         point  sum    mean   PSM =012        h(if,jf)*delta(if,Id)
 volcello  sum    sum    sum    SSS =111        1
 T_dfxy_co sum    sum    point  SSP =110        1
 umo       point  sum    sum    PSS =011        1*delta(if,Id)
 vmo       sum    point  sum    SPS =101        1*delta(jf,Jd)
 umo_2d    point  sum    point  PSP =010        1*delta(if,Id)
 vmo_2d    sum    point  point  SPP =100        1*delta(jf,Jd)
 ?         point  mean   point  PMP =020        dyCu(if,jf)*delta(if,Id)
 ?         mean   point  point  MPP =200        dxCv(if,jf)*delta(jf,Jd)
 w         mean   mean   point  MMP =220        G%areaT(if,jf)
 h*theta   mean   mean   sum    MMS =221        G%areaT(if,jf)

 delta is the Kronecker delta</verbatim> <parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>field_in</parametername>
</parameternamelist>
<parameterdescription>
<para>Original field to be down sampled </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>field_out</parametername>
</parameternamelist>
<parameterdescription>
<para>down sampled field </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">dl</parametername>
</parameternamelist>
<parameterdescription>
<para>Level of down sampling </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">method</parametername>
</parameternamelist>
<parameterdescription>
<para>Sampling method </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>mask</parametername>
</parameternamelist>
<parameterdescription>
<para>Mask for field </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diag_cs</parametername>
</parameternamelist>
<parameterdescription>
<para>Structure used to regulate diagnostic output </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure describing the diagnostic to post </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">isv_o</parametername>
</parameternamelist>
<parameterdescription>
<para>Original i-start index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">jsv_o</parametername>
</parameternamelist>
<parameterdescription>
<para>Original j-start index </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">isv_d</parametername>
</parameternamelist>
<parameterdescription>
<para>i-start index of down sampled data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">iev_d</parametername>
</parameternamelist>
<parameterdescription>
<para>i-end index of down sampled data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">jsv_d</parametername>
</parameternamelist>
<parameterdescription>
<para>j-start index of down sampled data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">jev_d</parametername>
</parameternamelist>
<parameterdescription>
<para>j-end index of down sampled data </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</sect1>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_diag_mediator.F90" line="3950" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_diag_mediator.F90" bodystart="3951" bodyend="4099"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Down sample a field. </para>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_diag_mediator.F90" line="75" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_diag_mediator.F90" bodystart="75" bodyend="76"/>
    <listofallmembers>
      <member refid="interfacemom__diag__mediator_1_1downsample__field_1a4132786a946807df4a4a5912d353942e" prot="private" virt="non-virtual"><scope>mom_diag_mediator::downsample_field</scope><name>downsample_field_2d</name></member>
      <member refid="interfacemom__diag__mediator_1_1downsample__field_1ad2a7ea1af24e10714f1324470d0886fe" prot="private" virt="non-virtual"><scope>mom_diag_mediator::downsample_field</scope><name>downsample_field_3d</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
