Upload
timothy-goodman
View
247
Download
0
Embed Size (px)
Citation preview
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 AssimilationObservation OperatorsObservation Operators
4D Variational Data Assimilation4D Variational Data AssimilationObservation OperatorsObservation Operators
Hernan G. ArangoHernan G. Arango
ROMS 4DVAR ALGORITHMS
• Strong Constraint Conventional (S4DVAR): outer loop, NLM, ADM Incremental (IS4DVAR): inner and outer loops, NLM, TLM, ADM (Courtier et al.,
1994) IS4DVAR_OLD: inefficient old conjugate gradient algorithm
(is4dvar_ocean_old.h, descent.F) IS4DVAR: new conjugate gradient algorithm, CONGRAD, Fisher 1997
(is4dvar_ocean.h, cgradient.h) IS4DVAR, LANCZOS: conjugate gradient and Lanczos algorithm, Fisher
1997 (is4dvar_ocean_lanczos.h, cgradient_lanczos.h)
• Weak Constraint Indirect Representer Method (W4DVAR): inner and outer loops, NLM, TLM,
RPM, ADM (Egbert et al., 1994; Bennett et al, 1997) Physical Space Statistical Analysis (W4DPSAS): inner and outer loops, NLM,
TLM, ADM (Courtier, 1997)
Strong Constraint, Incremental 4DVAR
Let’s introduce a new minimization variable v, such that:
J(vk) = ½(vk)Tvk + ½(Hxk – dk-1)TO-1(Hxk – dk-1)
v J = vk + BT/2HTO-1(Hxk – dk-1) = vk + BT/2x Jo => vk + W -1/2LT/2GS
B = SCS => S(GL1/2W -1/2)(W
-1/2LT/2G)S
xk = B1/2vk + xk-1 – xb
xk = B-1/2(xk + xk-1 – xb)
yielding
The gradient of J in minimization-space, denoted v J, is given by:
The background-error covariance matrix can be factored as:
where S is the background-error standard deviations, C is the background-error correlations which can be factorized as C = C1/2CT/2, G is the normalization matrix which ensures that the diagonal elements of C are equal to unity, L is a 3D self-adjoint filtering operator, and W is the grid cell area or volume.
Basic IS4DVAR Procedure
(1) Choose an x(0) = xb(0)
(2) Integrate NLROMS t [0, ] and save x(t) (NLM at OBS)
(a) Choose a x(0)
(b) Integrate TLROMS t [0, ] and compute J (TLM at OBS)
(c) Integrate ADROMS t [0, ] to yield (ADM forcing at OBS) (d) Compute
(e) Use a descent algorithm to determine a “down gradient”
correction to x(0) that will yield a smaller value of J
(f) Back to (b) until converged
(3) Compute new x(0) = x(0) + x(0) and back to (2) until converged
Out
er
Loop
Inne
r Lo
op
• Given a first guess (a forward trajectory)…• And given the available data…
Incremental, Strong Constraint 4DVar(IS4DVAR)
Incremental, Strong Constraint 4DVar(IS4DVAR)
• Given a first guess (a forward trajectory)…• And given the available data…• IS4DVAR computes the changes (or increments) to the
initial conditions so that the forward model fits the observations.
4DVAR Observations NetCDF 4DVAR Observations NetCDF FileFile
• Utility/obs_initial.F• Utility/obs_read.F• Utility/obs_write.F• Utility/obs_scale.F• Utility/obs_depth.F• Utility/extract_obs.F• Adjoint/ad_extract_obs.F• Adjoint/ad_misfit.F
Metadata
Dimensions:
survey Number of different timeweight Number of interpolation weightdatum Observations 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
Observations NetCDFdimensions:
survey = 1 ; tate_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" ; 2
1
3
5
4
8
6
7
(i1,j1,k1)
(i2,j2,k2)
Variable IDζ 1u 2v 3u 4v 5
temp 6salt 7
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
ROMS GRIDROMS GRID
• Horizontal curvilinear orthogonal coordinates on an Arakawa C-grid
• Terrain-following coordinates on a staggered vertical grid
Curvilinear Transformation
Staggered C-Grid, RHO-points
Staggered C-Grid, U-points
Staggered C-Grid, V-points
Vertical Terrain-following Coordinates
Dubrovnik(Croatia)
Vieste(Italy)
Longitude
Depth(m)
Parabolic Splines Reconstruction
}
} Nx
Ny
PARALLEL TILE PARTITIONS
8 x 8
East-West MPI Communications
With RespectTo Tile R
Nonlinear
Adjoint With RespectTo Tile R
ad_V
ad_V
ad_V
ad_V
ad_V
L
L
L
L
R
R
R
R
i
i
i
i
i
i
i
i1 1 11
=
=+ + + +
ad_V
ad_V
+
+
;
;
0
0
=
=
ad_V
ad_V
ad_V
ad_V
ad_V
ad_V
R
R
R
R
L
L
L
L
i
i
i
i
i
i
i
i1 1 11
2 2 2 2=
=
-
-
-
-
-
-
-
-
ad_V
ad_V
+
+
;
;
0
0
=
=
i-2 i-1 i i+1
Istr Iend
Jstr
Jend
i-2 i-1 i i+1
Istr Iend
Jstr
Jend
ad_receive
ArecvE AsendW
ad_send
AsendE ArecvWTILE L TILE R
-
--
-V
VR
R L
L
i i
i i1 1
=
V
V2 2
=
V
V V
VRLii
+1
=
=L Ri +1i
i-2 i-1 i i+1
Istr Iend
Jstr
Jend
i-2 i-1 i i+1
Istr Iend
Jstr
Jend
send
ArecvE AsendW
receive
AsendE ArecvWTILE L TILE R
ad_V
ad_V
ad_V
ad_V
ad_V
T
T
T
T
B
B
B
B
j
j
j
j
j
j
j
j1 1 11
=
=- - - -
ad_V
ad_V
+
+
;
;
0
0
=
=
ad_V
ad_V
ad_V
ad_V
ad_V
ad_V
B
B
B
B
T
T
T
T
j
j
j
j
j
j
j
j1 1 11
2 2 2 2=
=
+
+
+
+
+
+
+
+
ad_V
ad_V
+
+
;
;
0
0
=
=
j+2
j+1
j
j-1Jend
Jstr
Istr Iend
j+2
j+1
j
j-1
Jend
Jstr
Istr Iend
ad_receive
ArecvS
AsendN
ad_send
AsendS
ArecvN
TILE B
TILE T
V
V V
V BTjj
-1
=
=T Bj -1j
+
++
+V
VB
B T
T
j j
j j1 1
=
V
V2 2
=
j+2
j+1
j
j-1Jend
Jstr
Istr Iend
j+2
j+1
j
j-1
Jend
Jstr
Istr Iend
send
ArecvS
AsendN
receive
AsendS
ArecvN
TILE B
TILE T
North-South MPI CommunicationsN
onlin
ear
Adjo
int
With Respect to Tile B
Observations
L o n g B e a c h
B e a c h H a v e n
K ilo m ete rs
0 1 2
L itt le E g g In le t
C a b l e
N o d e AN ode B
L E O -1 5 R es ea rch
A rea
B r ig a n tin e
F ie ld S t a t io n
Mullica R iver
G r e a t
B a y
L E O -15 R esearch S ta tion s
B rigan tin eIn let
L an d andW etla nds1 m ete r 3 m ete rs6 m e ters10 m ete rs14 m ete rs16 m e ters18 m eters22 m ete rs
D ep th
LEO-15 LEO NJSOS
Longterm Ecosystem Observatory
30km x 30km 1998-2001
New Jersey ShelfObserving System
Satellites, Aircraft, SurfaceRADAR, Glider AUVs 300km x 300km
Beginning 2001
RUTGERSTHE STATE UNIVERSITY OF NEW JERSEY
3km x 3km1996-Present
Station Field
Assumptions
• All scalar observations are assumed to be at RHO-points.
• All vector observations are assumed to be rotated to curvilinear grid, if applicable. Vector observations are always measured at the same location.
• All observation horizontal locations are assumed to be in fractional curvilinear grid coordinates.
• Vertical locations can be in fractional levels (1:N) or actual depths (negative values).
• Removal of tidal signal?
• Filtering of non-resolved processes?
Observation Operators
• Currently, all observations must be in terms of model state variables (same units):– 2D configuration: zeta, ubar, vbar
– 3D configuration: zeta, u, v, T, S, …
• There is not a time interpolation of model solution at observation times:
time - 0.5*dt < ObsTime < time + 0.5*dt
• There is not observations quality control (screening) inside ROMS, except ObsScale.
• No observation constraints are implemented (Satellite SST measurements)
Observation Interpolation
• Only spatial linear interpolation is coded.
• If land/sea masking, the interpolation coefficients are weighted by the mask.
• If shallower than z_r(:,:,N), observations are assigned to the surface level.
• If deeper than z_r(:,:,1), observations are assigned to bottom level.
Recommedations
• Create a NetCDF file for each observation type.
• Use a processing program to meld NetCDF observation files (nc_4dvar_meld.m).
• Keep a master copy of each observation file, in case that you are running your application at different resolutions.
• Decimation of observations. Finite volume representation?
BACKGOUNDERROR COVARIANCE
Model/Background Error Covariance, B
• Use a generalized diffusion squared-root operator (symmetric) as in Weaver et al. (2003):
B = S C S = S (G L1/2
W-1/2
) (W-1/2
LT/2
G)
• The normalization matrix, G, ensure that the diagonal elements of the correlation matrix, C, are equal to unity. They are computed using the exact (expensive) or randomization (cheaper) methods.
• The spatial convolution of the self-adjoint filtering operator, L1/2
, is split in horizontal and vertical components and discretized both explicitly and implicitly.
• The model/background standard deviation matrix, S, is computed from long (monthly, seasonal) simulations.
• The grid cell area or volume matrix, W-1/2
, is assumed to be time invariant.
Model/Background Error Correlation (C)
Horizontal
Hdecay = 100 km
Vdecay = 100 m
Vertical (implicit)
Model/Background Error Correlation NormalizationCoefficients (G)
SSH Temperature
Bottom Level
EAC EAC
job_is4dvar.sh
build.sh
s4dvar.in