36 | | Some years ago, when we created iom.F90, the idea was to be able to use different IO libraries as transparently as possible... |
37 | | |
38 | | This was still the case in NEMO 3.6. |
39 | | In that version, you could find 3 different IO libraries: nf90, ioipsl and dimg. |
40 | | the choice between theses libraries was done in iom_def.F90 (lines 30 to 37) |
41 | | https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/release-3.6/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90 [[BR]] |
42 | | |
43 | | |
44 | | The iom routines where therefore organized in a 2 stages modules. |
45 | | |
46 | | - The first stage is iom.F90 that contains all public subroutines, prepare all the IO work but do the IO work. |
47 | | All the idea was iom.F90 is the common interface for all IO libraries. |
48 | | https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/release-3.4/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 |
49 | | |
50 | | - The second stage is called by iom.F90 subroutines and consist in 3 different IO routines |
51 | | https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/release-3.6/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90 |
52 | | https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/release-3.6/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90 |
53 | | https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/release-3.6/NEMOGCM/NEMO/OPA_SRC/IOM/iom_rstdimg.F90 |
54 | | |
55 | | |
56 | | The fork toward the different libraries was done in iom.F90, with case statements. |
57 | | See for example iom_rstput interface in this version of iom.F90 (from line 1046) |
58 | | |
59 | | We think that the use of xios to read/write restarts should try follow this same logic. |
60 | | -> reintroduce case in iom to be able to switch from native netcdf (nf90) to xios library [[BR]] |
61 | | -> Ideally, the use of xios for restarts should not be visible somewhere else, no? [[BR]] |
62 | | -> once the interface is done it is directly usable for all restarts [[BR]] |
63 | | |
64 | | We know that the reality is more complex that this simple description and developing such interface wont be so easy… |
65 | | We think a good stating point is to follow what is done for nf90 restarts that are performed in 2 steps: |
66 | | 1) 1 time step before restart: define all the restart file using a specific context (so xios_context_initialize and xios_close_context_definition cand be done anytime)[[BR]] |
67 | | 2) fill the file when is it restart time step. |
68 | | |
69 | | |
70 | | Sebastien and Clement |
| 36 | review of the part related to the restarts with XIOS done here: |
| 37 | https://forge.ipsl.jussieu.fr/nemo/ticket/2323#comment:14 |