Table of Contents
Introduction
DEADLINE: end of March
Objectives:
- GET: To retrieve subset of data elements
- GET_SIZE: To interrogate the size of subset of data elements,
Assumptions:
GET_SLICEtype methods are not in the scope of the task (they are alternative ways to retrieve parts of the data elements) – although may be useful to add (independently of the deliverable) if straightforward to implement.- Implementation in Python only, no plans for other languages
- In case of nested AoS, it is not allowed to specify set of indices for AoS ancestors
- IMPLEMENTATION IN NEW LL ONLY!!!!!
...
2) Call traverse(ctx = p-fCtx, path, node = ids)
3) Get node name from list, look for IDS field of this name
4) Does node name contain brackets?
...
path/to/field/with/ancestorAoS(1)/field/AoS(n:m) -> AoS(n:m)
ancestorAoS(x:y)/field(:) --> field(:,x:y)
Shape of returned arrays
/path/with/AoS(i1:i2)/data
lets assume:
+ i1=1; i2=3 => number of AoS to be found ("range") is 2
+ len (data) == 5,
+ data for AoS(i1) = {11, 12, 13, 14, 15}
+ data for AoS(i2) = {21, 22, 23, 24, 25}
Non timed AoS
get (« magnetics.flux_loop(i1:i2).flux ») à flux(i1:i2, t)
If AoS is NON TIMED (AoS1 or AoS2) return array has shape (range, data_len)
In NumPy notation:
[[11, 12, 13, 14, 15]
[21, 22, 23, 24, 25]]
e.g.
arr(0,1) = 12
arr(1,2) = 23
Timed AoS
get (« equilibrium.time_slice(t1:t2).profiles_1d.q ») à q(:, t1:t2)
If AoS is TIMED (AoS3) return array has shape (data_len, range)
In NumPy notation:
[ [11,21]
[12,22]
[13,23]
[14,24]
[15,25] ]
e.g.
arr(0,1) = 21
arr(2,1) = 23
...
- call
resize
for a number of structures defined by indices - get AoS context (aos context - info about index? is ctx accessible? )
...
OPEN POINTS:
...
- AoS as ancestor(s) of queried data
- once implemented mechanism for creation of AoS could be reused to "go through" ancestors
- returned value
- type provided by user?
- AoS? if not - functionality can be placed at the Low Level and available for all HLIs (however it could be a problem with returned type anyway)
- Level of nesting
- path/AoS(indices)/x/y/z ?
path/to/field/with/ancestorAoS(1)/field/AoS(n:m) -> AoS(n:m)
ancestorAoS(x:y)/field(:) --> field(:,x:y)
...