wiki:PDAF_get_smootherens

Version 6 (modified by lnerger, 5 years ago) (diff)

--

PDAF_get_smootherens

This page documents the routine PDAF_get_smootherens of PDAF.

The routine is typically called in prepoststep_pdaf.

The routine PDAF_get_smootherens is used when the smoother extension of a filter is used. When a smoother is used, the smoothed ensemble states at earlier times are stored in an internal array of PDAF. To get access to this array, one has to call the routine PDAF_get_smootherens. The routine will set a pointer to the PDAF-internal array of smoother ensembles. In addition, the number of smoother ensembles is returned. After the call one can analyze the smoother ensemble at past times, as one usually does for the filtered ensemble in the user-supplied routine prepoststep_pdaf.

The interface is the following:

  SUBROUTINE PDAF_get_smootherens(sens_point, maxlag, status_pdaf)

with the following arguments:

  • sens_point : Upon exiting the routine, it points to the smoother array. On the calling side, it has to specified as 'REAL, POINTER :: sens_pointer(:,:,:)'
  • maxlag : An integer providing the number of smoothed time instances available in the smoother array
  • status_pdaf: The integer status flag. It is 0, if the routine is exited without errors.

Notes:

  • Important: The feature to use a pointer as an argument is Fortran2003 standard. In order to make this call work, an explicit Fortran interface is required. For this, one has to include the interface declaration from PDAF's interfaces module by
     USE PDAF_interfaces_module, ONLY: PDAF_get_smootherens
    
  • When the pointer sens_point is set, the dimensions are sens_point(dim_p, dim_ens, smoothed_times). Thus, the first two indices are for an ensemble array at the smoother time specified by the third index.
  • The third index in sens_point is directed into the past, thus for a value of 1 one accesses the most recent smoothed time.
  • The smoother is only performed for time instances at which the filter analysis step is performed. Thus, one has access to the last smoothed_times analysis times.
  • When the offline implementation of PDAF is used the smoothing is only possible, if the smoother array is filled before doing a filter analysis step. Use the routine PDAF_set_smootherens (see PDAF_set_smootherens) for this purpose.
  • The maximum lag to which is smoothed is specified as one of values in the integer parameter array in the call to PDAF_init. maxlag can reach at most the value of the smoother lag given in the initialization of PDAF. It's value will be smaller if a smaller number of analysis steps has been computed at the time of the call.