= PDAF3_init = This page documents the routine `PDAF3_init` of PDAF. The routine was introduced with the final release of PDAF V3.0. The routine `PDAF3_init` is typically called in `init_pdaf` where also the variables for the call are set. The call to `PDAF3_init` has the following structure: {{{ CALL PDAF3_init(filtertype, subtype, step_null, & filter_param_i, length_filter_param_i, & filter_param_r, length_filter_param_r, & U_init_ens, screen, status_pdaf) }}} The required variables are the following: * `filtertype`: An integer defining the type of filter algorithm. * `subtype`: An integer defining the sub-type of the filter algorithm (see the example code in `templates/online_omi/init_pdaf.F90` for choices). If `PDAF_init` is called with `subtype=-1` the available options are shown for the selected filter algorithm. * `step_null`: An integer defining the initial time step. For some cases it can use useful to set `step_null` larger to 0. * `filter_param_i`: Integer array collecting several variables for PDAF. The first two variables are mandatory and equal for all filters. Further variables are optional (see example code or use `subtype=-1` to display available options.). The mandatory variables are in the following order: * The size of the local state vector for the current process. * The ensemble size for all ensemble-based filters (or the rank of the state covariance matrix for mode-based filters like SEEK) * `length_filter_param_i`: An Integer defining the length of the array `filter_param_i`. The entries in the array are parsed up to this index. * `filter_param_r`: Array of reals collecting floating point variables for PDAF. The first variable is mandatory and equal for all filters. Further variables are optional (see example code in `templates/online_omi/init_pdaf.F90` or use `subtype=-1` to display available options.). The mandatory variable is: * The value of the forgetting factor controlling covariance inflation (required to be larger than zero; common are values between 0.9 and 1.0. For 1.0 the ensemble is not inflated.) * `length_filter_param_r`: An Integer defining the length of the array `filter_param_r`. The entries in the array are parsed up to this index. * `U_init_ens`: The name of the user-supplied routine that is called by `PDAF_init` to initialize the ensemble of model states. (See '[InsertAnalysisStep#User-suppliedroutineU_init_ensinit_ens_pdaf.F90 User-supplied routine U_init_ens]' * `screen`: An integer defining whether information output is written to the screen (i.e. standard output). The following choices are available: * 0: quiet mode - no information is displayed. * 1: Display standard information (recommended) * 2: as 1 plus display of timing information during the assimilation process * 3: Display detailed information for debugging * `status_pdaf`: An integer used as status flag of PDAF. If `status_pdaf` is zero upon exit from `PDAF3_init` the initialization was successful. An error occurred for non-zero values. The error codes are: * 1: No valid filter type * 2: No valid sub type * 3: Invalid dim_pint * 4: Invalid dim_preal * 5: Invalid state dimension * 6: Invalid ensemble size * 7: Invalid value for forgetting factor * 8: Invalid other integer parameter value * 9: Invalid other real parameter value * 10: MPI information not initialized * 20: error in allocation of array at PDAF init An overview of available options for each filter an be found on the [wiki:AvailableOptionsforInitPDAF overview page on options]. It is recommended that the value of `status_pdaf` is checked in the program after PDAF_init is executed. Only if its value is 0 the initialization was successful. **Note:** * `PDAF3_init` has to be used in combination with [wiki:PDAF3_set_parallel], which is called in `init_parallel_pdaf` to provide the parallelization information to PDAF. * `PDAF3_init` is an alternative to `PDAF_init`. While `PDAF_init` include parallelization variables in its interface, these are not present in `PDAF3_init`. With this, `PDAF3_init` allows to obtain a simpler code.