NuSDaS User's Guide
Elementmap defines whether a certain element is allowed or not
for certain combination of member, valid time, and plane.
To understand elementmap, first think of a bitmap of size
M * V * P (or Fortran logical array with
DIMENSION(
P, V, M)
),
where M, V, P
are total number of members, valid times, and planes.
For each bit, '1' declares that the element is allowed,
and '0' does oppositely.
Elementmap written in the definition file is the bitmap
in a kind of run-length-encoding (RLE) compression.
The syntax of elementmap is written in BNF as follows:
- elementmap := member_loop | vtime_loop | vtime_line
- member_loop := 3 (nmember member_block)+
- member_block := vtime_loop | list_line
- vtime_loop := 2 (nvtime bit_list)+
- vtime_line := list_line | contiguous_line
- list_line := 1 bit_list
- bit_list := ('0' | '1')+
- contiguous_line := 0
- nmember := positive integer
- nvtime := positive integer
They are interpreted as follows:
- contiguous_line tells that the element is
allowed for all planes for certain valid time and member.
- list_line tells that the element is allowed only for
planes indicated with symbol 1 in bit_list.
The size of bit_list should be the number of planes.
- either contiguous_line or list_line, as vtime_line,
can be used for elementmap
even if the dataset has many valid times or members:
it is assumed that the contiguous_line specification is repeated
as many as needed.
- vtime_loop tells that the elementmap depends on the valid time.
Sum of repeated nvtime numbers must be the number of valid times.
If all nvtime's are 1, bit_list describes
elementmap subarray for each valid time of corresponding order.
When nvtime is more than 1, bit_list is treated as if
it is repeated nvtime times.
- member_loop tells that the elementmap depends on the member.
Sum of repeated nmember numbers must be the number of members.
If all nmember's are 1, member_block describes
elementmap subarray for each valid time of corresponding order.
When nmember is more than 1, member_block is treated as if
it is repeated nmember times.
The author admits the rule above is far from human understanding.
Indeed, terms vtime_loop or member_loop are hardly used.
If you are not sure, declare elements with contiguous_line.
It will look like following:
element 4
elementmap PSEA 0
elementmap T 0
elementmap U 0
elementmap V 0
Allowing too much data records does not mean increase of data file size
or data access speed/latency.
Thus you can safely declare elements with 'no limitation' settings.