NEDAS.assim_tools.assimilators.TopazDEnKF package
- class NEDAS.assim_tools.assimilators.TopazDEnKF.TopazDEnKFAssimilator(c: Context)[source]
Bases:
BatchAssimilator- rfactor1: float
- rfactor: float
- kfactor: float
- nlobs_max: int | None
- supports_static_members: bool = True
- supports_hybrid_perturbation: bool = True
- assimilation_algorithm(c)[source]
batch assimilation solves the matrix version EnKF analysis for each local state, the local states in each partition are processed in parallel
- output_local_diagnostics(c)[source]
Write the observation-impact diagnostics of the local analyses to
enkf_diag.ncin the analysis directory (as the Fortran EnKF-TOPAZ does in m_local_analysis.F90::diag2nc).With S the localized, R-normalized ensemble observation anomalies and G = (I + S^T S)^-1 S^T the gain in ensemble space (so that K = A G), the two metrics of Sakov et al. (2012, Ocean Sci. 8, 633-656, TOPAZ4) and Sakov (2014, EnKF-C user guide, Sect. 2.7.6) are
DFS = tr(KH) = tr(G S) SRF = sqrt( tr(H P^f H^T R^-1) / tr(H P^a H^T R^-1) ) - 1
= sqrt( tr(S^T S) / tr(G S) ) - 1
DFS, the degrees of freedom for signal (Rodgers 2000; Cardinali et al. 2004), counts the independent pieces of information the local analysis extracts from its observations; it is bounded by min(nlobs, nens-1) and is a rank-problem indicator: keeping it below ~nens/4 is the usual advice, larger values point at too large an hroi (or too small an ensemble) for the ensemble to represent.
SRF, the spread reduction factor, is the relative reduction of the observed ensemble spread by the analysis: 0 means no impact, 1 means the spread is halved. It measures the “strength” of the assimilation and should ideally stay below ~1; larger values require a nearly optimal system or they produce imbalances.
Following the Fortran, DFS uses the gain that updates the mean (obs errors without
rfactor) and SRF the gain that updates the anomalies (obs errors inflated byrfactor), so SRF reflects the spread reduction actually applied. Both are the theoretical KF values (exact for the ETKF); the DEnKF approximates the KF, so its realized values differ slightly.Unlike the Fortran, which localizes horizontally only and so has one value per model column, NEDAS also applies vertical, temporal and cross-variable localization, giving a separate local analysis per field record. The values written here are averaged over the field records updated at each grid point (identical to the Fortran’s single value when only horizontal localization is active), together with
nlobs, the average number of observations used.
Submodules
- NEDAS.assim_tools.assimilators.TopazDEnKF.core module
TopazDEnKFAssimilatorTopazDEnKFAssimilator.rfactor1TopazDEnKFAssimilator.rfactorTopazDEnKFAssimilator.kfactorTopazDEnKFAssimilator.nlobs_maxTopazDEnKFAssimilator.supports_static_membersTopazDEnKFAssimilator.supports_hybrid_perturbationTopazDEnKFAssimilator.assimilation_algorithm()TopazDEnKFAssimilator.output_local_diagnostics()TopazDEnKFAssimilator.local_analysis()
local_analysis_main()apply_ensemble_transform_fields()ensemble_transform_weights()traceprod()spread_reduction_factor()kalman_gain_weights()apply_ensemble_transform()