def testLevels_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 levels = np.empty((ni, nj, nip1.value), dtype=np.float32, order='FORTRAN') ok = vgd.c_vgd_levels(vgd0ptr, ni, nj, nip1, ip1list, levels, rfld, in_log); self.assertEqual(ok,vgd.VGD_OK) self.assertEqual([int(x) for x in levels[ni//2,nj//2,0:5]*10000.], [100000, 138425, 176878, 241408, 305980])
def testLevels_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.float32, order='FORTRAN') p0_stn[0] = p0_stn_mb * MB2PA prof = np.empty((nip1.value, ), dtype=np.float32, order='FORTRAN') ni = 1 nj = 1 in_log = 0 ok = vgd.c_vgd_levels(vgd0ptr, ni, nj, nip1, ip1list, prof, p0_stn, in_log) self.assertEqual(ok, vgd.VGD_OK) self.assertEqual([int(x) for x in prof[0:5] * 10000.], [100000, 138426, 176879, 241410, 305984])
def testLevels_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.float32, order='FORTRAN') p0_stn[0] = p0_stn_mb * MB2PA prof = np.empty((nip1.value,), dtype=np.float32, order='FORTRAN') ni = 1 ; nj = 1 ; in_log = 0 ok = vgd.c_vgd_levels(vgd0ptr, ni, nj, nip1, ip1list, prof, p0_stn, in_log); self.assertEqual(ok,vgd.VGD_OK) self.assertEqual([int(x) for x in prof[0:5]*10000.], [100000, 138426, 176879, 241410, 305984])
def testLevels_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, nj, in_log) = (rfld.shape[0], rfld.shape[1], 0) levels = np.empty((ni, nj, nip1.value), dtype=np.float32, order='FORTRAN') ok = vgd.c_vgd_levels(vgd0ptr, ni, nj, nip1, ip1list, levels, rfld, in_log); self.assertEqual(ok,vgd.VGD_OK) self.assertEqual([int(x) for x in levels[ni//2,nj//2,0:5]*10000.], [100000, 138425, 176878, 241408, 305980])