Changeset 0934db1 in flex_extract.git for source/python/classes/EcFlexpart.py
- Timestamp:
- Oct 12, 2018, 7:23:41 PM (6 years ago)
- Branches:
- master, ctbto, dev
- Children:
- c97d8ec
- Parents:
- 40408cb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
source/python/classes/EcFlexpart.py
r70fee58 r0934db1 82 82 import numpy as np 83 83 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) 84 from 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) 88 92 89 93 # software specific classes and modules from flex_extract … … 433 437 #index_vals.append(grib_index_get(iid, key)) 434 438 #print(index_vals[-1]) 435 key_vals = codes_index_get(iid, key)439 key_vals = grib_index_get(iid, key) 436 440 print(key_vals) 437 441 # have to sort the steps for disaggregation, … … 791 795 792 796 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]) 794 798 795 799 # get first id from current product 796 gid = codes_new_from_index(iid)800 gid = grib_new_from_index(iid) 797 801 798 802 # if there is no data for this specific time combination / product … … 802 806 803 807 # 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')) 807 811 t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H') 808 812 t_dt = t_date + timedelta(hours=int(cstep)) … … 836 840 if not gid: 837 841 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') 843 847 if cparamId in valsdict.keys(): 844 values = codes_get_values(gid)848 values = grib_get_values(gid) 845 849 vdp = valsdict[cparamId] 846 850 svdp = svalsdict[cparamId] … … 881 885 values = svdp[0] 882 886 883 codes_set_values(gid, values)887 grib_set_values(gid, values) 884 888 885 889 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))) 887 891 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'))) 891 895 892 896 with open(fnout, 'w') as f_handle: 893 codes_write(gid, f_handle)897 grib_write(gid, f_handle) 894 898 895 899 if c.basetime: … … 911 915 912 916 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) 915 919 truedatetime = t_m2dt + timedelta(hours= 916 920 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 + 919 923 truedatetime.month * 100 + 920 924 truedatetime.day) 921 925 with open(hnout, 'w') as h_handle: 922 codes_write(gid, h_handle)926 grib_write(gid, h_handle) 923 927 924 928 #values = (svdp[1]+svdp[2])/2. … … 928 932 values = disaggregation.dapoly(list(reversed(svdp))) 929 933 930 codes_set(gid, 'step', 0)934 grib_set(gid, 'step', 0) 931 935 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 + 934 938 truedatetime.month * 100 + 935 939 truedatetime.day) 936 codes_set_values(gid, values)940 grib_set_values(gid, values) 937 941 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) 945 949 946 950 return … … 1016 1020 1017 1021 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]) 1019 1023 1020 1024 # get first id from current product 1021 gid = codes_new_from_index(iid)1025 gid = grib_new_from_index(iid) 1022 1026 1023 1027 # if there is no data for this specific time combination / product … … 1034 1038 1035 1039 # 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')) 1039 1043 timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H') 1040 1044 timestamp += timedelta(hours=int(cstep)) … … 1064 1068 if not gid: 1065 1069 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') 1069 1073 if paramId == 77: # ETADOT 1070 codes_write(gid, fdict['21'])1074 grib_write(gid, fdict['21']) 1071 1075 elif paramId == 130: # T 1072 codes_write(gid, fdict['11'])1076 grib_write(gid, fdict['11']) 1073 1077 elif paramId == 131 or paramId == 132: # U, V wind component 1074 codes_write(gid, fdict['10'])1078 grib_write(gid, fdict['10']) 1075 1079 elif paramId == 133 and gridtype != 'reduced_gg': # Q 1076 codes_write(gid, fdict['17'])1080 grib_write(gid, fdict['17']) 1077 1081 elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian 1078 codes_write(gid, fdict['18'])1082 grib_write(gid, fdict['18']) 1079 1083 elif paramId == 135: # W 1080 codes_write(gid, fdict['19'])1084 grib_write(gid, fdict['19']) 1081 1085 elif paramId == 152: # LNSP 1082 codes_write(gid, fdict['12'])1086 grib_write(gid, fdict['12']) 1083 1087 elif paramId == 155 and gridtype == 'sh': # D 1084 codes_write(gid, fdict['13'])1088 grib_write(gid, fdict['13']) 1085 1089 elif paramId == 246 or paramId == 247: # CLWC, CIWC 1086 1090 # 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) 1089 1093 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']) 1094 1098 elif c.wrf and paramId in [129, 138, 155] and \ 1095 1099 levtype == 'hybrid': # Z, VO, D … … 1101 1105 # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR 1102 1106 # and all ADDPAR parameter 1103 codes_write(gid, fdict['16'])1107 grib_write(gid, fdict['16']) 1104 1108 savedfields.append(paramId) 1105 1109 else: … … 1111 1115 if levtype == 'hybrid' and \ 1112 1116 paramId in [129, 130, 131, 132, 133, 138, 155]: 1113 codes_write(gid, fwrf)1117 grib_write(gid, fwrf) 1114 1118 # sfc layer 1115 1119 elif paramId in wrfpars: 1116 codes_write(gid, fwrf)1120 grib_write(gid, fwrf) 1117 1121 except AttributeError: 1118 1122 pass 1119 1123 1120 codes_release(gid)1121 gid = codes_new_from_index(iid)1124 grib_release(gid) 1125 gid = grib_new_from_index(iid) 1122 1126 1123 1127 for f in fdict.values(): … … 1173 1177 fwrf.close() 1174 1178 1175 codes_index_release(iid)1179 grib_index_release(iid) 1176 1180 1177 1181 return
Note: See TracChangeset
for help on using the changeset viewer.