| | 1 | = PDAF_set_ens_pointer = |
| | 2 | |
| | 3 | This page documents the routine `PDAF_set_ens_pointer` of PDAF. |
| | 4 | |
| | 5 | This routine allows a program to set a Fortran pointer to the internal ensemble array of PDAF. |
| | 6 | |
| | 7 | The interface is the following: |
| | 8 | {{{ |
| | 9 | CALL PDAF_set_ens_pointer(ens_pointer, status) |
| | 10 | }}} |
| | 11 | |
| | 12 | The arguments are: |
| | 13 | |
| | 14 | * `ens_pointer`: The pointer to the smoother ensemble. The dimension is `ens_pointer(:,:)`. Thus in the program calling `PDAF_set_ens_pointer` one has to declare `REAL, POINTER :: sens_pointer(:,:)`. On output it points to the ensemble array. |
| | 15 | * `status`: Status flag. 0 for successful exit. |
| | 16 | |
| | 17 | |
| | 18 | '''Important:''' |
| | 19 | |
| | 20 | * Because `ens_pointer` is a pointer, the call to `PDAF_set_ens_pointer` needs an ''explicit'' Fortran interface. This is provided by the Fortran module `PDAF_interfaces_module`. For this, one has to include the interface declaration from PDAF's interfaces module by |
| | 21 | {{{ |
| | 22 | USE PDAF_interfaces_module, ONLY: PDAF_set_smootherens |
| | 23 | }}} |
| | 24 | * Using a pointer combined with an intent, i.e. using a pointer as argument, is a feature of Fortran 2003. Thus, if a too old compiler is used, it will provide an error when the routine is compiled. |
| | 25 | |
| | 26 | |
| | 27 | Notes: |
| | 28 | |
| | 29 | * `PDAF_set_ens_pointer` is a special routine that is never needed when the standard online or offline modes of the implementation are used. However, the routine allows to build a model that uses each column of the ensemble array to store the model fields. Thus, one can avoid allocating additional memory for the model fields. |