<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16">
  <compounddef id="namespacemom__grid" kind="namespace" language="Fortran">
    <compoundname>mom_grid</compoundname>
    <innerclass refid="structmom__grid_1_1ocean__grid__type" prot="public">mom_grid::ocean_grid_type</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__grid_1a1de9705f83b687ad9a711630a95fe52c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_grid::mom_grid_init</definition>
        <argsstring>(G, param_file, US, HI, global_indexing, bathymetry_at_vel)</argsstring>
        <name>mom_grid_init</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>HI</type>
          <defname>HI</defname>
        </param>
        <param>
          <type>global_indexing</type>
          <defname>global_indexing</defname>
        </param>
        <param>
          <type>bathymetry_at_vel</type>
          <defname>bathymetry_at_vel</defname>
        </param>
        <briefdescription>
<para>MOM_grid_init initializes the ocean grid array sizes and grid memory. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The horizontal grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">param_file</parametername>
</parameternamelist>
<parameterdescription>
<para>Parameter file handle </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">hi</parametername>
</parameternamelist>
<parameterdescription>
<para>A hor_index_type for array extents </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">global_indexing</parametername>
</parameternamelist>
<parameterdescription>
<para>If true use global index values instead of having the data domain on each processor start at 1. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">bathymetry_at_vel</parametername>
</parameternamelist>
<parameterdescription>
<para>If true, there are separate values for the ocean bottom depths at velocity points. Otherwise the effects of topography are entirely determined from thickness points. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="183" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="184" bodyend="382"/>
        <references refid="namespacemom__grid_1a4a0b721d65abedfe5208a1e0904cd327" compoundref="MOM__grid_8F90" startline="527" endline="593">allocate_metrics</references>
        <references refid="namespacemom__domains_1a15fdef1c434c81da4d1f5ab3d9234290" compoundref="MOM__domains_8F90" startline="1873" endline="1895">mom_domains::get_domain_extent_dsamp2</references>
        <references refid="namespacemom__hor__index_1a8e3912351dbf2be2659f3561de341f49" compoundref="MOM__hor__index_8F90" startline="64" endline="98">mom_hor_index::hor_index_init</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__error__handler_1a1c462df7b61f1296407b4af51dfeceab" compoundref="MOM__error__handler_8F90" startline="53" endline="66">mom_error_handler::mom_mesg</references>
        <referencedby refid="namespacemom__oda__driver__mod_1aaaf67b8d0e0db3ba3dfe09e24d2b8b24" compoundref="MOM__oda__driver_8F90" startline="115" endline="303">mom_oda_driver_mod::init_oda</referencedby>
        <referencedby refid="namespacemom__ice__shelf_1a5990f9918493ff4984245eac74e5f4d9" compoundref="MOM__ice__shelf_8F90" startline="1084" endline="1638">mom_ice_shelf::initialize_ice_shelf</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a2ef4227cc0bc03d2937270fcc14d7354" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_grid::rescale_grid_bathymetry</definition>
        <argsstring>(G, m_in_new_units)</argsstring>
        <name>rescale_grid_bathymetry</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>m_in_new_units</type>
          <defname>m_in_new_units</defname>
        </param>
        <briefdescription>
<para>rescale_grid_bathymetry permits a change in the internal units for the bathymetry on the grid, both rescaling the depths and recording the new internal units. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The horizontal grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">m_in_new_units</parametername>
</parameternamelist>
<parameterdescription>
<para>The new internal representation of 1 m depth. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="387" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="388" bodyend="415"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a1ed8ca50737525ff437bdb349c8d701f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_grid::set_derived_metrics</definition>
        <argsstring>(G, US)</argsstring>
        <name>set_derived_metrics</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <briefdescription>
<para>set_derived_metrics calculates metric terms that are derived from other metrics. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The horizontal grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="419" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="420" bodyend="461"/>
        <references refid="namespacemom__grid_1a49cb0213b535091f3c12e9152fbbda03" compoundref="MOM__grid_8F90" startline="466" endline="469">adcroft_reciprocal</references>
        <referencedby refid="namespacemom__transcribe__grid_1abe8bd4f6f75bf431d0b53ef702a91d8d" compoundref="MOM__transcribe__grid_8F90" startline="25" endline="162">mom_transcribe_grid::copy_dyngrid_to_mom_grid</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a49cb0213b535091f3c12e9152fbbda03" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function mom_grid::adcroft_reciprocal</definition>
        <argsstring>(val)</argsstring>
        <name>adcroft_reciprocal</name>
        <param>
          <type>val</type>
          <defname>val</defname>
        </param>
        <briefdescription>
<para>Adcroft_reciprocal(x) = 1/x for |x|&gt;0 or 0 for x=0. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">val</parametername>
</parameternamelist>
<parameterdescription>
<para>The value being inverted. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The Adcroft reciprocal of val. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="465" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="466" bodyend="469"/>
        <referencedby refid="namespacemom__grid_1a1ed8ca50737525ff437bdb349c8d701f" compoundref="MOM__grid_8F90" startline="420" endline="461">set_derived_metrics</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a7d20103f37477e32f1a4a7b7570af144" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function, public</type>
        <definition>logical function, public mom_grid::ispointincell</definition>
        <argsstring>(G, i, j, x, y)</argsstring>
        <name>ispointincell</name>
        <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>x</type>
          <defname>x</defname>
        </param>
        <param>
          <type>y</type>
          <defname>y</defname>
        </param>
        <briefdescription>
