ensemble data assimilation and model error estimation algorithm developed by milija zupanski and...

11
Ensemble data assimilation and Ensemble data assimilation and model error estimation model error estimation algorithm algorithm Developed by Developed by Milija Zupanski and Dusanka Zupanski Milija Zupanski and Dusanka Zupanski CIRA/CSU CIRA/CSU Dusanka Zupanski, CIRA/CSU [email protected] .edu GEOS column model component of the algorithm developed in collaboration with: Arthur Hou and Sara Zhang NASA/GMAO Christian Kummerow CSU/ATM Science Department

Upload: edward-townsend

Post on 18-Jan-2018

216 views

Category:

Documents


0 download

DESCRIPTION

Ensemble Data Assimilation (EnsDA) Algorithm assimilation.sh script assimilation.sh iter < ioutmax forward.sh: Transformation from model space to observation space - Analysis error covariance calculation - Save current cycle output files Hessian preconditioning (only for iter=1) Gradient calculation (ensembles) Cost function calculation (diagnostic) Minimization (ensemble subspace) Step-length (line-search) Control variable update (transformation from ensemble subspace to model (physical) space) Dusanka Zupanski, CIRA/CSU

TRANSCRIPT

Page 1: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble data assimilation and model Ensemble data assimilation and model error estimation algorithmerror estimation algorithm

Developed byDeveloped by

Milija Zupanski and Dusanka ZupanskiMilija Zupanski and Dusanka ZupanskiCIRA/CSUCIRA/CSU

Dusanka Zupanski, CIRA/[email protected]

GEOS column model component of the algorithm developed in collaboration with:

Arthur Hou and Sara Zhang NASA/GMAOChristian Kummerow CSU/ATM Science Department

Page 2: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) Algorithmprep_ensda.sh

cycle_ensda.sh

WARM start: Copy files from previously completed cycle

COLD start: Run randomly-perturbed ensemble forecasts to initialize fcst err cov

icycle < N_cycles_max

post.sh (post-processing)

fcsterr_cov.sh- Prepare first-guess (background) vector

- Prepare forecast error covariance (from ensembles)

prep_obs.shGiven ‘OBSTYPE’ and ‘delobs’, select and copy available obs files

assimilation.shIterative minimization of cost function, save current cycle output

Dusanka Zupanski, CIRA/[email protected]

Page 3: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) Algorithmassimilation.sh script

assimilation.sh

iter < ioutmax

forward.sh: Transformation from model space to observation space

- Analysis error covariance calculation

- Save current cycle output files

Hessian preconditioning (only for iter=1)

Gradient calculation (ensembles)

Cost function calculation (diagnostic)

Minimization (ensemble subspace)

Step-length (line-search)

Control variable update

(transformation from ensemble subspace to model (physical) space)

Dusanka Zupanski, CIRA/[email protected]

Page 4: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmOrganization chart

../ensda/include: Include files (control variable list, first-guess list)

../ensda/makefiles: Makefile_ensda, Makefile_’MODEL’

../ensda/runscripts: Run EnsDA program (runensda, envir.sh)

../ensda/scripts: Scripts used to run the EnsDA program

../ensda/src: Source programs

../’MODEL’/src: Model source programs (general)

../’MODEL’/src_ensda: Model source programs (changes due to EnsDA)

../exec/ensda: Executable directory

../’Obsdir’: Observations directory

../ensda/work: Working (temporary) directory

../hold.’print’/current: General EnsDA output

../hold.’print’/cycle1, cycle2, . . . : Cycle specific EnsDA output

Dusanka Zupanski, CIRA/[email protected]

Page 5: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmOptions – envir.sh

MODEL: WRF,UW-NMS,PU-NTU

OBS: OBSTYPE, delobs,OBSFLAG

STAT: Mode (max likelihood), Mean (ensemble mean)

DA_TYPE: Filter, Smoother

COVAR: Localized, Non-localized forecast error covariance

N_CYCLES: Number of data assimilation cycles

CYCLE_INTERVAL: Time interval between cycles

ENS_SIZE: Number of ensemble members

START: Cold (from scratch), Warm (from previous cycle)

IOUTMAX: Number of minimization iterations

MINIM_ALG: Minimization algorithm (C-G, L-BFGS)

MPI_RUN: Parallel run (YES, NO)

nCPU_ensfcst: No. of CPUs for ensemble fcst

nCPU_da: No. of CPUs for data assimilation

Dusanka Zupanski, CIRA/[email protected]

Page 6: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmControl variables

!--------------------------------------- max_num_of_cntrl_vrbls = 5 if(.not.allocated (cvar_list)) then allocate (cvar_list(1:max_num_of_cntrl_vrbls)) end if

!--------------------------------------- ncv= 1 cvar_list(ncv)%ndim = 3 cvar_list(ncv)%start_index(1) = 1 cvar_list(ncv)%start_index(2) = 1 cvar_list(ncv)%start_index(3) = 1 cvar_list(ncv)%start_index(4) = 1 cvar_list(ncv)%end_index(1) = NNXP(1) cvar_list(ncv)%end_index(2) = NNYP(1) cvar_list(ncv)%end_index(3) = NNZP(1) cvar_list(ncv)%end_index(4) = 1 cvar_list(ncv)%name = 'T ' cvar_list(ncv)%stddev = 1.5 cvar_list(ncv)%description = 'Temperature ‘!---------------------------------------

