Motivation
It may be desirable to generate FVCOM forcing from native NEMO model outputs.
Approach
I propose mirroring the object relationships that have been used when performing a similar task with CMEMS and FVCOM data. This would mean creating:
- A
NEMOReader class which is responsible for reading in NEMO driving data. This will need to handle the fact NEMO vars are often saved in different files, which are specific to the computational grid on which they are defined (U grid, V grid etc); and that the data may be spread over multiple files in time. In the general case, it will need to handle curvilinear grids, in which U and V velocity components are not necessarily aligned with E and N respectively. This will necessitate translating the U and V onto a common grid (the T grid?), and rotating the velocity field. Unlike ROMS, NEMO doesn't save an angles variable, so the angle will have to be calculated from the locations of grid vertices. It will need to correctly handle NEMO's vertical grid with a time varying free surface, and to fill masked points through extrapolation or similar.
- A
NEMOInterpolator class which is responsible for interpolating NEMO data to a set of supplied coordinates (supplied through an object of type InterpolationCoordinates).
Motivation
It may be desirable to generate FVCOM forcing from native NEMO model outputs.
Approach
I propose mirroring the object relationships that have been used when performing a similar task with CMEMS and FVCOM data. This would mean creating:
NEMOReaderclass which is responsible for reading in NEMO driving data. This will need to handle the fact NEMO vars are often saved in different files, which are specific to the computational grid on which they are defined (U grid, V grid etc); and that the data may be spread over multiple files in time. In the general case, it will need to handle curvilinear grids, in which U and V velocity components are not necessarily aligned with E and N respectively. This will necessitate translating the U and V onto a common grid (the T grid?), and rotating the velocity field. Unlike ROMS, NEMO doesn't save an angles variable, so the angle will have to be calculated from the locations of grid vertices. It will need to correctly handle NEMO's vertical grid with a time varying free surface, and to fill masked points through extrapolation or similar.NEMOInterpolatorclass which is responsible for interpolating NEMO data to a set of supplied coordinates (supplied through an object of type InterpolationCoordinates).