Main#

ATS’s top level driver is provided the entire input spec as a single list called “main”. That list contains the following required elements:

main-spec

  • “cycle driver[coordinator-spec] See below.

  • “mesh[mesh-typed-spec-list] A list of Mesh_ objects.

  • “regions[region-typedinline-spec-list] A list of Region_ objects.

  • “visualization[visualization-spec-list] A list of Visualization_ objects.

  • “observations[observation-spec-list] An list of Observation_ objects.

  • “checkpoint[checkpoint-spec] A Checkpoint_ spec.

  • “PKs[pk-typedinline-spec-list] A list of `Process Kernels`_.

  • “state[state-spec] A State_ spec.

Coordinator#

In the “cycle driver” sublist, the user specifies global control of the simulation, including starting and ending times and restart options.

coordinator-spec

  • “start time[double] 0. Specifies the start of time in model time.

  • “start time units[string] “s” One of “s”, “d”, or “yr”

ONE OF

  • “end time[double] Specifies the end of the simulation in model time.

  • “end time units[string] “s” One of “s”, “d”, or “yr

OR

  • “end cycle[int] optional If provided, specifies the end of the simulation in timestep cycles.

    END

  • “subcycled timestep[bool] false If true, this coordinator creates a third State object to store intermediate solutions, allowing for failed steps.

  • “restart from checkpoint file[string] optional If provided, specifies a path to the checkpoint file to continue a stopped simulation.

  • “wallclock duration [hrs][double] optional After this time, the simulation will checkpoint and end.

  • “required times[io-event-spec] optional An IOEvent_ spec that sets a collection of times/cycles at which the simulation is guaranteed to hit exactly. This is useful for situations such as where data is provided at a regular interval, and interpolation error related to that data is to be minimized.

  • “PK tree[pk-typed-spec-list] List of length one, the top level PK_ spec.

Note: Either “end cycle” or “end time” are required, and if both are present, the simulation will stop with whichever arrives first. An “end cycle” is commonly used to ensure that, in the case of a time step crash, we do not continue on forever spewing output.

Example:

<ParameterList name="cycle driver">
  <Parameter  name="end cycle" type="int" value="6000"/>
  <Parameter  name="start time" type="double" value="0."/>
  <Parameter  name="start time units" type="string" value="s"/>
  <Parameter  name="end time" type="double" value="1"/>
  <Parameter  name="end time units" type="string" value="yr"/>
  <ParameterList name="required times">
    <Parameter name="start period stop" type="Array(double)" value="{0,-1,86400}" />
  </ParameterList>
  <ParameterList name="PK tree">
    <ParameterList name="my richards pk">
      <Parameter name="PK type" type="string" value="richards" />
    </ParameterList>
  </ParameterList>
</ParameterList>