...
For the generation of the boundary conditions we'll need one additional bit of information from the flow model, namely the names of all open boundaries as well as their location and (negative) boundary segment numbers associated them.
Example of a netCDF file with volumes defined the faces of the grid (e.g. Delft3D, D-FLOW Flexible Mesh, ROMS, Untrim):
Code Block |
---|
dimensions:
nMesh2_node = 4 ; // nNodes
nMesh2_edge = 5 ; // nEdges
nMesh2_face = 2 ; // nFaces
nMesh2_face_links = 1 ; // nFacePairs
Two = 2 ;
Three = 3 ;
variables:
// Mesh topology
integer Mesh2 ;
// as in 2D triangular mesh example
integer Mesh2_face_nodes(nMesh2_face, Three) ;
// as in 2D triangular mesh example
integer Mesh2_edge_nodes(nMesh2_edge, Two) ;
// as in 2D triangular mesh example
// Optional mesh topology variables
integer Mesh2_face_edges(nMesh2_face, Three) ;
// as in 2D triangular mesh example
integer Mesh2_face_links(nMesh2_face_links, Two) ;
// as in 2D triangular mesh example
// Mesh node coordinates
double Mesh2_node_x(nMesh2_node) ;
// as in 2D triangular mesh example
double Mesh2_node_y(nMesh2_node) ;
// as in 2D triangular mesh example
// Optional mesh face and edge coordinate variables
double Mesh2_face_x(nMesh2_face) ;
Mesh2_face_x:standard_name = "longitude" ;
Mesh2_face_x:long_name = "Characteristics longitude of 2D mesh triangle (e.g. circumcenter coordinate)." ;
Mesh2_face_x:units = "degrees_east" ;
Mesh2_face_x:bounds = "Mesh2_face_xbnds" ;
double Mesh2_face_y(nMesh2_face) ;
Mesh2_face_y:standard_name = "latitude" ;
Mesh2_face_y:long_name = "Characteristics latitude of 2D mesh triangle (e.g. circumcenter coordinate)." ;
Mesh2_face_y:units = "degrees_north" ;
Mesh2_face_y:bounds = "Mesh2_face_ybnds" ;
double Mesh2_face_xbnds(nMesh2_face,Three) ;
Mesh2_face_xbnds:standard_name = "longitude" ;
Mesh2_face_xbnds:long_name = "Longitude bounds of 2D mesh triangle (i.e. corner coordinates)." ;
Mesh2_face_xbnds:units = "degrees_east" ;
double Mesh2_face_ybnds(nMesh2_face,Three) ;
Mesh2_face_ybnds:standard_name = "latitude" ;
Mesh2_face_ybnds:long_name = "Latitude bounds of 2D mesh triangle (i.e. corner coordinates)." ;
Mesh2_face_ybnds:units = "degrees_north" ;
double Mesh2_edge_x(nMesh2_edge) ;
// as in 2D triangular mesh example
double Mesh2_edge_y(nMesh2_edge) ;
// as in 2D triangular mesh example
// Volume and flux data
double Mesh2_volumes(nMesh2_face) ;
Mesh2_volumes:long_name = "volumes" ;
Mesh2_volumes:units = "m3" ;
Mesh2_volumes:mesh = "Mesh2" ;
Mesh2_volumes:location = "face" ;
Mesh2_volumes:coordinates = "Mesh2_face_x Mesh2_face_y" ;
double Mesh2_fluxes(nMesh2_edge) ;
Mesh2_fluxes:long_name = "flux across edge" ;
Mesh2_fluxes:units = "m3 s-1" ;
Mesh2_fluxes:mesh = "Mesh2"
Mesh2_fluxes:location = "edge" ;
Mesh2_fluxes:coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
|