6 p T F F 0 t T F T 1q T F T 3u T F F 0v T F F 0param1 F T F 0param2 F T F 0

!-- first line number is the number of control variables defined --! !-- vrbl name, ic flag, param flag, bias flag, number of biases ----! !--- recall that vrbl name has 9 characters !!!!! !--- All inputs have to be separated by at least one blank space !!!

../include/Cntrl_vrbl_list.h

../namelists/Cntrl_vrbl_’MODEL’.h

Optional control variable components:

- initial conditions

- model bias

- empirical parameters

Dusanka Zupanski, CIRA/[email protected]

Page 7: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmObservations

# Precip obs

export iobs=02

#---------- specified by user --------- export OBSTYPE=precip export OBSFLAG=NOT let "delobs=1*60" ; export delobs #----------- end user ------------------

-------------------------- OBSTYPE – algorithm recognizable obs type delobs – time interval between two successive observation filesOBSFLAG – Specifies if the OBSTYPE obs should be assimilated (YES, NOT)

interface_’MODEL’_’OBSTYPE’.sh

(model produced first-guess file => obs operators compatible first-guess file)

runobs_’OBSTYPE’.sh

(forward-only observation operator: first-guess => innovation vector R-1/2[y-K(x)] )

Dusanka Zupanski, CIRA/[email protected]

Page 8: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmModel

convert_vrbls_from_1d.sh

run_’MODEL’.sh

convert_vrbls_to_1d.sh

- Data assimilation is defined using 1-d control variable

- Model is defined using its own 1-d, 2-d, or 3-d, or 4-d variable

- Need ‘convert’ as an interface between the 1-d and model specific variables

../’MODEL’/src: (‘MODEL’_fcst.F)

read namelists: ‘MODEL_DIMENSION’,’LENGTH’,’MODEL_CNSTS’

call: ‘read/write_model_ic’,’read/write_model_bias’ ,’read/write_model_param’

../’MODEL’/src_ensda:

‘MODEL’_get_init_fcst.F – cold start only, get model_dimension file

‘read/write_model_ic.F’,’read/write_model_bias.F’ ,’read/write_model_param.F’

Dusanka Zupanski, CIRA/[email protected]

Page 9: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmIncluding model bias

DO n=1,N_time !! Main time-loop...if(num_bias.gt.0) then nerr=N_time/max(1,num_bias) nbias=0 if((n.ne.N_time).and.(mod(n,nerr).eq.0.or.n.eq.1)) then nbias=nbias+1 call read_model_bias( . . . ,u_bias,v_bias,t_bias, . . . ,nbias,num_bias) endif endif ...if(num_bias.gt.0) then u_phi(:,:,:)=aa*u_phi(:,:,:)+(1.-aa)*u_bias(:,:,:) v_phi(:,:,:)=aa*v_phi(:,:,:)+(1.-aa)*v_bias(:,:,:) t_phi(:,:,:)=aa*t_phi(:,:,:)+(1.-aa)*t_bias(:,:,:). u(:,:,:)=u(:,:,:)+u_phi(:,:,:) v(:,:,:)=v(:,:,:)+v_phi(:,:,:) t(:,:,:)=t(:,:,:)+t_phi(:,:,:) endif ...END DO !! End main time loop

Dusanka Zupanski, CIRA/[email protected]

Page 10: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Ensemble Data Assimilation (EnsDA) AlgorithmMPI

!-------------------------------------------------------------------- #ifdef MPI_USE include "mpif.h" #endif. . . . . . . . . !==============start calculation=================== #ifdef MPI_USE CALL MPI_INIT(IERR) IF (IERR .NE. MPI_SUCCESS) STOP 'FAILED TO INIT MPI' CALL MPI_COMM_SIZE(MPI_COMM_WORLD, NPROC, IERR) CALL MPI_COMM_RANK(MPI_COMM_WORLD, MPIRANK, IERR) CALL MPI_BARRIER(MPI_COMM_WORLD,IERR) #else write(*,*) "This is a NO MPI run" MPIRANK=0 NPROC=1 #endif !================================================ !-- read ensemble size (NENS) ……

!== define local dimensions and indexes allocate(jdisp(0:NPROC-1)) allocate(jlen(0:NPROC-1)) do irank=0,NPROC-1 CALL para_range(1,NENS,NPROC,irank,jsta,jend) jlen(irank)=jend-jsta+1 jdisp(irank)=jsta-1 end do CALL para_range(1,NENS,NPROC,MPIRANK,jsta,jend) #ifdef MPI_USE CALL MPI_BARRIER(MPI_COMM_WORLD,IERR) #endif N_LOC=jlen(MPIRANK)

Dusanka Zupanski, CIRA/[email protected]

Page 11: Ensemble data assimilation and model error estimation algorithm Developed by Milija Zupanski and Dusanka Zupanski CIRA/CSU Dusanka Zupanski, CIRA/CSU

Dusanka Zupanski, CIRA/[email protected]