Changes between Version 5 and Version 6 of ImplementAnalysis_3DEnVar


Ignore:
Timestamp:
Dec 9, 2021, 11:13:15 AM (3 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ImplementAnalysis_3DEnVar

    v5 v6  
    171171
    172172
    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
     175The interface for this routine is:
     176{{{
     177SUBROUTINE 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
    184186}}}
    185187
    186188The 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'''.
     189It 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.
    188190
    189191If 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.
     
    194196The interface for this routine is:
    195197{{{
    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
     198SUBROUTINE 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
    203207}}}
    204208
    205209The 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 transposed of the square-root of the background error covariance matrix '''B'''.
     210It 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.
    207211
    208212If 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.
     
    340344Inside the analysis step the interative optimization is computed. This involves the repeated call of the routines:
    341345 1. [#U_cvt_enscvt_ens_pdaf.F90 U_cvt_ens]
    342  1. [#U_obs_op_linpdafomicallback_obs_pdafomi.F90 U_obs_op_lin_pdafomi]
    343  1. [#U_obs_op_adjpdafomicallback_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]
    344348 1. [#U_cvt_adj_enscvt_adj_ens_pdaf.F90 U_cvt_adj_ens]
    345349
    346350After 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 increment
     351 1. [#U_cvt_enscvt_ens_pdaf.F90 U_cvt_ens] (Call to the control vector transform to compute the final state vector increment
    348352 1. [#U_prepoststepprepoststep_ens_pdaf.F90 U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)
    349353