Simple advection

Overview

This simple advection model simulates a wind field using Burger’s Equation with an upstream semi-lagrangian differencing on a periodic one-dimensional domain. This diffusive numerical scheme is stable and forcing is provided by adding in random gaussian noise to each wind grid variable independently at each timestep. The domain mean value of the wind is relaxed to a constant fixed value set by the namelist parameter mean_wind. The random forcing magnitude is set by namelist parameter wind_random_amp and the damping of the mean wind is controlled by parameter wind_damping_rate. An Eulerian option with centered in space differencing is also provided and can be used by setting namelist parameter lagrangian_for_wind to .false. The Eulerian differencing is both numerically unstable and subject to shock formation. However, it can sometimes be made stable in assimilation mode (see recent work by Majda and collaborators).

The model state includes a single passive tracer that is advected by the wind field using semi-lagrangian upstream differencing. The state also includes a tracer source value at each gridpoint. At each time step, the source is added into the concentration at each gridpoint. There is also a constant global destruction of tracer that is controlled by the namelist parameter destruction_rate. The appropriate percentage of tracer is destroyed at each gridpoint at each timestep.

The model also includes an associated model for the tracer source rate. At each gridpoint, there is a value of the time mean source rate and a value of the phase offset for a diurnal component of the source rate. The diurnal source rate has an amplitude that is proportional to the source rate (this proportion is controlled by namelist parameter source_diurnal_rel_amp). At each grid point, the source is the sum of the source rate plus the appropriate diurnally varying component. The phase_offset at the gridpoint controls the diurnal phase. The namelist parameter source_phase_noise controls the amplitude of random gaussian noise that is added into the source phase at each time step. If source_phase_noise is zero then the phase offset is fixed. Finally, the time mean source rate is constant in time in the present model version. The time mean source rate controls the amplitude of the diurnal cycle of the tracer source.

For the simple advection model, DART advances the model, gets the model state and metadata describing this state, finds state variables that are close to a given location, and does spatial interpolation for model state variables.

The simple advection model has a work/workshop_setup.csh script that compiles and runs an example. This example is referenced in Section 25 of the DART tutorial. and is intended to provide insight into model/assimilation behavior. The example may or may not result in good (or even decent!) results!

Namelist

The &model_nml namelist is read from the input.nml file. Namelists start with an ampersand & and terminate with a slash /. Character strings that contain a / must be enclosed in quotes to prevent them from prematurely terminating the namelist.

&model_nml
   num_grid_points        = 10,
   grid_spacing_meters    = 100000.0,
   time_step_days         = 0,
   time_step_seconds      = 3600,
   mean_wind              = 20.0,
   wind_random_amp        = 0.00027778,
   wind_damping_rate      = 0.0000027878,
   lagrangian_for_wind    = .true.,
   destruction_rate       = 0.000055556,
   source_random_amp_frac = 0.00001,
   source_damping_rate    = 0.0000027878,
   source_diurnal_rel_amp = 0.05,
   source_phase_noise     = 0.0,
   output_state_vector  = .false.
/

Description of each namelist entry

Item

Type

Description

num_grid_points

integer

Number of grid points in model. State vector size is 5 times this number.

grid_spacing_meters

integer

Grid spacing in meters.

time_step_days

real(r8)

Number of days for dimensional timestep, mapped to delta_t.

time_step_seconds

real(r8)

Number of seconds for dimensional timestep, mapped to delta_t.

mean_wind

real(r8)

Base wind velocity (expected value over time) in meters/second.

wind_random_amp

real(r8)

Random walk amplitude for wind in meters/second2.

wind_damping_rate

real(r8)

Rate of damping towards mean wind value in fraction/second.

lagrangian_for_wind

logical

Can use Lagrangian (stable) or Eulerian (unstable) scheme for wind.

destruction_rate

real(r8)

Tracer destruction rate in fraction/second.

source_random_amp_frac

real(r8)

Random walk amplitude for source as a fraction of mean source (per second)2.

source_damping_rate

real(r8)

Damping towards mean source rate in fraction/second.

source_diurnal_rel_amp

real(r8)

Relative amplitude of diurnal cycle of source (dimensionless).

source_phase_noise

real(r8)

Amplitude of gaussian noise to be added to source phase offset (per second).

output_state_vector

logical

Controls the output to netCDF files. If .true., output the raw dart state vector. If .false. output the prognostic version (gridded data) for easier plotting (recommended).