def ezinterp(arrayin, arrayin2, src_nij, src_grtyp, src_refparam, src_xyAxis, src_hasAxis, src_ij0, dst_nij, dst_grtyp, dst_refparam, dst_xyAxis, dst_hasAxis, dst_ij0, isVect): """Interpolate from one grid to another newArray = Fstdc.ezinterp(arrayin, arrayin2, (niS, njS), grtypS, (grrefS, ig1S, ig2S, ig3S, ig4S), (xsS, ysS), hasSrcAxis, (i0S, j0S), (niD, njD), grtypD, (grrefD, ig1D, ig2D, ig3D, ig4D), (xsD, ysD), hasDstAxis, (i0D, j0D), isVect) @param ...TODO... @return interpolated data (numpy.ndarray) @exception TypeError @exception Fstdc.error """ try: src_gid = _getGridHandle(src_nij[0], src_nij[1], src_grtyp, src_refparam[0], src_refparam[1], src_refparam[2], src_refparam[3], src_refparam[4], src_ij0[0], src_ij0[1], src_xyAxis[0], src_xyAxis[1]) except: raise error("ezgetlalo: Invalid Source Grid Desc") try: dst_gid = _getGridHandle(dst_nij[0], dst_nij[1], dst_grtyp, dst_refparam[0], dst_refparam[1], dst_refparam[2], dst_refparam[3], dst_refparam[4], dst_ij0[0], dst_ij0[1], dst_xyAxis[0], dst_xyAxis[1]) except: raise error("ezgetlalo: Invalid Source Grid Desc") try: gridsetid = _rmn.ezdefset(dst_gid, src_gid) except: raise error("Problem defining a grid interpolation set") try: if isVect: dst_data = _rmn.ezuvint(dst_gid, src_gid, arrayin, arrayin2) else: dst_data = _rmn.ezsint(dst_gid, src_gid, arrayin) return dst_data except: raise error("Interpolation problem in ezscint")
def test_ezuvint(self): gp1 = self.getGridParams_L() gid1 = rmn.ezqkdef(gp1) self.assertTrue(gid1>=0) gp2 = self.getGridParams_L(0.25) gid2 = rmn.ezqkdef(gp2) self.assertTrue(gid2>=0) setid = rmn.ezdefset(gid2, gid1) self.assertTrue(setid>=0) uuin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN') vvin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN') for x in xrange(gp1['ni']): uuin[:,x] = x vvin = uuin*3. (uuout,vvout) = rmn.ezuvint(gid2,gid1,uuin,vvin) self.assertEqual(gp2['shape'],uuout.shape) self.assertEqual(gp2['shape'],vvout.shape) for j in xrange(gp2['nj']): for i in xrange(gp2['ni']): self.assertTrue(abs((uuin[i,j]+uuin[i+1,j])/2.-uuout[i,j]) < self.epsilon,'uvint, u: abs(%f-%f)=%f' % (((uuin[i,j]+uuin[i+1,j])/2),uuout[i,j],(uuin[i,j]+uuin[i+1,j])/2.-uuout[i,j])) self.assertTrue(abs((vvin[i,j]+vvin[i+1,j])/2.-vvout[i,j]) < self.epsilon,'uvint, v: abs(%f-%f)=%f' % (((vvin[i,j]+vvin[i+1,j])/2),vvout[i,j],(vvin[i,j]+vvin[i+1,j])/2.-vvout[i,j]))
def test_ezuvint(self): gp1 = self.getGridParams_L() gid1 = rmn.ezqkdef(gp1) self.assertTrue(gid1>=0) gp2 = self.getGridParams_L(0.25) gid2 = rmn.ezqkdef(gp2) self.assertTrue(gid2>=0) setid = rmn.ezdefset(gid2, gid1) self.assertTrue(setid>=0) uuin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN') vvin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN') for x in range(gp1['ni']): uuin[:,x] = x vvin = uuin*3. (uuout,vvout) = rmn.ezuvint(gid2,gid1,uuin,vvin) self.assertEqual(gp2['shape'],uuout.shape) self.assertEqual(gp2['shape'],vvout.shape) for j in range(gp2['nj']): for i in range(gp2['ni']): self.assertTrue(abs((uuin[i,j]+uuin[i+1,j])/2.-uuout[i,j]) < self.epsilon,'uvint, u: abs(%f-%f)=%f' % (((uuin[i,j]+uuin[i+1,j])/2),uuout[i,j],(uuin[i,j]+uuin[i+1,j])/2.-uuout[i,j])) self.assertTrue(abs((vvin[i,j]+vvin[i+1,j])/2.-vvout[i,j]) < self.epsilon,'uvint, v: abs(%f-%f)=%f' % (((vvin[i,j]+vvin[i+1,j])/2),vvout[i,j],(vvin[i,j]+vvin[i+1,j])/2.-vvout[i,j]))