2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

12
2005 ROMS/TOMS Workshop 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography Scripps Institution of Oceanography La Jolla, CA, October 25, 2005 La Jolla, CA, October 25, 2005 e a n M o d e a r c h C o m r a i n -F o l l o w M o d e l i n g 4D Variational Data Assimilation 4D Variational Data Assimilation Drivers 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

description

4D 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 - PowerPoint PPT Presentation

Transcript of 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

Page 1: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

2005 ROMS/TOMS Workshop2005 ROMS/TOMS WorkshopScripps Institution of OceanographyScripps Institution of Oceanography

La Jolla, CA, October 25, 2005La Jolla, CA, October 25, 2005

ean M od

earch C o m

r a i n - F o l l o w

M o d e l i n g

4D Variational Data Assimilation4D Variational Data AssimilationDriversDrivers

Hernan G. ArangoIMCS, Rutgers

Andrew M. MoorePAOS, U. Colorado

Emanuele Di LorenzoGeorgia Tech

Bruce D. CornuelleSIO, UCSD

Arthur J. MillerSIO, UCSD

Page 2: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

ObjectivesObjectives

• To build 4D variational assimilation (To build 4D variational assimilation (4DVAR4DVAR) )

platforms:platforms:

• Strong Constraint Strong Constraint S4DVARS4DVAR Conventional S4DVAR: outer loop, Conventional S4DVAR: outer loop, NLMNLM, , ADMADM Incremental S4DVAR: inner and outer loops, Incremental S4DVAR: inner and outer loops, NLMNLM, , TLMTLM, ,

ADMADM (Courtier et al., 1994) (Courtier et al., 1994) Efficient Incremental S4DVAR (Weaver et al., 2003)Efficient Incremental S4DVAR (Weaver et al., 2003)

• Weak Constraint Weak Constraint W4DVAR W4DVAR (IOM)(IOM) Indirect Representer Method: inner and outer loops, Indirect Representer Method: inner and outer loops, NLMNLM, ,

TLMTLM, , RPMRPM, , ADM ADM (Egbert et al., 1994; Bennett et al, 1997)(Egbert et al., 1994; Bennett et al, 1997)

Page 3: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

ROMS/TOMS Framework

ADSEN_OCEAN

SANITY CHECK S

PERT_OCEAN

PICARD_OCEAN

GRAD_OCEAN

TLCHECK _OCEAN

RP_OCEAN

ESMF

AIR_OCEAN

M

AS

TE

RWAVE S _OCE AN

OCE AN IN IT IA L IZE

F IN A L IZE

RU N

S4DVAR_OCEAN

IS4DVAR_OCEAN

W4DVAR_OCEAN

ENSEMBLE_OCEAN

NL_OCEAN

TL_OCEAN

AD_OCEAN

PROPAGATOR

K ER NELNLM, T LM, RP M, ADM

----

phys ic sbiogeochemic al

sedimentsea ic e

-

-

--

-

-

-

Optimal pertubationsADM eigenmodes

TLM eigenmodes

Forc ing singular vectorsStochastic optimals

Balance Truncation vectors

EOF’s- P seudospec tra

Page 4: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

How To RunHow To Run

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

intervals over the desired data assimilation time window (intervals over the desired data assimilation time window (FWDnameFWDname))

Activate CPP options Activate CPP options FORWARD_WRITEFORWARD_WRITE, , FORWARD_RHSFORWARD_RHS, , andand OUT_DOUBLEOUT_DOUBLE

• Variational data assimilation CPP options:Variational data assimilation CPP options:

S4DVAR S4DVAR Conventional strong constraint 4DVARConventional strong constraint 4DVAR

IS4DVAR IS4DVAR Incremental strong constraint 4DVARIncremental strong constraint 4DVAR

W4DVAR W4DVAR Weak constraint 4DVARWeak constraint 4DVAR

(BACKGROUND, FORWARD_READ, FORWARD_MIXING)(BACKGROUND, FORWARD_READ, FORWARD_MIXING)

• Set input parameter in Set input parameter in s4dvar.in s4dvar.in oror w4dvar.in w4dvar.in::

Descent algorithm parametersDescent algorithm parameters

Spatial convolution parameters (decorrelation scales)Spatial convolution parameters (decorrelation scales)

Observation file namesObservation file names

First guess solution (background) file nameFirst guess solution (background) file name

TTstrstr TTendend

Page 5: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

MetadataMetadataDimensions:Dimensions:

recordrecord Number of saved iterationNumber of saved iterationsurveysurvey Number of different timeNumber of different timeweightweight Number of interpolation weightNumber of interpolation weightdatumdatum Observations counter, unlimited dimensionObservations counter, unlimited dimension

