42 | | == PDAF-D_set_smootherens == |
43 | | |
44 | | A smoother is available for several filters (ESTKF/LESTKF/ETKF/LETKF/EnKF). This routine is called to set a Fortran pointer to the array in PDAF that stores the ensembles for smoothing. In addition, it sets the available lag of the smoothing. This routine is called in the offline mode of PDAF. While in the online mode, the smoother ensemble array is filled automatically by PDAF, one has to fill it manually in the offline mode. `PDAF_set_smootherens` gives access to the smoother array to fill it. |
| 48 | === PDAF_set_smootherens === |
| 49 | |
| 50 | A smoother is available for several filters (ESTKF/LESTKF/ETKF/LETKF/EnKF/NETF/LNETF). This routine is called to set a Fortran pointer to the array in PDAF that stores the ensembles for smoothing. In addition, it sets the available lag of the smoothing. This routine is called in the offline mode of PDAF. While in the online mode, the smoother ensemble array is filled automatically by PDAF, one has to fill it manually in the offline mode. `PDAF_set_smootherens` gives access to the smoother array to fill it. |
69 | | == PDAF-D_get_memberid == |
| 75 | === PDAF_set_ens_pointer === |
| 76 | |
| 77 | This routine allows a program to get a Fortran pointer to the internal ensemble array of PDAF. |
| 78 | |
| 79 | {{{ |
| 80 | CALL PDAF_set_ens_pointer(ens_pointer, status) |
| 81 | }}} |
| 82 | |
| 83 | The arguments are: |
| 84 | |
| 85 | * `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. |
| 86 | * `status`: Status flag. 0 for successful exit. |
| 87 | |
| 88 | |
| 89 | '''Important:''' |
| 90 | |
| 91 | * 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`. In the header part of the routine that calls `PDAF_set_ens_pointer` one has to include `use PDAF_interfaces_module`! |
| 92 | * 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. |
| 93 | |
| 94 | |
| 95 | Notes: |
| 96 | |
| 97 | * `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. |
| 98 | |
| 99 | |
| 100 | == Access to index information == |
| 101 | |
| 102 | === PDAF_get_memberid === |
130 | | == PDAF-D_set_ens_pointer == |
131 | | |
132 | | This routine allows a program to get a Fortran pointer to the internal ensemble array of PDAF. |
133 | | |
134 | | {{{ |
135 | | CALL PDAF_set_ens_pointer(ens_pointer, status) |
136 | | }}} |
137 | | |
138 | | The arguments are: |
139 | | |
140 | | * `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. |
141 | | * `status`: Status flag. 0 for successful exit. |
142 | | |
143 | | |
144 | | '''Important:''' |
145 | | |
146 | | * 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`. In the header part of the routine that calls `PDAF_set_ens_pointer` one has to include `use PDAF_interfaces_module`! |
147 | | * 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. |
148 | | |
149 | | |
150 | | Notes: |
151 | | |
152 | | * `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. |
153 | | |
154 | | |
155 | | == PDAF_set_comm_pdaf == |
| 164 | == Controlling the MPI communicator for PDAF == |
| 165 | |
| 166 | === PDAF_set_comm_pdaf === |