Changeset 0690a6c in flex_extract.git for Source/Python/Classes/EcFlexpart.py


Ignore:
Timestamp:
Aug 13, 2019, 12:35:02 PM (5 years ago)
Author:
Anne Philipp <anne.philipp@…>
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.
Message:

Merge branch 'dev' of https://www.flexpart.eu/git/flex_extract into dev

merging changes from Petra: FORD update to 6.0 and moving directory Test to Testing plus minor stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Source/Python/Classes/EcFlexpart.py

    rba99230 rc77630a  
    1 #!/usr/bin/env python
     1#!/usr/bin/env python3
    22# -*- coding: utf-8 -*-
    33#*******************************************************************************
     
    4242#    Anne Philipp, Leopold Haimberger
    4343#
     44#    SPDX-License-Identifier: CC-BY-4.0
     45#
    4446#    This work is licensed under the Creative Commons Attribution 4.0
    4547#    International License. To view a copy of this license, visit
     
    415417        # -----------------------------------------------------------------------
    416418        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
    426436
    427437        return
     
    846856            if area[1] > area[3]:
    847857                area[1] -= 360
    848             maxl = round((area[3] - area[1]) / grid[1]) + 1
    849             maxb = round((area[0] - area[2]) / grid[0]) + 1
     858            maxl = int(round((area[3] - area[1]) / grid[1])) + 1
     859            maxb = int(round((area[0] - area[2]) / grid[0])) + 1
    850860
    851861            stream = namelist_template.generate(
     
    10841094
    10851095            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')
    10891099
    10901100            # read message for message and store relevant data fields, where
     
    13921402            # write original time step to flux file as usual
    13931403            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,
    13951405                              wherekeynames=['paramId'], wherekeyvalues=[142],
    13961406                              keynames=['perturbationNumber','date','time','stepRange','values'],
     
    13981408                                         date.hour*100, 0, lsp_new_np[inumb,:,it]],
    13991409                             )
    1400             fluxfile.set_keys(tmpfile, filemode='a', strict=True,
     1410            fluxfile.set_keys(tmpfile, filemode='ab', strict=True,
    14011411                              wherekeynames=['paramId'], wherekeyvalues=[143],
    14021412                              keynames=['perturbationNumber','date','time','stepRange','values'],
     
    14061416
    14071417            # 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,
    14091419                              wherekeynames=['paramId'], wherekeyvalues=[142],
    14101420                              keynames=['perturbationNumber','date','time','stepRange','values'],
     
    14121422                                         date.hour*100, '1', lsp_new_np[inumb,:,it+1]]
    14131423                              )
    1414             fluxfile.set_keys(tmpfile, filemode='a', strict=True,
     1424            fluxfile.set_keys(tmpfile, filemode='ab', strict=True,
    14151425                              wherekeynames=['paramId'], wherekeyvalues=[143],
    14161426                              keynames=['perturbationNumber','date','time','stepRange','values'],
     
    14201430
    14211431            # 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,
    14231433                              wherekeynames=['paramId'], wherekeyvalues=[142],
    14241434                              keynames=['perturbationNumber','date','time','stepRange','values'],
     
    14261436                                         date.hour*100, '2', lsp_new_np[inumb,:,it+2]]
    14271437                              )
    1428             fluxfile.set_keys(tmpfile, filemode='a', strict=True,
     1438            fluxfile.set_keys(tmpfile, filemode='ab', strict=True,
    14291439                              wherekeynames=['paramId'], wherekeyvalues=[143],
    14301440                              keynames=['perturbationNumber','date','time','stepRange','values'],
     
    14561466
    14571467        gribfile.copy_dummy_msg(ifile, keynames=['paramId'],
    1458                       keyvalues=[142], filemode='w')
     1468                      keyvalues=[142], filemode='wb')
    14591469
    14601470        gribfile.copy_dummy_msg(ifile, keynames=['paramId'],
    1461                       keyvalues=[143], filemode='a')
     1471                      keyvalues=[143], filemode='ab')
    14621472
    14631473        return
     
    15021512        end_period = end_period + timedelta(hours=int(c.step[-1]))
    15031513
    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)
    15091524
    15101525        # these numbers are indices for the temporary files "fort.xx"
     
    15581573                fortfile = os.path.join(c.inputdir, 'fort.' + k)
    15591574                silent_remove(fortfile)
    1560                 fdict[k] = open(fortfile, 'w')
     1575                fdict[k] = open(fortfile, 'wb')
    15611576#============================================================================================
    15621577            # create correct timestamp from the three time informations
     
    15851600                    continue
    15861601
    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[:]
    15921612#============================================================================================
    15931613            # savedfields remembers which fields were already used.
     
    16271647                        codes_write(gid, fdict['22'])
    16281648                        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
    16341659                else:
    16351660                    if paramId not in savedfields:
     
    16401665                    else:
    16411666                        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
    16541683
    16551684                codes_release(gid)
     
    17211750                                            'rb'), fout)
    17221751# ============================================================================================
    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()
    17251760
    17261761        codes_index_release(iid)
     
    17561791        # get a list of all prepared output files with control forecast (CF)
    17571792        CF_filelist = UioFiles(path, prefix + '*.N000')
     1793        CF_filelist.files = sorted(CF_filelist.files)
    17581794
    17591795        for cffile in CF_filelist.files:
     
    17691805            filename = cffile.split('N000')[0]
    17701806            for i in range(1, maxnum + 1):
    1771 
    17721807                # read an ensemble member
    17731808                g = open(filename + 'N{:0>3}'.format(i), 'rb')
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG