Changes between Version 6 and Version 7 of ImplementAnalysisUniversal


Ignore:
Timestamp:
May 24, 2025, 11:32:51 AM (8 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysisUniversal

    v6 v7  
    125125=== `U_collect_state` (collect_state_pdaf.F90) ===
    126126
    127 This routine is independent of the filter algorithm used.
    128 
    129 See the page on [InsertAnalysisStep#U_collect_statecollect_state_pdaf.F90 inserting the analysis step] for the description of this routine.
    130 
     127The interface for this routine is
     128{{{
     129SUBROUTINE collect_state(dim_p, state_p)
     130
     131  INTEGER, INTENT(in) :: dim_p           ! State dimension for PE-local model sub-domain
     132  REAL, INTENT(inout) :: state_p(dim_p)  ! State vector for PE-local model sub-domain
     133}}}
     134
     135This routine is called during the forecast phase as many times as there are states to be integrated by a model task. It is called at the end of the integration of a member state of the ensemble. The routine is executed by all processes that belong to model tasks.
     136
     137When the routine is called, a state vector `state_p` and its size `dim_p` are provided. The operation to be performed in this routine is inverse to that of the routine `U_distribute_state`. That is, the state vector `state_p` has to be initialized from the model fields. If the model is not parallelized, `state_p` will contain a full state vector. If the model is parallelized using domain decomposition, `state_p` will contain the part of the state vector that corresponds to the model sub-domain for the calling process.
     138
     139Some hints:
     140 * If the state vector does not include all model fields, it can be useful to keep a separate array to store those additional fields. This array has to be kept separate from PDAF, but can be defined using a module like `mod_assimilation`.
    131141
    132142=== `U_distribute_state` (distribute_state_pdaf.F90) ===