diff --git a/Source/Python/Classes/EcFlexpart.py b/Source/Python/Classes/EcFlexpart.py index e3b3faa51ce3bdee1e6a19b195bde345c81d0693..65ba97f7e4212e4187accda307d79436bee23231 100644 --- a/Source/Python/Classes/EcFlexpart.py +++ b/Source/Python/Classes/EcFlexpart.py @@ -1415,7 +1415,7 @@ class EcFlexpart(object): keynames=['perturbationNumber', 'date', 'time', 'stepRange', 'values'], keyvalues=[inumb, int(date.strftime('%Y%m%d')), - date.hour*100, 0, lsp_new_np[inumb, :, it]], + date.hour*100, 0, lsp_new_np[inumb, :, it]] ) fluxfile.set_keys(tmpfile, filemode='ab', wherekeynames=['paramId'], wherekeyvalues=[143], @@ -1478,12 +1478,9 @@ class EcFlexpart(object): ''' gribfile = GribUtil(os.path.join(inputdir, 'rr_grib_dummy.grb')) - - gribfile.copy_dummy_msg(ifile, keynames=['paramId'], - keyvalues=[142], filemode='wb') - - gribfile.copy_dummy_msg(ifile, keynames=['paramId'], - keyvalues=[143], filemode='ab') + + gribfile.copy_dummy_msg(ifile, keynames=['paramId','paramId'], + keyvalues=[142,143], filemode='wb') return @@ -1754,7 +1751,10 @@ class EcFlexpart(object): '/OG_OROLSM__SL.*.' + c.ppid + '*')[0]) - fluxfile = 'flux' + cdate[0:2] + suffix + if c.marsclass == 'EP': + fluxfile = 'flux' + suffix + else: + fluxfile = 'flux' + cdate[0:2] + suffix if not c.cwc: flist = ['fort.15', fluxfile, 'fort.16', orolsm] else: diff --git a/Source/Python/Classes/GribUtil.py b/Source/Python/Classes/GribUtil.py index a4c7bbca6166cf6a7c9f4975bef6ca0e222cd77d..6712f354f0e7af7189b2b6db97e47c225559011f 100644 --- a/Source/Python/Classes/GribUtil.py +++ b/Source/Python/Classes/GribUtil.py @@ -121,8 +121,8 @@ class GribUtil(object): return return_list - def set_keys(self, fromfile, keynames, keyvalues, wherekeynames, - wherekeyvalues, filemode='wb'): + def set_keys(self, fromfile, filemode='wb', keynames=[], keyvalues=[], + wherekeynames=[], wherekeyvalues=[]): '''Opens the file to read the grib messages and then write the selected messages (with wherekeys) to a new output file. Also, the keyvalues of the passed list of keynames are set. @@ -161,34 +161,37 @@ class GribUtil(object): raise Exception("Give a value for each keyname!") fout = open(self.filenames, filemode) - - with open(fromfile, 'rb') as fin: + # print(fout) + fin = open(fromfile, 'rb') + # print(fin) + while True: gid = codes_grib_new_from_file(fin) - + # print('test') + if gid is None: + break + select = True - i = 0 - for wherekey in wherekeynames: + #print(str(codes_get(gid,'paramId'))) + for i, wherekey in enumerate(wherekeynames): if not codes_is_defined(gid, wherekey): raise Exception("wherekey was not defined") select = (select and (str(wherekeyvalues[i]) == str(codes_get(gid, wherekey)))) - i += 1 if select: - i = 0 - for key in keynames: + for i, key in enumerate(keynames): if key == 'values': codes_set_values(gid, keyvalues[i]) else: codes_set(gid, key, keyvalues[i]) - i += 1 codes_write(gid, fout) codes_release(gid) fout.close() + fin.close() return @@ -228,21 +231,24 @@ class GribUtil(object): if len(keynames) != len(keyvalues): raise Exception("Give a value for each keyname!") - fout = open(self.filenames, filemode) - + fin = open(filename_in, 'rb') + fields = 0 - - with open(filename_in, 'rb') as fin: - if fields >= 1: + while True: + if fields >= len(keyvalues): fout.close() + fin.close() return - + gid = codes_grib_new_from_file(fin) + if gid is None: + break - select = True - i = 0 - for key in keynames: + for i, key in enumerate(keynames): + + select = True + if not codes_is_defined(gid, key): raise Exception("Key was not defined") @@ -252,15 +258,15 @@ class GribUtil(object): else: select = (select and (str(keyvalues[i]) != str(codes_get(gid, key)))) - i += 1 - - if select: - fields = fields + 1 - codes_write(gid, fout) - + + if select: + fields = fields + 1 + codes_write(gid, fout) + codes_release(gid) fout.close() + fin.close() return