Beispiel #1
0
def newdate_options_get(option):
    """
    Get option for newdate, incdatr, difdatr

    Args:
        option : option name (str)
                 possible values:
                    'year'
    Returns:
        option value (str)
    Raises:
        TypeError if option not a string

    Examples:
    >>> import rpnpy.librmn.all as rmn
    >>> value = rmn.newdate_options_get('year')

    See also:
        newdate_options_set
        ignore_leapyear
        accept_leapyear
        newdate
    """
    cmd = 'get '
    optionv = _C_MKSTR(option.strip()+' '*32)
    loptionv = len(optionv.value)
    _rp.f_newdate_options(optionv, _C_WCHAR2CHAR(cmd), loptionv, len(cmd))
    if isinstance(optionv.value, bytes):
        return _C_CHAR2WCHAR(optionv.value).strip()
    else:
        return optionv.value.strip()
Beispiel #2
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])
Beispiel #3
0
 def testNewReadGetChar(self):
     vgd0ptr = self._newReadBcmk()
     #print vgd0ptr[0].ref_name
     v1 = C_MKSTR(' ' * vgd.VGD_MAXSTR_NOMVAR)
     quiet = ct.c_int(0)
     ok = vgd.c_vgd_get_char(vgd0ptr, _C_WCHAR2CHAR('RFLD'), v1, quiet)
     self.assertEqual(ok, vgd.VGD_OK)
     self.assertEqual(_C_CHAR2WCHAR(v1.value).strip(), 'P0')
Beispiel #4
0
 def testNewReadPutChar(self):
     vgd0ptr = self._newReadBcmk()
     v1 = C_MKSTR('PRES')
     quiet = ct.c_int(0)
     ok = vgd.c_vgd_put_char(vgd0ptr, _C_WCHAR2CHAR('ETIK'), v1)
     self.assertEqual(ok, vgd.VGD_OK)
     v2 = C_MKSTR(' ' * vgd.VGD_MAXSTR_NOMVAR)
     ok = vgd.c_vgd_get_char(vgd0ptr, _C_WCHAR2CHAR('ETIK'), v2, quiet)
     self.assertEqual(ok, vgd.VGD_OK)
     self.assertEqual(_C_CHAR2WCHAR(v2.value).strip(), 'PRES')