Changes between Version 35 and Version 36 of ModifyModelforEnsembleIntegration


Ignore:
Timestamp:
May 24, 2025, 8:49:46 AM (8 days ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ModifyModelforEnsembleIntegration

    v35 v36  
    8686{{{
    8787SUBROUTINE next_observation_pdaf(stepnow, nsteps, doexit, timenow)
     88
     89  INTEGER, INTENT(in)  :: stepnow  ! The current time step provided by PDAF
     90  INTEGER, INTENT(out) :: nsteps   ! The number of time steps of the next forecast phase
     91  INTEGER, INTENT(out) :: doexit   ! Exit flag: (1) exit, (0) continue data assimilation
     92  REAL, INTENT(out)    :: timenow  ! Current (physical) model (physical) time. Not used by PDAF itself.
    8893}}}
    89 with arguments:
    90 * `stepnow`, `integer, intent(in)`:[[BR]] The current time step provided by PDAF
    91 * `nsteps`, `integer, intent(out)`:[[BR]] The number of time steps of the next forecast phase
    92 * `doexit`, `integer, intent(out)`:[[BR]] Exit flag: (1) exit, (0) continue data assimilation
    93 * `timenow`, `real, intent(out)`:[[BR]] The current (physical) model time as defined by the model or user. Not used by PDAF itself.
    9494
    9595The routine is called by `PDAF_init_forecast` and later at the beginning of each forecast phase by `PDAF3_assimilate`, or similar routines. It is executed by all processes that participate in the model integrations.
     
    111111{{{
    112112SUBROUTINE distribute_state(dim_p, state_p)
     113
     114  INTEGER, INTENT(in) :: dim_p           ! Size of state vector for process-local sub-domain
     115  REAL, INTENT(inout) :: state_p(dim_p)  ! State vector for process-local sub-domain
    113116}}}
    114 with arguments
    115  * `dim_p`, `integer, intent(in)`:[[BR]] Size of state vector for process-local sub-domain
    116  * `state_p`, `real, intent(in), dimension(dim_p)`:[[BR]] State vector for process-local sub-domain
    117117
    118118The routine is called by `PDAF_init_forecast` and later at the beginning of each forecast phase by `PDAF3_assimilate`, or similar routines. It is executed by all processes that participate in the model integrations.
     
    132132SUBROUTINE prepoststep(step, dim_p, dim_ens, dim_ens_p, dim_obs_p, &
    133133                       state_p, Ainv, ens_p, flag)
     134
     135  INTEGER, INTENT(in) :: step        ! Current time step
     136                         ! (When the routine is called before the analysis -step is provided.)
     137  INTEGER, INTENT(in) :: dim_p       ! Process-local state dimension
     138  INTEGER, INTENT(in) :: dim_ens     ! Size of state ensemble
     139  INTEGER, INTENT(in) :: dim_ens_p   ! Process-local ensemble size (not relevant for fully parallel)
     140  INTEGER, INTENT(in) :: dim_obs_p   ! Process-local dimension of observation vector
     141  REAL, INTENT(inout) :: state_p(dim_p) ! Process-local state vector
     142                                     ! The array 'state_p' is not generally not initialized.
     143                                     ! It can be used freely in this routine.
     144  REAL, INTENT(inout) :: Ainv(dim_ens-1, dim_ens-1) ! Inverse of matrix A )only for special cases)
     145  REAL, INTENT(inout) :: ens_p(dim_p, dim_ens)      ! State ensemble for process-local sub-domain
     146  INTEGER, INTENT(in) :: flag        ! PDAF status flag
    134147}}}
    135 with arguments:
    136  * `step`, `INTEGER, INTENT(in)`:[[BR]] Current time step (When the routine is called for the forecast state the time steps is provided as a negative value.)
    137  * `dim_p`, `INTEGER, INTENT(in)`:[[BR]] Process-local state dimension
    138  * `dim_ens`, `INTEGER, INTENT(in)`:[[BR]] Ensemble size
    139  * `dim_ens_p`, `INTEGER, INTENT(in)`:[[BR]] Process-local ensemble size (not relevant for ''fully parallel'')
    140  * `dim_obs_p`, `INTEGER, INTENT(in)`:[[BR]] Process-local dimension of observation vector
    141  * `state_p`, `REAL, INTENT(inout), dimension(dim_p)`:[[BR]] Process-local state vector (The array 'state_p' is not generally not initialized. It can be used freely in this routine.)
    142  * `Ainv`, `REAL, INTENT(inout), dimension(dim_ens-1, dim_ens-1)`:[[BR]] Inverse of matrix A (only for special cases)
    143  * **`ens_p`, `REAL, INTENT(inout), dimension(dim_p, dim_ens)`**:[[BR]] State ensemble for process-local sub-domain
    144  * `flag`, `INTEGER, INTENT(in)`:[[BR]] PDAF status flag
    145148
    146149The routine `prepoststep_pdaf` is called once at the beginning of the assimilation process. In addition, it is called during the assimilation cycles before the analysis step and after the ensemble transformation. The routine is called by all filter processes (that is `filterpe=.true.`).