<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.17">
  <compounddef id="namespaceuser__change__diffusivity" kind="namespace" language="Fortran">
    <compoundname>user_change_diffusivity</compoundname>
    <innerclass refid="structuser__change__diffusivity_1_1user__change__diff__cs" prot="public">user_change_diffusivity::user_change_diff_cs</innerclass>
      <sectiondef kind="func">
      <memberdef kind="function" id="namespaceuser__change__diffusivity_1a5bb4d2c096aabd7a7f7a6159fd0db073" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public user_change_diffusivity::user_change_diff</definition>
        <argsstring>(h, tv, G, GV, US, CS, Kd_lay, Kd_int, T_f, S_f, Kd_int_add)</argsstring>
        <name>user_change_diff</name>
        <param>
          <type>h</type>
          <defname>h</defname>
        </param>
        <param>
          <type>tv</type>
          <defname>tv</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <param>
          <type>Kd_lay</type>
          <defname>Kd_lay</defname>
        </param>
        <param>
          <type>Kd_int</type>
          <defname>Kd_int</defname>
        </param>
        <param>
          <type>T_f</type>
          <defname>T_f</defname>
        </param>
        <param>
          <type>S_f</type>
          <defname>S_f</defname>
        </param>
        <param>
          <type>Kd_int_add</type>
          <defname>Kd_int_add</defname>
        </param>
        <briefdescription>
