The Joint Effort for Data assimilation Integration (JEDI) OOPS - - PowerPoint PPT Presentation

the joint effort for data assimilation integration jedi
SMART_READER_LITE
LIVE PREVIEW

The Joint Effort for Data assimilation Integration (JEDI) OOPS - - PowerPoint PPT Presentation

The Joint Effort for Data assimilation Integration (JEDI) OOPS Observation Space Joint Center for Satellite Data Assimilation (JCSDA) JEDI Academy 16-20 November 2020 OOPS Observation Space OOPS interfaces related to observations:


slide-1
SLIDE 1

OOPS Observation Space

Joint Center for Satellite Data Assimilation (JCSDA)

JEDI Academy – 16-20 November 2020

The Joint Effort for Data assimilation Integration (JEDI)

slide-2
SLIDE 2

OOPS Observation Space

  • OOPS interfaces related to observations: what and why?
  • Dataflow for the Observer postprocessor
  • Using different ObsOperators for different observation types
  • Configuring Observations
slide-3
SLIDE 3

Generic applications Interface layer Specific implementations Forecast 3DVar EDA State Model Covariance Obs Operator … MPAS FV3 MOM6 Uses 4DVar

Abstract Layer (OOPS)

Implements Obs Space EnKF IODA UFO … …

slide-4
SLIDE 4

Generic applications Interface layer Specific implementations Forecast 3DVar EDA State Model Covariance Obs Operator … MPAS FV3 MOM6 Uses 4DVar

Abstract Layer (OOPS)

Implements Obs Space EnKF IODA UFO … …

slide-5
SLIDE 5

OOPS interfaces related to obs: Data assimilation perspective

𝐾 ∆𝑦 = 1 2 ∆𝑦!𝐂"#∆𝑦 + 1 2 𝑧$ − 𝐼 𝑦% − 𝐈∆𝑦 !𝐒"# 𝑧$ − 𝐼(𝑦%) − 𝐈∆𝑦

  • r

∆𝑦&= 𝐂𝐈𝐔 𝐈𝐂𝐈𝐔 + 𝐒

"# 𝑧$ − 𝐼(𝑦%)

Observations: vector in the observation space (for example, holding

  • bservation values)
slide-6
SLIDE 6

OOPS interfaces related to obs: Data assimilation perspective

𝐾 ∆𝑦 = 1 2 ∆𝑦!𝐂"#∆𝑦 + 1 2 𝑧$ − 𝐼 𝑦% − 𝐈∆𝑦 !𝐒"# 𝑧$ − 𝐼(𝑦%) − 𝐈∆𝑦

  • r

∆𝑦& = 𝐂𝐈𝐔 𝐈𝐂𝐈𝐔 + 𝐒

"# 𝑧$ − 𝐼(𝑦%)

Observations: vector in the observation space (for example, holding

  • bservation values or model simulated observation equivalents)
slide-7
SLIDE 7

OOPS interfaces related to obs: Data assimilation perspective

𝐾 ∆𝑦 = 1 2 ∆𝑦!𝐂"#∆𝑦 + 1 2 𝑧$ − 𝐼 𝑦% − 𝐈∆𝑦 !𝐒"# 𝑧$ − 𝐼(𝑦%) − 𝐈∆𝑦

  • r

∆𝑦& = 𝐂𝐈𝐔 𝐈𝐂𝐈𝐔 + 𝐒

"# 𝑧$ − 𝐼(𝑦%)

Departures: difference in the observation space (for example, departures, ensemble perturbations in the observation space)

slide-8
SLIDE 8

OOPS interfaces related to obs: Data assimilation perspective

𝐾 ∆𝑦 = 1 2 ∆𝑦!𝐂"#∆𝑦 + 1 2 𝑧$ − 𝐼 𝑦% − 𝐈∆𝑦 !𝐒"# 𝑧$ − 𝐼(𝑦%) − 𝐈∆𝑦

  • r

∆𝑦&= 𝐂𝐈𝐔 𝐈𝐂𝐈𝐔 + 𝐒

"# 𝑧$ − 𝐼(𝑦%)

ObsErrorCovariance: matrix representing observation error covariances

slide-9
SLIDE 9

OOPS interfaces related to obs: Data assimilation perspective

𝐾 ∆𝑦 = 1 2 ∆𝑦!𝐂"#∆𝑦 + 1 2 𝑧$ − 𝐼 𝑦% − 𝐈∆𝑦 !𝐒"# 𝑧$ − 𝐼(𝑦%) − 𝐈∆𝑦

  • r

∆𝑦&= 𝐂𝐈𝐔 𝐈𝐂𝐈𝐔 + 𝐒

"# 𝑧$ − 𝐼(𝑦%)

ObsOperator: observation operator for simulating observation given state

slide-10
SLIDE 10

OOPS interfaces related to obs: Data assimilation perspective

𝐾 ∆𝑦 = 1 2 ∆𝑦!𝐂"#∆𝑦 + 1 2 𝑧$ − 𝐼 𝑦% − 𝐈∆𝑦 !𝐒"# 𝑧$ − 𝐼(𝑦%) − 𝐈∆𝑦

  • r

∆𝑦&= 𝐂𝐈𝐔 𝐈𝐂𝐈𝐔 + 𝐒

"# 𝑧$ − 𝐼(𝑦%)

ObsOperator: observation operator for simulating observation given state LinearObsOperator: tangent-linear and adjoint of the observation operator

slide-11
SLIDE 11

OOPS interfaces related to obs

ObsVector (Observations) ObsOperator LinearObsOperator ObsErrorCovariance Observations related classes ObsOperator related classes ObsError

