Changes between Version 3 and Version 4 of IncrementalAnalysisUpdates


Ignore:
Timestamp:
Aug 21, 2025, 4:59:37 PM (12 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IncrementalAnalysisUpdates

    v3 v4  
    151151 * In Fortran user code one has to declare a pointer like [[BR]]`REAL, POINTER :: iau_ptr(:,:) `[[BR]] and provide this as the first argument. One does not need to allocate this pointer.
    152152
     153
     154=== PDAF_iau_set_ens_pointer ===
     155
     156(This routine is added in the final PDAF V3.0 release, while it's not present in V3.0beta)
     157
     158This routine is a replacement for `PDAF_iau_set_pointer` clarifying that it relates to the increment ensemble array.
     159With this routine the user can set a pointer to the PDAF-internal array of ensemble increments. This provides direct access to the increment array e.g. to analyze it or to write it into a file for restarting. The routine is different from `PDAF_iau_set_inc` in that here the user obtains access to the internal IAU array, while in `PDAF_iau_set_inc` one can only overwrite the internal array.
     160
     161The routine can be called by each single process, but it only provides a pointer to the process-local part of the increment array. For domain-decomposed models, this array only includes the state vector part for the process domain. In addition, it usually only contains a sub-ensemble unless one uses the flexible parallelization mode with a single model task. For the fully parallel mode, the process(es) of a single model task only hold a single ensemble state.
     162
     163The interface is:
     164{{{
     165  SUBROUTINE PDAF_iau_set_ens_pointer(iau_ens_ptr, flag)
     166
     167    REAL, POINTER, INTENT(out) :: iau_ens_ptr(:,:)  ! Pointer to IAU ensemble array
     168    INTEGER, INTENT(out)       :: flag             ! Status flag
     169}}}
     170
     171Hints:
     172 * In Fortran user code one has to declare a pointer like [[BR]]`REAL, POINTER :: iau_ens_ptr(:,:) `[[BR]] and provide this as the first argument. One does not need to allocate this pointer.
     173
     174
     175=== PDAF_iau_set_state_pointer ===
     176
     177(This routine is added in the final PDAF V3.0 release, while it's not present in V3.0beta)
     178
     179This routine is used in the EnOI modes (subtype 10 and 11) where only the state estimate is integrated. The routine allows the user to set a pointer to the PDAF-internal array of state vector increments. This provides direct access to the increment vector e.g. to analyze it or to write it into a file for restarting. The routine is different from `PDAF_iau_set_inc` in that here the user obtains access to the internal IAU array, while in `PDAF_iau_set_inc` one can only overwrite the internal array.
     180
     181The routine can be called by each single process, but it only provides a pointer to the process-local part of the increment vector. For domain-decomposed models, this array only includes the state vector part for the process domain.
     182
     183The interface is:
     184{{{
     185  SUBROUTINE PDAF_iau_set_state_pointer(iau_state_ptr, flag)
     186
     187    REAL, POINTER, INTENT(out) :: iau_state_ptr(:)  ! Pointer to IAU state vector
     188    INTEGER, INTENT(out)       :: flag              ! Status flag
     189}}}
     190
     191Hints:
     192 * In Fortran user code one has to declare a pointer like [[BR]]`REAL, POINTER :: iau_state_ptr(:) `[[BR]] and provide this as the first argument. One does not need to allocate this pointer.
     193
    153194== Apply the IAU increment ==
    154195