Using Ensemble Kalman Filters
to Assimilate Dynamic Ocean Topography Data into a Global Ocean Model
Lars Nerger
Alfred Wegener Institute for Polar and Marine Research Bremerhaven, Germany
and
Bremen Supercomputing Competence Center BremHLR Bremen, Germany
Lars.Nerger@awi.de
IGG, Uni. Bonn, 20.6.2013
Lars Nerger – Assimilating DOT data with EnKFs
Outline
Ensemble-based Kalman filters
Implementation aspects
Application with global ocean model
Collaborations:
AWI: W. Hiller, J. Schröter, A. Alexandrov, P. Kirchgessner, S. Loza, T. Janjic (now DWD)
BSH: F. Janssen, S. Massmann O.A.Sys GmbH: Reiner Schnur
Lars Nerger – Assimilating DOT data with EnKFs
Application Example
Information: Model Information: Observation
Model surface temperature Satellite surface temperature
• Generally correct, but has errors
• all fields, fluxes, …
• Generally correct, but has errors
• sparse information
(only surface, data gaps, one field) Combine both sources of information
quantitatively by computer algorithm
➜ data assimilation
Lars Nerger – Assimilating DOT data with EnKFs
Data Assimilation
Optimal estimation of system state:
•
initial conditions (for weather/ocean forecasts, …)•
state trajectory (temperature, concentrations, …)• parameters (growth of phytoplankton, …)
• fluxes (heat, primary production, …)
• boundary conditions and ‘forcing’ (wind stress, …)
€
Characteristics of system:
•
high-dimensional numerical model -O
(106-109)• sparse observations
• non-linear
Lars Nerger – Assimilating DOT data with EnKFs
Ensemble-based Kalman Filters
Lars Nerger – Assimilating DOT data with EnKFs
Ensemble-based Kalman Filter
First formulated by G. Evensen (EnKF, 1994)
Kalman filter: express probability distributions by mean and covariance matrix
EnKF: Use ensembles to represent probability distributions
observation
time 0 time 1 time 2
analysis ensemble
forecast
ensemble transformation initial
sampling state
estimate
forecast
Looks trivial!BUT:
There are many possible
choices!
Lars Nerger – Assimilating DOT data with EnKFs
Properties and differences are not fully understood
ETKF Which filter should one use?
Many choices - a little “ zoo ” (not complete):
EAKF EnKF(94/98)
SEIK
EnSRF SEEK
RRSQRT ROEK
MLEF EnKF(2003)
EnKF(2004)
SPKF ESSE EnKF(94/98)
SEEK
SEIK
Studied in Nerger
et al. Tellus (2005)
RHF
Lars Nerger – Assimilating DOT data with EnKFs
Data Assimilation – Model and Observations
Two components:
1. State:
Dynamical model
€
x 2 R
nx
i= M
i 1,i[x
i 1]
2. Obervations:
Observation equation (relation of observation to state x):
Observation error covariance matrix:
y 2 R
my = H [x]
R
Lars Nerger – Assimilating DOT data with EnKFs
a
The Ensemble Kalman Filter (EnKF, Evensen 94)
Ensemble
Analysis step:
Update each ensemble member
Kalman filter
5 EnKF
Init
x
a0⌅ R
n, P
a0⌅ R
n⇥n(41) { x
a(l)0, l = 1, . . . , N } (42) x
a0= 1
N
⇧
Nl=1
x
a(l)0⇥ x
t0⇥
(43)
P ˜
a0:= 1
N 1
⇧
Nl=1
⇤ x
a(l)0x
a0⌅⇤
x
a(l)0x
a0⌅
T⇥ P
a0(44)
P
a0= LL
T, L ⌅ R
n⇥q(45) x
a(i)0= x
a0+ Lb
(i), b
(i)⌅ R
q(46)
⇤ N (0, 1) (47)
Forecast
x
a(l)i= M
i,i 1[x
a(l)i 1] +
(l)i(48)
Analysis
{ y
o(l)k, l = 1, . . . , N } (49) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
ko(l)H
k⌃
x
fk(l)⌥⌅
(50) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
ko(l)H
kx
fk(l)⌅
(51) K ˜
k= P ˜
fkH
Tk⇤
H
kP ˜
fkH
Tk+ R
k⌅
1(52) K
k= P
fkH
Tk⇤
H
kP
fkH
Tk+ R
k⌅
1(53) H
kP
fkH
Tk+ R
k⌅ R
m⇥m(54) P ˜
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(55)
x
ak:= 1 N
⇧
Nl=1
x
a(l)k(56)
P ˜
ak:= 1
N 1
⇧
Nl=1
⇤ x
a(l)kx
ak⌅⇤
x
a(l)kx
ak⌅
T(57)
5
5 EnKF
Init
x
a0⌅ R
n, P
a0⌅ R
n⇥n(41) { x
a(l)0, l = 1, . . . , N } (42) x
a0= 1
N
⇧
Nl=1
x
a(l)0⇥ x
t0⇥
(43)
P ˜
a0:= 1
N 1
⇧
Nl=1
⇤ x
a(l)0x
a0⌅⇤
x
a(l)0x
a0⌅
T⇥ P
a0(44)
P
a0= LL
T, L ⌅ R
n⇥q(45) x
a(i)0= x
a0+ Lb
(i), b
(i)⌅ R
q(46)
⇤ N (0, 1) (47)
Forecast
x
a(l)i= M
i,i 1[x
a(l)i 1] +
(l)i(48)
Analysis
{ y
ko(l), l = 1, . . . , N } (49) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
ko(l)H
k⌃
x
fk(l)⌥⌅
(50) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
o(l)kH
kx
fk(l)⌅
(51) x
a(l)k= x
fk(l)+ K
k⇤
y
k(l)H
kx
fk(l)⌅
(52) K ˜
k= P ˜
fkH
Tk⇤
H
kP ˜
fkH
Tk+ R
k⌅
1(53) K
k= P
fkH
Tk⇤
H
kP
fkH
Tk+ R
k⌅
1(54) H
kP
fkH
Tk+ R
k⌅ R
m⇥m(55) P ˜
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(56)
x
ak:= 1 N
⇧
Nl=1
x
a(l)k(57)
P ˜
ak:= 1
N 1
⇧
Nl=1
⇤ x
a(l)kx
ak⌅⇤
x
a(l)kx
ak⌅
T(58)
5
5 EnKF
Init
x
a0⌅ R
n, P
a0⌅ R
n⇥n(41) { x
a(l)0, l = 1, . . . , N } (42) x
a0= 1
N
⇧
Nl=1
x
a(l)0⇥ x
t0⇥
(43)
P ˜
a0:= 1
N 1
⇧
Nl=1
⇤ x
a(l)0x
a0⌅⇤
x
a(l)0x
a0⌅
T⇥ P
a0(44)
P
a0= LL
T, L ⌅ R
n⇥q(45) x
a(i)0= x
a0+ Lb
(i), b
(i)⌅ R
q(46)
⇤ N (0, 1) (47)
Forecast
x
a(l)i= M
i,i 1[x
a(l)i 1] +
(l)i(48)
Analysis
{ y
o(l)k, l = 1, . . . , N } (49) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
o(l)kH
k⌃
x
fk(l)⌥⌅
(50) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
ko(l)H
kx
fk(l)⌅
(51) x
a(l)k= x
fk(l)+ K
k⇤
y
k(l)H
kx
fk(l)⌅
(52) K ˜
k= P ˜
fkH
Tk⇤
H
kP ˜
fkH
Tk+ R
k⌅
1(53) K
k= P
fkH
Tk⇤
H
kP
fkH
Tk+ R
k⌅
1(54) H
kP
fkH
Tk+ R
k⌅ R
m⇥m(55) P ˜
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(56)
P
fk:= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(57)
x
ak:= 1 N
⇧
Nl=1
x
a(l)k(58)
P ˜
ak:= 1
N 1
⇧
Nl=1
⇤ x
a(l)kx
ak⌅⇤
x
a(l)kx
ak⌅
T(59)
5
5 EnKF
Init
x
a0⌅ R
n, P
a0⌅ R
n⇥n(41) { x
a(l)0, l = 1, . . . , N } (42) x
a0= 1
N
⇧
Nl=1
x
a(l)0⇥ x
t0⇥
(43)
P ˜
a0:= 1
N 1
⇧
Nl=1
⇤ x
a(l)0x
a0⌅⇤
x
a(l)0x
a0⌅
T⇥ P
a0(44)
P
a0= LL
T, L ⌅ R
n⇥q(45) x
a(i)0= x
a0+ Lb
(i), b
(i)⌅ R
q(46)
⇤ N (0, 1) (47)
Forecast
x
a(l)i= M
i,i 1[x
a(l)i 1] +
(l)i(48)
Analysis
{ y
o(l)k, l = 1, . . . , N } (49) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
o(l)kH
k⌃
x
fk(l)⌥⌅
(50) x
a(l)k= x
fk(l)+ K ˜
k⇤
y
ko(l)H
kx
fk(l)⌅
(51) x
a(l)k= x
fk(l)+ K
k⇤
y
k(l)H
kx
fk(l)⌅
(52) K ˜
k= P ˜
fkH
Tk⇤
H
kP ˜
fkH
Tk+ R
k⌅
1(53) K
k= P
fkH
Tk⇤
H
kP
fkH
Tk+ R
k⌅
1(54) H
kP
fkH
Tk+ R
k⌅ R
m⇥m(55) P ˜
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(56)
P
fk:= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(57)
x
ak:= 1 N
⇧
Nl=1
x
a(l)k(58)
P ˜
ak:= 1
N 1
⇧
Nl=1
⇤ x
a(l)kx
ak⌅⇤
x
a(l)kx
ak⌅
T(59)
5
Ensemble
covariance matrix
Ensemble mean (state estimate)
Lars Nerger – Assimilating DOT data with EnKFs
A simple test problem
Twin experiment with nonlinear shallow water model
Initial state estimate: temporal mean state
Initial covariance matrix: variability around mean state
Lars Nerger – Assimilating DOT data with EnKFs
Shallow water model: filter performances
SEEK stagnates
same convergence behavior for EnKF and SEIK
smaller performance for EnKF than for SEIK
EnKF ensemble 1.5-2 times larger than SEIK ensemble for same filtering performance
Error reduction due to assimilation
Ensemble size
Nerger, Hiller, Schröter. Tellus 57A (2005) 715-735
Lars Nerger – Assimilating DOT data with EnKFs
Some results: EnKF vs. SEIK
• EnKF94/98
• very simple to implement
• costly (compute analysis update in observation space)
• observation ensemble introduces sampling errors
• random ensemble initialization has slow convergence
• SEIK
• more difficult to implement
• much faster (analysis update in ensemble space)
• faster convergence with initialization using singular value decomposition (empirical orthogonal functions)
€
Nerger, Hiller, Schröter. Tellus 57A (2005) 715-735
What makes SEIK faster than EnKF?
Lars Nerger – Assimilating DOT data with EnKFs
Two features of the SEIK filter
1. Avoid perturbing observations
• Apply two step update:
1. Update ensemble mean state
2. Transform forecast ensemble to represent analysis P
€
2. Ensemble transformation in ensemble space
• Degrees of freedom of analysis: ensemble size – 1
• EnKF uses update in observation space (usually much larger than ensemble size)
Typical for ensemble square-root Kalman filters
Lars Nerger – Assimilating DOT data with EnKFs
Efficient use of ensembles
€
Kalman gain
K ˜
k= ˜ P
fkH
Tk⇣
H
kP ˜
fkH
Tk+ R
k⌘
1K ˜
k= ⇣
P ˜
fk⌘
1+ H
TR
1H
1
H
TR
1Alternative form (Sherman-Morrison-Woodbury matrix identity)
Looks worse: matrices need inversion
n ⇥ n
K ˜
k= X
0h
(N 1)I + X
0TH
TR
1HX
0i
1X
0TH
TR
1However: with ensemble
Inversion of matrix
(Ensemble perturbation matrix )
P ˜
fk= (N 1)
1X
0X
0TN ⇥ N
X
0= X X ¯
Lars Nerger – Assimilating DOT data with EnKFs
ETKF Which filter should one use?
Many choices - a little “ zoo ” (not complete):
EAKF
ETKF EnKF(94/98)
SEIK
EnSRF SEEK
RRSQRT ROEK
EnKF(2003) EnKF(2004)
ESTKF EnKF(94/98)
SEEK
SEIK
Studied in Nerger et al. Tellus (2005)
SEIK
New study:
Nerger et al., Mon. Wea. Rev.
(2012)
New filter formulation
MLEF
SPKF
ESSE
RHF
Lars Nerger – Assimilating DOT data with EnKFs
Square root of covariance matrix (ensemble size N, state dim n)
T is specific for filter algorithm:
ETKF:
T removes ensemble mean
(usually, compute directly ) Z has dimension nN
SEIK:
T removes ensemble mean and drops last column Z has dimension n(N-1)
Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(167) X
fk= ⌃
x
fk, . . . , x
fk⌥
(168)
Z
fk= X
fkX
fk(169)
Z = X
fT (170)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(171) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(172) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(173) G := 1
N 1 I (174)
x
ak= x
fk+ Z
fkw
k(175) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
okH
kx
fk⌅
(176)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(177) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(178) P ˇ
ak= Z
fkA
k(Z
fk)
T(179) A
1= I + (HZ)
TR
1HZ
f(180)
P
a= ZAZ
T(181)
Ensemble transformation
X
a= X
a+ X
fkW (182)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(183) W
k= ⌃
w
k, . . . , w
k⌥
(184) P
ak= 1
N 1 Z
ak(Z
ak)
T(185) Z
ak= ⇥
N 1Z
fkA
1/2k(186)
Z
ak= Z
fkW
k(187)
W
k= ⇥
N 1U
kS
k 1/2U
Tk(188)
U
kS
kV
k= A
k 1(189)
15 Analysis
X f k = ⌃
x f k (1) , . . . , x f k (N ) ⌥
(167) X f k = ⌃
x f k , . . . , x f k ⌥
(168)
Z f k = X f k X f k (169)
Z = X f T (170)
P f = ZZ T (171)
P ˇ f k = 1
N 1
⇧ N
l=1
⇤ x f k (l) x f k ⌅⇤
x f k (l) x f k ⌅ T
(172) P ˇ f k = 1
N 1 Z f k ⇤
Z f k ⌅ T
(173) P ˇ f k = Z f k G ⇤
Z f k ⌅ T
(174) G := 1
N 1 I (175)
x a k = x f k + Z f k w k (176) w k = A k (H k Z f k ) T R k 1 ⇤
y k o H k x f k ⌅
(177)
A k 1 = G 1 + (H k Z f k ) T R k 1 H k Z f k (178) A k 1 = (N 1)I + (H k Z f k ) T R k 1 H k Z f k (179) P ˇ a k = Z f k A k (Z f k ) T (180) A = G + (HZ) T R 1 HZ ⇥ 1
(181)
P a = ZAZ T (182)
Ensemble transformation
X a = X a + X f k W (183)
X a k = X f k + Z f k W k + W k ⇥
(184) W k = ⌃
w k , . . . , w k ⌥
(185) P a k = 1
N 1 Z a k (Z a k ) T (186) Z a k = ⇥
N 1Z f k A 1/2 k (187)
Z a k = Z f k W k (188)
W k = ⇥
N 1U k S k 1/2 U T k (189)
U k S k V k = A k 1 (190)
15
Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(168) X
fk= ⌃
x
fk, . . . , x
fk⌥
(169)
Z
fk= X
fkX
fk(170)
Z = X X (171)
Z = X
fT (172)
P
f= ZZ
T(173)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(174) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(175) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(176) G := 1
N 1 I (177)
x
ak= x
fk+ Z
fkw
k(178) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
koH
kx
fk⌅
(179)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(180) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(181) P ˇ
ak= Z
fkA
k(Z
fk)
T(182) A = G + (HZ)
TR
1HZ ⇥
1(183)
P
a= ZAZ
T(184)
Ensemble transformation
X
a= X
a+ X
fkW (185)
X
a⇥ ZW (186)
WW
T= A (187)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(188) W
k= ⌃
w
k, . . . , w
k⌥
(189)
15
Transformation matrix in ensemble space (small matrix)
ETKF:
A has dimension N
2G = I (identity matrix) SEIK:
A has dimension (N-1)
2G = ( T T
T)
-1Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(167) X
fk= ⌃
x
fk, . . . , x
fk⌥
(168)
Z
fk= X
fkX
fk(169)
Z = X
fT (170)
P
f= ZZ
T(171)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(172) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(173) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(174) G := 1
N 1 I (175)
x
ak= x
fk+ Z
fkw
k(176) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
okH
kx
fk⌅
(177)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(178) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(179) P ˇ
ak= Z
fkA
k(Z
fk)
T(180) A = G + (HZ)
TR
1HZ ⇥
1(181)
P
a= ZAZ
T(182)
Ensemble transformation
X
a= X
a+ X
fkW (183)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(184) W
k= ⌃
w
k, . . . , w
k⌥
(185) P
ak= 1
N 1 Z
ak(Z
ak)
T(186) Z
ak= ⇥
N 1Z
fkA
1/2k(187)
Z
ak= Z
fkW
k(188)
W
k= ⇥
N 1U
kS
k 1/2U
Tk(189)
U
kS
kV
k= A
k 1(190)
15
Analysis state covariance matrix
Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(167) X
fk= ⌃
x
fk, . . . , x
fk⌥
(168)
Z
fk= X
fkX
fk(169)
Z = X
fT (170)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(171) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(172) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(173) G := 1
N 1 I (174)
x
ak= x
fk+ Z
fkw
k(175) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
koH
kx
fk⌅
(176)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(177) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(178) P ˇ
ak= Z
fkA
k(Z
fk)
T(179)
A
1= I + (HZ)
TR
1HZ (180)
P
a= ZAZ
T(181)
Ensemble transformation
X
a= X
a+ X
fkW (182)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(183) W
k= ⌃
w
k, . . . , w
k⌥
(184) P
ak= 1
N 1 Z
ak(Z
ak)
T(185) Z
ak= ⇥
N 1Z
fkA
1/2k(186)
Z
ak= Z
fkW
k(187)
W
k= ⇥
N 1U
kS
k 1/2U
Tk(188)
U
kS
kV
k= A
k 1(189)
15
Computations in ensemble-spanned space
Ensemble transformation based on square root of A
Very efficient:
Transformation matrix computed in space of dim. N or N-1
Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(167) X
fk= ⌃
x
fk, . . . , x
fk⌥
(168)
Z
fk= X
fkX
fk(169)
Z = X
fT (170)
P
f= ZZ
T(171)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(172) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(173) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(174) G := 1
N 1 I (175)
x
ak= x
fk+ Z
fkw
k(176) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
koH
kx
fk⌅
(177)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(178) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(179) P ˇ
ak= Z
fkA
k(Z
fk)
T(180) A = G + (HZ)
TR
1HZ ⇥
1(181)
P
a= ZAZ
T(182)
Ensemble transformation
X
a= X
a+ X
fkW (183)
X
a⇥ X
fL (184)
LL
T= A (185)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(186) W
k= ⌃
w
k, . . . , w
k⌥
(187)
15 Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(167) X
fk= ⌃
x
fk, . . . , x
fk⌥
(168)
Z
fk= X
fkX
fk(169)
Z = X
fT (170)
P
f= ZZ
T(171)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(172) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(173) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(174) G := 1
N 1 I (175)
x
ak= x
fk+ Z
fkw
k(176) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
okH
kx
fk⌅
(177)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(178) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(179) P ˇ
ak= Z
fkA
k(Z
fk)
T(180) A = G + (HZ)
TR
1HZ ⇥
1(181)
P
a= ZAZ
T(182)
Ensemble transformation
X
a= X
a+ X
fkW (183)
X
a⇥ ZL (184)
LL
T= A (185)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(186) W
k= ⌃
w
k, . . . , w
k⌥
(187)
15
Lars Nerger – Assimilating DOT data with EnKFs
The T matrix
SEIK and ETKF use different projections T
➜ results in slightly different ensemble transformations
➜ SEIK is slightly faster than ETKF
ETKF uses minimal ensemble transformation – desirable feature!
Analysis
X
fk= ⌃
x
fk(1), . . . , x
fk(N)⌥
(167) X
fk= ⌃
x
fk, . . . , x
fk⌥
(168)
Z
fk= X
fkX
fk(169)
Z = X
fT (170)
P ˇ
fk= 1
N 1
⇧
Nl=1
⇤ x
fk(l)x
fk⌅⇤
x
fk(l)x
fk⌅
T(171) P ˇ
fk= 1
N 1 Z
fk⇤
Z
fk⌅
T(172) P ˇ
fk= Z
fkG ⇤
Z
fk⌅
T(173) G := 1
N 1 I (174)
x
ak= x
fk+ Z
fkw
k(175) w
k= A
k(H
kZ
fk)
TR
k 1⇤
y
koH
kx
fk⌅
(176)
A
k 1= G
1+ (H
kZ
fk)
TR
k 1H
kZ
fk(177) A
k 1= (N 1)I + (H
kZ
fk)
TR
k 1H
kZ
fk(178) P ˇ
ak= Z
fkA
k(Z
fk)
T(179) A
1= I + (HZ)
TR
1HZ
f(180)
P
a= ZAZ
T(181)
Ensemble transformation
X
a= X
a+ X
fkW (182)
X
ak= X
fk+ Z
fkW
k+ W
k⇥
(183) W
k= ⌃
w
k, . . . , w
k⌥
(184) P
ak= 1
N 1 Z
ak(Z
ak)
T(185) Z
ak= ⇥
N 1Z
fkA
1/2k(186)
Z
ak= Z
fkW
k(187)
W
k= ⇥
N 1U
kS
k 1/2U
Tk(188)
U
kS
kV
k= A
k 1(189)
15
Lars Nerger – Assimilating DOT data with EnKFs
Error Subspace Transform Kalman Filter (ESTKF)
Combine advantages of SEIK and ETKF
Redefine T:
1. Remove ensemble mean from all columns 2. Subtract fraction of last column from all others 3. Drop last column
L. Nerger et al., Monthly Weather Review 140 (2012) 2335-2345
Features of the ESTKF:
• Same ensemble transformation as ETKF
• Slightly cheaper computations
• Direct access to ensemble-spanned error space
Lars Nerger – Assimilating DOT data with EnKFs
Requirements for applying ensemble Kalman filters
“Pure” ensemble-based Kalman filters have usually bad performance
• e.g. due to small ensemble size
Improvements through
• Covariance inflation
• Localization
• Model error simulation
S: Analysis region
D: Corresponding data region Localization
Lars Nerger – Assimilating DOT data with EnKFs
Implementation Aspects
Lars Nerger – Assimilating DOT data with EnKFs
Computational and Practical Issues
Data assimilation with ensemble-based Kalman filters is costly!
Memory: Huge amount of memory required (model fields and ensemble matrix)
Computing: Huge requirement of computing time (ensemble integrations)
Parallelism: Natural parallelism of ensemble integration exists (needs to be implemented)
„Fixes “ : Filter algorithms do not work in their pure form („fixes “ and tuning are needed)
because Kalman filter optimal only in linear case
Lars Nerger – Assimilating DOT data with EnKFs
Implementing Ensemble Filters & Smoothers
Ensemble forecast
• can require model error simulation
• naturally parallel
Analysis step of filter algorithms operates on abstract state vectors (no specific model fields)
Analysis step requires information on observations
• which field?
• location of observations
• observation error covariance matrix
• relation of state vector to observation
➜ Analysis step can be implemented independently of model!
Lars Nerger – Assimilating DOT data with EnKFs
Offline mode – separate programs Model
Aaaaaaaa Aaaaaaaa aaaaaaaa a
Start
Stop
read ensemble files analysis step
Aaaaaaaa Aaaaaaaa aaaaaaaaa
Start
Stop Do i=1, nsteps
Initialize Model
generate mesh Initialize fields
Time stepper
consider BC Consider forcing
Post-processing
For each ensemble state
• Initialize from restart files
• Integrate
• Write restart files
• Read restart files (ensemble)
• Compute analysis step
• Write new restart files
Assimilation program
write model restart files
⬅ generic
Lars Nerger – Assimilating DOT data with EnKFs
Extending a Model for Data Assimilation
Aaaaaaaa Aaaaaaaa aaaaaaaaa
Start
Stop Do i=1, nsteps
Initialize Model
generate mesh Initialize fields
Time stepper
consider BC Consider forcing
Post-processing
Aaaaaaaa Aaaaaaaa aaaaaaaaa
Start
Stop Do i=1, nsteps
Initialize Model
generate mesh Initialize fields
Time stepper
consider BC Consider forcing
Post-processing
Model
Ensemble forecast
Analysis step
Initialization Extension for data assimilation
Aaaaaaaa Aaaaaaaa aaaaaaaaa
Start
Stop
Initialize Model
generate mesh Initialize fields
Time stepper
consider BC Consider forcing
Post-processing init_parallel_asml
Do i=1, nsteps get_state_asml
init_asml
put_state_asml Filter-Analysis
Online assimilation program:
➜ Avoid expensive writing and reading of ensemble files
Lars Nerger – Assimilating DOT data with EnKFs
Features of online program
• minimal changes to model code when combining model with filter algorithm (adding 4 routines)
• model not required to be a subroutine
• no change to model numerics
• control of assimilation program coming from model
• filter method encapsulated in subroutine
• simple switching between different filters and data sets
• complete parallelism in model, filter, and ensemble integrations
Implementation structure can be implemented in a generic
framework (for online and offline modes)
Lars Nerger – Assimilating DOT data with EnKFs
PDAF: A tool for data assimilation
PDAF - Parallel Data Assimilation Framework
an environment for ensemble assimilation
provide support for ensemble forecasts
provide fully-implemented filter algorithms
for testing algorithms and real applications
useable with virtually any numerical model
makes good use of supercomputers
Open source:
Code and documentation available at http://pdaf.awi.de
L. Nerger, W. Hiller, Computers & Geosciences 55 (2013) 110-118