slide-12
SLIDE 12

OOPS interfaces related to obs: Observations processing perspective

  • Need to have access to observation-related data

(observation values and metadata), efficient I/O, distribution across processors, etc: ObsSpace

  • Quality control is an important aspect for real-world data

assimilation: ObsFilters

  • Bias correction is also important: ObsAuxControl,

ObsAuxIncrement, ObsAuxCovariance

slide-13
SLIDE 13

OOPS interfaces related to obs

ObservationSpace ObsVector (Observations) ObsOperator LinearObsOperator ObsFilter ObsAuxControl ObsAuxIncrement ObsAuxCovariance ObsErrorCovariance Observations related classes (IODA) ObsOperator related classes (UFO) Bias correction related classes (UFO) QC related classes (UFO) ObsError, for now using diagonal R (OOPS)

slide-14
SLIDE 14

Using different ObsOperators

  • One ObsOperator only processes one ”observation type” (e.g.,

there are separate ObsOperators for radiance and radiosonde)

  • To assimilate different observation types, we use multiple

ObsOperator’s and ObsSpace’s.

  • This is handled in oops (base):

ObsSpaces class is a vector (array) of ObsSpace

slide-15
SLIDE 15

Observations, Departures, ObsVector

  • Observations and Departures are OOPS classes that contain

vector (array) of ObsVectors for all ObsSpaces (making it a long vector size of all observations).

  • The algorithms in OOPS use Observations and Departures.
  • ObsOperator in UFO use ObsVector, and know nothing about

Observations/Departures or algorithms (separation of concerns).

slide-16
SLIDE 16

Generic applications Interface layer Specific implementations Forecast 3DVar EDA State Model Covariance Obs Operator … MPAS FV3 MOM6 Uses 4DVar

Abstract Layer (OOPS)

Implements Obs Space EnKF IODA UFO … …

slide-17
SLIDE 17

Generic applications Interface layer Specific implementations Forecast 3DVar EDA State Model Covariance Obs Operator … MPAS FV3 MOM6 Uses 4DVar

Abstract Layer (OOPS)

Implements Obs Space EnKF IODA UFO … … Uses

slide-18
SLIDE 18

Interface between Observations and Model

State 𝑦 ObsVector 𝐼(𝑦) Observation operator computes model equivalent in the observation space. Possible (obvious) interface: ObsOperator::simulateObs(const State &, ObsVector &) ObsOperator 𝐼

slide-19
SLIDE 19

Interface between Observations and Model

ObsVector 𝐼(𝑦) With this interface, ObsOperator becomes model-specific. One of the JEDI goals: Share observation operators between JCSDA partners and reduce duplication of work ObsOperator 𝐼

MODEL

State 𝑦

slide-20
SLIDE 20

Interface between Observations and Model

ObsVector ObsOp 1 State Model 1 State Model 2 State Model N ObsVector ObsOp 2 ObsVector ObsOp M … … With this design, each model would have to implement all

  • bservation operators it needs: duplication of work
slide-21
SLIDE 21

Interface between Observations and Model

ObsVector 𝐼(𝑦) ObsOperator

MODEL

State 𝑦 GeoVaLs

UFO

GetValues (model-aware part) (model-agnostic part) Each model implements getValues (interpolation of requested variables). Observation operators are then independent of the model and can easily be shared, exchanged, compared

slide-22
SLIDE 22

Interface between Observations and Model

ObsVector 𝐼(𝑦) ObsOperator

MODEL

State 𝑦 GeoVaLs

UFO

GetValues

(model-aware

  • bs operator-agnostic)

(model-agnostic

  • bs operator-aware)

Model (or grid)-aware part: horizontal interpolation of state variables that ObsOperator needs to compute 𝐼(𝑦). Model-agnostic part: everything that ObsOperator needs to do after getting model fields interpolated to observation location.

slide-23
SLIDE 23

Interface between Observations and Model

ObsVector 𝐼(𝑦) Interfaces: GetValues::fillGeoVaLs(const State &, ..., GeoVaLs &) ObsOperator::simulateObs(const GeoVaLs &, ObsVector &) ObsOperator

MODEL

State 𝑦 GeoVaLs

UFO

GetValues (model-aware part) (model-agnostic part)

slide-24
SLIDE 24

Interface between Observations and Model

ObsVector ObsOp 1 State Model 1 State Model 2 State Model N ObsVector ObsOp 2 ObsVector ObsOp M … … GeoVaLs With this design, each model only has to implement GetValues, and the observation operators can be shared by many models.

slide-25
SLIDE 25

ObservationSpace ObsVector GeoVaLs Locations ObsOperator LinearObsOperator ObsFilter ObsAuxControl ObsAuxIncrement ObsAuxCovariance ObsErrorCovariance Observations related classes (IODA) ObsOperator related classes (UFO) Bias correction related classes (UFO) QC related classes (UFO) ObsError, for now using diagonal R (OOPS)

OOPS interfaces related to obs

slide-26
SLIDE 26

Observer postprocessor

initialize processing finalize

  • Setup variables to be requested from the

model (everything that is needed for ObsOperator, ObsBias and ObsFilters)

  • Allocate GeoVaLs for the full assimilation

window

  • Fill in GeoVaLs for the obs within the

current time window

  • Run all Prior Filters
  • Calculate H(x)
  • Run all Posterior Filters
slide-27
SLIDE 27

Observations section of yaml file

  • bservations:
  • obs space: # required
  • bs operator: # required
  • bs filters:
  • bs error: # required when doing DA
  • bs bias:
  • bs bias error:
  • obs space:
  • bs operator:
  • bs filters:
  • bs error: