midas_sstBias

link to source code

Dependency Diagrams:

midas_sstBias.svg

Direct Dependency Diagram

program  midas_sstbias
Purpose

Main program to compute Sea Surface Temperature (SST) satellite observations bias estimate.

Algorithm

The bias estimation of SST satellite observations is computed with respect to insitu observations that are considered unbiased. The bias estimation is produced for each sensor separately for day and night time.

First, each dataset is put on a regular grid using a small search radius (of ~25 km). It is currently a 1800x900 Gaussian grid. Second, the bias estimation at every gridpoint is computed as an average difference between satellite and insitu observations between all collocated valid satellite and insitu observations within a larger search radius (of ~1500km).

The resulting bias estimation \(B_{a}(k)\) at point \(k\) is computed as follows: \(B_{a}(k) = (1 - w(k)) * B_{b}(k) * \beta + w(k) * B_{a}(k)\), where \(B_{b}(k)\) is a background state of the bias estimation computed on the previous day, \(\beta\) is a background term for zero bias in unobserved areas, and \(w(k)\) is a weight which is defined as: \(w(k) = N_{a}(k) / (N_{a}(k) + N_{b})\), where \(N_{a}(k)\) is the number of observations involved in the computation of the current bias estimate \(B_{a}(k)\) at point \(k\) and \(N_{b}\) is a parameter for corresponding number of observations used to compute the background state \(B_{b}(k)\).

Input and Output Files

Description of file

analysisgrid

In - File containing the grid where the bias is computed

seaice_analysis

In - File containing LG and VF fields

obsfiles_$FAM/obs$FAM_$NNNN_$NNNN

In - Observation file for each “family” and MPI task

searchRadius

In - ‘Large’ search radius field to compute biases

trlm_01

In - Background state of the bias estimation

satellite_bias.fst

Out - Bias estimations

auxOutput.fst

Out - Auxiliary output (optional): number of observations and weight fields

Synopsis

Below is a summary of the SSTbias program calling sequence:

  • Initial setups:

    • Setup horizontal and vertical grid objects for “analysis grid” from analysisgrid.

    • Setup obsSpaceData object and read observations from files: inn_setupObs.

    • Setup columnData and gridStateVector modules.

  • Computation

    • ocm_readMaskFromFile get the land-ocean mask

    • oobs_computeObsData compute pseudo observation values

      and their coordinates and save them in SQLite files.

    • sstb_getGriddedObs get all datasets on a regular grid

    • sstb_getGriddedBias compute bias estimation for each sensor,

      for day time or night time on a regular grid, and save the results into an output standard file.

Options

List of namelist blocks that can affect the SSTbias program.

  • The use of SSTbias program is controlled by the namelist block &namSSTbiasEstimate read by the SSTbias program.

    • iceFractionThreshold the sea-ice fraction threshold to define the presence of ice

    • searchRadius horizontal search radius for observation gridding

    • maxBias max allowed insitu-satellite difference in degrees

    • numberPointsBG \(N_{b}\), number of points to compute the background bias estimation

    • sensorList name of sensor

    • weightMin minimum value of weight

    • weightMax maximum value of weight

    • saveAuxFields to store or not auxiliary fields: nobs and weight

    • bgTermZeroBias background term to zero bias

Needed modules

  • version_mod: MODULE version_mod (prefix=’ver’ category=’8. Low-level utilities and constants’)

  • ramdisk_mod: MODULE ramDisk_mod (prefix=’ram’ category=’8. Low-level utilities and constants’)

  • utilities_mod: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)

  • midasmpi_mod: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)

  • mathphysconstants_mod: MODULE mathPhysConstants_mod (prefix=’mpc’ category=’8. Low-level utilities and constants’)

  • horizontalcoord_mod: MODULE horizontalCoord_mod (prefix=’hco’ category=’7. Low-level data objects’)

  • verticalcoord_mod: MODULE verticalCoord_mod (prefix=’vco’ category=’7. Low-level data objects’)

  • timecoord_mod: MODULE timeCoord_mod (prefix=’tim’ category=’7. Low-level data objects’)

  • obsspacedata_mod: MODULE obsSpaceData_mod (prefix=’obs’ category=’6. High-level data objects’)

  • gridstatevector_mod: MODULE gridStateVector_mod (prefix=’gsv’ category=’6. High-level data objects’)

  • obsfiles_mod: MODULE obsFiles_mod (prefix=’obsf’ category=’3. Observation input/output’)

  • innovation_mod: MODULE innovation_mod (prefix=’inn’ category=’1. High-level functionality’)

  • sstbias_mod: MODULE sstBias_mod (prefix=’sstb’ category=’1. High-level functionality’)

  • columndata_mod: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)

Routines called

ver_printnameandversion(), mmpi_initialize(), utl_tmg_start(), ram_setup(), sstb_computebias(), obs_finalize(), col_deallocate(), utl_tmg_stop(), tim_setup(), obsf_setup(), tim_getdatestamp(), tim_setdatestamp(), utl_abort(), mpc_printconstants(), gsv_setup(), hco_setupfromfile(), vco_setupfromfile(), col_setvco(), inn_setupobs(), col_setup(), col_allocate(), obs_numheader()