Changes between Version 2 and Version 3 of ImplementAnalysis_3DEnVar_classical
 Timestamp:
 Dec 9, 2021, 1:09:58 PM (2 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

ImplementAnalysis_3DEnVar_classical
v2 v3 180 180 === `U_init_dim_obs` (init_dim_obs_pdaf.F90) === 181 181 182 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF ).182 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF, NETF, PF) and the 3DVar methods. 183 183 184 184 The interface for this routine is: … … 198 198 === `U_obs_op` (obs_op_pdaf.F90) === 199 199 200 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF ).200 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF, NETF, PF) and the 3DVar methods. 201 201 202 202 The interface for this routine is: … … 221 221 === `U_init_obs` (init_obs_pdaf.F90) === 222 222 223 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF ).223 This routine is used by all global filter algorithms (SEEK, SEIK, EnKF, ETKF, NETF, PF) and the 3DVar methods. 224 224 225 225 The interface for this routine is: … … 241 241 === `U_prodRinvA` (prodrinva_pdaf.F90) === 242 242 243 This routine is used by all filter algorithms that use the inverse of the observation error covariance matrix (SEEK, SEIK, and ETKF).243 This routine is used by all filter algorithms that use the inverse of the observation error covariance matrix (SEEK, SEIK, ESTKF, ETKF, and NETF). 244 244 245 245 The interface for this routine is: … … 262 262 * The routine does not require that the product is implemented as a real matrixmatrix product. Rather, the product can be implemented in its most efficient form. For example, if the observation error covariance matrix is diagonal, only the multiplication of the diagonal with matrix `A_p` has to be implemented. 263 263 * The observation vector `obs_p` is provided through the interface for cases where the observation error variance is relative to the actual value of the observations. 264 * The interface has a difference for SEIK and ETKF: For ETKF the third argument is the ensemble size (`dim_ens`), while for SEIK it is the rank of the covariance matrix (usually ensemble size minus one). In addition, the second dimension of `A_p` and `C_p` has size `dim_ens` for ETKF, while it is `rank` for the SEIK filter. (Practically, one can usually ignore this difference as the fourth argument of the interface can be named arbitrarily in the routine.)264 * The interface has a difference for ESTKF/SEIK and ETKF: For ETKF the third argument is the ensemble size (`dim_ens`), while for ESTKF and SEIK it is the rank of the covariance matrix (usually ensemble size minus one). In addition, the second dimension of `A_p` and `C_p` has size `dim_ens` for ETKF, while it is `rank` for the ESTKF and SEIK filters. (Practically, one can usually ignore this difference as the fourth argument of the interface can be named arbitrarily in the routine.) 265 265 266 266 … … 359 359 === `U_init_dim_obs_f` (init_dim_obs_f_pdaf.F90) === 360 360 361 This routine is used by all filter algorithms with domainlocalization (LSEIK, LE TKF) and is independent of the particular algorithm.361 This routine is used by all filter algorithms with domainlocalization (LSEIK, LESTKF, LETKF, LNETF) and is independent of the particular algorithm. 362 362 363 363 The interface for this routine is: … … 377 377 === `U_obs_op_f` (obs_op_f_pdaf.F90) === 378 378 379 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.379 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 380 380 381 381 The interface for this routine is: … … 397 397 === `U_init_obs_f` (init_obs_f_pdaf.F90) === 398 398 399 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.399 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 400 400 The routine is only called if the globally adaptive forgetting factor is used (`type_forget=1` in the example implementation). For the local filters there is also the alternative to use locally adaptive forgetting factors (`type_forget=2` in the example implementation) 401 401 … … 418 418 === `U_init_obs_l` (init_obs_l_pdaf.F90) === 419 419 420 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.420 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 421 421 422 422 The interface for this routine is: … … 442 442 === `U_prodRinvA_l` (prodrinva_l_pdaf.F90) === 443 443 444 This routine is used by the local filters (LSEIK and LETKF). There is a slight difference betweenLSEIK and LETKF for this routine, which is described below.444 This routine is used by the local filters (LSEIK, LETKF, LESTKF, LNETF). There is a slight difference between LESTKF/LSEIK and LETKF for this routine, which is described below. 445 445 446 446 The interface for this routine is: … … 457 457 }}} 458 458 459 The routine is called during the loop over the local analysis domains. In the algorithm, the product of the inverse of the observation error covariance matrix with some matrix has to be computed. For the SEIK filterthis matrix holds the observed part of the ensemble perturbations for the local analysis domain of index `domain_p`. The matrix is provided as `A_l`. The product has to be given as `C_l`.459 The routine is called during the loop over the local analysis domains. In the algorithm, the product of the inverse of the observation error covariance matrix with some matrix has to be computed. For the ESTKF and SEIK filters this matrix holds the observed part of the ensemble perturbations for the local analysis domain of index `domain_p`. The matrix is provided as `A_l`. The product has to be given as `C_l`. 460 460 461 461 This routine is also the place to perform observation localization. To initialize a vector of weights, the routine `PDAF_local_weight` can be called. The procedure is used in the example implementation and also demonstrated in the template routine. … … 465 465 * The routine does not require that the product is implemented as a real matrixmatrix product. Rather, the product can be implemented in its most efficient form. For example, if the observation error covariance matrix is diagonal, only the multiplication of the diagonal with matrix `A_l` has to be implemented. 466 466 * The observation vector `obs_l` is provided through the interface for cases where the observation error variance is relative to the actual value of the observations. 467 * The interface has a difference for SEIK and ETKF: For ETKF the third argument is the ensemble size (`dim_ens`), while for SEIK it is the rank (`rank`) of the covariance matrix (usually ensemble size minus one). In addition, the second dimension of `A_l` and `C_l` has size `dim_ens` for ETKF, while it is `rank` for the SEIK filter. (Practically, one can usually ignore this difference as the fourth argument of the interface can be named arbitrarily in the routine.)467 * The interface has a difference for ESTKF/SEIK and ETKF: For ETKF the third argument is the ensemble size (`dim_ens`), while for ESTKF and SEIK it is the rank (`rank`) of the covariance matrix (usually ensemble size minus one). In addition, the second dimension of `A_l` and `C_l` has size `dim_ens` for ETKF, while it is `rank` for the ESTKF and SEIK filters. (Practically, one can usually ignore this difference as the fourth argument of the interface can be named arbitrarily in the routine.) 468 468 469 469 470 470 === `U_init_n_domains` (init_n_domains_pdaf.F90) === 471 471 472 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.472 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 473 473 474 474 The interface for this routine is: … … 489 489 === `U_init_dim_l` (init_dim_l_pdaf.F90) === 490 490 491 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.491 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 492 492 493 493 The interface for this routine is: … … 509 509 === `U_init_dim_obs_l` (init_dim_obs_l_pdaf.F90) === 510 510 511 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.511 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 512 512 513 513 The interface for this routine is: … … 532 532 === `U_g2l_state` (g2l_state_pdaf.F90) === 533 533 534 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.534 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 535 535 536 536 The interface for this routine is: … … 554 554 === `U_l2g_state` (l2g_state_pdaf.F90) === 555 555 556 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm.556 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 557 557 558 558 The interface for this routine is: … … 576 576 === `U_g2l_obs` (g2l_obs_pdaf.F90) === 577 577 578 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF) and is independent of the particular algorithm.578 This routine is used by all filter algorithms with domainlocalization LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. 579 579 580 580 The interface for this routine is: … … 599 599 === `U_init_obsvar` (init_obsvar_pdaf.F90) === 600 600 601 This routine is used by the global filter algorithms SEIK and ETKF as well as the local filtersLSEIK and LETKF. The routine is only called if the adaptive forgetting factor is used (`type_forget=1` in the example implementation). The difference in this routine between global and local filters is that the global filters use 'global' while the local filters use 'full' quantities.601 This routine is used by the global filter algorithms SEIK, ESTKF and ETKF as well as the local filters LESTKF, LSEIK and LETKF. The routine is only called if the adaptive forgetting factor is used (`type_forget=1` in the example implementation). The difference in this routine between global and local filters is that the global filters use 'global' while the local filters use 'full' quantities. 602 602 603 603 The interface for this routine is: … … 623 623 === `U_init_obsvar_l` (init_obsvar_l_pdaf.F90) === 624 624 625 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF ) and is independent of the particular algorithm. The routine is only called if the local adaptive forgetting factor is used (`type_forget=2` in the example implementation).625 This routine is used by all filter algorithms with domainlocalization (LSEIK, LETKF, LESTKF, LNETF) and is independent of the particular algorithm. The routine is only called if the local adaptive forgetting factor is used (`type_forget=2` in the example implementation). 626 626 627 627 The interface for this routine is: