wiki:LnDevel

Version 191 (modified by lnerger, 3 weeks ago) (diff)

--

Development page

Please only use the pages that are directly linked from the start page and within the Implementation Guide

Pages linked here are under development

EGU 2023

MarDATA_DA_2024

New for PDAF V2.3

OMI_nondiagonal_observation_error_covariance_matrices

PDAFomi_observation_localization_weights

PDAF_correlation_function

OMI_search_local_observations

PDAFomi_set_localization

PDAFomi_set_localization_noniso

PDAFomi_set_dim_obs_l

PDAFomi_store_obs_l_index

PDAFomi_store_obs_l_index_vdist

PDAFomi_assimilate_3dvar_nondiagR

PDAFomi_assimilate_en3dvar_estkf_nondiagR

PDAFomi_assimilate_en3dvar_lestkf_nondiagR

PDAFomi_assimilate_enkf_nondiagR

PDAFomi_assimilate_global_nondiagR

PDAFomi_assimilate_hyb3dvar_estkf_nondiagR

PDAFomi_assimilate_hyb3dvar_lestkf_nondiagR

PDAFomi_assimilate_lenkf_nondiagR

PDAFomi_assimilate_lknetf_nondiagR

PDAFomi_assimilate_lnetf_nondiagR

PDAFomi_assimilate_local_nondiagR

PDAFomi_assimilate_nonlin_nondiagR

PDAFomi_assimilate_enkf_nondiagR_si.F90

PDAFomi_assimilate_global_nondiagR_si.F90

PDAFomi_assimilate_lenkf_nondiagR_si.F90

PDAFomi_assimilate_lknetf_nondiagR_si.F90

PDAFomi_assimilate_lnetf_nondiagR_si.F90

PDAFomi_assimilate_local_nondiagR_si.F90

PDAFomi_assimilate_nonlin_nondiagR_si.F90

PDAFomi_put_state_3dvar_nondiagR

PDAFomi_put_state_en3dvar_estkf_nondiagR

PDAFomi_put_state_en3dvar_lestkf_nondiagR

PDAFomi_put_state_enkf_nondiagR

PDAFomi_put_state_global_nondiagR

PDAFomi_put_state_hyb3dvar_estkf_nondiagR

PDAFomi_put_state_hyb3dvar_lestkf_nondiagR

PDAFomi_put_state_lenkf_nondiagR

PDAFomi_put_state_lknetf_nondiagR

PDAFomi_put_state_lnetf_nondiagR

PDAFomi_put_state_local_nondiagR

PDAFomi_put_state_nonlin_nondiagR

PDAFomi_put_state_enkf_nondiagR_si

PDAFomi_put_state_global_nondiagR_si

PDAFomi_put_state_lenkf_nondiagR_si

PDAFomi_put_state_lknetf_nondiagR_si

PDAFomi_put_state_lnetf_nondiagR_si

PDAFomi_put_state_local_nondiagR_si

PDAFomi_put_state_nonlin_nondiagR_si

PDAFlocal

PDAFlocal?

PDAFlocal_set_indices

PDAFlocal_set_increment_weights

PDAFlocal_clear_increment_weights

PDAFlocal_assimilate_en3dvar_lestkf

PDAFlocal_assimilate_hyb3dvar_lestkf

PDAFlocal_assimilate_lestkf

PDAFlocal_assimilate_lestkf_si?

PDAFlocal_assimilate_letkf

PDAFlocal_assimilate_letkf_si?

PDAFlocal_assimilate_lknetf

PDAFlocal_assimilate_lknetf_si?

PDAFlocal_assimilate_lnetf

PDAFlocal_assimilate_lnetf_si?

PDAFlocal_assimilate_lseik

PDAFlocal_assimilate_lseik_si?

PDAFlocal_put_state_en3dvar_lestkf

PDAFlocal_put_state_hyb3dvar_lestkf

PDAFlocal_put_state_lestkf

PDAFlocal_put_state_lestkf_si?

PDAFlocal_put_state_letkf

PDAFlocal_put_state_letkf_si?

PDAFlocal_put_state_lknetf

