Skip to content

Output Model Datasets

The model generates several output files, including the meshmask file, restart file, and the output files for the T, U, V, and W grids, along with log files that record model execution details. These files are produced in the NetCDF (Network Common Data Form) format, which is widely used for storing and exchanging scientific data, particularly in climate and ocean modeling.

In the current version of SURF, the default I/O operations are managed by NEMO’s diawri module, which handles file writing. The I/O server (for parallel data writing) is not yet included. The output files contain time-averaged values over specified intervals. The frequency of output writing is controlled by the nn_write parameter, set within the user configuration file (typically hourly means).

Meshmask File

The meshmask file (mesh_mask.nc) contains all the information of the child model grids, including:

  • Longitude on T-U-V-F grid points [\(degree\)]
  • Latitude on T-U-V-F grid points [\(degree\)]
  • Depth on T-U-V-F grid points [\(m\)]
  • Land-sea mask on T-U-V-F grid points [0-1]
  • Scale factors on T-U-V-F grid points [\(m\)]

An example CDL (Common Data Language) representation of this file is shown in Listing 6.2.1.

netcdf mesh_mask {
dimensions:
    x = 94 ;
    y = 79 ;
    z = 120 ;
    t = UNLIMITED ; // (1 currently)
variables:
    float nav_lon(y, x) ;
    float nav_lat(y, x) ;
    float nav_lev(z) ;
    double time_counter(t) ;
    byte tmask(t, z, y, x) ;
    byte umask(t, z, y, x) ;
    byte vmask(t, z, y, x) ;
    byte fmask(t, z, y, x) ;
    byte tmaskutil(t, y, x) ;
    byte umaskutil(t, y, x) ;
    byte vmaskutil(t, y, x) ;
    byte fmaskutil(t, y, x) ;
    float glamt(t, y, x) ;
    float glamu(t, y, x) ;
    float glamv(t, y, x) ;
    float glamf(t, y, x) ;
    float gphit(t, y, x) ;
    float gphiu(t, y, x) ;
    float gphiv(t, y, x) ;
    float gphif(t, y, x) ;
    double e1t(t, y, x) ;
    double e1u(t, y, x) ;
    double e1v(t, y, x) ;
    double e1f(t, y, x) ;
    double e2t(t, y, x) ;
    double e2u(t, y, x) ;
    double e2v(t, y, x) ;
    double e2f(t, y, x) ;
    double ff(t, y, x) ;
    short mbathy(t, y, x) ;
    short misf(t, y, x) ;
    float isfdraft(t, y, x) ;
    double e3t_0(t, z, y, x) ;
    double e3u_0(t, z, y, x) ;
    double e3v_0(t, z, y, x) ;
    double e3w_0(t, z, y, x) ;
    float gdept_0(t, z, y, x) ;
    float gdepu(t, z, y, x) ;
    float gdepv(t, z, y, x) ;
    float gdepw_0(t, z, y, x) ;
    double gdept_1d(t, z) ;
    double gdepw_1d(t, z) ;
    double e3t_1d(t, z) ;
    double e3w_1d(t, z) ;

// global attributes:
        :file_name = "mesh_mask.nc" ;
}

Listing 6.2.1: CDL example for the meshmask datasets.

T-Grid Ocean File

The output T-Grid file (SURF_1h_YYYYMMDD0_YYYYMMDD1_grid_T) contains hourly fields defined on the Arakawa-T grid within the chid nested domain. This file includes:

  • Temperature [\(C\)]
  • Salinity [\(PSU\)]
  • Sea Surface Temperature [\(C\)]
  • Sea Surface Salinity [\(PSU\)]
  • Sea Surface Height [\(m\)]
  • Net Upward Water Flux [\(Kg/m^2/s\)]
  • Concentration/Dilution Water Flux [\(Kg/m^2/s\)]
  • Surface Salt Flux [\(Kg/m^2/s\)]
  • Net Downward Heat Flux [\(W/m^2\)]
  • Shortwave Radiation [\(W/m^2\)]
  • Turbocline Depth [\(m\)]
  • Mixed Layer Depth 0.01 [\(m\)]
  • Ice Fraction [\(0;1\)]
  • Wind Speed at 10m [\(m/s\)]
  • Surface Heat Flux: Damping [\(W/m^2\)]
  • Surface Water Flux: Damping [\(Kg/m^2/s\)]
  • Surface Salt Flux: Damping [\(Kg/m^2/s\)]
  • Bowl Index [\(W\) point]

An example CDL representation of this file is shown in Listing 6.2.2.

