Generation of ascent profiles, dive tables, and "maximum bottom time tables"

Using this UDDF feature, it is possible to easily set up definitions for the generation of dive tables. Afterwards, for example different programs may calculate such a table. Then these tables may be compared with each other.

Calculation of ascent profiles

<uddf version="3.2.0">
    <!-- the <generator> section has to appear in every UDDF file -->
    <generator>
        <!-- description of the program generating the UDDF file -->
        <name>DP Planner</name>
        <manufacturer>
            <name>Grouper Inc.</name>
            <address>
                <!-- address data of manufacturer -->
            </address>
            <contact>
                <!-- contact data of manufacturer -->
            </contact>
        </manufacturer>
        <version>1.41421</version>
        <datetime>2006-06-20</datetime>
    </generator>
    <gasdefinitions>
        <mix id="oxygen">
            <name>pure oxygen</name>
            <o2>1.000</o2>
            <n2>0.000</n2>
            <he>0.000</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
        <mix id="noaa1">
            <name>NOAA1</name>  <!-- 32 % O2, 68 % N2 -->
            <o2>0.320</o2>
            <n2>0.680</n2>
            <he>0.000</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
        <mix id="trimix">
            <name>Trimix</name>  <!-- Trimix 16 % O2, 40 % N2, 44 % He -->
            <o2>0.160</o2>
            <n2>0.400</n2>
            <he>0.440</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
        <mix id="heliox">
            <name>Heliox</name>  <!-- 12 % O2, 88 % He -->
            <o2>0.120</o2>
            <n2>0.000</n2>
            <he>0.880</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
    </gasdefinitions>
    <tablegeneration>
        <!-- here follow parameters for the generation of ascent tables -->
        <calculateprofile>
            <profile>
                <!-- a cross-referentiation via lt;link ref="..."/> on a dive or a repetitiongroup -->
                <!-- is dropped because tissues are saturated corresponding to ambient pressure -->
                <!-- <link ref="..."/> as cross-referentiation on <tankdata> is dropped -->
                <!-- because no breathing gas consumption calculation is to be performed -->
                <link ref="oxygen"/>
                <link ref="noaa1"/>
                <link ref="trimix"/>
                <link ref="heliox"/>
                <surfaceintervalbeforedive>
                    <!-- tissues saturated corresponding to ambient pressure, no -->
                    <!-- remaining saturation from a prior dive to be considered -->
                    <infinity/>
                </surfaceintervalbeforedive>
                <density>1030.0</density>   <!-- salt water -->
                <output>
                    <lingo>en</lingo>
                    <fileformat>pdf</fileformat>
                    <filename>example_profile_1</filename>
                    <headline>Example Dive 100 m</headline>
                    <remark>
                        This is an examplary calculation for a dive to 100 m salt water.
                    </remark>
                </output>
                <!-- program specific parameters which an UDDF parser will not necessarily read -->
                <applicationdata>...</applicationdata>
                <!-- setting of the decompression model to be used -->
                <!-- If the executing software does not support this deco model, the program's -->
                <!-- standard model has to be used - what should be noticed to the user, of course! :-) -->
                <decomodel>ZH-L16</decomodel>
                <!-- "Deep Stops" shall be used; length 1 minute -->
                <deepstoptime>60.0</deepstoptime>
                <!-- maximum ascent velocity in meters per seconds -->
                <!-- here: 10 m/min ^= 0.1666... m/s -->
                <maximumascendingrate>0.16666666667</maximumascendingrate>
                <!-- settings on which depths the breathing gases shall be changed -->
                <mixchange>
                    <!-- change of breathing gases during ascent -->
                    <ascent>
                        <waypoint>
                            <depth>85.0</depth>
                            <switchmix ref="trimix"/>
                        </waypoint>
                        <waypoint>
                            <depth>40.0</depth>
                            <switchmix ref="noaa1"/>
                        </waypoint>
                        <waypoint>
                            <depth> 5.0</depth>
                            <switchmix ref="oxygen"/>
                        </waypoint>
                    </ascent>
                </mixchange>
                <!-- definition of a descent profile as a basis to calculate the ascent profile -->
                <inputprofile>
                    <waypoint>
                        <!-- Every dive begins at 0 min at the surface! :-) -->
                        <!-- beginning the dive with Nitrox NOAA I (32 % O2, 68 % N2) -->
                        <divetime>0.0</divetime>
                        <depth>0.0</depth>
                        <switchmix ref="noaa1"/>
                    </waypoint>
                    <!-- simple profile: -->
                    <!-- descent within 10 min to 100 m -->
                    <waypoint>
                        <!-- at a depth of 35 m change to Trimix mix -->
                        <divetime>210.0</divetime>
                        <depth>35.0</depth>
                        <switchmix ref="trimix"/>
                    </waypoint>
                    <waypoint>
                        <!-- at a depth of 80 m change to Heliox -->
                        <divetime>480.0</divetime>
                        <depth>80.0</depth>
                        <switchmix ref="heliox"/>
                    </waypoint>
                    <waypoint>
                        <divetime>600.0</divetime>
                        <depth>100.0</depth>
                    </waypoint>
                    <waypoint>
                        <!-- remaining time on depth 10 min -->
                        <divetime>900.0</divetime>
                        <depth>100.0</depth>
                    </waypoint>
                    <!-- now the ascent begins - it's the program's task to calculate it -->
                </inputprofile>
            </profile>
        </calculateprofile>
    </tablegeneration>
