## Variables and Their Decomposition Maps Used in E3SM
This E3SM I/O kernel benchmark includes three common simulation cases, namely
F, G, and I cases. Both F and I cases create two history files, namely 'h0' and
'h1'.

|                 Case/History |    F/h0 |    F/h1 |     G  |   I/h0 |   I/h1 |
|-----------------------------:|--------:|--------:|-------:|-------:|-------:|
|           # vars use Map 1   |       1 |      1  |      6 |    465 |    465 |
|           # vars use Map 2   |     323 |      22 |      2 |     75 |     69 |
|           # vars use Map 3   |      63 |       1 |     25 |      4 |      2 |
|           # vars use Map 4   |         |         |      2 |      1 |      1 |
|           # vars use Map 5   |         |         |      2 |      1 |      1 |
|           # vars use Map 6   |         |         |      4 |        |        |
| Total # partitioned vars     |     387 |      24 |     41 |    546 |    538 |
| Total # non-partitioned vars |      27 |      27 |     11 |     14 |     14 |
|       Total # variables      |     414 |      51 |     52 |    560 |    552 |
|       MAX # noncontig reqs   | 184,644 | 173,206 | 21,110 | 41,400 | 38,650 |
|       MIN # noncontig reqs   | 174,926 | 164,090 | 18,821 | 33,120 | 30,920 |

`MAX # noncontig reqs` is the maximum number of noncontiguous write requests among all processes.

`MIN # noncontig reqs` is the minimum number of noncontiguous write requests among all processes.

## F case
* **F case** uses 3 decomposition maps and produces 2 files.
  + **h0** file: There are 414 climate variables stored in the 'h0' file.
    + Among the 414 variables, 6 are scalar variables and 408 are array variables.
    + Among the 414 variables, 15 are fixed-size variables and 399 are record variables.
      * Among 15 fixed-size variables,
        + 5 are scalars of type int
        + 1 is scalar of type double
        + 9 are 1D array of type double
      * Among 399 record variables (the most significant dimension is time.)
        + 5 are 1D array of type int
        + 8 are 1D array of type double, 3 of them are partitioned
        + 2 are 2D array of type char
        + 321 are 2D array of type float, all are partitioned
        + 63 are 3D array of type float, all are partitioned
    + Among the 414 variables, 387 are partitioned and 27 are not.
    + Among the 387 partitioned variables,
      * 1 uses decomposition map 0,
      * 323 use decomposition map 1, and
      * 63 use decomposition map 2.
  + **h1** file: There are 51 climate variables stored in the 'h1' file.
    * Among the 51 variables, 6 are scalar variables and 45 are array variables.
    * Among the 51 variables, 15 are fixed-size variables and 36 are record variables.
      * Among 15 fixed-size variables,
        + 5 are scalars of type int
        + 1 is scalar of type double
        + 9 are 1D arrays of type double, 3 are partitioned
      * Among 36 record variables (the most significant dimension is time.)
        + 5 are 1D arrays of type int
        + 8 are 1D arrays of type double
        + 2 are 2D arrays of type char
        + 20 are 2D arrays of type float, all are partitioned
        + 1 is 3D array of type float, partitioned
    * Among the 51 variables, 24 are partitioned and 27 are not partitioned.
    * Among the 24 partitioned variables,
      * 1 uses decomposition map 0,
      * 22 use decomposition map 1, and
      * 1 uses decomposition map 2.

## G case
* **G case** uses 6 decomposition maps and produces one file.
  + There are 52 climate variables stored in the output file.
  + All 52 variables are array variables. None is scalar.
  + Among the 52 variables, 11 are fixed-size variables and 41 are record variables.
    * Among 11 fixed-size variables,
      + 3 are 1D arrays type int, all are partitioned
      + 3 are 2D arrays type int, all are partitioned
      + 5 are 1D arrays of type double, 1 is partitioned
    * Among 41 record variables (the most significant dimension is time.)
      + 1 is 2D array of type char
      + 6 is 1D arrays of type double
      + 4 are 2D arrays of type double, all are partitioned
      + 30 are 3D arrays of type double, all are partitioned
  + Among the 52 variables, 41 are partitioned and 11 are not.
  + Among the 41 partitioned variables,
    * 6 use decomposition map 0,
    * 2 use decomposition map 1,
    * 25 use decomposition map 2,
    * 2 use decomposition map 3,
    * 2 use decomposition map 4, and
    * 4 use decomposition map 5.

## I case
* **I case** uses 5 decomposition maps and produces 2 files.
  + **h0** file: There are 560 climate variables stored in the 'h0' file.
    + All 560 variables are array variables. None is scalar.
    + Among the 560 variables, 18 are fixed-size variables and 542 are record variables.
      * Among 18 fixed-size variables,
        + 2 are 2D arrays type int, both are partitioned
        + 5 are 1D arrays of type float
        + 3 are 2D arrays of type float, all are partitioned
        + 8 are 3D arrays of type float, all are is partitioned
      * Among 542 record variables (the most significant dimension is time.)
        + 2 are 2D arrays of type char
        + 5 are 1D arrays of type int
        + 1 is 1D arrays of type float
        + 1 is 2D array of type double
        + 73 are 4D arrays of type float, all are partitioned
        + 460 are 3D arrays of type float, all are partitioned
    + Among the 560 variables, 546 are partitioned and 14 are not.
    + Among the 546 partitioned variables,
      * 465 use decomposition map 0,
      * 75 use decomposition map 1,
      * 4 use decomposition map 2,
      * 1 uses decomposition map 3, and
      * 1 uses decomposition map 4.
  + **h1** file: There are 552 climate variables stored in the 'h1' file.
    + All 552 variables are array variables. None is scalar.
    + Among the 552 variables, 10 are fixed-size variables and 542 are record variables.
      * Among 10 fixed-size variables,
        + 2 are 2D arrays type int, both are partitioned
        + 5 are 1D arrays of type float
        + 3 are 2D arrays of type float, all are partitioned
      * Among 542 record variables (the most significant dimension is time.)
        + 2 are 2D arrays of type char
        + 5 are 1D arrays of type int
        + 1 is 1D arrays of type float
        + 1 is 2D array of type double
        + 73 are 4D arrays of type float, all are partitioned
        + 460 are 3D arrays of type float, all are partitioned
    + Among the 552 variables, 538 are partitioned and 14 are not partitioned.
    + Among the 538 partitioned variables,
      * 465 use decomposition map 0,
      * 69 use decomposition map 1,
      * 2 use decomposition map 2,
      * 1 uses decomposition map 3, and
      * 1 uses decomposition map 4.

## The decomposition maps
* The decomposition map files from the E3SM production runs are available upon request.
  + `piodecomp21600tasks_F_case.nc` (266 MB) for F case produced from 21600
    processes.
  + `GMPAS-NYF_T62_oRRS18to6v3_9600p.nc` (303 MB) for G case produced from 9600
    processes.
  + `i_case_1344p.nc` (12 MB)for I case produced from 1344 processes.

* The partitioning dimension sizes of each decomposition map are given below.

| Case  |           F |              G  |               I |
|------:|:-----------:|:---------------:|:---------------:|
| Map 1 |      48,602 |  3,693,225      |       360 x 720 |
| Map 2 |      48,602 | 11,135,652      |  15 x 360 x 720 |
| Map 3 | 72 x 48,602 |  3,693,225 x 80 |  10 x 360 x 720 |
| Map 4 |             | 11,135,652 x 80 |  19 x 360 x 720 |
| Map 5 |             |  7,441,216 x 80 |  17 x 360 x 720 |
| Map 6 |             |  3,693,225 x 81 |                 |