Skip to content

Experiment Configuration

The experiment.json file serves as the primary configuration file for SINDBAD experiments, defining all necessary settings for model execution and data handling.

Configuration Structure

The file is organized into several main sections:

Basics

The basics section defines core experiment settings and metadata.

json
"basics": {
    "config_files": {
      "forcing": "Name of the forcing data configuration file",
      "model_structure": "Name of the model structure configuration file",
      "optimization": "Name of the parameter optimization configuration file"
    },
    "domain": "Experiment domain identifier",
    "name": "Experiment name",
    "time": {
      "date_begin": "Start date of the experiment (YYYY-MM-DD)",
      "date_end": "End date of the experiment (YYYY-MM-DD)",
      "temporal_resolution": "Model simulation time step (one of: 'second', 'minute', 'halfhour', 'hour', 'day', 'week', 'month', 'year', 'decade')"
    }
}

Execution Rules

The exe_rules section defines model execution settings and performance configurations.

json
"exe_rules": {
    "input_array_type": "Data type for input arrays after reading forcing data",
    "input_data_backend": "Data backend for forcing dataset",
    "land_output_type": "Output array backend for model time series",
    "longtuple_size": "Length of the longtuple for model storage",
    "model_array_type": "Data backend for arrays/vectors within models",
    "model_number_type": "Numeric type used in models",
    "parallelization": "Parallelization backend for spatial operations",
    "tolerance": "Numerical tolerance for error checking",
    "yax_max_cache": "Cache size for YaxArray-based model runs"
}

Available Options

  • Use showMethodsOf(InputArrayBackend) to list available input_array_type options

  • Use showMethodsOf(DataFormatBackend) to list supported input_data_backend options

Flags

The flags section controls experiment execution modes and features. All fields accept boolean values (true or false).

json
"flags": {
    "calc_cost": "Enable/disable cost calculation against observations",
    "catch_model_errors": "Stop execution on internal model errors",
    "debug_model": "Run single time step with diagnostics",
    "filter_nan_pixels": "Remove NaN pixels from input arrays",
    "inline_update": "Update model state within time step",
    "run_forward": "Enable forward model run",
    "run_optimization": "Enable parameter calibration",
    "save_info": "Save experiment info as JLD2 file",
    "spinup_TEM": "Enable model spinup",
    "store_spinup": "Save spinup sequence end states",
    "use_forward_diff": "Enable Dual type for ForwardDiff.jl"
}

Model Output

The model_output section configures output format, variables, and storage settings.

json
"model_output": {
    "depth_dimensions": {
      "d_cEco": 8,
      "d_snow": "snowW"
    },
    "format": "Output format ('zarr' or 'nc')",
    "output_array_type": "Output array backend",
    "path": "Custom output path (null for default)",
    "plot_model_output": "Enable output plotting",
    "save_single_file": "Save all variables in one file",
    "variables": {
      "field.name:depth/layers": "Layer specification (null for 1 layer, string for depth dimension, or number for layers)"
    }
}

Variable Naming Convention

Variables follow the field.subfield convention of the land structure.

Model Spinup

The model_spinup section configures model initialization procedures.

json
"model_spinup": {
    "restart_file": "Path to restart file (null for no restart)",
    "sequence": [
      {
        "forcing": "Forcing data source for sequence block",
        "n_repeat": "Number of sequence repetitions",
        "spinup_mode": "Models or methods to use in block"
      }
    ]
}