| | 1 | = PDAFomi_diag_rmsd = |
| | 2 | |
| | 3 | This page documents the routine `PDAFomi_diag_obs_rmsd` of PDAF, which was introduced with PDAF V3.1. This is part of the [wiki:OMI_observation_diagnostics_PDAF3 PDAF-OMI observation diagnostics module]. |
| | 4 | |
| | 5 | The routine returns a pointer to a vector of the root-mean square difference (RMSD) between the observations and the observed ensemble mean for each observation type. |
| | 6 | |
| | 7 | Usually all PDAFomi_diag routines are called in `prepoststep_pdaf` where the observation information can be retrieved and analyzed. |
| | 8 | |
| | 9 | The interface is: |
| | 10 | {{{ |
| | 11 | SUBROUTINE PDAFomi_diag_rmsd(nobs, rmsd_pointer, verbose) |
| | 12 | |
| | 13 | INTEGER, INTENT(inout) :: nobs ! Number of observation types |
| | 14 | REAL, POINTER, INTENT(inout) :: rmsd_pointer(:) ! Vector of RMSD values |
| | 15 | INTEGER, INTENT(in) :: verbose ! Verbosity flag; >0 for screen output |
| | 16 | }}} |
| | 17 | |
| | 18 | For verbose>0 a list of the RMSD for each observation type is printed like |
| | 19 | {{{ |
| | 20 | PDAFomi obs-ID RMSD |
| | 21 | PDAFomi 1 7.097E-01 |
| | 22 | PDAFomi 2 1.312E-02 |
| | 23 | }}} |
| | 24 | |
| | 25 | **Note:** |
| | 26 | * The computed RMSD is for the global model domain. Thus, in case of a parallelized model, all process sub-domains are taken into account and calling `PDAFomi_diag_obs_rmsd` will return the same value for all processes. |
| | 27 | * In Fortran user code the pointer should be declared in the form[[BR]] `REAL, POINTER :: rmsd_ptr(:)`[[BR]] It does not need to be allocated. The target vector has the length `nobs`. |
| | 28 | * If the observation diagnostics have not be activated by using [wiki:PDAFomi_set_obs_diag] the pointer array will not be set and `nobs=0` is returned. One can check this value before assessing the pointer array. |
| | 29 | * A more extensive set of statistics can be obtained using the routine [wiki:PDAFomi_diag_diffstats]. |
| | 30 | |
| | 31 | |