<?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__safe__alloc" kind="namespace" language="Fortran">
    <compoundname>mom_safe_alloc</compoundname>
    <innerclass refid="interfacemom__safe__alloc_1_1safe__alloc__alloc" prot="private">mom_safe_alloc::safe_alloc_alloc</innerclass>
    <innerclass refid="interfacemom__safe__alloc_1_1safe__alloc__ptr" prot="private">mom_safe_alloc::safe_alloc_ptr</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespacemom__safe__alloc_1a884f70b74863fa33d8956bcdc4bd331c" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_ptr_1d</definition>
        <argsstring>(ptr, i1, i2)</argsstring>
        <name>safe_alloc_ptr_1d</name>
        <param>
          <type>ptr</type>
          <defname>ptr</defname>
        </param>
        <param>
          <type>i1</type>
          <defname>i1</defname>
        </param>
        <param>
          <type>i2</type>
          <defname>i2</defname>
        </param>
        <briefdescription>
<para>Allocate a pointer to a 1-d array. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i1</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the array, or its starting index if i2 is present </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">i2</parametername>
</parameternamelist>
<parameterdescription>
<para>The ending index of the array </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="35" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="36" bodyend="46"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1a93463ba87cbcc6bd34a528e05bc5d449" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_ptr_2d_2arg</definition>
        <argsstring>(ptr, ni, nj)</argsstring>
        <name>safe_alloc_ptr_2d_2arg</name>
        <param>
          <type>ptr</type>
          <defname>ptr</defname>
        </param>
        <param>
          <type>ni</type>
          <defname>ni</defname>
        </param>
        <param>
          <type>nj</type>
          <defname>nj</defname>
        </param>
        <briefdescription>
<para>Allocate a pointer to a 2-d array based on its dimension sizes. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ni</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the 1st dimension of the array </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nj</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the 2nd dimension of the array </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="50" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="51" bodyend="57"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1ab9e23cc5ed4635454b4412aa0eb8a4c4" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_ptr_3d_3arg</definition>
        <argsstring>(ptr, ni, nj, nk)</argsstring>
        <name>safe_alloc_ptr_3d_3arg</name>
        <param>
          <type>ptr</type>
          <defname>ptr</defname>
        </param>
        <param>
          <type>ni</type>
          <defname>ni</defname>
        </param>
        <param>
          <type>nj</type>
          <defname>nj</defname>
        </param>
        <param>
          <type>nk</type>
          <defname>nk</defname>
        </param>
        <briefdescription>
<para>Allocate a pointer to a 3-d array based on its dimension sizes. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ni</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the 1st dimension of the array </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nj</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the 2nd dimension of the array </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the 3rd dimension of the array </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="61" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="62" bodyend="69"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1ae52e9466348c49c0ac3c21e1c2eb4073" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_ptr_2d</definition>
        <argsstring>(ptr, is, ie, js, je)</argsstring>
        <name>safe_alloc_ptr_2d</name>
        <param>
          <type>ptr</type>
          <defname>ptr</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>
        <briefdescription>
<para>Allocate a pointer to a 2-d array based on its index starting and ending values. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="73" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="74" bodyend="82"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1a70e67bdc39ad0edb1f40b0ba533d44d5" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_ptr_3d</definition>
        <argsstring>(ptr, is, ie, js, je, nk)</argsstring>
        <name>safe_alloc_ptr_3d</name>
        <param>
          <type>ptr</type>
          <defname>ptr</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>nk</type>
          <defname>nk</defname>
        </param>
        <briefdescription>
<para>Allocate a pointer to a 3-d array based on its index starting and ending values. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>The size to allocate for the 3rd dimension </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="86" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="87" bodyend="96"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1a6168c61b47b5e57b72f1481625076421" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_ptr_3d_6arg</definition>
        <argsstring>(ptr, is, ie, js, je, ks, ke)</argsstring>
        <name>safe_alloc_ptr_3d_6arg</name>
        <param>
          <type>ptr</type>
          <defname>ptr</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>ks</type>
          <defname>ks</defname>
        </param>
        <param>
          <type>ke</type>
          <defname>ke</defname>
        </param>
        <briefdescription>
<para>Allocate a pointer to a 3-d array based on its index starting and ending values. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ks</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 3rd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ke</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 3rd dimension </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="100" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="101" bodyend="111"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1ac762814e20f163c01cd2753b6757dc72" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_allocatable_2d</definition>
        <argsstring>(ptr, is, ie, js, je)</argsstring>
        <name>safe_alloc_allocatable_2d</name>
        <param>
          <type>ptr</type>
          <defname>ptr</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>
        <briefdescription>
<para>Allocate a 2-d allocatable array based on its index starting and ending values. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>An allocatable array to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="116" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="117" bodyend="125"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1a8997262e361b426a15c77813adcc0aca" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_allocatable_3d</definition>
        <argsstring>(ptr, is, ie, js, je, nk)</argsstring>
        <name>safe_alloc_allocatable_3d</name>
        <param>
          <type>ptr</type>
          <defname>ptr</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>nk</type>
          <defname>nk</defname>
        </param>
        <briefdescription>
<para>Allocate a 3-d allocatable array based on its index starting and ending values and k-index size. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>An allocatable array to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">nk</parametername>
</parameternamelist>
<parameterdescription>
<para>The size to allocate for the 3rd dimension </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="130" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="131" bodyend="140"/>
      </memberdef>
      <memberdef kind="function" id="namespacemom__safe__alloc_1abcf3c91a8747ada0dfc258a8283ea051" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine</type>
        <definition>subroutine mom_safe_alloc::safe_alloc_allocatable_3d_6arg</definition>
        <argsstring>(ptr, is, ie, js, je, ks, ke)</argsstring>
        <name>safe_alloc_allocatable_3d_6arg</name>
        <param>
          <type>ptr</type>
          <defname>ptr</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>ks</type>
          <defname>ks</defname>
        </param>
        <param>
          <type>ke</type>
          <defname>ke</defname>
        </param>
        <briefdescription>
<para>Allocate a 3-d allocatable array based on its 6 index starting and ending values. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>ptr</parametername>
</parameternamelist>
<parameterdescription>
<para>An allocatable array to allocate </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">is</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ie</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 1st dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">js</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">je</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 2nd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ks</parametername>
</parameternamelist>
<parameterdescription>
<para>The start index to allocate for the 3rd dimension </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">ke</parametername>
</parameternamelist>
<parameterdescription>
<para>The end index to allocate for the 3rd dimension </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="144" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" bodystart="145" bodyend="155"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Convenience functions for safely allocating memory without accidentally reallocating pointer and causing memory leaks. </para>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/framework/MOM_safe_alloc.F90" line="3" column="1"/>
  </compounddef>
</doxygen>