</uddf>
                

Calculation of dive tables

<uddf version="3.2.0">
    <!-- the <generator> section has to appear in every UDDF file -->
    <generator>
        <!-- description of the program generating the UDDF file -->
        <name>DSTG - Diver's Super Table Generator</name>
        <manufacturer>Dive Heroes Company</manufacturer>
        <manufacturer>
            <name>Dive Heroes Company</name>
            <address>
                <!-- address data of manufacturer -->
            </address>
            <contact>
                <!-- contact data of manufacturer -->
            </contact>
        </manufacturer>
        <version>2.23607</version>
        <datetime>2007-09-20</datetime>
    </generator>
    <gasdefinitions>
        <mix id="air">
            <name>air</name>
            <o2>0.210</o2>
            <n2>0.790</n2>
            <he>0.000</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
        <mix id="noaa1">
            <name>NOAA1</name>  <!-- 32 % O2, 68 % N2 -->
            <o2>0.320</o2>
            <n2>0.680</n2>
            <he>0.000</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
        <!-- <tankdata> is omitted, because a breathing gas consumption -->
        <!-- calculation is not performed when generating a table -->
    </gasdefinitions>
    <profiledata>
        <repetitiongroup id="rg1">
            <dive id="dive1">
                <!-- here all dive profile data -->
            </dive>
            <!-- here can be stored more dive profiles -->
        </repetitiongroup>
        <!-- here all other recorded dive profiles -->
    </profiledata>
    <tablegeneration>
        <!-- in this case dive tables shall be generated -->
        <calculatetable>
            <!-- the first table shall be calculated for air as breathing gas, -->
            <!-- tissues are saturated concerning ambient pressure (here: sea level) -->
            <table id="table_air_no-prev-saturation_0m">
                <link ref="air"/>
                <surfaceintervalbeforedive>
                    <infinity/>
                </surfaceintervalbeforedive>
                <density>1030.0</density>
                <!-- statements for the output to be generated -->
                <output>
                    <!-- language: English -->
                    <lingo>en</lingo>
                    <!-- a HTML file shall be generated -->
                    <fileformat>html</fileformat>
                    <!-- the name of the output file (the extension ".html" MUST NOT be given) -->
                    <filename>table_air_no-prev-saturation_0m</filename>
                    <!-- a headline for the table -->
                    <headline>Table for air, no previous saturation, sea level</headline>
                    <!-- additional remarks, to be inserted as text into the output file -->
                    <remark>Calculated on basis of the ZH-L16c deco model</remark>
                </output>
                <applicationdata>
                    <!-- here additional parameters for the executing software -->
                </applicationdata>
                <decomodel>ZH-L16c</decomodel>
                <!-- maximum ascent velocity 10 m/min ^= 0.1666... m/s -->
                <maximumascendingrate>0.16666666667</maximumascendingrate>
                <!-- the following parameters all MUST BE GIVEN -->
                <tablescope>
                    <!-- sea level -->
                    <altitude>0.0</altitude>
                    <!-- shallowest depth 9 m to begin with table output -->
                    <divedepthbegin>9.0</divedepthbegin>
                    <!-- deepest depth 65 m to end with table output -->
                    <divedepthend>65.0</divedepthend>
                    <!-- increment 3 m for table output -->
                    <divedepthstep>3.0</divedepthstep>
                    <!-- maximum bottom time to be considered for table output 30 minutes -->
                    <bottomtimemaximum>1800.0</bottomtimemaximum>
                    <!-- minimal bottom time to be considered for table output 5 minutes -->
                    <bottomtimeminimum>300.0</bottomtimeminimum>
                    <!-- at beginning (at shallowest depth) increment 25 minutes -->
                    <bottomtimestepbegin>1500.0</bottomtimestepbegin>
                    <!-- increment 1 minute at deepest depth -->
                    <bottomtimestepend>60.0</bottomtimestepend>
                </tablescope>
            </table>
            <!-- the second table shall be calculated for nitrox (NOAA1) as breathing gas, -->
            <!-- tissues are saturated concerning ambient pressure (here: sea level) -->
            <table id="table_noaa1_no-prev-saturation_0m">
                <link ref="noaa1"/>
                <surfaceintervalbeforedive>
                    <infinity/>
                </surfaceintervalbeforedive>
                <density>1030.0</density>
                <!-- statements for the output to be generated -->
                <output>
                    <!-- language: English -->
                    <lingo>en</lingo>
                    <!-- a HTML file shall be generated -->
                    <fileformat>html</fileformat>
                    <!-- the name of the output file (the extension ".html" MUST NOT be given) -->
                    <filename>table_noaa1_no-prev-saturation_0m</filename>
                    <!-- a headline for the table -->
                    <headline>Table for nitrox NOAA1, no previous saturation, sea level</headline>
                    <!-- additional remarks, to be inserted as text into the output file -->
                    <remark>Calculated on basis of the ZH-L16c deco model</remark>
                </output>
                <applicationdata>
                    <!-- here additional parameters for the executing software -->
                </applicationdata>
                <decomodel>ZH-L16c</decomodel>
                <!-- maximum ascent velocity 10 m/min ^= 0.1666... m/s -->
                <maximumascendingrate>0.16666666667</maximumascendingrate>
                <!-- the following parameters all MUST BE GIVEN -->
                <tablescope>
                    <!-- sea level -->
                    <altitude>0.0</altitude>
                    <!-- shallowest depth 9 m to begin with table output -->
                    <divedepthbegin>9.0</divedepthbegin>
                    <!-- deepest depth 65 m to end with table output -->
                    <divedepthend>65.0</divedepthend>
                    <!-- increment 3 m for table output -->
                    <divedepthstep>3.0</divedepthstep>
                    <!-- maximum bottom time to be considered for table output 30 minutes -->
                    <bottomtimemaximum>1800.0</bottomtimemaximum>
                    <!-- minimal bottom time to be considered for table output 5 minutes -->
                    <bottomtimeminimum>300.0</bottomtimeminimum>
                    <!-- at beginning (at shallowest depth) increment 25 minutes -->
                    <bottomtimestepbegin>1500.0</bottomtimestepbegin>
                    <!-- increment 1 minute at deepest depth -->
                    <bottomtimestepend>60.0</bottomtimestepend>
                </tablescope>
            </table>
            <!-- the third table again shall be calculated for air as breathing gas, but now -->
            <!-- tissues are saturated on basis of a previously made dive -->
            <table id="table_air_with-prev-saturation_0m">
                <link ref="air"/>
                <link ref="dive1"/>
                <!-- a surface interval of two hours shall be taken into account between -->
                <!-- the previous dive (cross-referenced above) and the next one for -->
                <!-- which the table is to be calculated -->
                <surfaceintervalbeforedive>
                    <passedtime>7200.0</passedtime>
                </surfaceintervalbeforedive>
                <density>1030.0</density>
                <!-- statements for the output to be generated -->
                <output>
                    <!-- language: English -->
                    <lingo>en</lingo>
                    <!-- a HTML file shall be generated -->
                    <fileformat>html</fileformat>
                    <!-- the name of the output file (the extension ".html" MUST NOT be given) -->
                    <filename>table_air_with-prev-saturation_0m</filename>
                    <!-- a headline for the table -->
                    <headline>Table for air, with previous saturation, sea level</headline>
                    <!-- additional remarks, to be inserted as text into the output file -->
                    <remark>
                        Calculated on basis of the ZH-L16c deco model; for comparison purposes with
                        a dive ended two hours before
                    </remark>
                </output>
                <applicationdata>
                    <!-- here additional parameters for the executing software -->
                </applicationdata>
                <decomodel>ZH-L16c</decomodel>
                <!-- maximum ascent velocity 10 m/min ^= 0.1666... m/s -->
                <maximumascendingrate>0.16666666667</maximumascendingrate>
                <!-- the following parameters all MUST BE GIVEN -->
                <tablescope>
                    <!-- sea level -->
                    <altitude>0.0</altitude>
                    <!-- shallowest depth 9 m to begin with table output -->
                    <divedepthbegin>9.0</divedepthbegin>
                    <!-- deepest depth 65 m to end with table output -->
                    <divedepthend>65.0</divedepthend>
                    <!-- increment 3 m for table output -->
                    <divedepthstep>3.0</divedepthstep>
                    <!-- maximum bottom time to be considered for table output 30 minutes -->
                    <bottomtimemaximum>1800.0</bottomtimemaximum>
                    <!-- minimal bottom time to be considered for table output 5 minutes -->
                    <bottomtimeminimum>300.0</bottomtimeminimum>
                    <!-- at beginning (at shallowest depth) increment 25 minutes -->
                    <bottomtimestepbegin>1500.0</bottomtimestepbegin>
                    <!-- increment 1 minute at deepest depth -->
                    <bottomtimestepend>60.0</bottomtimestepend>
                </tablescope>
            </table>
            <!-- the fourth table shall be calculated for nitrox (NOAA1) as breathing gas, and -->
            <!-- tissues are saturated on basis of a previously made dive -->
            <table id="table_noaa1_with-prev-saturation_0m">
                <link ref="noaa1"/>
                <link ref="dive1"/>
                <!-- a surface interval of two hours shall be taken into account between -->
                <!-- the previous dive (cross-referenced above) and the next one for -->
                <!-- which the table is to be calculated -->
                <surfaceintervalbeforedive>
                    <passedtime>7200.0</passedtime>
                </surfaceintervalbeforedive>
                <density>1030.0</density>
                <!-- statements for the output to be generated -->
                <output>
                    <!-- language: English -->
                    <lingo>en</lingo>
                    <!-- a HTML file shall be generated -->
                    <fileformat>html</fileformat>
                    <!-- the name of the output file (the extension ".html" MUST NOT be given) -->
                    <filename>table_noaa1_with-prev-saturation_0m</filename>
                    <!-- a headline for the table -->
                    <headline>Table for nitrox NOAA1, with previous saturation, sea level</headline>
                    <!-- additional remarks, to be inserted as text into the output file -->
                    <remark>
                        Calculated on basis of the ZH-L16c deco model; for comparison purposes with
                        a dive ended two hours before
                    </remark>
                </output>
                <applicationdata>
                    <!-- here additional parameters for the executing software -->
                </applicationdata>
                <decomodel>ZH-L16c</decomodel>
                <!-- maximum ascent velocity 10 m/min ^= 0.1666... m/s -->
                <maximumascendingrate>0.16666666667</maximumascendingrate>
                <!-- the following parameters all MUST BE GIVEN -->
                <tablescope>
                    <!-- sea level -->
                    <altitude>0.0</altitude>
                    <!-- shallowest depth 9 m to begin with table output -->
                    <divedepthbegin>9.0</divedepthbegin>
                    <!-- deepest depth 65 m to end with table output -->
                    <divedepthend>65.0</divedepthend>
                    <!-- increment 3 m for table output -->
                    <divedepthstep>3.0</divedepthstep>
                    <!-- maximum bottom time to be considered for table output 30 minutes -->
                    <bottomtimemaximum>1800.0</bottomtimemaximum>
                    <!-- minimal bottom time to be considered for table output 5 minutes -->
                    <bottomtimeminimum>300.0</bottomtimeminimum>
                    <!-- at beginning (at shallowest depth) increment 25 minutes -->
                    <bottomtimestepbegin>1500.0</bottomtimestepbegin>
                    <!-- increment 1 minute at deepest depth -->
                    <bottomtimestepend>60.0</bottomtimestepend>
                </tablescope>
            </table>
        </calculatetable>
    </tablegeneration>
