Changeset 0934db1 in flex_extract.git


Ignore:
Timestamp:
Oct 12, 2018, 7:23:41 PM (6 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
c97d8ec
Parents:
40408cb
Message:

rechanged eccodes implementation, does not work with fortran grib_api lib

Location:
source/python/classes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • source/python/classes/EcFlexpart.py

    r70fee58 r0934db1  
    8282import numpy as np
    8383
    84 from eccodes import (codes_index_select, codes_new_from_index, codes_get,
    85                      codes_get_values, codes_set_values, codes_set,
    86                      codes_write, codes_release, codes_new_from_index,
    87                      codes_index_release, codes_index_get)
     84from gribapi import (grib_set, grib_index_select, grib_new_from_index, grib_get,
     85                     grib_write, grib_get_values, grib_set_values, grib_release,
     86                     grib_index_release, grib_index_get)
     87
     88# from eccodes import (codes_index_select, codes_new_from_index, codes_get,
     89                     # codes_get_values, codes_set_values, codes_set,
     90                     # codes_write, codes_release, codes_new_from_index,
     91                     # codes_index_release, codes_index_get)
    8892
    8993# software specific classes and modules from flex_extract
     
    433437            #index_vals.append(grib_index_get(iid, key))
    434438            #print(index_vals[-1])
    435             key_vals = codes_index_get(iid, key)
     439            key_vals = grib_index_get(iid, key)
    436440            print(key_vals)
    437441            # have to sort the steps for disaggregation,
     
    791795
    792796            for i in range(len(index_keys)):
    793                 codes_index_select(iid, index_keys[i], prod[i])
     797                grib_index_select(iid, index_keys[i], prod[i])
    794798
    795799            # get first id from current product
    796             gid = codes_new_from_index(iid)
     800            gid = grib_new_from_index(iid)
    797801
    798802            # if there is no data for this specific time combination / product
     
    802806
    803807            # create correct timestamp from the three time informations
    804             cdate = str(codes_get(gid, 'date'))
    805             ctime = '{:0>2}'.format(codes_get(gid, 'time')/100)
    806             cstep = '{:0>3}'.format(codes_get(gid, 'step'))
     808            cdate = str(grib_get(gid, 'date'))
     809            ctime = '{:0>2}'.format(grib_get(gid, 'time')/100)
     810            cstep = '{:0>3}'.format(grib_get(gid, 'step'))
    807811            t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H')
    808812            t_dt = t_date + timedelta(hours=int(cstep))
     
    836840                if not gid:
    837841                    break
    838                 cparamId = str(codes_get(gid, 'paramId'))
    839                 step = codes_get(gid, 'step')
    840                 time = codes_get(gid, 'time')
    841                 ni = codes_get(gid, 'Ni')
    842                 nj = codes_get(gid, 'Nj')
     842                cparamId = str(grib_get(gid, 'paramId'))
     843                step = grib_get(gid, 'step')
     844                time = grib_get(gid, 'time')
     845                ni = grib_get(gid, 'Ni')
     846                nj = grib_get(gid, 'Nj')
    843847                if cparamId in valsdict.keys():
    844                     values = codes_get_values(gid)
     848                    values = grib_get_values(gid)
    845849                    vdp = valsdict[cparamId]
    846850                    svdp = svalsdict[cparamId]
     
    881885                                values = svdp[0]
    882886
    883                         codes_set_values(gid, values)
     887                        grib_set_values(gid, values)
    884888
    885889                        if c.maxstep > 12:
    886                             codes_set(gid, 'step', max(0, step-2*int(c.dtime)))
     890                            grib_set(gid, 'step', max(0, step-2*int(c.dtime)))
    887891                        else:
    888                             codes_set(gid, 'step', 0)
    889                             codes_set(gid, 'time', t_m2dt.hour*100)
    890                             codes_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d')))
     892                            grib_set(gid, 'step', 0)
     893                            grib_set(gid, 'time', t_m2dt.hour*100)
     894                            grib_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d')))
    891895
    892896                        with open(fnout, 'w') as f_handle:
    893                             codes_write(gid, f_handle)
     897                            grib_write(gid, f_handle)
    894898
    895899                        if c.basetime:
     
    911915
    912916                            values = svdp[3]
    913                             codes_set_values(gid, values)
    914                             codes_set(gid, 'step', 0)
     917                            grib_set_values(gid, values)
     918                            grib_set(gid, 'step', 0)
    915919                            truedatetime = t_m2dt + timedelta(hours=
    916920                                                              2*int(c.dtime))
    917                             codes_set(gid, 'time', truedatetime.hour * 100)
    918                             codes_set(gid, 'date', truedatetime.year * 10000 +
     921                            grib_set(gid, 'time', truedatetime.hour * 100)
     922                            grib_set(gid, 'date', truedatetime.year * 10000 +
    919923                                      truedatetime.month * 100 +
    920924                                      truedatetime.day)
    921925                            with open(hnout, 'w') as h_handle:
    922                                 codes_write(gid, h_handle)
     926                                grib_write(gid, h_handle)
    923927
    924928                            #values = (svdp[1]+svdp[2])/2.
     
    928932                                values = disaggregation.dapoly(list(reversed(svdp)))
    929933
    930                             codes_set(gid, 'step', 0)
     934                            grib_set(gid, 'step', 0)
    931935                            truedatetime = t_m2dt + timedelta(hours=int(c.dtime))
    932                             codes_set(gid, 'time', truedatetime.hour * 100)
    933                             codes_set(gid, 'date', truedatetime.year * 10000 +
     936                            grib_set(gid, 'time', truedatetime.hour * 100)
     937                            grib_set(gid, 'date', truedatetime.year * 10000 +
    934938                                     truedatetime.month * 100 +
    935939                                     truedatetime.day)
    936                             codes_set_values(gid, values)
     940                            grib_set_values(gid, values)
    937941                            with open(gnout, 'w') as g_handle:
    938                                 codes_write(gid, g_handle)
    939 
    940                 codes_release(gid)
    941 
    942                 gid = codes_new_from_index(iid)
    943 
    944         codes_index_release(iid)
     942                                grib_write(gid, g_handle)
     943
     944                grib_release(gid)
     945
     946                gid = grib_new_from_index(iid)
     947
     948        grib_index_release(iid)
    945949
    946950        return
     
    10161020
    10171021            for i in range(len(index_keys)):
    1018                 codes_index_select(iid, index_keys[i], prod[i])
     1022                grib_index_select(iid, index_keys[i], prod[i])
    10191023
    10201024            # get first id from current product
    1021             gid = codes_new_from_index(iid)
     1025            gid = grib_new_from_index(iid)
    10221026
    10231027            # if there is no data for this specific time combination / product
     
    10341038
    10351039            # create correct timestamp from the three time informations
    1036             cdate = str(codes_get(gid, 'date'))
    1037             ctime = '{:0>2}'.format(codes_get(gid, 'time')/100)
    1038             cstep = '{:0>3}'.format(codes_get(gid, 'step'))
     1040            cdate = str(grib_get(gid, 'date'))
     1041            ctime = '{:0>2}'.format(grib_get(gid, 'time')/100)
     1042            cstep = '{:0>3}'.format(grib_get(gid, 'step'))
    10391043            timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H')
    10401044            timestamp += timedelta(hours=int(cstep))
     
    10641068                if not gid:
    10651069                    break
    1066                 paramId = codes_get(gid, 'paramId')
    1067                 gridtype = codes_get(gid, 'gridType')
    1068                 levtype = codes_get(gid, 'typeOfLevel')
     1070                paramId = grib_get(gid, 'paramId')
     1071                gridtype = grib_get(gid, 'gridType')
     1072                levtype = grib_get(gid, 'typeOfLevel')
    10691073                if paramId == 77: # ETADOT
    1070                     codes_write(gid, fdict['21'])
     1074                    grib_write(gid, fdict['21'])
    10711075                elif paramId == 130: # T
    1072                     codes_write(gid, fdict['11'])
     1076                    grib_write(gid, fdict['11'])
    10731077                elif paramId == 131 or paramId == 132: # U, V wind component
    1074                     codes_write(gid, fdict['10'])
     1078                    grib_write(gid, fdict['10'])
    10751079                elif paramId == 133 and gridtype != 'reduced_gg': # Q
    1076                     codes_write(gid, fdict['17'])
     1080                    grib_write(gid, fdict['17'])
    10771081                elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian
    1078                     codes_write(gid, fdict['18'])
     1082                    grib_write(gid, fdict['18'])
    10791083                elif paramId == 135: # W
    1080                     codes_write(gid, fdict['19'])
     1084                    grib_write(gid, fdict['19'])
    10811085                elif paramId == 152: # LNSP
    1082                     codes_write(gid, fdict['12'])
     1086                    grib_write(gid, fdict['12'])
    10831087                elif paramId == 155 and gridtype == 'sh': # D
    1084                     codes_write(gid, fdict['13'])
     1088                    grib_write(gid, fdict['13'])
    10851089                elif paramId == 246 or paramId == 247: # CLWC, CIWC
    10861090                    # sum cloud liquid water and ice
    1087                     if not scwc:
    1088                         scwc = codes_get_values(gid)
     1091                    if scwc is None:
     1092                        scwc = grib_get_values(gid)
    10891093                    else:
    1090                         scwc += codes_get_values(gid)
    1091                         codes_set_values(gid, scwc)
    1092                         codes_set(gid, 'paramId', 201031)
    1093                         codes_write(gid, fdict['22'])
     1094                        scwc += grib_get_values(gid)
     1095                        grib_set_values(gid, scwc)
     1096                        grib_set(gid, 'paramId', 201031)
     1097                        grib_write(gid, fdict['22'])
    10941098                elif c.wrf and paramId in [129, 138, 155] and \
    10951099                      levtype == 'hybrid': # Z, VO, D
     
    11011105                        # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR
    11021106                        # and all ADDPAR parameter
    1103                         codes_write(gid, fdict['16'])
     1107                        grib_write(gid, fdict['16'])
    11041108                        savedfields.append(paramId)
    11051109                    else:
     
    11111115                        if levtype == 'hybrid' and \
    11121116                           paramId in [129, 130, 131, 132, 133, 138, 155]:
    1113                             codes_write(gid, fwrf)
     1117                            grib_write(gid, fwrf)
    11141118                        # sfc layer
    11151119                        elif paramId in wrfpars:
    1116                             codes_write(gid, fwrf)
     1120                            grib_write(gid, fwrf)
    11171121                except AttributeError:
    11181122                    pass
    11191123
    1120                 codes_release(gid)
    1121                 gid = codes_new_from_index(iid)
     1124                grib_release(gid)
     1125                gid = grib_new_from_index(iid)
    11221126
    11231127            for f in fdict.values():
     
    11731177            fwrf.close()
    11741178
    1175         codes_index_release(iid)
     1179        grib_index_release(iid)
    11761180
    11771181        return
  • source/python/classes/GribTools.py

    raa275fc r0934db1  
    4444# ------------------------------------------------------------------------------
    4545import os
    46 
    47 from eccodes import (codes_grib_new_from_file, codes_is_defined, codes_get,
    48                      codes_release, codes_set, codes_write, codes_index_read,
    49                      codes_index_new_from_file, codes_index_add_file,
    50                      codes_index_write)
     46from gribapi import grib_new_from_file, grib_is_defined, grib_get, \
     47     grib_release, grib_set, grib_write, grib_index_read, \
     48     grib_index_new_from_file, grib_index_add_file,  \
     49     grib_index_write
     50
     51
     52# from eccodes import (codes_grib_new_from_file, codes_is_defined, codes_get,
     53                     # codes_release, codes_set, codes_write, codes_index_read,
     54                     # codes_index_new_from_file, codes_index_add_file,
     55                     # codes_index_write)
    5156
    5257# ------------------------------------------------------------------------------
     
    105110
    106111        while 1:
    107             gid = codes_new_from_file(fileid)
     112            gid = grib_new_from_file(fileid)
    108113
    109114            if gid is None:
     
    117122            i = 0
    118123            for wherekey in wherekeynames:
    119                 if not codes_is_defined(gid, wherekey):
     124                if not grib_is_defined(gid, wherekey):
    120125                    raise Exception("where key was not defined")
    121126
    122127                select = (select and (str(wherekeyvalues[i]) ==
    123                                       str(codes_get(gid, wherekey))))
     128                                      str(grib_get(gid, wherekey))))
    124129                i += 1
    125130
     
    127132                llist = []
    128133                for key in keynames:
    129                     llist.extend([str(codes_get(gid, key))])
     134                    llist.extend([str(grib_get(gid, key))])
    130135                return_list.append(llist)
    131136
    132             codes_release(gid)
     137            grib_release(gid)
    133138
    134139        fileid.close()
     
    179184
    180185        while 1:
    181             gid = codes_new_from_file(fin)
     186            gid = grib_new_from_file(fin)
    182187
    183188            if gid is None:
     
    190195            i = 0
    191196            for wherekey in wherekeynames:
    192                 if not codes_is_defined(gid, wherekey):
     197                if not grib_is_defined(gid, wherekey):
    193198                    raise Exception("where Key was not defined")
    194199
    195200                select = (select and (str(wherekeyvalues[i]) ==
    196                                       str(codes_get(gid, wherekey))))
     201                                      str(grib_get(gid, wherekey))))
    197202                i += 1
    198203
     
    200205                i = 0
    201206                for key in keynames:
    202                     codes_set(gid, key, keyvalues[i])
     207                    grib_set(gid, key, keyvalues[i])
    203208                    i += 1
    204209
    205             codes_write(gid, fout)
    206 
    207             codes_release(gid)
     210            grib_write(gid, fout)
     211
     212            grib_release(gid)
    208213
    209214        fin.close()
     
    246251
    247252        while 1:
    248             gid = codes_new_from_file(fin)
     253            gid = grib_new_from_file(fin)
    249254
    250255            if gid is None:
     
    257262            i = 0
    258263            for key in keynames:
    259                 if not codes_is_defined(gid, key):
     264                if not grib_is_defined(gid, key):
    260265                    raise Exception("Key was not defined")
    261266
    262267                if selectWhere:
    263268                    select = (select and (str(keyvalues[i]) ==
    264                                           str(codes_get(gid, key))))
     269                                          str(grib_get(gid, key))))
    265270                else:
    266271                    select = (select and (str(keyvalues[i]) !=
    267                                           str(codes_get(gid, key))))
     272                                          str(grib_get(gid, key))))
    268273                i += 1
    269274
    270275            if select:
    271                 codes_write(gid, fout)
    272 
    273             codes_release(gid)
     276                grib_write(gid, fout)
     277
     278            grib_release(gid)
    274279
    275280        fin.close()
     
    302307
    303308        if os.path.exists(index_file):
    304             iid = codes_index_read(index_file)
     309            iid = grib_index_read(index_file)
    305310            print("Use existing index file: %s " % (index_file))
    306311        else:
     
    308313                print("Inputfile: %s " % (filename))
    309314                if iid is None:
    310                     iid = codes_index_new_from_file(filename, index_keys)
     315                    iid = grib_index_new_from_file(filename, index_keys)
    311316                else:
    312                     codes_index_add_file(iid, filename)
     317                    grib_index_add_file(iid, filename)
    313318
    314319            if iid is not None:
    315                 codes_index_write(iid, index_file)
     320                grib_index_write(iid, index_file)
    316321
    317322        print('... index done')
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG