251 prim_grid = get_grid(string[5:])
255 if hasattr(prim_grid,
"clon")
and hasattr(prim_grid,
"clat"):
256 elem_centers_lon, elem_centers_lat = prim_grid.clon, prim_grid.clat
259 prim_grid.vlon[prim_grid.vertex_of_cell], prim_grid.vlat[prim_grid.vertex_of_cell])
261 boundary_edges = (prim_grid.adjacent_cell_of_edge < 0)
262 is_boundary = sum(boundary_edges) != 0
263 boundary_nodes, bnodes_inverse = np.unique(
264 prim_grid.edge_vertices[:, boundary_edges[0, :] + boundary_edges[1, :]], return_inverse=
True)
265 bnodes_inverse = bnodes_inverse.reshape(2, -1)
269 if hasattr(prim_grid,
"elon")
and hasattr(prim_grid,
"elat"):
270 edge_centers_lon, edge_centers_lat = prim_grid.elon[is_boundary], prim_grid.elat[is_boundary]
273 prim_grid.vlon[prim_grid.edge_vertices[:, is_boundary].T], prim_grid.vlat[prim_grid.edge_vertices[:, is_boundary].T])
275 if hasattr(prim_grid,
"elon")
and hasattr(prim_grid,
"elat"):
276 edge_centers_lon, edge_centers_lat = prim_grid.elon, prim_grid.elat
279 prim_grid.vlon[prim_grid.edge_vertices.T], prim_grid.vlat[prim_grid.edge_vertices.T])
281 nelem = len(elem_centers_lon)
282 nedges = len(edge_centers_lon)
283 self.
vlonvlon = np.concatenate([edge_centers_lon, elem_centers_lon, prim_grid.vlon[boundary_nodes]])
284 self.
vlatvlat = np.concatenate([edge_centers_lat, elem_centers_lat, prim_grid.vlat[boundary_nodes]])
288 nedges + prim_grid.adjacent_cell_of_edge[:, ~is_boundary],
289 nedges + nelem + bnodes_inverse,
290 np.stack([range(sum(is_boundary)), nedges + prim_grid.adjacent_cell_of_edge[boundary_edges[0, is_boundary].astype(int), is_boundary]])
293 prim_grid.edge_vertices[:, ~is_boundary],
294 np.stack([boundary_nodes[bnodes_inverse[0, :]], -1*np.ones(bnodes_inverse[0, :].shape, dtype=int)]),
295 prim_grid.edge_vertices[:, is_boundary],
299 [np.stack([np.flatnonzero(~boundary_edges[0, :]), nedges+prim_grid.adjacent_cell_of_edge[0, ~boundary_edges[0, :]]]),
300 np.stack([np.flatnonzero(~boundary_edges[1, :]), nedges+prim_grid.adjacent_cell_of_edge[1, ~boundary_edges[1, :]]]),
301 np.stack([np.flatnonzero(is_boundary), nedges + nelem + bnodes_inverse[0, :]]),
302 np.stack([np.flatnonzero(is_boundary), nedges + nelem + bnodes_inverse[1, :]])
305 prim_grid.edge_vertices[:, ~boundary_edges[0, :]],
306 prim_grid.edge_vertices[:, ~boundary_edges[1, :]],
307 np.stack([boundary_nodes[bnodes_inverse[0, :]], -1*np.ones(bnodes_inverse[0, :].shape, dtype=int)]),
308 np.stack([boundary_nodes[bnodes_inverse[1, :]], -1*np.ones(bnodes_inverse[1, :].shape, dtype=int)]),