netcdf SURF_1h_20141005_20141005_grid_T {
dimensions:
    x = 94 ;
    y = 79 ;
    deptht = 120 ;
    time_counter = UNLIMITED ; // (24 currently)
    bnds = 2 ;
variables:
    float nav_lon(y, x) ;
        nav_lon:standard_name = "longitude" ;
        nav_lon:long_name = "longitude" ;
        nav_lon:units = "degrees_east" ;
        nav_lon:_CoordinateAxisType = "Lon" ;
    float nav_lat(y, x) ;
        nav_lat:standard_name = "latitude" ;
        nav_lat:long_name = "latitude" ;
        nav_lat:units = "degrees_north" ;
        nav_lat:_CoordinateAxisType = "Lat" ;
    float deptht(deptht) ;
        deptht:long_name = "Vertical T levels" ;
        deptht:units = "m" ;
        deptht:positive = "down" ;
        deptht:axis = "Z" ;
        deptht:title = "deptht" ;
    double time_counter(time_counter) ;
        time_counter:standard_name = "time" ;
        time_counter:long_name = "Time axis" ;
        time_counter:bounds = "time_counter_bnds" ;
        time_counter:units = "seconds since 2014-10-05 00:00:00" ;
        time_counter:calendar = "standard" ;
        time_counter:axis = "T" ;
    double time_counter_bnds(time_counter, bnds) ;
    float votemper(time_counter, deptht, y, x) ;
        votemper:standard_name = "Temperature" ;
        votemper:long_name = "Temperature" ;
        votemper:units = "C" ;
        votemper:coordinates = "nav_lat nav_lon" ;
        votemper:_FillValue = 9.96921e+36f ;
        votemper:missing_value = 9.96921e+36f ;
        votemper:online_operation = "ave(x)" ;
        votemper:interval_operation = 150.f ;
        votemper:interval_write = 3600.f ;
    float vosaline(time_counter, deptht, y, x) ;
        vosaline:standard_name = "Salinity" ;
        vosaline:long_name = "Salinity" ;
        vosaline:units = "PSU" ;
        vosaline:coordinates = "nav_lat nav_lon" ;
        vosaline:_FillValue = 9.96921e+36f ;
        vosaline:missing_value = 9.96921e+36f ;
        vosaline:online_operation = "ave(x)" ;
        vosaline:interval_operation = 150.f ;
        vosaline:interval_write = 3600.f ;
    float sossheig(time_counter, y, x) ;
        sossheig:standard_name = "Sea Surface Height" ;
        sossheig:long_name = "Sea Surface Height" ;
        sossheig:units = "m" ;
        sossheig:coordinates = "nav_lat nav_lon" ;
        sossheig:_FillValue = 9.96921e+36f ;
        sossheig:missing_value = 9.96921e+36f ;
        sossheig:online_operation = "ave(x)" ;
        sossheig:interval_operation = 150.f ;
        sossheig:interval_write = 3600.f ;

// global attributes:
        :Conventions = "CF-1.1" ;
        :production = "An IPSL model" ;
        :file_name = "SURF_1h_20141005_20141005_grid_T.nc" ;
}

Listing 6.2.2: CDL example for the T-Grid output file.

U-Grid Ocean File

The output U-Grid file (SURF_1h_YYYYMMDD0_YYYYMMDD1_grid_U) contains hourly fields defined on the Arakawa-U grid within the chid nested domain. This file includes:

  • Zonal Current [\(m/s\)]
  • Wind Stress along the zonal axis [\(N/m^2\)]

An example CDL representation of this file is shown in Listing 6.2.3.

netcdf SURF_1h_20141005_20141005_grid_U {
dimensions:
    x = 94 ;
    y = 79 ;
    depthu = 120 ;
    time_counter = UNLIMITED ; // (24 currently)
    bnds = 2 ;
variables:
    float nav_lon(y, x) ;
        nav_lon:standard_name = "longitude" ;
        nav_lon:long_name = "longitude" ;
        nav_lon:units = "degrees_east" ;
        nav_lon:_CoordinateAxisType = "Lon" ;
    float nav_lat(y, x) ;
        nav_lat:standard_name = "latitude" ;
        nav_lat:long_name = "latitude" ;
        nav_lat:units = "degrees_north" ;
        nav_lat:_CoordinateAxisType = "Lat" ;
    float depthu(depthu) ;
        depthu:long_name = "Vertical U levels" ;
        depthu:units = "m" ;
        depthu:positive = "down" ;
        depthu:axis = "Z" ;
        depthu:title = "depthu" ;
    double time_counter(time_counter) ;
        time_counter:standard_name = "time" ;
        time_counter:long_name = "Time axis" ;
        time_counter:bounds = "time_counter_bnds" ;
        time_counter:units = "seconds since 2014-10-05 00:00:00" ;
        time_counter:calendar = "standard" ;
        time_counter:axis = "T" ;
    double time_counter_bnds(time_counter, bnds) ;
    float vozocrtx(time_counter, depthu, y, x) ;
        vozocrtx:standard_name = "Zonal Current" ;
        vozocrtx:long_name = "Zonal Current" ;
        vozocrtx:units = "m/s" ;
        vozocrtx:coordinates = "nav_lat nav_lon" ;
        vozocrtx:_FillValue = 9.96921e+36f ;
        vozocrtx:missing_value = 9.96921e+36f ;
        vozocrtx:online_operation = "ave(x)" ;
        vozocrtx:interval_operation = 150.f ;
        vozocrtx:interval_write = 3600.f ;

// global attributes:
        :Conventions = "CF-1.1" ;
        :production = "An IPSL model" ;
        :file_name = "SURF_1h_20141005_20141005_grid_U.nc" ;
}

