...
Code Block |
---|
netcdf test_map { dimensions: // dimensions for mesh 1 nMesh1_node = 3 ; nMesh1_edge = 2 ; nMaxMesh1_contour_pts = 99 ; nMesh1_cell = 2 ; nMesh1_interface = 2 ; // dimensions for mesh 2 nMesh2_node = 6 ; nMesh2_edge = 7 ; nMesh2_face = 2 ; nMesh2_edge_nodes = 7; nMesh2_face_nodes = 4; nMesh2_face_links = 1; nMaxMesh2_face_nodes = 4; nMaxMesh2_contour_pts = 99 ; // dimensions for mesh 3 nMesh3_node = 6 ; nMesh3_edge = 7 ; nMesh3_face = 2 ; nMesh3_edge_nodes = 7; nMesh3_face_nodes = 4; nMesh3_face_links = 1; nMaxMesh3_face_nodes = 4; nMaxMesh3_contour_pts = 99 ; Mesh3nMesh3_layerslayer = 3 ; Mesh3nMesh3_interfacesinterface = 4; // common dimensions Two = 2; time = UNLIMITED ; // (1 currently) variables: // Basic mesh data (coordinates independent of computational cells whatsoever) double Mesh1_node_x(nMesh1_node) ; Mesh1_node_x:standard_name = "projection_x_coordinate" ; Mesh1_node_x:long_name = "netnodal x-coordinate" ; Mesh1_node_x:units = "m" ; Mesh1_node_x:bounds = "Mesh1_node_contour_x" ; double Mesh1_node_y(nMesh1_node) ; Mesh1_node_y:standard_name = "projection_y_coordinate" ; Mesh1_node_y:long_name = "netnodal y-coordinate" ; Mesh1_node_y:units = "m" ; Mesh1_node_y:bounds = "Mesh1_node_contour_y" ; double Mesh1_edge_x(nMesh1_edge) ; Mesh1_edge_x:standard_name = "projection_x_coordinate" ; Mesh1_edge_x:long_name = "Center coordinate of net link (velocity point)." ; Mesh1_edge_x:units = "m" ; double Mesh1_edge_y(nMesh1_edge) ; Mesh1_edge_y:standard_name = "projection_y_coordinate" ; Mesh1_edge_y:long_name = "Center coordinate of net link (velocity point)." ; Mesh1_edge_y:units = "m" ; double Mesh1_node_contour_x(nMesh1_node, nMaxMesh1_contour_pts) ; Mesh1_node_contour_x:standard_name = "projection_x_coordinate" ; Mesh1_node_contour_x:long_name = "List of x-points that form outline of flow volume" ; Mesh1_node_contour_x:units = "m" ; double Mesh1_node_contour_y(nMesh1_node, nMaxMesh1_contour_pts) ; Mesh1_node_contour_y:standard_name = "projection_y_coordinate" ; Mesh1_node_contour_y:units = "m" ; Mesh1_node_contour_y:long_name = "List of y-points that form outline of flow volume" ; // Basic mesh topology integer Mesh1_edge_nodes(nMesh1_edge, Two) ; Mesh1_edge_nodes:long_name = "links between two nodes" ; integer Mesh1 ; Mesh1:long_name = "Topology data of Mesh1" ; Mesh1:dimensionality = 1 ; Mesh1:locations = "link node" ; Mesh1:node_coordinates = "Mesh1_node_x Mesh1_node_y" ; Mesh1:edge_coordinates = "Mesh1_edge_x Mesh1_edge_y" ; Mesh1:edge_nodes = "Mesh1_edge_nodes" ; Mesh1:parent_mesh = "CombinedMesh" ; // Similar for Mesh2 double Mesh2_node_x(nMesh2_node) ; Mesh2_node_x:standard_name = "projection_x_coordinate" ; Mesh2_node_x:long_name = "netnodal x-coordinate" ; Mesh2_node_x:units = "m" ; double Mesh2_node_y(nMesh2_node) ; Mesh2_node_y:standard_name = "projection_y_coordinate" ; Mesh2_node_y:long_name = "netnodal y-coordinate" ; Mesh2_node_y:units = "m" ; double Mesh2_face_x(nMesh2_face) ; Mesh2_face_x:standard_name = "projection_x_coordinate" ; Mesh2_face_x:long_name = "Flow element circumcenter x" ; Mesh2_face_x:units = "m" ; Mesh2_face_x:bounds = "Mesh2_face_contour_x" ; double Mesh2_face_y(nMesh2_face) ; Mesh2_face_y:standard_name = "projection_y_coordinate" ; Mesh2_face_y:long_name = "Flow element circumcenter y" ; Mesh2_face_y:units = "m" ; Mesh2_face_y:bounds = "Mesh2_face_contour_y" ; double Mesh2_face_contour_x(nMesh2_face, nMaxMesh2_contour_pts) ; Mesh2_face_contour_x:standard_name = "projection_x_coordinate" ; Mesh2_face_contour_x:long_name = "List of x-points that form outline of flow volume" ; Mesh2_face_contour_x:units = "m" ; double Mesh2_face_contour_y(nMesh2_face, nMaxMesh2_contour_pts) ; Mesh2_face_contour_y:standard_name = "projection_y_coordinate" ; Mesh2_face_contour_y:units = "m" ; Mesh2_face_contour_y:long_name = "List of y-points that form outline of flow volume" ; double Mesh2_edge_x(nMesh2_edge) ; Mesh2_edge_x:standard_name = "projection_x_coordinate" ; Mesh2_edge_x:long_name = "Center coordinate of net link (velocity point)." ; Mesh2_edge_x:units = "m" ; double Mesh2_edge_y(nMesh2_edge) ; Mesh2_edge_y:standard_name = "projection_y_coordinate" ; Mesh2_edge_y:long_name = "Center coordinate of net link (velocity point)." ; Mesh2_edge_y:units = "m" ; integer Mesh2_edge_nodes(nMesh2_edge, Two) ; Mesh2_edge_nodes:long_name = "link between two nodes" ; integer Mesh2_face_nodes(nMesh2_face, nMaxMesh2_face_nodes) ; Mesh2_face_nodes:long_name = "Mapping from net face to net nodes." ; integer Mesh2_face_links(nMesh2_face_links, Two) ; FlowLink:long_name = "link/interface between two flow elements (faces)" ; integer Mesh2 ; Mesh2:long_name = "Topology data of Mesh2" ; Mesh2:dimensionality = 2 ; Mesh2:locations = "face edge node" ; Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y" ; Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y" ; Mesh2:edge_nodes = "Mesh2_edge_nodes" ; Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y" ; Mesh2:face_nodes = "Mesh2_face_nodes" ; Mesh2:face_connectivity = "Mesh2_face_links" ; Mesh2:parent_mesh = "CombinedMesh" ; // Similar for Mesh3 double Mesh3_node_x(nMesh3_node) ; Mesh3_node_x:standard_name = "projection_x_coordinate" ; Mesh3_node_x:long_name = "netnodal x-coordinate" ; Mesh3_node_x:units = "m" ; double Mesh3_node_y(nMesh3_node) ; Mesh3_node_y:standard_name = "projection_y_coordinate" ; Mesh3_node_y:long_name = "netnodal y-coordinate" ; Mesh3_node_y:units = "m" ; double Mesh3_face_x(nMesh3_face) ; Mesh3_face_x:standard_name = "projection_x_coordinate" ; Mesh3_face_x:long_name = "Flow element circumcenter x" ; Mesh3_face_x:units = "m" ; Mesh3_face_x:bounds = "Mesh3_face_contour_x" ; double Mesh3_face_y(nMesh3_face) ; Mesh3_face_y:standard_name = "projection_y_coordinate" ; Mesh3_face_y:long_name = "Flow element circumcenter y" ; Mesh3_face_y:units = "m" ; Mesh3_face_y:bounds = "Mesh3_face_contour_y" ; double Mesh3_face_contour_x(nMesh3_face, nMaxMesh3_contour_pts) ; Mesh3_face_contour_x:standard_name = "projection_x_coordinate" ; Mesh3_face_contour_x:long_name = "List of x-points that form outline of flow volume" ; Mesh3_face_contour_x:units = "m" ; double Mesh3_face_contour_y(nMesh3_face, nMaxMesh3_contour_pts) ; Mesh3_face_contour_y:standard_name = "projection_y_coordinate" ; Mesh3_face_contour_y:units = "m" ; Mesh3_face_contour_y:long_name = "List of y-points that form outline of flow volume" ; double Mesh3_edge_x(nMesh3_edge) ; Mesh3_edge_x:standard_name = "projection_x_coordinate" ; Mesh3_edge_x:long_name = "Center coordinate of edges (velocity point)." ; Mesh3_edge_x:units = "m" ; double Mesh3_edge_y(nMesh3_edge) ; Mesh3_edge_y:standard_name = "projection_y_coordinate" ; Mesh3_edge_y:long_name = "Center coordinate of edges (velocity point)." ; Mesh3_edge_y:units = "m" ; integer Mesh3_edge_nodes(nMesh3_edge, Two) ; Mesh3_edge_nodes:long_name = "link between two nodes" ; integer Mesh3_face_nodes(nMesh3_face, nMaxMesh3_face_nodes) ; Mesh3_face_nodes:long_name = "Mapping from faces to nodes." ; integer Mesh3_face_links(nMesh3_face_links, Two) ; FlowLink:long_name = "link/interface between two flow elements (faces)" ; double Mesh3_layers(Mesh3_layers) ; Mesh3_layers:standard_name = "ocean_sigma_coordinate" ; Mesh3_layers:long_name = "sigma at layer midpoints" ; Mesh3_layers:positive = "up" ; Mesh3_layers:formula_terms = "sigma: Mesh3_layers eta: Mesh3_zwl depth: Mesh3_depth" ; double Mesh3_interfaces(Mesh3_interfaces) ; Mesh3_interfaces:standard_name = "ocean_sigma_coordinate" ; Mesh3_interfaces:long_name = "sigma at layer interfaces" ; Mesh3_interfaces:positive = "up" ; Mesh3_interfaces:formula_terms = "sigma: Mesh3_interfaces eta: Mesh3_zwl depth: Mesh3_depth" ; integer Mesh3 ; Mesh3:long_name = "Topology data of Mesh3" ; Mesh3:dimensionality = 2 ; Mesh3:locations = "face edge node" ; Mesh3:node_coordinates = "Mesh3_node_x Mesh3_node_y" ; Mesh3:edge_coordinates = "Mesh3_edge_x Mesh3_edge_y" ; Mesh3:edge_nodes = "Mesh3_edge_nodes" ; Mesh3:face_coordinates = "Mesh3_face_x Mesh3_face_y" ; Mesh3:face_nodes = "Mesh3_face_nodes" ; Mesh3:face_connectivity = "Mesh3_face_links" ; Mesh3:parent_mesh = "CombinedMesh" ; integer CombiMesh_edge_mesh(nCombiMesh_contacts, Two) ; CombiMesh_edge_mesh:long_name = "Mesh number of contact" ; CombiMesh_edge_mesh:valid_range = 0, 2; CombiMesh_edge_mesh:valid_values = 0, 1, 2; CombiMesh_edge_mesh:flag_meanings = "Mesh1 Mesh2 Mesh3" ; integer CombiMesh_edge(nCombiMesh_contacts, Two) ; CombiMesh_edge:long_name = "Edge number of contact" ; integer CombinedMesh(nCombinedMesh_contacts, Four) ; CombinedMesh:long_name = "Topology data of CombinedMesh" ; CombinedMesh:sub_meshes = "Mesh1 Mesh2 Mesh3" ; CombinedMesh:contact = "CombiMesh_edge_mesh CombiMesh_edge" ; double time(time) ; time:standard_name = "time" ; time:units = "seconds since 1992-08-31 00:00:00" ; // 1D mesh nodes may be merged with 2D mesh faces. Or 2D mesh faces may be masked and omitted in // solution output. As a result, allow for a map between flow node numbers and basic mesh entities/numbers). // // Relation between basic mesh (nodes/edges/faces) and computational mesh (corners/interfaces/cells) // (For cell center data, nMesh1_cell <= nMesh1_node, nMesh2_cell <= nMesh2_face) // (In case of identity maps, leave out the location_map, and specify coordinates, grid and location // directly in attributes of solution variable.) double Mesh1_cell_x(nMesh1_cell) ; Mesh1_cell_x:standard_name = "projection_x_coordinate" ; Mesh1_cell_x:long_name = "flow cell circumcenter x-coordinate" ; Mesh1_cell_x:units = "m" ; double Mesh1_cell_y(nMesh1_cell) ; Mesh1_cell_y:standard_name = "projection_y_coordinate" ; Mesh1_cell_y:long_name = "flow cell circumcenter y-coordinate" ; Mesh1_cell_y:units = "m" ; double Mesh1_flownode(nMesh1_cell) ; Mesh1_cell_node:long_name = "map from flowcell to 1D mesh node" ; Mesh1_cell_node:grid = "Mesh1" ; Mesh1_cell_node:location = "node" ; // location of flow cell on topological mesh entity. double Mesh1_flowlink(nMesh1_interface) ; Mesh1_cell_node:long_name = "map from flowlink to 1D mesh edge" ; Mesh1_cell_node:grid = "Mesh1" ; Mesh1_cell_node:location = "edge" ; // location of flow link on topological mesh entity. double Mesh1_zwl(time, nMesh1_nodecell) ; Mesh1_zwl:standard_name = "sea_surface_height_above_geoid" ; Mesh1_zwl:units = "m" ; Mesh1_zwl:gridlocation_map = "Mesh1" Mesh1_zwl:location = "face"Mesh1_flownode" ; Mesh1_zwl:coordinates = "Mesh1_nodecell_x Mesh1_nodecell_y" ; double Mesh1_u(time, nMesh1_edgeinterface) ; Mesh1_zwl:standard_name = "sea_water_speed" ; Mesh1_u:long_name = "Velocity (along the edge)" ; Mesh1_u:units = "m s-1 edge)" ; Mesh1_u:gridunits = "Mesh1"m s-1" ; Mesh1_u:location_map = "edgeMesh1_flowlink" ; Mesh1_u:coordinates = "Mesh1_edgeinterface_x Mesh1_edgeinterface_y" ; double Mesh2_depth(nMesh2_node) ; Mesh2_depth:standard_name = "sea_floor_depth_below_geoid" ; Mesh2_depth:units = "m" ; Mesh2_depth:positive = "down" ; Mesh2_depth:grid = "Mesh2" Mesh2_depth:location = "node" ; Mesh2_depth:coordinates = "Mesh2_node_x Mesh2_node_y" ; double Mesh2_zwl(time, nMesh2_face) ; Mesh2_zwl:standard_name = "sea_surface_height_above_geoid" ; Mesh2_zwl:units = "m" ; Mesh2_zwl:grid = "Mesh2" Mesh2_zwl:location = "face" ; Mesh2_zwl:coordinates = "Mesh2_face_x Mesh2_face_y" ; double Mesh2_ucx(time, nMesh2_face) ; Mesh2_ucx:standard_name = "eastward_sea_water_velocity" ; Mesh2_ucx:units = "m s-1" ; Mesh2_ucx:grid = "Mesh2" Mesh2_ucx:location = "face" ; Mesh2_ucx:coordinates = "Mesh2_face_x Mesh2_face_y" ; double Mesh2_ucy(time, nMesh2_face) ; Mesh2_ucy:standard_name = "northward_sea_water_velocity" ; Mesh2_ucy:units = "m s-1" ; Mesh2_ucy:grid = "Mesh2" Mesh2_ucy:location = "face" ; Mesh2_ucy:coordinates = "Mesh2_face_x Mesh2_face_y" ; double Mesh2_unorm(time, nMesh2_edge) ; Mesh2_unorm:long_name = "Normal component of velocity at the interface" ; Mesh2_unorm:units = "m s-1" ; Mesh2_unorm:grid = "Mesh2" Mesh2_unorm:location = "edge" ; Mesh2_unorm:coordinates = "Mesh2_edge_x Mesh2_edge_y" ; todo: meaning? integer Mesh2_edgetype(nMesh2_edge) ; Mesh2_edgetype:long_name = "Type of edge" ; Mesh2_edgetype:valid_range = 0, 2; Mesh2_edgetype:valid_values = 0, 1, 2; Mesh2_edgetype:flag_meanings = "closed_edge open_internal_edge open_boundary_edge" ; Mesh2_edgetype:grid = "Mesh2" Mesh2_edgetype:location = "edge" ; Mesh2_edgetype:coordinates = "Mesh2_edge_x Mesh2_edge_y" ; double Mesh3_depth(nMesh3_node) ; Mesh3_depth:standard_name = "sea_floor_depth_below_geoid" ; Mesh3_depth:units = "m" ; Mesh3_depth:positive = "down" ; Mesh3_depth:grid = "Mesh3" Mesh3_depth:location = "node" ; Mesh3_depth:coordinates = "Mesh3_node_x Mesh3_node_y" ; double Mesh3_zwl(time, nMesh3_face) ; Mesh3_zwl:standard_name = "sea_surface_height_above_geoid" ; Mesh3_zwl:units = "m" ; Mesh3_zwl:grid = "Mesh3" Mesh3_zwl:location = "face" ; Mesh3_zwl:coordinates = "Mesh3_face_x Mesh3_face_y" ; double Mesh3_ucx(time, nMesh3_face, Mesh3nMesh3_layerslayer) ; Mesh3_ucx:standard_name = "eastward_sea_water_velocity" ; Mesh3_ucx:units = "m s-1" ; Mesh3_ucx:grid = "Mesh3" Mesh3_ucx:location = "face" ; Mesh3_ucx:coordinates = "Mesh3_face_x Mesh3_face_y Mesh3_layers" ; double Mesh3_ucy(time, nMesh3_face, Mesh3nMesh3_layerslayer) ; Mesh3_ucy:standard_name = "northward_sea_water_velocity" ; Mesh3_ucy:units = "m s-1" ; Mesh3_ucy:grid = "Mesh3" Mesh3_ucy:location = "face" ; Mesh3_ucy:coordinates = "Mesh3_face_x Mesh3_face_y Mesh3_layers" ; double Mesh3_unorm(time, nMesh3_edge, Mesh3nMesh3_layerslayer) ; Mesh3_unorm:long_name = "Normal component of velocity at the interface" ; Mesh3_unorm:units = "m s-1" ; Mesh3_unorm:grid = "Mesh3" Mesh3_unorm:location = "edge" ; Mesh3_unorm:coordinates = "Mesh3_edge_x Mesh3_edge_y Mesh3_layers" ; TODO: meaning integer Mesh3_edgetype(nMesh3_edge) ; Mesh3_edgetype:long_name = "Type of edge" ; Mesh3_edgetype:valid_range = 0, 2; Mesh3_edgetype:valid_values = 0, 1, 2; Mesh3_edgetype:flag_meanings = "closed_edge open_internal_edge open_boundary_edge" ; Mesh3_edgetype:grid = "Mesh3" Mesh3_edgetype:location = "edge" ; Mesh3_edgetype:coordinates = "Mesh3_edge_x Mesh3_edge_y" ; // global attributes: :institution = "Deltares" ; :references = "http://www.deltares.nl" ; :source = "UNSTRUC" ; :history = "Created on 2010-04-12, Bert Jagers\n", "2010-06-01, distinguish basic mesh/net and flow mesh, include mapping between the two, Arthur van Dam" ; :Conventions = "CF-1.4:Deltares-0.1" ; |