4DVar Tutorial Introduction
This tutorial shows several examples of ROMS 4D-Var data assimilation algorithms in the California Current System (CCS), 1/3 degree resolution (WC13).
Model Set-up
The WC13 model domain is shown in Fig. 1 and has open boundaries along the northern, western, and southern edges of the model domain.

In the tutorial, you will perform a 4D-Var data assimilation cycle that spans the period 3-6 January, 2004. The 4D-Var control vector δz is comprised of increments to the initial conditions, δx(t0), surface forcing, δf(t), and open boundary conditions, δb(t). The prior initial conditions, xb(t0), are taken from the sequence of 4D-Var experiments described by Moore et al. (2011b) in which data were assimilated every 7 days during the period July 2002- December 2004. The prior surface forcing, fb(t), takes the form of surface wind stress, heat flux, and a freshwater flux computed using the ROMS bulk flux formulation, and using near surface air data from COAMPS (Doyle et al., 2009). Clamped open boundary conditions are imposed on (u,v) and tracers, and the prior boundary conditions, bb(t), are taken from the global ECCO product (Wunsch and Heimbach, 2007). The free-surface height and vertically integrated velocity components are subject to the usual Chapman and Flather radiation conditions at the open boundaries. The prior surface forcing and open boundary conditions are provided daily and linearly interpolated in time. Similarly, the increments δf(t) and δb(t) are also computed daily and linearly interpolated in time.
The observations assimilated into the model are satellite SST, satellite SSH in the form of a gridded product from Aviso, and hydrographic observations of temperature and salinity collected from Argo floats and during the GLOBEC/LTOP and CalCOFI cruises off the coast of Oregon and southern California, respectively. The observation locations are illustrated in Fig. 2.
![]() |
![]() |
![]() |
![]() |
Download Lectures and Exercises
The workshop Agenda can be found here. Links to the 2019 ROMS 4D-Var workshop lectures are provided below. These lectures are meant to supplement this 4D-Var tutorial.
- Lecture 1: PDF 4D-Var: Some Basics
- Lecture 2: PDF The Mechanics of 4D-Var
- Lecture 3: PDF Dual 4D-Var
- Lecture 4: PDF Observing System Simulation Experiments (OSSEs)
- Lecture 5: PDF Observation Impact & Observation Sensitivity
- Lecture 6: PDF The MARACOOS analysis-forecast system
- Lecture 7: PDF Array Modes
- Lecture 8: PDF The West Coast Ocean Forecasting System (WCOFS)
- Lecture 9: PDF The CeNCOOS and PacIOOS analysis-forecast systems
Below are the tutorials pertinent to the 2019 ROMS 4D-Var workshop:
- Tutorial 01: PDF Explanation of cpp options, ocean.in, s4dvar.in (I4DVAR)
- Tutorial 02: PDF Multiple outer loops
- Tutorial 03: Discussion of exercises 1 and 2
- Tutorial 04: PDF Calculation of prior error standard deviations
- Tutorial 05: PDF Explanation of cpp options, ocean.in, s4dvar.in (RBL4D-Var)
- Tutorial 06: PDF Semi-variograms
- Tutorial 07: PDF ERDDAP data server and management tools
- Tutorial 08: Discussion of exercises 3 & 4
- Tutorial 09: PDF Computing normalization coefficients for covariance models
- Tutorial 10: PDF_Arango | PDF_Wilkin Building your observation files
- Tutorial 11: PDF Observation Impact & Observation Sensitivity
- Tutorial 12: Discussion of exercise 5
- Tutorial 13: PDF Using ERDDAP to view observation impact information
- Tutorial 14: Discussion of exercise 6 & 7
- Tutorial 15: Putting it all together
Below are the exercises pertinent to the 2019 ROMS 4D-Var workshop:
- Exercise 1: PDF Incremental, Strong Constraint 4D-Var
- Exercise 2: PDF I4D-Var with Multiple Outer-loops
- Exercise 3: PDF Dual Formulation 4D-Var - RBL4D-Var
- Exercise 4: PDF Weak Constraint Dual Formulation 4D-Var
- Exercise 5: PDF Analysis Cycle Observation Impacts
- Exercise 6: PDF Analysis Cycle Observation Sensitivity
- Exercise 7: PDF Reduced-Rank Array Modes
- Exercise 8: PDF Forecast Cycle Observation Impacts
- Exercise 9: PDF Forecast Cycle Observation Sensitivities
Below are the homeworks pertinent to the 2019 ROMS 4D-Var workshop:
- Homework 1: Building the standard deviation file for user model configuration
- Homework 2: Building the file of normalization coefficients for the prior error covariance matrix for user model configuration
- Homework 3: Build observation file for user model configuration
Download Tutorial Files
All data files and scripts necessary to run the 4D-Var tests discussed in this tutorial are available from the ROMS GitHub repository. To download, execute the following command:
Tutorial Directory Structure
When the checkout is complete, you will have the following directory structure under your my_test directory.
/WC13 Main California Current System 4D-Var applications
/ARRAY_MODES Stabilized representer matrix array modes and clipping
/Data Input data directory
/Functionals Analytical expressions header files
/I4DVAR Primal form of incremental, strong constraint 4D-Var, I4D-Var
/Normalization 4D-Var error covariance normalization coefficients
/plotting 4D-Var plotting scripts (Matlab and ROMS plotting package)
/RBL4DVAR Dual form of 4D-Var, Restricted B-preconditioned Lanczos Analysis System, RBL4D-Var
/RBL4DVAR_analysis_impact RBL4D-Var analysis observation impact
/RBL4DVAR_analysis_sensitivity RBL4D-Var analysis observation sensitivity (adjoint of RBL4D-Var)
/RBL4DVAR_forecast_impact RBL4D-Var forecast observation impact
/RBL4DVAR_forecast_sensitivity RBL4D-Var forecast observation sensitivity (adjoint of RBL4D-Var)
Mostly all the directories have a Readme file with detailed instructions for configuring, compiling, running, and plotting the results.
References
The technical description of the algorithms and application used in this tutorial are described in Moore et al. (2011a, b, c).