Changes between Initial Version and Version 1 of PDAF_diag_crps_mpi


Ignore:
Timestamp:
Sep 9, 2024, 6:10:38 PM (10 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PDAF_diag_crps_mpi

    v1 v1  
     1= PDAF_diag_CRPS_mpi =
     2
     3
     4This page documents the routine `PDAF_diag_CRPS_mpi` of PDAF, which was introduced with PDAF V2.3.
     5
     6This 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.
     7
     8Inputs are an array holding the observed ensemble and a corresponding vector of observations.
     9
     10The routine can be called in the pre/poststep routine of PDAF both before and after the analysis step to compute the CRPS.
     11
     12This 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.
     13
     14The interface is the following:
     15{{{
     16  SUBROUTINE PDAF_diag_crps_mpi(dim_p, dim_ens, element, oens, obs, &
     17    COMM_filter, mype_filter, npes_filter, &
     18    CRPS, reli, pot_CRPS, uncert, status)
     19}}}
     20with the following arguments:
     21{{{
     22  INTEGER, INTENT(in) :: dim                ! PE-local state dimension
     23  INTEGER, INTENT(in) :: dim_ens            ! Ensemble size
     24  INTEGER, INTENT(in) :: element            ! ID of element to be used
     25       !< If element=0, mean values over all elements are computed
     26  INTEGER, INTENT(in) :: COMM_filter        ! MPI communicator for filter
     27  INTEGER, INTENT(in) :: mype_filter        ! rank of MPI communicator
     28  INTEGER, INTENT(in) :: npes_filter        ! size of MPI communicator
     29  REAL, INTENT(in)    :: oens(dim, dim_ens) ! State ensemble
     30  REAL, INTENT(in)    :: obs(dim)           ! State ensemble
     31  REAL, INTENT(out)   :: CRPS               ! CRPS
     32  REAL, INTENT(out)   :: reli               ! Reliability
     33  REAL, INTENT(out)   :: resol              ! resolution
     34  REAL, INTENT(out)   :: uncert             ! uncertainty
     35  INTEGER, INTENT(out) :: status            ! Status flag (0=success)
     36}}}
     37
     38Hints:
     39 * 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). For `element=0` the CRPS over all elements is computed
     40 * A perfectly reliable system gives `reli=0`. An informative system gives `resol << uncert`.
     41 * Compared to Hersbach (2000), `resol` here is equivalent to `CPRS_pot`.
     42 * The routine is not parallelized. In addition, it uses a rather simple sorting algorithm. Accordingly, the performance is likely suboptimal for high-dimensional cases.
     43