Version 1 (modified by 5 weeks ago) (diff) | ,
---|
PDAF_diag_CRPS_mpi
This page documents the routine PDAF_diag_CRPS_mpi
of PDAF, which was introduced with PDAF V2.3.
This routine computes the Continuous Ranked Probability Score (CRPS) and its decomposition into resolution and reliability. The CRPS provide information about the statistical consistency of the ensemble with the observations. In toy models, the CRPS can also be computed with raegard to the true state.
Inputs are an array holding the observed ensemble and a corresponding vector of observations.
The routine can be called in the pre/poststep routine of PDAF both before and after the analysis step to compute the CRPS.
This routine is a variant of PDAF_diag_CRPS_mpi
in which one can specify the MPI-communicator that is used for the computation. This allows to use the routine outside of PDAF.
The interface is the following:
SUBROUTINE PDAF_diag_crps_mpi(dim_p, dim_ens, element, oens, obs, & COMM_filter, mype_filter, npes_filter, & CRPS, reli, pot_CRPS, uncert, status)
with the following arguments:
INTEGER, INTENT(in) :: dim ! PE-local state dimension INTEGER, INTENT(in) :: dim_ens ! Ensemble size INTEGER, INTENT(in) :: element ! ID of element to be used !< If element=0, mean values over all elements are computed INTEGER, INTENT(in) :: COMM_filter ! MPI communicator for filter INTEGER, INTENT(in) :: mype_filter ! rank of MPI communicator INTEGER, INTENT(in) :: npes_filter ! size of MPI communicator REAL, INTENT(in) :: oens(dim, dim_ens) ! State ensemble REAL, INTENT(in) :: obs(dim) ! State ensemble REAL, INTENT(out) :: CRPS ! CRPS REAL, INTENT(out) :: reli ! Reliability REAL, INTENT(out) :: resol ! resolution REAL, INTENT(out) :: uncert ! uncertainty INTEGER, INTENT(out) :: status ! Status flag (0=success)
Hints:
- using
element
one can select a since element of the observation vector for which the CRPS is computed (by multiple computations, it allows to computed a CRPS individually for each entry of the state vector). Forelement=0
the CRPS over all elements is computed - A perfectly reliable system gives
reli=0
. An informative system givesresol << uncert
. - Compared to Hersbach (2000),
resol
here is equivalent toCPRS_pot
. - The routine is not parallelized. In addition, it uses a rather simple sorting algorithm. Accordingly, the performance is likely suboptimal for high-dimensional cases.