Пример #1
0
 def test_ezsint(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)
     zin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN')
     for x in xrange(gp1['ni']):
         zin[:,x] = x
     zout = rmn.ezsint(gid2,gid1,zin)
     self.assertEqual(gp2['shape'],zout.shape)
     for j in xrange(gp2['nj']):
         for i in xrange(gp2['ni']):
             self.assertTrue(abs((zin[i,j]+zin[i+1,j])/2.-zout[i,j]) < self.epsilon)
Пример #2
0
 def test_ezsint(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)
     zin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN')
     for x in range(gp1['ni']):
         zin[:,x] = x
     zout = rmn.ezsint(gid2,gid1,zin)
     self.assertEqual(gp2['shape'],zout.shape)
     for j in range(gp2['nj']):
         for i in range(gp2['ni']):
             self.assertTrue(abs((zin[i,j]+zin[i+1,j])/2.-zout[i,j]) < self.epsilon)
Пример #3
0
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")
Пример #4
0
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")
Пример #5
0
    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]))
Пример #6
0
    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]))