Skip to content

Project folder anatomy

A SWAT+ project is a single flat folder of plain-text files. The executable reads everything in that folder and writes outputs back into the same folder.

There are no subdirectories. The grouping below is by purpose, not by location.

The master file: file.cio

file.cio is the index. It tells SWAT+ which file names to read for each category of input. Every line names a category and the file(s) to read. The literal token null means "no file for this slot". Full column reference: file.cio.

Excerpt from Ames_sub1/file.cio:

file.cio: AMES
simulation        time.sim          print.prt         null              object.cnt        null
basin             codes.bsn         parameters.bsn
climate           weather-sta.cli   weather-wgn.cli   null              pcp.cli           tmp.cli           null              null              null              null
connect           hru.con           null              null              null              null              null              null              null              null              null              null              null              null
hru               hru-data.hru      null
aquifer           nbull             null
hydrology         hydrology.hyd     topography.hyd    null
hru_parm_db       plants.plt        fertilizer.frt    tillage.til       pesticide.pes     null              null              null              urban.urb         septic.sep        snow.sno
ops               harv.ops          graze.ops         irr.ops           chem_app.ops      fire.ops          sweep.ops
lum               landuse.lum       management.sch    cntable.lum       cons_practice.lum ovn_table.lum
init              plant.ini         soil_plant.ini    null              null              null              null              null              null              null              null              null              null
soils             soils.sol         nutrients.sol     null              null
decision_table    lum.dtl           null              null              null
regions           ls_unit.ele       null              null              null              null              null              null              null              aqu_catunit.ele

Read this file first when you open a project. It tells you what every other file is for.

File groups

Simulation control

File What it controls
time.sim Start and end dates, time step
print.prt Which output files to write, and at which aggregation (_day, _mon, _yr, _aa)
object.cnt Object counts (how many HRUs, channels, aquifers, etc.)

Basin parameters

File What it controls
codes.bsn Method switches (which equation set to use for ET, runoff, routing, ...)
parameters.bsn Basin-wide numeric parameters

Climate

File What it controls
weather-sta.cli List of weather stations and which files belong to each
weather-wgn.cli Weather generator parameters (used to fill missing data)
pcp.cli, tmp.cli, ... Indexes pointing to the actual .pcp, .tmp, etc. data files
<name>.pcp, <name>.tmp The daily precipitation and temperature time series

Spatial objects and connectivity

File What it controls
hru.con HRU connectivity (which object each HRU drains to)
chandeg.con, aquifer.con, reservoir.con Channel, aquifer, reservoir connectivity
rout_unit.con Routing unit connectivity
hru-data.hru Per-HRU pointers to topography, soils, land use, management

Hydrology

File What it controls
hydrology.hyd Per-HRU hydrologic parameters
topography.hyd Per-HRU slope, slope length, field length

Soils

File What it controls
soils.sol Soil layer properties (bulk density, available water, conductivity, ...)
nutrients.sol Initial soil nutrient pools

Land use and management

File What it controls
landuse.lum List of land use scenarios and the files that define each
management.sch Operation schedules (planting, harvest, fertilizer, ...)
cntable.lum Curve number lookup
cons_practice.lum Conservation practice factor
ovn_table.lum Manning's n for overland flow
lum.dtl Decision tables that trigger operations based on conditions

Plant, fertiliser, tillage, pesticide databases

File What it controls
plants.plt Plant parameter database
fertilizer.frt Fertiliser composition
tillage.til Tillage operation effects
pesticide.pes Pesticide properties

Initial conditions

File What it controls
plant.ini Starting plant communities by HRU
soil_plant.ini Starting soil water, residue, plant biomass

Aquifers, reservoirs, channels

File What it controls
aquifer.aqu Aquifer parameters
reservoir.res, initial.res Reservoir parameters and initial state
channel-lte.cha, hyd-sed-lte.cha Legacy channel routing
hydrology.cha, sediment.cha, nutrients.cha SWAT+ channel routing parameters

Outputs (written by the model)

Files ending in _day.txt, _mon.txt, _yr.txt, or _aa.txt. The prefix tells you the spatial scope (basin_, region_, lsunit_, hru_, channel_, aquifer_, reservoir_, ...) and the underscore code tells you the variable group:

Code Variables
_wb water balance
_nb nutrient balance
_ls landscape (sediment)
_pw plant and water stress
_aqu aquifer
_cha / _sd_cha channel
_res reservoir

See Output reference for column details.

Diagnostics

File What it tells you
simulation.out Run progress and successful completion message
diagnostics.out Warnings and unexpected values during the run
checker.out Validation messages produced before the simulation starts
area_calc.out, files_out.out, erosion.txt Setup summaries

Always check these three (simulation.out, diagnostics.out, checker.out) when a run does not behave as expected.

Next

The full per-file reference lives in Input reference, with one page per file and a real example pulled from Ames_sub1.