Listing 6.2.3: CDL example for the U-Grid output file.

V-Grid Ocean File

The output V-Grid file (SURF_1h_YYYYMMDD0_YYYYMMDD1_grid_V) contains hourly fields defined on the Arakawa-V grid within the chid nested domain. This file includes:

  • Meridional Current [\(m/s\)]
  • Wind Stress along the meridional axis [\(N/m^2\)]

An example CDL representation of this file is shown in Listing 6.2.4.

netcdf SURF_1h_20141005_20141005_grid_V {
dimensions:
    x = 94 ;
    y = 79 ;
    depthv = 120 ;
    time_counter = UNLIMITED ; // (24 currently)
    bnds = 2 ;
variables:
    float nav_lon(y, x) ;
        nav_lon:standard_name = "longitude" ;
        nav_lon:long_name = "longitude" ;
        nav_lon:units = "degrees_east" ;
        nav_lon:_CoordinateAxisType = "Lon" ;
    float nav_lat(y, x) ;
        nav_lat:standard_name = "latitude" ;
        nav_lat:long_name = "latitude" ;
        nav_lat:units = "degrees_north" ;
        nav_lat:_CoordinateAxisType = "Lat" ;
    float depthv(depthv) ;
        depthv:long_name = "Vertical V levels" ;
        depthv:units = "m" ;
        depthv:positive = "down" ;
        depthv:axis = "Z" ;
        depthv:title = "depthv" ;
    double time_counter(time_counter) ;
        time_counter:standard_name = "time" ;
        time_counter:long_name = "Time axis" ;
        time_counter:bounds = "time_counter_bnds" ;
        time_counter:units = "seconds since 2014-10-05 00:00:00" ;
        time_counter:calendar = "standard" ;
        time_counter:axis = "T" ;
    double time_counter_bnds(time_counter, bnds) ;
    float vomecrty(time_counter, depthv, y, x) ;
        vomecrty:standard_name = "Meridional Current" ;
        vomecrty:long_name = "Meridional Current" ;
        vomecrty:units = "m/s" ;
        vomecrty:coordinates = "nav_lat nav_lon" ;
        vomecrty:_FillValue = 9.96921e+36f ;
        vomecrty:missing_value = 9.96921e+36f ;
        vomecrty:online_operation = "ave(x)" ;
        vomecrty:interval_operation = 150.f ;
        vomecrty:interval_write = 3600.f ;

// global attributes:
        :Conventions = "CF-1.1" ;
        :production = "An IPSL model" ;
        :file_name = "SURF_1h_20141005_20141005_grid_V.nc" ;
}

Listing 6.2.4: CDL example for the V-Grid output file.

W-Grid Ocean File

The output W-Grid file (SURF_1h_YYYYMMDD0_YYYYMMDD1_grid_W) contains hourly fields defined on the Arakawa-W grid within the chid nested domain. This file includes:

  • Vertical velocity [\(m/s\)],

  • Vertical Eddy Viscosity [\(m^2/s\)],

  • Vertical Eddy Diffusivity [\(m^2/s\)].

An example CDL representation of this file is shown in Listing 6.2.5.

