4 D Variational Data Assimilation Drivers Hernan G

  • Slides: 12
Download presentation
4 D Variational Data Assimilation Drivers Hernan G. Arango IMCS, Rutgers Bruce D. Cornuelle

4 D Variational Data Assimilation Drivers Hernan G. Arango IMCS, Rutgers Bruce D. Cornuelle SIO, UCSD Emanuele Di Lorenzo Georgia Tech Arthur J. Miller SIO, UCSD Andrew M. Moore PAOS, U. Colorado 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

Objectives • To build 4 D variational assimilation (4 DVAR) platforms: • Strong Constraint

Objectives • To build 4 D variational assimilation (4 DVAR) platforms: • Strong Constraint S 4 DVAR § Conventional S 4 DVAR: outer loop, NLM, ADM § Incremental S 4 DVAR: inner and outer loops, NLM, § TLM, ADM (Courtier et al. , 1994) Efficient Incremental S 4 DVAR (Weaver et al. , 2003) • Weak Constraint W 4 DVAR (IOM) § Indirect Representer Method: inner and outer loops, NLM, TLM, RPM, ADM (Egbert et al. , 1994; Bennett et al, 1997)

ROMS/TOMS Framework

ROMS/TOMS Framework

How To Run • Run nonlinear model (NLM) and save background state trajectory at

How To Run • Run nonlinear model (NLM) and save background state trajectory at regular intervals over the desired data assimilation time window ( FWDname) Tend Tstr § Activate CPP options FORWARD_WRITE, FORWARD_RHS, and OUT_DOUBLE • Variational data assimilation CPP options: § S 4 DVAR Conventional strong constraint 4 DVAR § IS 4 DVAR Incremental strong constraint 4 DVAR § W 4 DVAR Weak constraint 4 DVAR (BACKGROUND, FORWARD_READ, FORWARD_MIXING) • Set input parameter in s 4 dvar. in or w 4 dvar. in: § Descent algorithm parameters § Spatial convolution parameters (decorrelation scales) § Observation file names § First guess solution (background) file name

Metadata Dimensions: record survey weight datum Number of saved iteration Number of different time

Metadata Dimensions: record survey weight datum Number of saved iteration Number of different time Number of interpolation weight Observations counter, unlimited dimension Variables: Nobs(survey) survey_time(survey) obs_type(datum) obs_time(datum) obs_lon(datum) obs_lat(datum) obs_depth(datum) obs_Xgrid(datum) obs_Ygrid(datum) obs_Zgrid(datum) obs_error(datum) obs_value(datum) NLmodel_value(record, datum) TLmodel_value(record, datum) Hmat(weight, datum) Number of observations per time survey Survey time (days) State variable ID associated with observation Time of observation (days) Longitude of observation (degrees_east) Latitude of observation (degrees_north) Depth of observation (meters or level) X-grid observation location (nondimensional) Y-grid observation location (nondimensional) Z-grid observation location (nondimensional) Observation error, assigned weight Observation value Nonlinear model interpolated value Tangent linear model interpolated value Interpolation weights

Observations Net. CDF dimensions: record = 2 ; survey = 1 ; weight =

Observations Net. CDF dimensions: record = 2 ; survey = 1 ; weight = 8 ; state_variable = 7 ; datum = UNLIMITED ; // ( 79416 currently) variables: char spherical ; spherical: long_name = "grid type logical switch" ; int Nobs(survey) ; Nobs: long_name = "number of observations with the same survey time" ; double survey_time(survey) ; survey_time: long_name = "survey time" ; survey_time: units = "days since 2000 -01 -01 00: 00" ; survey_time: calendar = "365. 25 days in every year" ; double obs_variance(state_variable ) ; obs_variance: long_name = "global (time and space) observation variance" ; obs_variance: units = "squared state variable units" ; int obs_type(datum) ; obs_type: long_name = "model state variable associated with observation" ; obs_type: units = "nondimensional " ; double obs_time(datum) ; obs_time: long_name = "time of observation" ; obs_time: units = "days since 2000 -01 -01 00: 00" ; obs_time: calendar = "365. 25 days in every year" ; double obs_depth(datum) ; obs_depth: long_name = "depth of observation" ; obs_depth: units = "meter" ; double obs_Xgrid(datum) ; obs_Xgrid: long_name = "x-grid observation location" ; obs_Xgrid: units = "nondimensional " ; double obs_Ygrid(datum) ; obs_Ygrid: long_name = "y-grid observation location" ; obs_Ygrid: units = "nondimensional " ; double obs_Zgrid(datum) ; obs_Zgrid: long_name = "z-grid observation location" ; obs_Zgrid: units = "nondimensional " ; double obs_error(datum) ; obs_error: long_name = "observation error, assigned weight, inverse variance" ; obs_error: units = "inverse squared state variable units" ; double obs_value(datum) ; obs_value: long_name = "observation value" ; obs_value: units = "state variable units" ; (i 1, j 1, k 1) double NLmodel_value(datum, record) ; NLmodel_value: long_name = "nonlinear model interpolated value" ; NLmodel_value: units = "state variable units" ; double TLmodel_value(datum, record) ; TLmodel_value: long_name = "tangent linear model interpolated value" ; TLmodel_value: units = "state variable units" ; double Hmat(datum, weight) ; Hmat: long_name = "interpolation weights" ; Hmat: units = "nondimensional " Variable ζ u v temp salt 8 5 7 6 4 1 ID 1 2 3 4 5 6 7 2 3 (i 2, j 2, k 2)

