wiki:PDAFomi_diag_crps

PDAFomi_diag_CRPS

This page documents the routine PDAFomi_diag_CRPS of PDAF, which was introduced with PDAF V3.1. This is part of the PDAF-OMI observation diagnostics module.

This routine computes the continuous ranked probability score (CRPS) and its decomposition into reliability and potential CRPS : CRPS = RELI + pot_CRPS. In addition the uncertainty is computed.
Resolution can be computed by RESOL = UNCERT - pot_CRPS.
A perfectly reliable system gives RELI=0.
An informative system gives RESOL ~ UNCERT or pot_CRPS << UNCERT.

The computation follows H. Hersbach, Weather and Forecasting, 15 (2000) 599-570.

The routine returns a pointer to an array of the CRPS values for each observation type.

Usually all PDAFomi_diag routines are called in prepoststep_pdaf where the observation information can be retrieved and analyzed.

The interface is:

  SUBROUTINE PDAFomi_diag_crps(nobs, crps_ptr, perturb, verbose)

    INTEGER, INTENT(inout) :: nobs                   ! Number of observation types
    REAL, POINTER, INTENT(inout) :: crps_ptr(:,:)    ! Pointer to vector of CRPS values
    INTEGER, INTENT(in) :: perturb                   ! 1: add perturbations to observations; 
                                                     ! 0: use unperturbed observations
    INTEGER, INTENT(in) :: verbose                   ! Verbosity flag, >0 for output

Hints:

  • The computed CRPS is for the global model domain. Thus, in case of a parallelized model, all process sub-domains are taken into account and calling the routine will return the same value for all processes.
  • In Fortran user code the pointer should be declared in the form
    REAL, POINTER :: crps_ptr(:,:)
    It does not need to be allocated. The target array has the length (4, nobs).
  • If the observation diagnostics have not been activated the pointer array will not be set and nobs=0 is returned. One can check this value before assessing the pointer array.
  • The routine uses a rather simple sorting algorithm. Accordingly, the performance is likely suboptimal for high-dimensional cases.
Last modified 4 days ago Last modified on Mar 27, 2026, 6:17:57 PM
Note: See TracWiki for help on using the wiki.