<para>This subroutine provides an interface for a user to use to modify the main code to alter the diffusivities as needed. The specific example implemented here augments the diffusivity for a specified range of latitude and coordinate potential density. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s vertical grid structure </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">tv</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">us</parametername>
</parameternamelist>
<parameterdescription>
<para>A dimensional unit scaling type </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>This module&apos;s control structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kd_lay</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity of each layer [Z2 T-1 ~&gt; m2 s-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">kd_int</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity at each interface [Z2 T-1 ~&gt; m2 s-1]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">t_f</parametername>
</parameternamelist>
<parameterdescription>
<para>Temperature with massless layers filled in vertically [degC]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">s_f</parametername>
</parameternamelist>
<parameterdescription>
<para>Salinity with massless layers filled in vertically [ppt]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>kd_int_add</parametername>
</parameternamelist>
<parameterdescription>
<para>The diapycnal diffusivity that is being added at each interface [Z2 T-1 ~&gt; m2 s-1]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" line="47" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" bodystart="48" bodyend="147"/>
        <references refid="namespacemom__eos_1a782d326108e390902e520efc078e8296" compoundref="MOM__EOS_8F90" startline="1163" endline="1175">mom_eos::eos_domain</references>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <references refid="namespaceuser__change__diffusivity_1a14ddfad060f517dcda132b2fd279181e" compoundref="user__change__diffusivity_8F90" startline="152" endline="157">range_ok</references>
        <references refid="namespaceuser__change__diffusivity_1a9b291c89fbc92f517c683b5fa2797e92" compoundref="user__change__diffusivity_8F90" startline="166" endline="186">val_weights</references>
      </memberdef>
      <memberdef kind="function" id="namespaceuser__change__diffusivity_1a14ddfad060f517dcda132b2fd279181e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>logical function</type>
        <definition>logical function user_change_diffusivity::range_ok</definition>
        <argsstring>(range)</argsstring>
        <name>range_ok</name>
        <param>
          <type>range</type>
          <defname>range</defname>
        </param>
        <briefdescription>
<para>This subroutine checks whether the 4 values of range are in ascending order. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">range</parametername>
</parameternamelist>
<parameterdescription>
<para>Four values to check. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>Return value. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" line="151" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" bodystart="152" bodyend="157"/>
        <referencedby refid="namespaceuser__change__diffusivity_1a5bb4d2c096aabd7a7f7a6159fd0db073" compoundref="user__change__diffusivity_8F90" startline="48" endline="147">user_change_diff</referencedby>
        <referencedby refid="namespaceuser__change__diffusivity_1ac852c6588286315c2bba0900114ce5a6" compoundref="user__change__diffusivity_8F90" startline="191" endline="258">user_change_diff_init</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceuser__change__diffusivity_1a9b291c89fbc92f517c683b5fa2797e92" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>real function</type>
        <definition>real function user_change_diffusivity::val_weights</definition>
        <argsstring>(val, range)</argsstring>
        <name>val_weights</name>
        <param>
          <type>val</type>
          <defname>val</defname>
        </param>
        <param>
          <type>range</type>
          <defname>range</defname>
        </param>
        <briefdescription>
<para>This subroutine returns a value that goes smoothly from 0 to 1, stays at 1, and then goes smoothly back to 0 at the four values of range. The transitions are cubic, and have zero first derivatives where the curves hit 0 and 1. The values in range must be in ascending order, as can be checked by calling range_OK. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">val</parametername>
</parameternamelist>
<parameterdescription>
<para>Value for which we need an answer [arbitrary units]. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">range</parametername>
</parameternamelist>
<parameterdescription>
<para>Range over which the answer is non-zero [arbitrary units]. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>Return value [nondim]. </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" line="165" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" bodystart="166" bodyend="186"/>
        <referencedby refid="namespaceuser__change__diffusivity_1a5bb4d2c096aabd7a7f7a6159fd0db073" compoundref="user__change__diffusivity_8F90" startline="48" endline="147">user_change_diff</referencedby>
      </memberdef>
      <memberdef kind="function" id="namespaceuser__change__diffusivity_1ac852c6588286315c2bba0900114ce5a6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public user_change_diffusivity::user_change_diff_init</definition>
        <argsstring>(Time, G, GV, US, param_file, diag, CS)</argsstring>
        <name>user_change_diff_init</name>
        <param>
          <type>Time</type>
          <defname>Time</defname>
        </param>
        <param>
          <type>G</type>
          <defname>G</defname>
        </param>
        <param>
          <type>GV</type>
          <defname>GV</defname>
        </param>
        <param>
          <type>US</type>
          <defname>US</defname>
        </param>
        <param>
          <type>param_file</type>
          <defname>param_file</defname>
        </param>
        <param>
          <type>diag</type>
          <defname>diag</defname>
        </param>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Set up the module control structure. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername direction="in">time</parametername>
</parameternamelist>
<parameterdescription>
<para>The current model time. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">g</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s grid structure. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="in">gv</parametername>
</parameternamelist>
<parameterdescription>
<para>The ocean&apos;s 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="in">param_file</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure indicating the open file to parse for model parameter values. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername direction="inout">diag</parametername>
</parameternamelist>
<parameterdescription>
<para>A structure that is used to regulate diagnostic output. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer that is set to point to the control structure for this module. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" line="190" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" bodystart="191" bodyend="258"/>
        <references refid="namespacemom__error__handler_1a460cfb79a06c29fc249952c2a3710d67" compoundref="MOM__error__handler_8F90" startline="72" endline="92">mom_error_handler::mom_error</references>
        <references refid="namespaceuser__change__diffusivity_1a14ddfad060f517dcda132b2fd279181e" compoundref="user__change__diffusivity_8F90" startline="152" endline="157">range_ok</references>
      </memberdef>
      <memberdef kind="function" id="namespaceuser__change__diffusivity_1ad92d8d57a14b020dcff685bc1da32507" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>subroutine, public</type>
        <definition>subroutine, public user_change_diffusivity::user_change_diff_end</definition>
        <argsstring>(CS)</argsstring>
        <name>user_change_diff_end</name>
        <param>
          <type>CS</type>
          <defname>CS</defname>
        </param>
        <briefdescription>
<para>Clean up the module control structure. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>cs</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer that is set to point to the control structure for this module. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" line="262" column="1" bodyfile="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" bodystart="263" bodyend="267"/>
        <referencedby refid="namespacemom__set__diffusivity_1ace82f133d3cee42aa36ec10bcce79e75" compoundref="MOM__set__diffusivity_8F90" startline="2347" endline="2362">mom_set_diffusivity::set_diffusivity_end</referencedby>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Increments the diapycnal diffusivity in a specified band of latitudes and densities. </para>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="/home/cermak/src/MOM6.devrob/src/user/user_change_diffusivity.F90" line="2" column="1"/>
  </compounddef>
</doxygen>
