- Timestamp:
- Aug 13, 2019, 12:35:02 PM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 30f7911
- Parents:
- c77630a (diff), 2d1c338 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- Source
- Files:
-
- 1 added
- 14 edited
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
Source/Python/Classes/ControlFile.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 24 24 # Anne Philipp, Leopold Haimberger 25 25 # 26 # SPDX-License-Identifier: CC-BY-4.0 27 # 26 28 # This work is licensed under the Creative Commons Attribution 4.0 27 29 # International License. To view a copy of this license, visit 28 30 # http://creativecommons.org/licenses/by/4.0/ or send a letter to 29 31 # Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 30 #31 # @Class Methods:32 # __init__33 # _read_controlfile34 # __str__35 # assign_args_to_control36 # assign_envs_to_control37 # check_conditions38 # check_install_conditions39 # to_list40 32 #******************************************************************************* 41 33 -
Source/Python/Classes/EcFlexpart.py
rba99230 rc77630a 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 42 42 # Anne Philipp, Leopold Haimberger 43 43 # 44 # SPDX-License-Identifier: CC-BY-4.0 45 # 44 46 # This work is licensed under the Creative Commons Attribution 4.0 45 47 # International License. To view a copy of this license, visit … … 415 417 # ----------------------------------------------------------------------- 416 418 if wrf: 417 self.params['OG__ML'][0] += '/Z/VO' 418 if '/D' not in self.params['OG__ML'][0]: 419 self.params['OG__ML'][0] += '/D' 420 421 wrf_sfc = ['SP','SKT','SST','CI','STL1','STL2', 'STL3','STL4', 422 'SWVL1','SWVL2','SWVL3','SWVL4'] 423 for par in wrf_sfc: 424 if par not in self.params['OG__SL'][0]: 425 self.params['OG__SL'][0] += '/' + par 419 # @WRF 420 # THIS IS NOT YET CORRECTLY IMPLEMENTED !!! 421 # 422 # UNDER CONSTRUCTION !!! 423 # 424 425 print('WRF VERSION IS UNDER CONSTRUCTION!') # dummy argument 426 427 #self.params['OG__ML'][0] += '/Z/VO' 428 #if '/D' not in self.params['OG__ML'][0]: 429 # self.params['OG__ML'][0] += '/D' 430 431 #wrf_sfc = ['SP','SKT','SST','CI','STL1','STL2', 'STL3','STL4', 432 # 'SWVL1','SWVL2','SWVL3','SWVL4'] 433 #for par in wrf_sfc: 434 # if par not in self.params['OG__SL'][0]: 435 # self.params['OG__SL'][0] += '/' + par 426 436 427 437 return … … 846 856 if area[1] > area[3]: 847 857 area[1] -= 360 848 maxl = round((area[3] - area[1]) / grid[1]) + 1849 maxb = round((area[0] - area[2]) / grid[0]) + 1858 maxl = int(round((area[3] - area[1]) / grid[1])) + 1 859 maxb = int(round((area[0] - area[2]) / grid[0])) + 1 850 860 851 861 stream = namelist_template.generate( … … 1084 1094 1085 1095 print("outputfile = " + fnout) 1086 f_handle = open(fnout, 'w ')1087 h_handle = open(hnout, 'w ')1088 g_handle = open(gnout, 'w ')1096 f_handle = open(fnout, 'wb') 1097 h_handle = open(hnout, 'wb') 1098 g_handle = open(gnout, 'wb') 1089 1099 1090 1100 # read message for message and store relevant data fields, where … … 1392 1402 # write original time step to flux file as usual 1393 1403 fluxfile = GribUtil(os.path.join(c.inputdir, fluxfilename)) 1394 fluxfile.set_keys(tmpfile, filemode='a ', strict=True,1404 fluxfile.set_keys(tmpfile, filemode='ab', strict=True, 1395 1405 wherekeynames=['paramId'], wherekeyvalues=[142], 1396 1406 keynames=['perturbationNumber','date','time','stepRange','values'], … … 1398 1408 date.hour*100, 0, lsp_new_np[inumb,:,it]], 1399 1409 ) 1400 fluxfile.set_keys(tmpfile, filemode='a ', strict=True,1410 fluxfile.set_keys(tmpfile, filemode='ab', strict=True, 1401 1411 wherekeynames=['paramId'], wherekeyvalues=[143], 1402 1412 keynames=['perturbationNumber','date','time','stepRange','values'], … … 1406 1416 1407 1417 # rr for first subgrid point is identified by step = 1 1408 fluxfile.set_keys(tmpfile, filemode='a ', strict=True,1418 fluxfile.set_keys(tmpfile, filemode='ab', strict=True, 1409 1419 wherekeynames=['paramId'], wherekeyvalues=[142], 1410 1420 keynames=['perturbationNumber','date','time','stepRange','values'], … … 1412 1422 date.hour*100, '1', lsp_new_np[inumb,:,it+1]] 1413 1423 ) 1414 fluxfile.set_keys(tmpfile, filemode='a ', strict=True,1424 fluxfile.set_keys(tmpfile, filemode='ab', strict=True, 1415 1425 wherekeynames=['paramId'], wherekeyvalues=[143], 1416 1426 keynames=['perturbationNumber','date','time','stepRange','values'], … … 1420 1430 1421 1431 # rr for second subgrid point is identified by step = 2 1422 fluxfile.set_keys(tmpfile, filemode='a ', strict=True,1432 fluxfile.set_keys(tmpfile, filemode='ab', strict=True, 1423 1433 wherekeynames=['paramId'], wherekeyvalues=[142], 1424 1434 keynames=['perturbationNumber','date','time','stepRange','values'], … … 1426 1436 date.hour*100, '2', lsp_new_np[inumb,:,it+2]] 1427 1437 ) 1428 fluxfile.set_keys(tmpfile, filemode='a ', strict=True,1438 fluxfile.set_keys(tmpfile, filemode='ab', strict=True, 1429 1439 wherekeynames=['paramId'], wherekeyvalues=[143], 1430 1440 keynames=['perturbationNumber','date','time','stepRange','values'], … … 1456 1466 1457 1467 gribfile.copy_dummy_msg(ifile, keynames=['paramId'], 1458 keyvalues=[142], filemode='w ')1468 keyvalues=[142], filemode='wb') 1459 1469 1460 1470 gribfile.copy_dummy_msg(ifile, keynames=['paramId'], 1461 keyvalues=[143], filemode='a ')1471 keyvalues=[143], filemode='ab') 1462 1472 1463 1473 return … … 1502 1512 end_period = end_period + timedelta(hours=int(c.step[-1])) 1503 1513 1504 if c.wrf: 1505 table128 = init128(_config.PATH_GRIBTABLE) 1506 wrfpars = to_param_id('sp/mslp/skt/2t/10u/10v/2d/z/lsm/sst/ci/sd/\ 1507 stl1/stl2/stl3/stl4/swvl1/swvl2/swvl3/swvl4', 1508 table128) 1514 # @WRF 1515 # THIS IS NOT YET CORRECTLY IMPLEMENTED !!! 1516 # 1517 # UNDER CONSTRUCTION !!! 1518 # 1519 #if c.wrf: 1520 # table128 = init128(_config.PATH_GRIBTABLE) 1521 # wrfpars = to_param_id('sp/mslp/skt/2t/10u/10v/2d/z/lsm/sst/ci/sd/\ 1522 # stl1/stl2/stl3/stl4/swvl1/swvl2/swvl3/swvl4', 1523 # table128) 1509 1524 1510 1525 # these numbers are indices for the temporary files "fort.xx" … … 1558 1573 fortfile = os.path.join(c.inputdir, 'fort.' + k) 1559 1574 silent_remove(fortfile) 1560 fdict[k] = open(fortfile, 'w ')1575 fdict[k] = open(fortfile, 'wb') 1561 1576 #============================================================================================ 1562 1577 # create correct timestamp from the three time informations … … 1585 1600 continue 1586 1601 1587 if c.wrf: 1588 if 'olddate' not in locals() or cdate != olddate: 1589 fwrf = open(os.path.join(c.outputdir, 1590 'WRF' + cdate + '.' + ctime + '.000.grb2'), 'w') 1591 olddate = cdate[:] 1602 # @WRF 1603 # THIS IS NOT YET CORRECTLY IMPLEMENTED !!! 1604 # 1605 # UNDER CONSTRUCTION !!! 1606 # 1607 #if c.wrf: 1608 # if 'olddate' not in locals() or cdate != olddate: 1609 # fwrf = open(os.path.join(c.outputdir, 1610 # 'WRF' + cdate + '.' + ctime + '.000.grb2'), 'wb') 1611 # olddate = cdate[:] 1592 1612 #============================================================================================ 1593 1613 # savedfields remembers which fields were already used. … … 1627 1647 codes_write(gid, fdict['22']) 1628 1648 scwc = None 1629 elif c.wrf and paramId in [129, 138, 155] and \ 1630 levtype == 'hybrid': # Z, VO, D 1631 # do not do anything right now 1632 # these are specific parameter for WRF 1633 pass 1649 # @WRF 1650 # THIS IS NOT YET CORRECTLY IMPLEMENTED !!! 1651 # 1652 # UNDER CONSTRUCTION !!! 1653 # 1654 #elif c.wrf and paramId in [129, 138, 155] and \ 1655 # levtype == 'hybrid': # Z, VO, D 1656 # # do not do anything right now 1657 # # these are specific parameter for WRF 1658 # pass 1634 1659 else: 1635 1660 if paramId not in savedfields: … … 1640 1665 else: 1641 1666 print('duplicate ' + str(paramId) + ' not written') 1642 1643 try: 1644 if c.wrf: 1645 # model layer 1646 if levtype == 'hybrid' and \ 1647 paramId in [129, 130, 131, 132, 133, 138, 155]: 1648 codes_write(gid, fwrf) 1649 # sfc layer 1650 elif paramId in wrfpars: 1651 codes_write(gid, fwrf) 1652 except AttributeError: 1653 pass 1667 # @WRF 1668 # THIS IS NOT YET CORRECTLY IMPLEMENTED !!! 1669 # 1670 # UNDER CONSTRUCTION !!! 1671 # 1672 #try: 1673 # if c.wrf: 1674 # # model layer 1675 # if levtype == 'hybrid' and \ 1676 # paramId in [129, 130, 131, 132, 133, 138, 155]: 1677 # codes_write(gid, fwrf) 1678 # # sfc layer 1679 # elif paramId in wrfpars: 1680 # codes_write(gid, fwrf) 1681 #except AttributeError: 1682 # pass 1654 1683 1655 1684 codes_release(gid) … … 1721 1750 'rb'), fout) 1722 1751 # ============================================================================================ 1723 if c.wrf: 1724 fwrf.close() 1752 1753 # @WRF 1754 # THIS IS NOT YET CORRECTLY IMPLEMENTED !!! 1755 # 1756 # UNDER CONSTRUCTION !!! 1757 # 1758 #if c.wrf: 1759 # fwrf.close() 1725 1760 1726 1761 codes_index_release(iid) … … 1756 1791 # get a list of all prepared output files with control forecast (CF) 1757 1792 CF_filelist = UioFiles(path, prefix + '*.N000') 1793 CF_filelist.files = sorted(CF_filelist.files) 1758 1794 1759 1795 for cffile in CF_filelist.files: … … 1769 1805 filename = cffile.split('N000')[0] 1770 1806 for i in range(1, maxnum + 1): 1771 1772 1807 # read an ensemble member 1773 1808 g = open(filename + 'N{:0>3}'.format(i), 'rb') -
Source/Python/Classes/GribUtil.py
rba99230 rc77630a 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 13 13 # 14 14 # @License: 15 # (C) Copyright 2014-2018. 16 # 17 # This software is licensed under the terms of the Apache Licence Version 2.0 18 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 19 # 20 # @Class Description: 21 # The GRIB API provides all necessary tools to work directly with the 22 # grib files. Nevertheless, the GRIB API tools are very basic and are in 23 # direct connection with the grib files. This class provides some higher 24 # functions which apply a set of GRIB API tools together in the respective 25 # context. So, the class initially contains a list of grib files (their 26 # names) and the using program then applies the methods directly on the 27 # class objects without having to think about how the actual GRIB API 28 # tools have to be arranged. 29 # 30 # @Class Content: 31 # - __init__ 32 # - get_keys 33 # - set_keys 34 # - copy_dummy_msg 35 # - index 36 # 37 # @Class Attributes: 38 # - filenames 39 # 15 # (C) Copyright 2014-2019. 16 # Anne Philipp, Leopold Haimberger 17 # 18 # SPDX-License-Identifier: CC-BY-4.0 19 # 20 # This work is licensed under the Creative Commons Attribution 4.0 21 # International License. To view a copy of this license, visit 22 # http://creativecommons.org/licenses/by/4.0/ or send a letter to 23 # Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 40 24 #******************************************************************************* 41 25 … … 53 37 ''' 54 38 Class for GRIB utilities (new methods) based on GRIB API 39 40 The GRIB API provides all necessary tools to work directly with the 41 grib files. Nevertheless, the GRIB API tools are very basic and are in 42 direct connection with the grib files. This class provides some higher 43 functions which apply a set of GRIB API tools together in the respective 44 context. So, the class initially contains a list of grib files (their 45 names) and the using program then applies the methods directly on the 46 class objects without having to think about how the actual GRIB API 47 tools have to be arranged. 55 48 ''' 56 49 # -------------------------------------------------------------------------- … … 98 91 codes_release) 99 92 100 fileid = open(self.filenames, 'r')101 102 93 return_list = [] 103 94 104 while 1: 95 with open(self.filenames, 'rb') as fileid: 96 105 97 gid = codes_new_from_file(fileid) 106 107 if gid is None:108 break109 98 110 99 if len(wherekeynames) != len(wherekeyvalues): … … 130 119 codes_release(gid) 131 120 132 fileid.close()133 134 121 return return_list 135 122 136 123 137 124 def set_keys(self, fromfile, keynames, keyvalues, wherekeynames=[], 138 wherekeyvalues=[], strict=False, filemode='w '):125 wherekeyvalues=[], strict=False, filemode='wb'): 139 126 '''Opens the file to read the grib messages and then write 140 127 the selected messages (with wherekeys) to a new output file. … … 168 155 169 156 filemode : :obj:`string`, optional 170 Sets the mode for the output file. Default is "w ".157 Sets the mode for the output file. Default is "wb". 171 158 172 159 Return … … 182 169 183 170 fout = open(self.filenames, filemode) 184 fin = open(fromfile) 185 186 while 1: 171 172 with open(fromfile, 'rb') as fin: 187 173 gid = codes_grib_new_from_file(fin) 188 189 if gid is None:190 break191 174 192 175 select = True … … 213 196 codes_release(gid) 214 197 215 fin.close()216 198 fout.close() 217 199 … … 219 201 220 202 def copy_dummy_msg(self, filename_in, selectWhere=True, 221 keynames=[], keyvalues=[], filemode='w '):203 keynames=[], keyvalues=[], filemode='wb'): 222 204 '''Add the content of another input grib file to the objects file but 223 205 only messages corresponding to keys/values passed to the function. … … 242 224 243 225 filemode : :obj:`string`, optional 244 Sets the mode for the output file. Default is "w ".226 Sets the mode for the output file. Default is "wb". 245 227 246 228 Return … … 254 236 raise Exception("Give a value for each keyname!") 255 237 256 fin = open(filename_in, 'rb') 238 257 239 fout = open(self.filenames, filemode) 258 240 259 241 fields = 0 260 242 261 while fields < 1: 243 with open(filename_in, 'rb') as fin: 244 if fields >= 1: 245 fout.close() 246 return 247 262 248 gid = codes_grib_new_from_file(fin) 263 264 if gid is None:265 break266 249 267 250 select = True … … 285 268 codes_release(gid) 286 269 287 fin.close()288 270 fout.close() 289 271 -
Source/Python/Classes/MarsRetrieval.py
rba99230 rc77630a 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 22 22 # (C) Copyright 2014-2019. 23 23 # Anne Philipp, Leopold Haimberger 24 # 25 # SPDX-License-Identifier: CC-BY-4.0 24 26 # 25 27 # This work is licensed under the Creative Commons Attribution 4.0 … … 486 488 del attrs[key] 487 489 488 attrs['ppengine'] = 'emos'490 # attrs['ppengine'] = 'emos' 489 491 490 492 # MARS request via Python script … … 518 520 request_str = request_str + ',' + key + '=' + str(value) 519 521 request_str += ',target="' + target + '"' 520 p = subprocess.Popen(['mars' ,'-e'],522 p = subprocess.Popen(['mars'], #'-e'], 521 523 stdin=subprocess.PIPE, 522 524 stdout=subprocess.PIPE, -
Source/Python/Classes/UioFiles.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 25 25 # (C) Copyright 2014-2019. 26 26 # Anne Philipp, Leopold Haimberger 27 # 28 # SPDX-License-Identifier: CC-BY-4.0 27 29 # 28 30 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/Mods/checks.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 11 11 # (C) Copyright 2014-2019. 12 12 # Anne Philipp, Leopold Haimberger 13 # 14 # SPDX-License-Identifier: CC-BY-4.0 13 15 # 14 16 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/Mods/disaggregation.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 22 22 # (C) Copyright 2014-2019. 23 23 # Anne Philipp, Leopold Haimberger 24 # 25 # SPDX-License-Identifier: CC-BY-4.0 24 26 # 25 27 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/Mods/get_mars_data.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 28 28 # (C) Copyright 2014-2019. 29 29 # Anne Philipp, Leopold Haimberger 30 # 31 # SPDX-License-Identifier: CC-BY-4.0 30 32 # 31 33 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/Mods/prepare_flexpart.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 31 31 # (C) Copyright 2014-2019. 32 32 # Anne Philipp, Leopold Haimberger 33 # 34 # SPDX-License-Identifier: CC-BY-4.0 33 35 # 34 36 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/Mods/profiling.py
rba99230 r8463d78 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #************************************************************************ -
Source/Python/Mods/tools.py
rba99230 rc77630a 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 26 26 # (C) Copyright 2014-2019. 27 27 # Anne Philipp, Leopold Haimberger 28 # 29 # SPDX-License-Identifier: CC-BY-4.0 28 30 # 29 31 # This work is licensed under the Creative Commons Attribution 4.0 … … 761 763 # --- open file --- 762 764 print("Opening file for getting information data --- %s" % filename) 763 with open(filename ) as f:765 with open(filename, 'rb') as f: 764 766 # load first message from file 765 767 gid = codes_grib_new_from_file(f) -
Source/Python/_config.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 11 11 # (C) Copyright 2014-2019. 12 12 # Anne Philipp, Leopold Haimberger 13 # 14 # SPDX-License-Identifier: CC-BY-4.0 13 15 # 14 16 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/install.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 21 21 # (C) Copyright 2014-2019. 22 22 # Anne Philipp, Leopold Haimberger 23 # 24 # SPDX-License-Identifier: CC-BY-4.0 23 25 # 24 26 # This work is licensed under the Creative Commons Attribution 4.0 -
Source/Python/submit.py
rba99230 r44174de 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- coding: utf-8 -*- 3 3 #******************************************************************************* … … 25 25 # (C) Copyright 2014-2019. 26 26 # Anne Philipp, Leopold Haimberger 27 # 28 # SPDX-License-Identifier: CC-BY-4.0 27 29 # 28 30 # This work is licensed under the Creative Commons Attribution 4.0
Note: See TracChangeset
for help on using the changeset viewer.