</uddf>
                

Computation of a "maximum bottom time table"

<uddf version="3.2.0">
    <!-- the <generator> section has to appear in every UDDF file -->
    <generator>
        <!-- description of the program generating the UDDF file -->
        <name>MGT</name>
        <manufacturer>
            <name>Kai Schröder</name>
        </manufacturer>
        <version>0.6</version>
        <datetime>2004-09-30</datetime>
    </generator>
    <gasdefinitions>
        <!-- only air is to be used for this calculation -->
        <mix id="Air">
            <name>air</name>
            <o2>0.210</o2>
            <n2>0.790</n2>
            <he>0.000</he>
            <ar>0.000</ar>
            <h2>0.000</h2>
        </mix>
    </gasdefinitions>
    <profiledata>
        <!-- all recorded dive profiles - here none is necessary -->
    </profiledata>
    <tablegeneration>
        <calculatebottomtimetable>
            <bottomtimetable id="DECO2000">
                <link ref="deco2000"/>
                <output>
                    <!-- output language is set to "German" -->
                    <lingo>de</lingo>
                    <!-- format of output, in this case ASCII -->
                    <fileformat>ascii</fileformat>
                    <!-- name of output file -->
                    <filename>mgt_deco2000</filename>
                    <!-- headline for table to be calculated -->
                    <headline>Tabelle fuer   0 m bis  700 muedM (DECO 2000)</headline>
                    <!-- remarks added to the table output -->
                    <remark>
                        Maximale Grundzeit in Minuten bei verschiedenen Flaschenvolumina,
                        Tauchtiefen und Atemminutenvolumen (AMV)
                        unter Beruecksichtigung von notwendigen Dekompressionsstopps

                        Wird die Nullzeit bei einem Tauchgang ueberschritten, so wird der
                        max. Grundzeit ein "d" (fuer Deko-Tauchgang) vorangestellt.

                        Ist die maximale Grundzeit laenger als die Nullzeit, aber dafuer
                        in der Tabelle kein Dekostopp angegeben, so wird die Nullzeit als
                        maximale Grundzeit angegeben und dieser ein "s" (fuer "Sicher-
                        heitsstopp") vorangestellt. In diesem Fall obliegt es dem Taucher,
                        einen Sicherheitsstopp von z.B. 3 min auf 5 m (oder laenger) zu machen.

                        Muss die maximale Grundzeit auf die laengste in der Tabelle enthaltene
                        Grundzeit gesetzt werden (weil fuer laengere Grundzeiten keine
                        Dekostopps mehr berechnet wurden), wird dem Wert ein "t"
                        vorangestellt. In diesem Fall ist die theoretisch moegliche maximale
                        Grundzeit laenger als die angegebene, aber dafuer existieren keine
                        Dekostopp-Angaben mehr.

                        Grundzeiten berechnet mit Hilfe der Austauchtabelle DECO 2000
                        (0 -- 700 muedM) von Max Hahn; Aufstiegsgeschwindigkeit 10 m/min
                    </remark>
                </output>
                <bottomtimetablescope>
                    <!-- shallowest depth: 5 m -->
                    <divedepthbegin>5.0</divedepthbegin>
                    <!-- deepest depth: 60 m -->
                    <divedepthend>60.0</divedepthend>
                    <!-- increment for depth: 5 m -->
                    <divedepthstep>5.0</divedepthstep>
                    <!-- table is to be calculated for different breathing gas consumption values, ... -->
                    <!-- beginning with a BCV of 10 l/min -->
                    <breathingconsumptionvolumebegin>0.00016666667</breathingconsumptionvolumebegin>
                    <!-- end at 30 l/min -->
                    <breathingconsumptionvolumeend>0.0005</breathingconsumptionvolumeend>
                    <!-- increment 5 l/min -->
                    <breathingconsumptionvolumestep>8.3333333e-5</breathingconsumptionvolumestep>
                    <!-- ... and also for different tank volumes... -->
                    <!-- beginning with a tank volume of 10 litres ^= 0.01 m^3 -->
                    <tankvolumebegin>0.01</tankvolumebegin>
                    <!-- end at 20 litres -->
                    <tankvolumeend>0.02</tankvolumeend>
                    <!-- increment 5 litres -->
                    <tankvolumestep>0.005</tankvolumestep>
                    <!-- fill pressure at beginning of each dive 200 bar -->
                    <tankpressurebegin>20000000.0</tankpressurebegin>
                    <!-- reserve pressure at end to be considered (40 bar) - not to be used -->
                    <tankpressurereserve>40000.0</tankpressurereserve>
                </bottomtimetablescope>
            </bottomtimetable>
        </calculatebottomtimetable>
    </tablegeneration>
</uddf>
                

The output to the above given parameters could be as follows:

 MGT - Maximale Grundzeit-Tabellen-Berechnung v0.6 vom 27.3.2006, Autor: Kai Schroeder

     Maximale Grundzeit in Minuten bei verschiedenen Flaschenvolumina,
     Tauchtiefen und Atemminutenvolumen (AMV)
     unter Beruecksichtigung von notwendigen Dekompressionsstopps

     Wird die Nullzeit bei einem Tauchgang ueberschritten, so wird der
     max. Grundzeit ein "d" (fuer Deko-Tauchgang) vorangestellt.

     Ist die maximale Grundzeit laenger als die Nullzeit, aber dafuer
     in der Tabelle kein Dekostopp angegeben, so wird die Nullzeit als
     maximale Grundzeit angegeben und dieser ein "s" (fuer "Sicher-
     heitsstopp") vorangestellt. In diesem Fall obliegt es dem Taucher,
     einen Sicherheitsstopp von z.B. 3 min auf 5 m (oder laenger) zu machen.

     Muss die maximale Grundzeit auf die laengste in der Tabelle enthaltene
     Grundzeit gesetzt werden (weil fuer laengere Grundzeiten keine
     Dekostopps mehr berechnet wurden), wird dem Wert ein "t"
     vorangestellt. In diesem Fall ist die theoretisch moegliche maximale
     Grundzeit laenger als die angegebene, aber dafuer existieren keine
     Dekostopp-Angaben mehr.

     Grundzeiten berechnet mit Hilfe der Austauchtabelle DECO 2000
     (0 -- 700 muedM) von Max Hahn; Aufstiegsgeschwindigkeit 10 m/min



                              Tabelle fuer   0 m bis  700 muedM (DECO 2000)
----------------------------------------------------------------------------------------------------
       |                                  maximale Grundzeit [min]
       |--------------------------------------------------------------------------------------------
       |                                      Flaschenvolumen
 Tauch |           10 Liter           |           15 Liter           |           20 Liter
 tiefe |                              |                              |
  [m]  |          AMV [l/min]         |          AMV [l/min]         |          AMV [l/min]
       |  10    15    20    25    30  |  10    15    20    25    30  |  10    15    20    25    30
-------+------------------------------+------------------------------+------------------------------
   5   |  106    71    53    42    35 |  160   106    80    64    53 |  213   142   106    85    71
  10   |   80    53    40    32    26 |  120    80    60    48    40 | s142   106    80    64    53
  15   |   64    42    32    25    21 | t 84    64    48    38    32 | t 84  d 82    64    51    42
  20   | d 48  d 34    26    21    17 | t 61  d 48  d 37  d 31    26 | t 61  t 61  d 48  d 40  d 34
  25   | d 38  d 27  d 21  d 18    15 | t 46  d 38  d 30  d 25  d 21 | t 46  t 46  d 38  d 31  d 27
  30   | d 33  d 23  d 18  d 15    13 | t 36  d 33  d 25  d 21  d 18 | t 36  t 36  d 33  d 27  d 23
  35   | d 27  d 19  d 14  d 13  d 10 | t 33  d 27  d 21  d 18  d 14 | t 33  t 33  d 27  d 22  d 19
  40   | d 22  d 16  d 13  d 10  d  9 | t 25  d 22  d 18  d 15  d 13 | t 25  t 25  d 22  d 19  d 16
  45   | d 20  d 14  d 12  d 10  d  8 | t 22  d 20  d 16  d 13  d 12 | t 22  t 22  d 20  d 17  d 14
  50   | t 18  d 13  d 10  d  8  d  7 | t 18  t 18  d 14  d 12  d 10 | t 18  t 18  t 18  d 14  d 13
  55   | t 16  d 11  d  9  d  8  d  6 | t 16  t 16  d 12  d 10  d  9 | t 16  t 16  t 16  d 13  d 11
  60   | t 14  d 10  d  8  d  6  d  6 | t 14  t 14  d 11  d  9  d  8 | t 14  t 14  t 14  d 12  d 10