Variables:Variables:

Nobs(Nobs(surveysurvey)) Number of observations per time survey Number of observations per time survey survey_time(survey_time(surveysurvey)) Survey time (days) Survey time (days) obs_type(obs_type(datumdatum)) State variable ID associated with observation State variable ID associated with observation obs_time(obs_time(datumdatum)) Time of observation (days) Time of observation (days) obs_lon(obs_lon(datumdatum)) Longitude of observation (degrees_east) Longitude of observation (degrees_east) obs_lat(obs_lat(datumdatum)) Latitude of observation (degrees_north) Latitude of observation (degrees_north) obs_depth(obs_depth(datumdatum)) Depth of observation (meters or level) Depth of observation (meters or level) obs_Xgrid(obs_Xgrid(datumdatum)) X-grid observation location (nondimensional) X-grid observation location (nondimensional) obs_Ygrid(obs_Ygrid(datumdatum)) Y-grid observation location (nondimensional) Y-grid observation location (nondimensional) obs_Zgrid(obs_Zgrid(datumdatum)) Z-grid observation location (nondimensional) Z-grid observation location (nondimensional) obs_error(obs_error(datumdatum)) Observation error, assigned weight Observation error, assigned weight obs_value(obs_value(datumdatum)) Observation value Observation value NLmodel_value(NLmodel_value(recordrecord,,datumdatum)) Nonlinear model interpolated value Nonlinear model interpolated value TLmodel_value(TLmodel_value(recordrecord,,datumdatum)) Tangent linear model interpolated value Tangent linear model interpolated value Hmat(Hmat(weightweight,,datumdatum)) Interpolation weights Interpolation weights

Page 6: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

Observations NetCDFdimensions: 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"

21

3

5

4

8

6

7

(i1,j1,k1)

(i2,j2,k2)

Variable IDζ 1u 2v 3u 4v 5

temp 6salt 7

Page 7: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

ProcessingProcessing

• Use Use hindiceshindices, , try_rangetry_range and and insideinside routines to transform routines to transform (lon,lat) to ((lon,lat) to (,,))

• Find how many survey times occur within the data set Find how many survey times occur within the data set ((surveysurvey dimension) dimension)

• Count observations available per survey (Count observations available per survey (NobsNobs) and ) and assign their times (assign their times (survey_timesurvey_time))

• Sort the observation in ascending time order and Sort the observation in ascending time order and observation time for efficiencyobservation 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

Page 8: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

“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 functionCompute NLM initial conditions using refined conjugate gradient step size

CALL initialCALL main3d

CALL ad_initialCALL ad_main3d

CALL initialCALL main3d

CALL descentCALL wrt_ini

CALL descentCALL wrt_ini

Oute

r Lo

op

Ipass=1

Ipass=2

Page 9: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

Incremental S4DVARCALL initialCALL main3d

Oute

r Lo

op

CALL tl_initialCALL tl_main3d

CALL ad_initialCALL ad_main3d

CALL tl_initialCALL tl_main3d

CALL descentCALL tl_wrt_ini

CALL descentCALL tl_wrt_ini

Inn

er

Loop

Ipass=1

Ipass=2

CALL ini_adjustCALL wrt_ini

NLM: compute basic state trajectory and extract model at observations locations

TLM: compute misfit cost function between model (NLM+TLM) and observationsADM: 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)

Page 10: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

Efficient Incremental S4DVARNLM: compute basic state trajectory and extract model at observations locationsADM: compute initial estimate of the gradientInitialize 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 initialCALL main3d

Oute

r Lo

op

CALL tl_initialCALL tl_main3d

CALL ad_initialCALL ad_main3d

CALL descentCALL tl_wrt_ini

Inn

er

Loop

CALL ini_adjustCALL wrt_ini

CALL ad_initialCALL ad_main3d

CALL ini_descent

Page 11: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

W4DVAR, IOM

iom_roms: compute first guess andmisfitbetween observation and model

nl_roms: compute basic state trajectory

Inner loop, backward (ad_roms) and forward (tl_roms) integrations to compute

an ˆ ( )d n n n nFu h R C β

ˆ nβ

nad_roms: backward integration to compute

ˆnuiom_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

Inn

er

Loop

Oute

r Lo

op

Page 12: 2005 ROMS/TOMS Workshop Scripps Institution of Oceanography La Jolla, CA, October 25, 2005

• 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 Efficient spatial convolution algorithms (3D implicit diffusion algorithms; parallelism)diffusion algorithms; parallelism)

• Open boundary condition challengesOpen boundary condition challenges

• Quality control of observationsQuality control of observations

• New observational data streams New observational data streams

Final RemarksFinal Remarks