43 | | === OMI Observation Module === |
44 | | The observation module performs all observation-related operations. In case of OMI, one needs the following routines: |
45 | | * `init_dim_obs_pdafomi`: For each observation type that is assimilation this routine reads the observations and initialized observation values, coordinates, and errors. In addition indices are specified that link the state vector to the observations so that the observation operator is prepared |
46 | | * `obs_op_pdafomi`: For each observation type there is one routine providing the observation operator. For this, OMI provides different observation operators |
47 | | * `init_dim_obs_l_pdafomi`: This routine initializes the local observations of each observation type. This is only required if the LESTKF is applied to transform the ensemble perturbations. With OMI this is mainly a single subroutine call, while OMI does the actual initialization |
48 | | * `obs_op_lin_pdafomi`: This routine applied the linearized observation operator for each observation type during the iterative optimization. So far OMI only provised linear observation operators. For these `obs_op_lin_pdafomi` can call the same operator at `obs_op_pdafomi`. |
49 | | * `obs_op_adj_pdafomi`: This routine applied for each observation type the adjoint observation operator. This is applied to the observation vector and returns a state vector. OMI provides the adjoints of the provided forward operators. |
| 42 | The model Interface consists of the routines `collect_state_pdaf` and `distribute_state_pdaf`. These routine perform the conversion between model fields and state vector. The routines have been discussed in the context of the [ModifyModelforEnsembleIntegration modification of the model for the ensemble integration]. These routine are only used in the online assimialtion mode. |
51 | | === Localization === |
52 | | These routines are only required for 3D-Var variants transforming the ensemble perturbations with the LESTKF. They handle the initialization of the state vector for a local analysis. These routines are |
| 44 | === OMI Observation Modules === |
| 45 | |
| 46 | The observation modules perform all observation-related operations. There is one observation module per observation type. The call-back routines are collected in the file `callback_obs_pdafomi.F90`. Each of these routines then calls a subroutine in the observation model specific to the observation type. |
| 47 | |
| 48 | Relevant for 3D-Var methods `callback_obs_pdafomi.F90` has to contain the routines: |
| 49 | * `init_dim_obs_pdafomi`:[[BR]] For each observation type that is assimilated, this routine calls a routine form the observation modules that reads the observations and initializes observation values, coordinates, and errors. In addition, indices are specified that link the state vector to the observations. These are used in the observation operator. |
| 50 | * `obs_op_pdafomi`:[[BR]] For each observation type, there is one routine providing the observation operator. For this, PDAF-OMI provides different observation operators as subroutines. |
| 51 | * `init_dim_obs_l_pdafomi`:[[BR]] This is only used for the domain-localized in case of the 3D Ensemble-Var or hybrid ensemble Var using the LESTKF for ensemble transformation. It calls the observation modules to initialize the local observations of each observation type. With PDAF-OMI this is mainly a single subroutine call, while PDAF-OMI does the actual initialization. |
| 52 | * `obs_op_lin_pdafomi`: This routine applies the linearized observation operator for each observation type during the iterative optimization of the 3D-Var methods. So far PDAF-OMI only provides linear observation operators. For these `obs_op_lin_pdafomi` can call the same operator as for `obs_op_pdafomi`. |
| 53 | * `obs_op_adj_pdafomi`: This routine applies the adjoint observation operator for each observation type during the iterative optimization of the 3D-Var methods. This is applied to the observation vector and returns a state vector. OMI provides the adjoints of the provided forward operators. |
| 54 | |
| 55 | == Localization module == |
| 56 | |
| 57 | These routines are only required for 3D-Var variants transforming the ensemble perturbations with the LESTKF. They handle the initialization of the state vector for a local analysis. These routines are |
58 | | The covariance routines perform the so-called control vector transformation (cvt). The 3D-Vars are implemented in incremental form and transform from the state space (state vector increment '''dx''') to the control space (control vector '''v''') using a square-root '''L''' of the background covariance matrix '''B''' = '''L''' '''L'''^T^. |
59 | | * `cvt_pdaf`: This routine performs the transformation '''x''' = '''L''' '''v'''. |
60 | | * `cvt_adj_pdaf`: This routine performsn the adjoint transformation '''y''' = '''L''' '''x''' |
61 | | * `cvt_ens_pdaf`: This routine performs the transformation '''x''' = '''Z''' '''v''' using an ensemble-represented matrix square root '''Z''' with '''Z''' '''Z'''^T^ = '''B'''. For this operation the routine is provided with the array holding the state ensemble. |
62 | | * `cvt_adj_ens_pdaf`: This routine performsn the adjoint transformation '''y''' = '''Z''' '''x''' using an ensemble-represented matrix square root '''Z''' with '''Z''' '''Z'''^T^ = '''B'''. For this operation the routine is provided with the array holding the state ensemble. |
| 64 | The covariance routines perform the so-called control vector transformation (cvt). The 3D-Vars are implemented in incremental form and transform from the state space (state vector increment '''dx''') to the control space (control vector '''v''') using a square-root '''L''' of the background covariance matrix '''B''' = '''L''' '''L'''^T^. |
| 65 | * `cvt_pdaf`: This routine performs the transformation '''x''' = '''L''' '''v'''. It is used in the parameterized 3D-Var and the hybrid 3D-Var methods. |
| 66 | * `cvt_adj_pdaf`: This routine performs the adjoint transformation '''y''' = '''L'''^T^ '''x'''. It is used in the parameterized 3D-Var and the hybrid 3D-Var methods. |
| 67 | * `cvt_ens_pdaf`: This routine performs the transformation '''x''' = '''Z''' '''v''' using an ensemble-represented matrix square root '''Z''' with '''Z''' '''Z'''^T^ = '''B'''. For this operation the routine is provided with the array holding the state ensemble. It is used in the 3D Ensemble Var and the hybrid 3D-Var methods. |
| 68 | * `cvt_adj_ens_pdaf`: This routine performsn the adjoint transformation '''y''' = '''Z'''^T^ '''x''' using an ensemble-represented matrix square root '''Z''' with '''Z''' '''Z'''^T^ = '''B'''. For this operation the routine is provided with the array holding the state ensemble. It is used in the 3D Ensemble Var and the hybrid 3D-Var methods. |
66 | | PDAF provides 3 different variants of 3D-Var. For those methods using en ensemble to represent covariances, the transformation of ensemble perturbations can be cmoputed using the global ESTKF or the localized LESTKF filters. The methods are |
67 | | * '''3D-Var:''' This variant uses parameterized covariances. It is run in PDAF with an ensemble size of one. The functionality in `cvt_pdaf` and `cvt_adj_pdaf` is coded by the user according to the particular problem, e.g. by using variable transformations for balances or using decorrelation lengths or EOFs to propagate increments. |
68 | | * '''3D Ensemble Var:''' The ensemble variational method represents the covariance by an ensemble. Thus the functionality in `cvt_ens_pdaf` and `cvt_adj_ens_pdaf` is, in its simplest form, simply given by the scaled ensemble perturbations. In addition localization can be applied. In this case the number of columns of the ensemble array is multiplied and tapering is applied. The transformation of the ensemble transformations can be performed in two ways |
69 | | * '''ESTKF:''': In this case the ensemble perturbations are transformed by the global ESTKF method. Adapt from using the ensemble variances of the cvt-routines, the interface for this 3D-Var method is identical to that of the parameterized 3D-Var. |
70 | | * '''LESTKF:''': In this case the ensemble perturbations are transformed by the local ESTKF method. In this case, the call to the assimilation routine also specifies the routines needed to apply the localization. |
71 | | * ''' Hybrid 3D-Var:''' The hybrid 3D-Var implementation represents the covariance matrix by a combination of a parameterized with an ensemble part. Thus mathematically the columns are concatenated as '''B'''^1/2^ = ['''L''' '''Z''']. In practive this variant call both `cvt_pdaf` and `cvt_ens_pdaf` (and likewise both adjoint variants) one after the other and each routine does its part of the covariance operation. As for the 3D Ensemble Var, the transformation of the ensemble transformations can be performed in two ways |
72 | | * '''ESTKF:''': In this case the ensemble perturbations are transformed by the global ESTKF method. Compared to the interface of the parameterized 3D-Var, the call to the assimilation routine includes all cvt routines, both for the parameterized and the ensemble transformatiob. |
73 | | * '''LESTKF:''': In this case the ensemble perturbations are transformed by the local ESTKF method. In this case, the call to the assimilation routine also specifies the routines needed to apply the localization. |
| 72 | PDAF provides 3 different variants of 3D-Var. For those methods using an ensemble to represent covariances, the transformation of ensemble perturbations can be computed using the global ESTKF or the localized LESTKF filters. The methods are |
| 73 | * '''3D-Var:'''[[BR]] This variant uses parameterized covariances. It is run in PDAF with an ensemble size of one. The functionality in `cvt_pdaf` and `cvt_adj_pdaf` is coded by the user according to the particular problem, e.g. by using variable transformations for balances or using decorrelation lengths or EOFs to propagate increments. |
| 74 | * '''3D Ensemble Var:'''[[BR]] The ensemble variational method represents the covariance by an ensemble. Thus, the functionality in `cvt_ens_pdaf` and `cvt_adj_ens_pdaf` is, in its simplest form, simply given by the ensemble perturbations divided by the ensemble size minus 1. In addition, localization can be applied. In this case the number of columns of the ensemble array is multiplied and tapering is applied to each group of columns. The transformation of the ensemble perturbations can be performed in two ways: |
| 75 | * '''ESTKF:''': In this case, the global ESTKF method transforms the ensemble perturbations. No localization is applied in this case. |
| 76 | * '''LESTKF:''': In this case, the local LESTKF method transforms the ensemble perturbations. |
| 77 | * ''' Hybrid 3D-Var:'''[[BR]] The hybrid 3D-Var implementation represents the covariance matrix by a combination of a parameterized with an ensemble part. Thus mathematically the columns are concatenated as '''B'''^1/2^ = ['''L''' '''Z''']. In practice this variant calls both `cvt_pdaf` and `cvt_ens_pdaf` (and likewise both adjoint variants) one after the other and each routine does its part of the covariance operation. As for the 3D Ensemble Var, the transformation of the ensemble transformations can be performed in two ways: |
| 78 | * '''ESTKF:''': In this case, the global ESTKF method transforms the ensemble perturbations. No localization is applied in this case. |
| 79 | * '''LESTKF:''': In this case, the local LESTKF method transforms the ensemble perturbations. |