Presentation is loading. Please wait.

Presentation is loading. Please wait.

2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005 4D Variational Data Assimilation Drivers Hernan G. Arango IMCS,

Similar presentations


Presentation on theme: "2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005 4D Variational Data Assimilation Drivers Hernan G. Arango IMCS,"— Presentation transcript:

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

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

3 ROMS/TOMS Framework

4 How To Run Run nonlinear model (NLM) and save background state trajectory at regular intervals over the desired data assimilation time window (FWDname) Run nonlinear model (NLM) and save background state trajectory at regular intervals over the desired data assimilation time window (FWDname)  Activate CPP options FORWARD_WRITE, FORWARD_RHS, and OUT_DOUBLE Variational data assimilation CPP options: Variational data assimilation CPP options:  S4DVAR Conventional strong constraint 4DVAR  IS4DVAR Incremental strong constraint 4DVAR  W4DVAR Weak constraint 4DVAR (BACKGROUND, FORWARD_READ, FORWARD_MIXING) (BACKGROUND, FORWARD_READ, FORWARD_MIXING) Set input parameter in s4dvar.in or w4dvar.in: Set input parameter in s4dvar.in or w4dvar.in:  Descent algorithm parameters  Spatial convolution parameters (decorrelation scales)  Observation file names  First guess solution (background) file name T str T end

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

6 Observations NetCDF 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: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: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" ; 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" 2 1 3 5 4 8 6 7 (i1,j1,k1) (i2,j2,k2) VariableID ζ 1 u2 v3 u4 v5 temp6 salt7

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

8 “Conventional” S4DVAR NLM: compute model-observations misfit and cost function ADM: compute cost function gradients Compute NLM initial conditions using first guess conjugate gradient step size NLM: compute change in cost function Compute NLM initial conditions using refined conjugate gradient step size CALL initial CALL main3d CALL ad_initial CALL ad_main3d CALL initial CALL main3d CALL descent CALL wrt_ini CALL descent CALL wrt_ini Outer Loop Ipass=1 Ipass=2

9 Incremental S4DVAR CALL initial CALL main3d Outer Loop CALL tl_initial CALL tl_main3d CALL ad_initial CALL ad_main3d CALL tl_initial CALL tl_main3d CALL descent CALL tl_wrt_ini CALL descent CALL tl_wrt_ini Inner Loop Ipass=1 Ipass=2 CALL ini_adjust CALL wrt_ini NLM: compute basic state trajectory and extract model at observations locations 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 TLM: compute change in cost function Compute TLM initial conditions using refined conjugate gradient step size Compute NLM new initial conditions (NLM+TLM)

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

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

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


Download ppt "2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005 4D Variational Data Assimilation Drivers Hernan G. Arango IMCS,"

Similar presentations


Ads by Google