Where we are
The JEDI abstract layer does not exist. The experience, design and possibly code gained in the OOPS project are available.
Where we want to go
Implement an generic unified DA system that can be used for operations and research, and for all components of the Earth system including coupled.
Proposed steps
Step 1: Get started
Task 1.1: Create Fortran target interfaces for GSI refactoring work to start immediately, using OOPS C++/Fortran interfaces as a first guess
What it gives us: Ability to start work on lower level Fortran code even if minor adjustments are needed later. Not all but most of the interfaces are fairly straightforward and will not be affected even if the high level design is different.
Step 2: Learn from existing solutions
Task 2.1: Organise Object-Oriented for DA training sessions based on OOPS
Task 2.2: Implement prototype Python layer above OOPS
What it gives us: Ability to discuss JEDI design based on knowledge and initial experience with an actual object oriented DA system. Ability to discuss Python vs C++ choice based on actual code and experience. It is better to implement a layer above OOPS than to re-write part of OOPS because we gain functionality from the start and can very quickly deliver working code with enough functionality to be used.
Step 3: Design JEDI
Task 3.1: Discuss and decide where boundaries between generic and specific code should be
Task 3.2: Discuss and decide where each programming language should be used
What it gives us: Detailed plan for step 4.
Step 4: Implement JEDI
Task 4.1: TBD
Description of the work:
What it gives us: JEDI
Comments
Throughout the work, targets for the next steps will be identified and discussed within the team.