import numpy as np import cxios from unstructured import ker from dynamico.meshes import radian from mpi4py import MPI #----------------------------------------------------------------------------- def setup_curvilinear(cat,id,nx,ny,displ,index_own_i,index_own_j,lon,lat): mesh = cxios.Handle(cat,id) def log(name,data) : print 'setup_curvilinear : %s shape min max'%name, data.shape, data.min(), data.max() log('index_own_i',index_own_i) log('index_own_j',index_own_j) log('lon',lon) log('lat',lat) mesh.set_attr(type='curvilinear', ni_glo=nx, i_index=index_own_i, nj_glo=ny, j_index=index_own_j) mesh.set_attr(lonvalue_1d=lon.flatten(), latvalue_1d=lat.flatten()) def cf_boundaries(degree,points,lon,lat): n, nvertex = len(degree), degree.max() bnd_lon, bnd_lat = np.zeros((n,nvertex)),np.zeros((n,nvertex)) for ij in range(n): nb=degree[ij] for k in range(nb): vertex = points[ij,k] bnd_lon[ij,k]=lon[vertex] bnd_lat[ij,k]=lat[vertex] for k in range(nb,nvertex): # repeat last vertex if nb