Exemplo n.º 1
0
    def testDiag_withref8_3d(self):
        ATM_MODEL_DFILES = os.getenv('ATM_MODEL_DFILES').strip()
        fileName = os.path.join(ATM_MODEL_DFILES,'bcmk_toctoc','2009042700_000')
        fileId = rmn.fstopenall(fileName, rmn.FST_RO)
        
        vgd0ptr = vgd.c_vgd_construct()
        ok = vgd.c_vgd_new_read(vgd0ptr,fileId,-1,-1,-1,-1)

        rfld_name = C_MKSTR(' '*vgd.VGD_MAXSTR_NOMVAR)
        quiet = ct.c_int(0)
        ok = vgd.c_vgd_get_char(vgd0ptr, 'RFLD', rfld_name, quiet)

        rfld = rmn.fstlir(fileId, nomvar=rfld_name.value.strip())['d']
        MB2PA = 100.
        rfld = rfld * MB2PA
        
        rmn.fstcloseall(fileId)

        ip1list = ct.POINTER(ct.c_int)()
        nip1 = ct.c_int(0)
        quiet = ct.c_int(0)
        ok = vgd.c_vgd_get_int_1d(vgd0ptr, 'VIPM', ct.byref(ip1list), ct.byref(nip1), quiet)
        
        ni = rfld.shape[0] ; nj = rfld.shape[1] ; in_log = 0
        levels8 = np.empty((ni, nj, nip1.value), dtype=np.float64, order='FORTRAN')
        rfld8 = np.empty((ni, nj), dtype=np.float64, order='FORTRAN')
        rfld8[:,:] = rfld[:,:]
        ok = vgd.c_vgd_diag_withref_8(vgd0ptr, ni, nj, nip1, ip1list, levels8, rfld8, in_log, vgd.VGD_DIAG_DPIS)
        self.assertEqual(ok,vgd.VGD_OK)
        self.assertEqual([int(x) for x in levels8[ni//2,nj//2,0:5]*10000.],
                         [100000, 138425, 176878, 241408, 305980])
Exemplo n.º 2
0
    def testLevels8_prof(self):
        ATM_MODEL_DFILES = os.getenv('ATM_MODEL_DFILES').strip()
        fileName = os.path.join(ATM_MODEL_DFILES, 'bcmk_toctoc',
                                '2009042700_000')
        fileId = rmn.fstopenall(fileName, rmn.FST_RO)

        vgd0ptr = vgd.c_vgd_construct()
        ok = vgd.c_vgd_new_read(vgd0ptr, fileId, -1, -1, -1, -1)

        rmn.fstcloseall(fileId)

        ip1list = ct.POINTER(ct.c_int)()
        nip1 = ct.c_int(0)
        quiet = ct.c_int(0)
        ok = vgd.c_vgd_get_int_1d(vgd0ptr, _C_WCHAR2CHAR('VIPM'),
                                  ct.byref(ip1list), ct.byref(nip1), quiet)

        MB2PA = 100.
        p0_stn_mb = 1013.
        p0_stn = np.empty((1, ), dtype=np.float64, order='FORTRAN')
        p0_stn[0] = p0_stn_mb * MB2PA

        prof8 = np.empty((nip1.value, ), dtype=np.float64, order='FORTRAN')

        ni = 1
        nj = 1
        in_log = 0
        ok = vgd.c_vgd_levels_8(vgd0ptr, ni, nj, nip1, ip1list, prof8, p0_stn,
                                in_log)
        self.assertEqual(ok, vgd.VGD_OK)
        self.assertEqual([int(x) for x in prof8[0:5] * 10000.],
                         [100000, 138426, 176879, 241410, 305984])
Exemplo n.º 3
0
    def testLevels8_prof(self):
        ATM_MODEL_DFILES = os.getenv('ATM_MODEL_DFILES').strip()
        fileName = os.path.join(ATM_MODEL_DFILES,'bcmk_toctoc','2009042700_000')
        fileId = rmn.fstopenall(fileName, rmn.FST_RO)
        
        vgd0ptr = vgd.c_vgd_construct()
        ok = vgd.c_vgd_new_read(vgd0ptr,fileId,-1,-1,-1,-1)

        rmn.fstcloseall(fileId)

        ip1list = ct.POINTER(ct.c_int)()
        nip1 = ct.c_int(0)
        quiet = ct.c_int(0)
        ok = vgd.c_vgd_get_int_1d(vgd0ptr, 'VIPM', ct.byref(ip1list), ct.byref(nip1), quiet)

        MB2PA = 100.
        p0_stn_mb = 1013.
        p0_stn = np.empty((1,), dtype=np.float64, order='FORTRAN')
        p0_stn[0] = p0_stn_mb * MB2PA

        prof8 = np.empty((nip1.value,), dtype=np.float64, order='FORTRAN')

        ni = 1 ; nj = 1 ; in_log = 0
        ok = vgd.c_vgd_levels_8(vgd0ptr, ni, nj, nip1, ip1list, prof8, p0_stn, in_log);
        self.assertEqual(ok,vgd.VGD_OK)
        self.assertEqual([int(x) for x in prof8[0:5]*10000.],
                         [100000, 138426, 176879, 241410, 305984])
Exemplo n.º 4
0
    def testDiag_withref8_3d(self):
        ATM_MODEL_DFILES = os.getenv('ATM_MODEL_DFILES').strip()
        fileName = os.path.join(ATM_MODEL_DFILES,'bcmk_toctoc','2009042700_000')
        fileId = rmn.fstopenall(fileName, rmn.FST_RO)

        vgd0ptr = vgd.c_vgd_construct()
        ok = vgd.c_vgd_new_read(vgd0ptr,fileId,-1,-1,-1,-1)

        rfld_name = C_MKSTR(' '*vgd.VGD_MAXSTR_NOMVAR)
        quiet = ct.c_int(0)
        ok = vgd.c_vgd_get_char(vgd0ptr, _C_WCHAR2CHAR('RFLD'), rfld_name, quiet)

        rfld = rmn.fstlir(fileId, nomvar=_C_CHAR2WCHAR(rfld_name.value).strip())['d']
        MB2PA = 100.
        rfld = rfld * MB2PA

        rmn.fstcloseall(fileId)

        ip1list = ct.POINTER(ct.c_int)()
        nip1 = ct.c_int(0)
        quiet = ct.c_int(0)
        ok = vgd.c_vgd_get_int_1d(vgd0ptr, _C_WCHAR2CHAR('VIPM'), ct.byref(ip1list), ct.byref(nip1), quiet)

        ni = rfld.shape[0] ; nj = rfld.shape[1] ; in_log = 0
        levels8 = np.empty((ni, nj, nip1.value), dtype=np.float64, order='FORTRAN')
        rfld8 = np.empty((ni, nj), dtype=np.float64, order='FORTRAN')
        rfld8[:,:] = rfld[:,:]
        ok = vgd.c_vgd_diag_withref_8(vgd0ptr, ni, nj, nip1, ip1list, levels8, rfld8, in_log, vgd.VGD_DIAG_DPIS)
        self.assertEqual(ok,vgd.VGD_OK)
        self.assertEqual([int(x) for x in levels8[ni//2,nj//2,0:5]*10000.],
                         [100000, 138425, 176878, 241408, 305980])
Exemplo n.º 5
0
 def testStda76_temp(self):
     vgd0ptr = self._newReadBcmk()
     ip1list = ct.POINTER(ct.c_int)()
     nip1 = ct.c_int(0)
     quiet = ct.c_int(0)
     ok = vgd.c_vgd_get_int_1d(vgd0ptr, _C_WCHAR2CHAR('VIPM'),
                               ct.byref(ip1list), ct.byref(nip1), quiet)
     temp = np.empty(nip1.value, dtype=np.float32, order='FORTRAN')
     ok = vgd.c_vgd_stda76_temp(vgd0ptr, ip1list, nip1, temp)
     self.assertEqual(ok, vgd.VGD_OK)
Exemplo n.º 6
0
 def testNewReadGetInt1D(self):
     vgd0ptr = self._newReadBcmk()
     ## print vgd0ptr[0].nl_m, vgd0ptr[0].nl_t
     ## print vgd0ptr[0].ip1_m[0]
     v1 = ct.POINTER(ct.c_int)()
     nv = ct.c_int(0)
     quiet = ct.c_int(0)
     ok = vgd.c_vgd_get_int_1d(vgd0ptr, 'VIPM', ct.byref(v1), ct.byref(nv), quiet)
     self.assertEqual(ok,vgd.VGD_OK)
     self.assertEqual(nv.value,158)
     self.assertEqual(v1[0:3],[97642568, 97690568, 97738568])
Exemplo n.º 7
0
 def testNewReadGetInt1D(self):
     vgd0ptr = self._newReadBcmk()
     ## print vgd0ptr[0].nl_m, vgd0ptr[0].nl_t
     ## print vgd0ptr[0].ip1_m[0]
     v1 = ct.POINTER(ct.c_int)()
     nv = ct.c_int(0)
     quiet = ct.c_int(0)
     ok = vgd.c_vgd_get_int_1d(vgd0ptr, _C_WCHAR2CHAR('VIPM'), ct.byref(v1), ct.byref(nv), quiet)
     self.assertEqual(ok,vgd.VGD_OK)
     self.assertEqual(nv.value,158)
     self.assertEqual(v1[0:3],[97642568, 97690568, 97738568])
Exemplo n.º 8
0
 def testStda76_pres(self):
     vgd0ptr = self._newReadBcmk(vcode_name="21002_SLEVE")
     ip1list = ct.POINTER(ct.c_int)()
     nip1 = ct.c_int(0)
     quiet = ct.c_int(0)
     ok = vgd.c_vgd_get_int_1d(vgd0ptr, _C_WCHAR2CHAR('VIPM'),
                               ct.byref(ip1list), ct.byref(nip1), quiet)
     pres = np.empty(nip1.value, dtype=np.float32, order='FORTRAN')
     (p_sfc_temp, p_sfc_pres) = (None, None)
     ok = vgd.c_vgd_stda76_pres(vgd0ptr, ip1list, nip1, pres, p_sfc_temp,
                                p_sfc_pres)
     self.assertEqual(ok, vgd.VGD_OK)
     #TODO: assert pres values
     sfc_temp = ct.c_float(273.15)
     ok = vgd.c_vgd_stda76_pres(vgd0ptr, ip1list, nip1, pres, sfc_temp,
                                p_sfc_pres)
     self.assertEqual(ok, vgd.VGD_OK)
     sfc_pres = ct.c_float(100000.)
     ok = vgd.c_vgd_stda76_pres(vgd0ptr, ip1list, nip1, pres, p_sfc_temp,
                                sfc_pres)
     self.assertEqual(ok, vgd.VGD_OK)