PDAFlocal_put_state_lknetf_si?

PDAFlocal_put_state_lnetf

PDAFlocal_put_state_lnetf_si?

PDAFlocal_put_state_lseik

PDAFlocal_put_state_lseik_si?

PDAFlocalomi_assimilate

PDAFlocalomi_assimilate_en3dvar_lestkf

PDAFlocalomi_assimilate_hyb3dvar_lestkf

PDAFlocalomi_assimilate_en3dvar_lestkf_nondiagR

PDAFlocalomi_assimilate_hyb3dvar_lestkf_nondiagR

PDAFlocalomi_assimilate_lknetf_nondiagR

PDAFlocalomi_assimilate_lnetf_nondiagR

PDAFlocalomi_assimilate_nondiagR

PDAFlocalomi_put_state

PDAFlocalomi_put_state_en3dvar_lestkf

PDAFlocalomi_put_state_hyb3dvar_lestkf

PDAFlocalomi_put_state_en3dvar_lestkf_nondiagR

PDAFlocalomi_put_state_hyb3dvar_lestkf_nondiagR

PDAFlocalomi_put_state_lknetf_nondiagR

PDAFlocalomi_put_state_lnetf_nondiagR

PDAFlocalomi_put_state_nondiagR

PDAF_diag_crps_mpi

Version 2.3 - XXX, 2024

Major Changes and additions:

  • Performance improvements to PDAFomi_init_dim_obs_l. While we already improve the performance in V2.2.1 we found that by further restructuring of the code the performance could be further improved. (In some cases with gfortran and ifort compilers by a factor of 6 to 9.) The previous routine is still present as PDAFomi_init_dim_obs_l_old.
  • For even better performance of the initialization of local observations, we added support for a user-sided implementation of search for local observations. The user-sided search routine can lead to the best performance since it requires less IF-checks which are required in the generic code inside PDAFomi. If you have the impression that PDAFomi_init_dim_obs_l is slow in your case, e.g. because it domines the run time of the analysis step, we recommend to aim for a user-sided implementation (see https://pdaf.awi.de/trac/wiki/OMI_search_local_observations)
  • Addition of support for non-diagonal observation error covariance matrices in PDAF-OMI (see https://pdaf.awi.de/trac/wiki/OMI_nondiagonal_observation_error_covariance_matrices)
  • Introduction of PDAFlocal interface. This simplifies the implementation of the state localization. It also provides support for weighted local increments, e.g. to implement vertical localization or weakly coupled assimilaation. (see https://pdaf.awi.de/trac/wiki/PDAFlocal_overview)

Further changes and additions:

  • Improved parser_mpi.F90: Now parsing a slash '/' is possible. Thus also directory paths can be parsed. In addition, for string parsing it is checked if the string is truncated upon parsing.
  • Update of PDAF_diag_crps: The routine now includes parallelization. There is a separate routine PDAF_diag_crps_mpi which allows one to specify the communicator in which the operation is performed.
  • New Makefile in PDAF root directory. This makefile performs the compilation in the directory build/ and keeps src/ clear. Further, it supports parallel compilation. The previous Makefile in src/ is still present, but will be removed in a future release. If you integrated the compilation of PDAF in some larger build process, we recommend to switch to the new Makefile.
  • New routine PDAFomi_observation_localization_weights as convenient way to get a localization weight. Usable for exmaple in the prodRinvA or likelihood routines for non-diagonal R.
  • New routine PDAF_correlation_function to provide the value of correlation functions. Currently, a Gaussian and the 5th-order polynomial by Gaspari&Cohn (1999) are implemented.
  • Revised timer module: Now we use MPI_Wtime instead of SYSTEM_CLOCK. This appears to yield more consistent timings

Bug fixes:

  • Replace lower-case letters by upper case in TRTRS library calls. This circumvents a bug in some versions of OPENBLAS, which causes OPENBLAS to only accept upper case letters for this call.
  • Revision of ETKF/ESTKF/SEIK analysis step. For domains with dim_obs_p=0 now the observation operator is called consistently with domains having dim_obs_p>0. This allows for global MPI operations in the observation operator.