HCJung-jbnu / ESM4-PDAF

ESM4 + PDAF data assimilation framework coupling
0 stars 0 forks source link

PDAF LESTKF flowchart without OMI #18

Closed HCJung-jbnu closed 4 months ago

HCJung-jbnu commented 5 months ago

image

HCJung-jbnu commented 5 months ago

**dim_state_p_ocn :: 각 PE의 모델 dimension 갯수(i * j * k) 해당 값은 0가 되면 안됨 최소 값=4**
**dim_ens_ocn :: 앙상블 갯수**
**task_id_ocn :: 앙상블 rank = task number**
**n_modeltasks_ocn :: 앙상블 갯수**
**filterpe_ocn :: 첫 번째 앙상블=task 인지 여부, filter task 확인 true/false**
**init_seik_pdaf_ocn :: pdaf의 eofcovar 앙상블 생성 활용시 필요, 그렇지 않으면 사용하지 않음**

사용 안할 시 해당 코드는 껍데기만 만들고 안의 내용은 삭제

SUBROUTINE init_seik_pdaf_ocn(filtertype, dim_p, dim_ens, state_p, Uinv, & ens_p, flag)

**마지막에 PDAF_get_state 호출**

CALL PDAF_get_state(steps, timenow, doexit, next_observation_pdaf_atm, & distribute_state_pdaf_atm, prepoststep_ens_pdaf_atm, status_pdaf,0, 0)

In file PDAF-D_get_state.F90 수온, 염분, 생지화학변수를 나눠서 따로 자료동화 하기 위해서 assim_var_flag, varnum을 입력받도록 수정..

SUBROUTINE PDAF_get_state(steps, time, doexit, U_next_observation, U_distribute_state, & ! U_prepoststep, outflag) !!hcjung 20210712 U_prepoststep, outflag, assim_var_flag, varnum) !!hcjung 20210712

In file PDAF-D_assimilate_lestkf.F90 역시 수정

    CALL PDAF_get_state(steps, time, doexit, U_next_observation, U_distribute_state, &
         U_prepoststep, outflag, assim_var_flag, varnum) !!hcjuing 20210712

HCJung-jbnu commented 5 months ago
HCJung-jbnu commented 5 months ago

Before the analysis step is called the following is executed:

[U_collect_state] (called once for each ensemble member)

When the ensemble integration of the forecast is completed, the analysis step is executed. Before the loop over all local analysis domains, the following routines are executed:

[U_prepoststep] (Call to act on the forecast ensemble, called with negative value of the time step)

[U_init_n_domains]

[U_init_dim_obs_f]

[U_init_obsvar] (Only executed, if the global adaptive forgetting factor is used (type_forget=1 in the example implemention))

In the loop over all local analysis domains, it is executed for each local analysis domain:

[U_init_dim_l]

[U_init_dim_obs_l]

[U_g2l_state] (Called dim_ens+1 times: Once for each ensemble member and once for the mean state estimate)

[U_g2l_obs] (A single call to localize the mean observed state)

[U_init_obs_l]

[U_g2l_obs] (dim_ens calls: one call to localize the observed part of each ensemble member)

[U_init_obsvar_l] (Only called, if the local adaptive forgetting factor is used (type_forget=2 in the example implementation))

[U_prodRinvA_l]

SUBROUTINE prodRinvA_l(domain_p, step, dim_obs_l, rank, obs_l, A_l, C_l)

  INTEGER, INTENT(in) :: domain_p             ! Current local analysis domain
  INTEGER, INTENT(in) :: step                 ! Current time step
  INTEGER, INTENT(in) :: dim_obs_l            ! Dimension of local observation vector
  INTEGER, INTENT(in) :: rank                 ! Rank of initial covariance matrix
  REAL, INTENT(in)    :: obs_l(dim_obs_l)     ! Local vector of observations
  REAL, INTENT(inout) :: A_l(dim_obs_l, rank) ! Input matrix from analysis routine
  REAL, INTENT(out)   :: C_l(dim_obs_l, rank) ! Output matrix

[U_l2g_state] (Called dim_ens+1 times: Once for each ensemble member and once for the mean state estimate)

After the loop over all local analysis domains, it is executed:

[U_prepoststep] (Call to act on the analysis ensemble, called with (positive) value of the time step)

[U_distribute_state]

[U_next_observation]