In an Earth system model, “tracer” refers to quantities that are passively moved around in a model without actively interacting with a component. Generally these are moved around by a dynamical core or subgrid advection scheme. It is possible for components to do something else to tracers (let us know if you think of something!) but for now let’s assume that’s what’s going on.

If a component moves around tracers, it will have its uses_tracers property set to True, and will also have a tracer_dims property set.

You can tell Sympl that you want components to move a tracer around by registering it with register_tracer().

sympl.register_tracer(name, units)[source]
  • name (str) – Quantity name to register as a tracer.
  • units (str) – Unit string of that quantity.

To see the current list of registered tracers, you can call get_tracer_names() or get_tracer_unit_dict().

Returns:tracer_names – Tracer names in the order that they will appear in tracer arrays.
Return type:tuple of str
Returns:unit_dict – A dictionary whose keys are tracer quantity names as str and values are units of those quantities as str.
Return type:dict