Changes between Version 5 and Version 6 of ImplementAnalysis_3DEnVar
- Timestamp:
- Dec 9, 2021, 11:13:15 AM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ImplementAnalysis_3DEnVar
v5 v6 171 171 172 172 173 === `U_cvt` (cvt_pdaf.F90) === 174 175 The interface for this routine is: 176 {{{ 177 SUBROUTINE cvt_pdaf(iter, dim_p, dim_cvec, cv_p, Vv_p) 178 179 INTEGER, INTENT(in) :: iter ! Iteration of optimization 180 INTEGER, INTENT(in) :: dim_p ! PE-local observation dimension 181 INTEGER, INTENT(in) :: dim_cvec ! Dimension of control vector 182 REAL, INTENT(in) :: cv_p(dim_cvec) ! PE-local control vector 183 REAL, INTENT(inout) :: Vv_p(dim_p) ! PE-local result vector (state vector increment) 173 === `U_cvt_ens` (cvt_ens_pdaf.F90) === 174 175 The interface for this routine is: 176 {{{ 177 SUBROUTINE cvt_ens_pdaf(iter, dim_p, dim_ens, dim_cv_ens_p, ens_p, cv_p, Vcv_p) 178 179 INTEGER, INTENT(in) :: iter ! Iteration of optimization 180 INTEGER, INTENT(in) :: dim_p ! PE-local observation dimension 181 INTEGER, INTENT(in) :: dim_ens ! Ensemble size 182 INTEGER, INTENT(in) :: dim_cv_ens_p ! Dimension of control vector 183 REAL, INTENT(in) :: ens_p(dim_p, dim_ens) ! PE-local ensemble 184 REAL, INTENT(in) :: cv_p(dim_cv_ens_p) ! PE-local control vector 185 REAL, INTENT(inout) :: Vcv_p(dim_p) ! PE-local state increment 184 186 }}} 185 187 186 188 The routine is called during the analysis step during the iterative minimization of the cost function. 187 It has to apply the control vector transformation to the control vector and return the transformed result vector. Usually this transformation is the multiplication with the square-root of the background error covariance matrix '''B'''. 189 It has to apply the control vector transformation to the control vector and return the transformed result vector. Usually this transformation is the multiplication with the square-root of the background error covariance matrix '''B'''. For the 3D Ensemble Var, this square root is usually expressed through the ensemble. 188 190 189 191 If the control vector is decomposed in case of parallelization it first needs to the gathered on each processor and afterwards the transformation is computed on the potentially domain-decomposed state vector. … … 194 196 The interface for this routine is: 195 197 {{{ 196 SUBROUTINE cvt_adj_pdaf(iter, dim_p, dim_cvec, Vv_p, cv_p) 197 198 INTEGER, INTENT(in) :: iter ! Iteration of optimization 199 INTEGER, INTENT(in) :: dim_p ! PE-local observation dimension 200 INTEGER, INTENT(in) :: dim_cvec ! Dimension of control vector 201 REAL, INTENT(in) :: Vv_p(dim_p) ! PE-local result vector (state vector increment) 202 REAL, INTENT(inout) :: cv_p(dim_cvec) ! PE-local control vector 198 SUBROUTINE cvt_adj_ens_pdaf(iter, dim_p, dim_ens, dim_cv_ens_p, ens_p, Vcv_p, cv_p) 199 200 INTEGER, INTENT(in) :: iter ! Iteration of optimization 201 INTEGER, INTENT(in) :: dim_p ! PE-local observation dimension 202 INTEGER, INTENT(in) :: dim_ens ! Ensemble size 203 INTEGER, INTENT(in) :: dim_cv_ens_p ! PE-local dimension of control vector 204 REAL, INTENT(in) :: ens_p(dim_p, dim_ens) ! PE-local ensemble 205 REAL, INTENT(in) :: Vcv_p(dim_p) ! PE-local input vector 206 REAL, INTENT(inout) :: cv_p(dim_cv_ens_p) ! PE-local result vector 203 207 }}} 204 208 205 209 The routine is called during the analysis step during the iterative minimization of the cost function. 206 It has to apply the adjoint control vector transformation to a state vector and return the control vector. Usually this transformation is the multiplication with transpose d of the square-root of the background error covariance matrix '''B'''.210 It has to apply the adjoint control vector transformation to a state vector and return the control vector. Usually this transformation is the multiplication with transpose of the square-root of the background error covariance matrix '''B'''. or the 3D Ensemble Var, this square root is usually expressed through the ensemble. 207 211 208 212 If the state vector is decomposed in case of parallelization one needs to take care that the application of the trasformation is complete. This usually requries a comminucation with MPI_Allreduce to obtain a global sun. … … 340 344 Inside the analysis step the interative optimization is computed. This involves the repeated call of the routines: 341 345 1. [#U_cvt_enscvt_ens_pdaf.F90 U_cvt_ens] 342 1. [#U_obs_op_lin pdafomicallback_obs_pdafomi.F90 U_obs_op_lin_pdafomi]343 1. [#U_obs_op_adj pdafomicallback_obs_pdafomi.F90 U_obs_op_adj_pdafomi]346 1. [#U_obs_op_lin_pdafomicallback_obs_pdafomi.F90 U_obs_op_lin_pdafomi] 347 1. [#U_obs_op_adj_pdafomicallback_obs_pdafomi.F90 U_obs_op_adj_pdafomi] 344 348 1. [#U_cvt_adj_enscvt_adj_ens_pdaf.F90 U_cvt_adj_ens] 345 349 346 350 After the iterative optimization the following routines are executes to complte the analysis step: 347 1. [#U_cvt_enscvt_ens_pdaf.F90 U_cvt ] (Call to the control vector transform to compute the final state vector increment351 1. [#U_cvt_enscvt_ens_pdaf.F90 U_cvt_ens] (Call to the control vector transform to compute the final state vector increment 348 352 1. [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step) 349 353