<para>Returns true if the coordinates (x,y) are within the h-cell (i,j) </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>Grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i</parametername>
</parameternamelist>
<parameterdescription>
<para>i index of cell to test </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">j</parametername>
</parameternamelist>
<parameterdescription>
<para>j index of cell to test </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">x</parametername>
</parameternamelist>
<parameterdescription>
<para>x coordinate of point </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">y</parametername>
</parameternamelist>
<parameterdescription>
<para>y coordinate of point </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="473" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="474" bodyend="504"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a9d2aac0ba53c9072f5f37d9bf97187b2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_grid::set_first_direction</definition>
        <argsstring>(G, y_first)</argsstring>
        <name>set_first_direction</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>y_first</type>
          <defname>y_first</defname>
        </param>
        <briefdescription>
<para>Store an integer indicating which direction to work on first. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">y_first</parametername>
</parameternamelist>
<parameterdescription>
<para>The first direction to store </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="508" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="509" bodyend="512"/>
        <referencedby refid="namespacemom_1a96708b16215666edbfa5b46228f3a200" compoundref="MOM_8F90" startline="1604" endline="2769">mom::initialize_mom</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a1cee4daea572d4efd1565b24ca652a2d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_grid::get_global_grid_size</definition>
        <argsstring>(G, niglobal, njglobal)</argsstring>
        <name>get_global_grid_size</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>niglobal</type>
          <defname>niglobal</defname>
        </param>
        <param>
          <type>njglobal</type>
          <defname>njglobal</defname>
        </param>
        <briefdescription>
<para>Return global shape of horizontal grid. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The horizontal grid type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">niglobal</parametername>
</parameternamelist>
<parameterdescription>
<para>i-index global size of grid </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="out">njglobal</parametername>
</parameternamelist>
<parameterdescription>
<para>j-index global size of grid </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="516" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="517" bodyend="522"/>
        <references refid="namespacemom__domains_1abc0b09896aa9f5b4c795f85c813aa59f" compoundref="MOM__domains_8F90" startline="1973" endline="1979">mom_domains::get_global_shape</references>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a4a0b721d65abedfe5208a1e0904cd327" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_grid::allocate_metrics</definition>
        <argsstring>(G)</argsstring>
        <name>allocate_metrics</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <briefdescription>
<para>Allocate memory used by the <ref refid="structmom__grid_1_1ocean__grid__type" kindref="compound">ocean_grid_type</ref> and related structures. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The horizontal grid type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="526" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="527" bodyend="593"/>
        <referencedby refid="namespacemom__grid_1a1de9705f83b687ad9a711630a95fe52c" compoundref="MOM__grid_8F90" startline="184" endline="382">mom_grid_init</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespacemom__grid_1a889221e5714c3935f276c28dffe5e460" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public mom_grid::mom_grid_end</definition>
        <argsstring>(G)</argsstring>
        <name>mom_grid_end</name>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <briefdescription>
<para>Release memory used by the <ref refid="structmom__grid_1_1ocean__grid__type" kindref="compound">ocean_grid_type</ref> and related structures. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="inout">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The horizontal grid type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="597" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" bodystart="598" bodyend="635"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Provides the ocean grid type. </para>
    </briefdescription>
    <detaileddescription>
<para>Grid metrics and their inverses are labelled according to their staggered location on a Arakawa C (or B) grid.<itemizedlist>
<listitem><para>Metrics centered on h- or T-points are labelled T, e.g. dxT is the distance across the cell in the x-direction.</para>
</listitem><listitem><para>Metrics centered on u-points are labelled Cu (C-grid u location). e.g. dyCu is the y-distance between two corners of a T-cell.</para>
</listitem><listitem><para>Metrics centered on v-points are labelled Cv (C-grid v location). e.g. dyCv is the y-distance between two -points.</para>
</listitem><listitem><para>Metrics centered on q-points are labelled Bu (B-grid u,v location). e.g. areaBu is the area centered on a q-point.</para>
</listitem></itemizedlist>
</para>
<para><image type="html" name="Grid_metrics.png">The labelling of distances (grid metrics) at various staggered</image>
 location on an T-cell and around a q-point."</para>
<para>Areas centered at T-, u-, v- and q- points are <computeroutput>areaT</computeroutput>, <computeroutput>areaCu</computeroutput>, <computeroutput>areaCv</computeroutput> and <computeroutput>areaBu</computeroutput> respectively.</para>
<para>The reciprocal of metrics are pre-calculated and also stored in the <ref refid="structmom__grid_1_1ocean__grid__type" kindref="compound">ocean_grid_type</ref> with a I prepended to the name. For example, <computeroutput>1./areaT</computeroutput> is called <computeroutput>IareaT</computeroutput>, and <computeroutput>1./dyCv</computeroutput> is <computeroutput>IdyCv</computeroutput>.</para>
<para>Geographic latitude and longitude (or model coordinates if not on a sphere) are stored in <computeroutput>geoLatT</computeroutput>, <computeroutput>geoLonT</computeroutput> for T-points. u-, v- and q- point coordinates are follow same pattern of replacing T with Cu, Cv and Bu respectively.</para>
<para>Each location also has a 2D mask indicating whether the entire column is land or ocean. <computeroutput>mask2dT</computeroutput> is 1 if the column is wet or 0 if the T-cell is land. <computeroutput>mask2dCu</computeroutput> is 1 if both neighboring column are ocean, and 0 if either is land. </para>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/core/MOM_grid.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
