polaris.tasks.e3sm.init.component_inputs.seaice_graph_partition.SeaiceGraphPartitionStep

class polaris.tasks.e3sm.init.component_inputs.seaice_graph_partition.SeaiceGraphPartitionStep(component, subdir, seaice_mesh_step, partition_map_step, name='seaice_graph_partition')[source]

A step for partitioning the sea-ice mesh.

Sea-ice partitions are not ocean partitions with a different name. They are weighted by where sea ice actually occurs, so that the cost of the ice physics is spread evenly rather than the cell count – which is why this needs a QU60km climatology and a mapping file, and the ocean partitioning needs neither.

The weights come from SeaicePartitionMapStep rather than being built here, so that this step needs no MPI.

The partitions themselves follow MPAS-Tools’ create_seaice_partitions: each region of the mesh is partitioned on its own, and every core gets a piece of every region. The tool is not called, though. It gets each region’s graph by culling a copy of the mesh with MpasCellCuller.x, which took over two hours on the finest mesh, when the same graph follows from cellsOnCell in seconds. It also builds one partition at a time.

The mesh being partitioned is SeaiceMeshStep’s output. Compass partitioned an ocean restart instead, which is the coupling D7 removes; it also had to drop cullCell from that file first, and the culled mesh this reads never had one.

As with the ocean partitions, the core counts follow from a cell count that is not known until the mesh exists, so the partition files cannot be declared as outputs at setup.

Variables:

seaice_mesh_step (polaris.Step) – The step that wrote seaice_mesh.nc.

__init__(component, subdir, seaice_mesh_step, partition_map_step, name='seaice_graph_partition')[source]

Create a new step.

Parameters:
  • component (polaris.Component) – The component the step belongs to.

  • subdir (str) – The subdirectory for the step.

  • seaice_mesh_step (polaris.Step) – The step that wrote seaice_mesh.nc.

  • partition_map_step (polaris.Step) – The step that built the QU60km-to-mesh mapping file.

  • name (str, optional) – The name of the step.

Methods

__init__(component, subdir, ...[, name])

Create a new step.

add_cf_check([filename])

Check an output file for CF compliance after the step runs.

add_dependency(step[, name])

Add step as a dependency of this step (i.e. this step can't run until the dependency has finished).

add_input_file([filename, target, database, ...])

Add an input file to the step (but not necessarily to the MPAS model).

add_output_file(filename[, validate_vars, ...])

Add the output file to the step

add_property_check(filename, check_properties)

Add a single conservation comparison for an output file

check_cf()

Check the files added with add_cf_check() for CF compliance.

check_properties()

Check conservation properties of the output files of this step.

constrain_resources(available_resources)

Take the number of partitions to build at once from the config.

get_core_counts(ncells)

The core counts to partition a mesh into, from the config's bounds.

process_inputs_and_outputs()

Process the inputs to and outputs from a step added with polaris.Step.add_input_file() and polaris.Step.add_output_file().

run()

Weight the mesh by the sea-ice climatology, then partition it.

runtime_setup()

Update attributes of the step at runtime before calling the run() method.

set_resources([cpus_per_task, ...])

Update the resources for the subtask.

set_shared_config(config[, link])

Replace the step's config parser with the shared config parser

setup()

Take the number of partitions to build at once from the config.

validate_baselines()

Compare variables between output files in this step and in the same step from a baseline run if one was provided.

work_path(*filenames)

Get the absolute path to a file or directory in the step's work directory

Attributes

cores

the number of cores this step needs, in total

gpus

the number of GPUs this step needs, in total

may_span_nodes

whether this step's cores and GPUs may come from several nodes

min_cores

the number of cores this step needs in order to run at all

min_gpus

the number of GPUs this step requires, in total