netcdf fields_filename {
netcdf SURF_1h_20141005_20141005_grid_W.nc {
dimensions:
   x = 94 ;
   y = 79 ;
   depthw = 120 ;
   time_counter = UNLIMITED ; // (24 currently)
   bnds = 2 ;
variables:
   float nav_lat(y, x);
      nav_lat:standard_name = "latitude";
      nav_lat:units = "degrees_north";
      nav_lat:long_name = "Latitude";
      nav_lat:nav_model = "Default grid";
   float nav_lon(y, x);
      nav_lon:standard_name = "longitude";
      nav_lon:units = "degrees_east";
      nav_lon:long_name = "Longitude";
      nav_lon:nav_model = "Default grid";
   float depthw(depthw);
      depthw:axis = "Z";
      depthw:standard_name = "model_level_number";
      depthw:units = "m";
      depthw:positive = "down";
      depthw:valid_min = 0.0f; // float
      depthw:valid_max = 2622.5078f; // float
      depthw:title = "depthw";
      depthw:long_name = "Vertical W levels";
   double time_counter(time_counter);
      time_counter:standard_name = "time" ;
      time_counter:long_name = "Time axis" ;
      time_counter:bounds = "time_counter_bnds" ;
      time_counter:units = "seconds since 2014-10-05 00:00:00" ;
      time_counter:calendar = "standard" ;
      time_counter:axis = "T" ;
   double time_counter_bnds(time_counter, tbnds);
   float votkeavm(time_counter, depthw, y, x);
      votkeavm:units = "m2/s";
      votkeavm:standard_name = "Vertical Eddy Viscosity";
      votkeavm:_FillValue = 9.96921E36f; // float
      votkeavm:long_name = "Vertical Eddy Viscosity";
      votkeavm:online_operation = "ave(x)";
      votkeavm:interval_operation = 150.0f; // float
      votkeavm:interval_write = 3600.0f; // float
      votkeavm:coordinates = "time_counter depthw nav_lat nav_lon";
   float votkeavt(time_counter, depthw, y, x);
      votkeavt:units = "m2/s";
      votkeavt:standard_name = "Vertical Eddy Diffusivity";
      votkeavt:_FillValue = 9.96921E36f; // float
      votkeavt:long_name = "Vertical Eddy Diffusivity";
      votkeavt:online_operation = "ave(x)";
      votkeavt:interval_operation = 150.0f; // float
      votkeavt:interval_write = 3600.0f; // float
      votkeavt:coordinates = "time_counter depthw nav_lat nav_lon";
   float vovecrtz(time_counter, depthw, y, x);
      vovecrtz:units = "m/s";
      vovecrtz:standard_name = "Vertical Velocity";
      vovecrtz:_FillValue = 9.96921E36f; // float
      vovecrtz:long_name = "Vertical Velocity";
      vovecrtz:online_operation = "ave(x)";
      vovecrtz:interval_operation = 150.0f; // float
      vovecrtz:interval_write = 3600.0f; // float
      vovecrtz:coordinates = "time_counter depthw nav_lat nav_lon";

  // global attributes:
         :Conventions = "CF-1.1";
         :production = "An IPSL model";
         :file_name = "SURF_1h_20141005_20141005_grid_W.nc";
}

Listing 6.2.5: CDL example for the W-Grid output file.

Restart File

The restart file (SURF_restart_YYYYMMDD.nc) contains the model state variables at two consecutive time step, allowing NEMO model to continue the simulation from that point onward. This file includes two consecutive time levels (referred to as 'before' and 'after') of the following variables:

  • Temperature
  • Salinity
  • Velocity horizontal components
  • Sea Surface Height
  • ...

An example CDL representation of this file is shown in Listing 6.2.6

netcdf SURF_restart_20141005 {
dimensions:
    x = 94 ;
    y = 79 ;
    z = 120 ;
    t = UNLIMITED ; // (1 currently)
variables:
    float nav_lon(y, x) ;
    float nav_lat(y, x) ;
    float nav_lev(z) ;
    double time_counter(t) ;
    double kt ;
    double ndastp ;
    double adatrj ;
    double utau_b(t, y, x) ;
    double vtau_b(t, y, x) ;
    double qns_b(t, y, x) ;
    double emp_b(t, y, x) ;
    double sfx_b(t, y, x) ;
    double sbc_hc_b(t, y, x) ;
    double sbc_sc_b(t, y, x) ;
    double qsr_hc_b(t, z, y, x) ;
    double fraqsr_1lev(t, y, x) ;
    double rdt ;
    double rdttra1 ;
    double ub(t, z, y, x) ;
    double vb(t, z, y, x) ;
    double tb(t, z, y, x) ;
    double sb(t, z, y, x) ;
    double rotb(t, z, y, x) ;
    double hdivb(t, z, y, x) ;
    double sshb(t, y, x) ;
    double un(t, z, y, x) ;
    double vn(t, z, y, x) ;
    double tn(t, z, y, x) ;
    double sn(t, z, y, x) ;
    double rotn(t, z, y, x) ;
    double hdivn(t, z, y, x) ;
    double sshn(t, y, x) ;
    double rhop(t, z, y, x) ;

// global attributes:
        :file_name = "SURF_00000576_restart.nc" ;
}

Listing 6.2.6: CDL example for the restart datasets.