Processing • Use hindices, try_range and inside routines to transform (lon, lat) to (

Processing • Use hindices, try_range and inside routines to transform (lon, lat) to ( , ) • Find how many survey times occur within the data set (survey dimension) • Count observations available per survey ( Nobs) and assign their times (survey_time) • Sort the observation in ascending time order and observation time for efficiency • Save a copy of the observation file • Several matlab scripts to process observations

“Conventional” S 4 DVAR Outer Loop Ipass=1 CALL initial CALL main 3 d NLM:

“Conventional” S 4 DVAR Outer Loop Ipass=1 CALL initial CALL main 3 d NLM: compute model-observations misfit and cost function CALL ad_initial CALL ad_main 3 d ADM: compute cost function gradients CALL descent CALL wrt_ini Compute NLM initial conditions using first guess conjugate gradient step size Ipass=2 CALL initial CALL main 3 d NLM: compute change in cost function CALL descent CALL wrt_ini Compute NLM initial conditions using refined conjugate gradient step size

Incremental S 4 DVAR CALL initial CALL main 3 d NLM: compute basic state

Incremental S 4 DVAR CALL initial CALL main 3 d NLM: compute basic state trajectory and extract model at observations locations Inner Loop Outer Loop Ipass=1 CALL tl_initial tl_main 3 d ad_initial ad_main 3 d CALL descent CALL tl_wrt_ini TLM: compute misfit cost function between model (NLM+TLM) and observations ADM: compute cost function gradients Compute TLM initial conditions using first guess conjugate gradient step size Ipass=2 CALL tl_initial CALL tl_main 3 d TLM: compute change in cost function CALL descent CALL tl_wrt_ini Compute TLM initial conditions using refined conjugate gradient step size CALL ini_adjust CALL wrt_ini Compute NLM new initial conditions (NLM+TLM)

CALL initial CALL main 3 d NLM: compute basic state trajectory and extract model

CALL initial CALL main 3 d NLM: compute basic state trajectory and extract model at observations locations CALL ad_initial CALL ad_main 3 d ADM: compute initial estimate of the gradient CALL ini_descent Initialize conjugate direction as the negative of the gradient (adjoint) solution Inner Loop Outer Loop Efficient Incremental S 4 DVAR CALL tl_initial CALL tl_main 3 d RPM: compute misfit cost function between model (NLM+TLM) and observations CALL ad_initial CALL ad_main 3 d ADM: compute cost function gradients CALL descent CALL tl_wrt_ini Compute TLM initial conditions using conjugate gradient step size CALL ini_adjust CALL wrt_ini Compute NLM new initial conditions (NLM+TLM)

W 4 DVAR, IOM nl_roms < nl_roms. in Inner Loop Outer Loop iom_roms <

W 4 DVAR, IOM nl_roms < nl_roms. in Inner Loop Outer Loop iom_roms < iom_roms. in nl_roms: compute basic state trajectory iom_roms: compute first guess and misfit between observation and model ad_roms < ad_roms. in tl_roms < tl_roms. in Inner loop, backward (ad_roms) and forward (tl_roms) integrations to compute IOM components ad_roms < ad_roms. in ad_roms: backward integration to compute iom_roms < iom_roms. in iom_roms: compute

Final Remarks • It is running in parallel • Pre-conditioning, pre-conditioning … • Background

Final Remarks • It is running in parallel • Pre-conditioning, pre-conditioning … • Background term in cost function • Modeling of background error covariance • Efficient spatial convolution algorithms (3 D implicit diffusion algorithms; parallelism) • Open boundary condition challenges • Quality control of observations • New observational data streams