Notice: has been updated. Please see the announcement for details.

Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


setupt includes forward operators for virtual, sensible temperature, T2m and PBL pseudo surface observations

General workflow:

  1. surface temperature correction based on terrain (gsd_terrain_match_surfTobs.f90)
  2. buddy check (for regional 2DVar): compares innovations of all obs within some radius with the mean innovation (buddycheck_mod.f90)
  3. handle multiple reported data at station (choose one of the reports)
  4. throw out the observations that are outside of the time window
  5. bias correction for aircraft data
  6. compute innovations
  7. gross checks (compare innovation/obs error with some threshold)
  8. (opt) generate PBL pseudo surface observations.
  9. save data

QC methods from setupt generally can be divided into methods that use only observation data (+ some configs):


Note: gross checks potentially can use ensemble spread information.

Code Block
type(t_obs_space)           :: obs
type(t_obs_operator)        :: obs_op
type(t_linear_obs_operator) :: lin_obs_op
type(t_obs_error)           :: obserr
type(obs_data)              :: hx
type(fields_at_locations)   :: int_state
call obs%create(???)					  	        ! reading observations
call obserr%create(t_obs_err_config, obs)           ! initializing observation error (TODO: needs yobs on input, ???)
call obserr%quality_control()	  	  	            ! QC that uses only observation data: handle multiple reports; observations out of time window (3, 4)
call int_state%create(obs, geom, vars)              ! interpolate fields to observation locations? (TODO: need fields on input!)
call obs_op%create(t_hx_config)                     ! initializing observation operator
call lin_obs_op%create(obs_op, int_state, bias_pred, t_linhx_config) ! initializing linear observation operator
hx = obs_op%hoper(int_state, bias_pred)             ! calculate innovations; do surface temp correction and bias correction for aircraft data (1, 5, 6)
call obserr%quality_control(hx)	                    ! QC that uses state info: buddy check, gross check (2, 7, 8?) 


AOD  from bufr (setupaod.f90)


  • assign which channels to use based on a list in aeroinfo.txt, 
  • initialize CRTM for a given satellite and type of observation (e.g. obstype='modis_aod', call init_crtm(...)),
  • read AODs at different wavelengths (channels) for a chosen satellite (MODIS Aqua+ Terra, VIIRS, namelist, only high quality data in bufr files),
  • check if within window,
  • calculate error based on surface type/retrieval algorithm,
  • calculate layer model AODs and Jacobians using CRTM (call call_crtm(...), horizontal interpolation in call_crtm),
  • reject if crtm returns error(?), select channels for processing (only 550nm now), 
  • accept/reject AODs depending on quality data from Deep Blue algorithm (MODIS),
  • calculate innovations,
  • save innovations, Jacobians, errors etc. in my_head list,
  • save accepted and rejected in my_diag list,
  • write diagnostics to a file (e.g. for EnKF),
  • quality control largely done before creating bufr files.