hpcflow.sdk.core.loop_cache.LoopCache#

class hpcflow.sdk.core.loop_cache.LoopCache(element_dependents, elements, zeroth_iters, data_idx, iterations, task_iterations)#

Bases: object

Class to store a cache for use in Workflow.add_empty_loop() and WorkflowLoop.add_iterations(). Use build() to get a new instance.

Parameters:
  • element_dependents (dict[int, dict[int, DependentDescriptor]]) – Keys are element IDs, values are dicts whose keys are element IDs that depend on the key element ID (via Element.get_dependent_elements_recursively), and whose values are dicts with keys: group_names, which is a tuple of the string group names associated with the dependent element’s element set.

  • elements (dict[int, ElementDescriptor]) – Keys are element IDs, values are dicts with keys: input_statuses, input_sources, and task_insert_ID.

  • zeroth_iters (dict[int, tuple[int, DataIndex]]) – Keys are element IDs, values are data associated with the zeroth iteration of that element, namely a tuple of iteration ID and ElementIteration.data_idx.

  • data_idx (dict[int, dict[LoopIndex[str, int], DataIndex]]) – Keys are element IDs, values are data associated with all iterations of that element, namely a dict whose keys are the iteration loop index as a tuple, and whose values are data indices via ElementIteration.get_data_idx().

  • iterations (dict[int, tuple[int, int]]) – Keys are iteration IDs, values are tuples of element ID and iteration index within that element.

  • task_iterations (dict[int, list[int]]) – Keys are task insert IDs, values are list of all iteration IDs associated with that task.

Methods

add_iteration

Update the cache to include a newly added iteration.

build

Build a cache of data for use in adding loops and iterations.

get_iter_IDs

Retrieve a list of iteration IDs belonging to a given loop.

get_iter_loop_indices

Retrieve the mapping from element to loop index for each given iteration.

update_loop_indices

Set the loop indices for a named loop to the given list of iteration IDs.

Attributes

element_dependents

Keys are element IDs, values are dicts whose keys are element IDs that depend on the key element ID (via Element.get_dependent_elements_recursively), and whose values are dicts with keys: group_names, which is a tuple of the string group names associated with the dependent element's element set.

elements

input_statuses, input_sources, and task_insert_ID.

zeroth_iters

Keys are element IDs, values are data associated with the zeroth iteration of that element, namely a tuple of iteration ID and ElementIteration.data_idx.

data_idx

Keys are element IDs, values are data associated with all iterations of that element, namely a dict whose keys are the iteration loop index as a tuple, and whose values are data indices via ElementIteration.get_data_idx().

iterations

Keys are iteration IDs, values are tuples of element ID and iteration index within that element.

task_iterations

Keys are task insert IDs, values are list of all iteration IDs associated with that task.

add_iteration(iter_ID, task_insert_ID, element_ID, loop_idx, data_idx)#

Update the cache to include a newly added iteration.

Parameters:
  • iter_ID (int) –

  • task_insert_ID (int) –

  • element_ID (int) –

  • loop_idx (LoopIndex[str, int]) –

  • data_idx (DataIndex) –

classmethod build(workflow, loops=None)#

Build a cache of data for use in adding loops and iterations.

Parameters:
Return type:

Self

data_idx: dict[int, dict[LoopIndex[str, int], DataIndex]]#

Keys are element IDs, values are data associated with all iterations of that element, namely a dict whose keys are the iteration loop index as a tuple, and whose values are data indices via ElementIteration.get_data_idx().

element_dependents: dict[int, dict[int, DependentDescriptor]]#

Keys are element IDs, values are dicts whose keys are element IDs that depend on the key element ID (via Element.get_dependent_elements_recursively), and whose values are dicts with keys: group_names, which is a tuple of the string group names associated with the dependent element’s element set.

elements: dict[int, ElementDescriptor]#

input_statuses, input_sources, and task_insert_ID.

Type:

Keys are element IDs, values are dicts with keys

get_iter_IDs(loop)#

Retrieve a list of iteration IDs belonging to a given loop.

Parameters:

loop (Loop) –

Return type:

list[int]

get_iter_loop_indices(iter_IDs)#

Retrieve the mapping from element to loop index for each given iteration.

Parameters:

iter_IDs (list[int]) –

Return type:

Sequence[Mapping[str, int]]

iterations: dict[int, tuple[int, int]]#

Keys are iteration IDs, values are tuples of element ID and iteration index within that element.

task_iterations: dict[int, list[int]]#

Keys are task insert IDs, values are list of all iteration IDs associated with that task.

update_loop_indices(new_loop_name, iter_IDs)#

Set the loop indices for a named loop to the given list of iteration IDs.

Parameters:
  • new_loop_name (str) –

  • iter_IDs (list[int]) –

Return type:

None

zeroth_iters: dict[int, tuple[int, DataIndex]]#

Keys are element IDs, values are data associated with the zeroth iteration of that element, namely a tuple of iteration ID and ElementIteration.data_idx.