Changeset c5074d2 in flex_extract.git for source/python


Ignore:
Timestamp:
Oct 9, 2018, 8:42:16 PM (6 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
aa275fc
Parents:
0a06607
Message:

added making of namelist file and jobscript via genshi templates

Location:
source/python
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • source/python/_config.py

    r0aaeb04 rc5074d2  
    3838TEMPFILE_INSTALL_COMPILEJOB = 'compilejob.template'
    3939FILE_INSTALL_COMPILEJOB = 'compilejob.ksh'
    40 TEMPFILE_INSTALL_JOB = 'job.temp.o'
     40TEMPFILE_INSTALL_JOB = 'job.template'
    4141TEMPFILE_JOB = 'job.temp'
    4242FILE_JOB_OD = 'job.ksh'
    4343FILE_JOB_OP = 'jopoper.ksh'
     44TEMPFILE_NAMELIST = 'convert.nl'
    4445FILE_NAMELIST = 'fort.4'
    4546FILE_GRIB_INDEX = 'date_time_stepRange.idx'
  • source/python/classes/EcFlexpart.py

    r0e576fc rc5074d2  
    658658
    659659
    660     def write_namelist(self, c, filename):
     660    def write_namelist(self, c):
    661661        '''
    662662        @Description:
     
    683683        '''
    684684
     685        from genshi.template.text import NewTextTemplate
     686        from genshi.template import  TemplateLoader
     687
     688        loader = TemplateLoader(_config.PATH_TEMPLATES, auto_reload=False)
     689        compile_template = loader.load(_config.TEMPFILE_NAMELIST,
     690                                       cls=NewTextTemplate)
     691
    685692        self.inputdir = c.inputdir
    686693        area = np.asarray(self.area.split('/')).astype(float)
     
    692699        maxb = int((area[0] - area[2]) / grid[0]) + 1
    693700
    694         with open(self.inputdir + '/' + filename, 'w') as f:
    695             f.write('&NAMGEN\n')
    696             f.write(',\n  '.join(['maxl = ' + str(maxl), 'maxb = ' + str(maxb),
    697                                   'mlevel = ' + str(self.level),
    698                                   'mlevelist = ' + '"' + str(self.levelist)
    699                                                  + '"',
    700                                   'mnauf = ' + str(self.resol),
    701                                   'metapar = ' + '77',
    702                                   'rlo0 = ' + str(area[1]),
    703                                   'rlo1 = ' + str(area[3]),
    704                                   'rla0 = ' + str(area[2]),
    705                                   'rla1 = ' + str(area[0]),
    706                                   'momega = ' + str(c.omega),
    707                                   'momegadiff = ' + str(c.omegadiff),
    708                                   'mgauss = ' + str(c.gauss),
    709                                   'msmooth = ' + str(c.smooth),
    710                                   'meta = ' + str(c.eta),
    711                                   'metadiff = ' + str(c.etadiff),
    712                                   'mdpdeta = ' + str(c.dpdeta)]))
    713 
    714             f.write('\n/\n')
     701        stream = compile_template.generate(
     702            maxl = str(maxl),
     703            maxb = str(maxb),
     704            mlevel = str(self.level),
     705            mlevelist = str(self.levelist),
     706            mnauf = str(self.resol),
     707            metapar = '77',
     708            rlo0 = str(area[1]),
     709            rlo1 = str(area[3]),
     710            rla0 = str(area[2]),
     711            rla1 = str(area[0]),
     712            momega = str(c.omega),
     713            momegadiff = str(c.omegadiff),
     714            mgauss = str(c.gauss),
     715            msmooth = str(c.smooth),
     716            meta = str(c.eta),
     717            metadiff = str(c.etadiff),
     718            mdpdeta = str(c.dpdeta)
     719        )
     720
     721        namelistfile = os.path.join(self.inputdir, _config.FILE_NAMELIST)
     722
     723        with open(namelistfile, 'w') as f:
     724            f.write(stream.render('text'))
    715725
    716726        return
  • source/python/install.py

    r0aaeb04 rc5074d2  
    396396
    397397    stream = compile_template.generate(
     398        usergroup = ecgid,
    398399        username = ecuid,
    399         usergroup = ecgid,
    400400        version_number = _config._VERSION_STR,
    401401        fp_root_scripts = fp_root,
     
    410410        f.write(stream.render('text'))
    411411
    412 
    413     # template = os.path.join(_config.PATH_REL_TEMPLATES,
    414                             # _config.TEMPFILE_INSTALL_COMPILEJOB)
    415     # with open(template) as f:
    416         # fdata = f.read().split('\n')
    417 
    418 
    419     # with open(compilejob, 'w') as fo:
    420         # for data in fdata:
    421             # if 'MAKEFILE=' in data:
    422                 # data = 'export MAKEFILE=' + makefile
    423             # elif 'FLEXPART_ROOT_SCRIPTS=' in data:
    424                 # if fp_root != '../':
    425                     # data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root
    426                 # else:
    427                     # data = 'export FLEXPART_ROOT_SCRIPTS=$HOME'
    428             # elif target.lower() != 'local':
    429                 # if '--workdir' in data:
    430                     # data = '#SBATCH --workdir=/scratch/ms/' + \
    431                             # ecgid + '/' + ecuid
    432                 # elif '##PBS -o' in data:
    433                     # data = '##PBS -o /scratch/ms/' + ecgid + '/' + ecuid + \
    434                            # 'flex_ecmwf.$Jobname.$Job_ID.out'
    435                 # elif 'FLEXPART_ROOT_SCRIPTS=' in data:
    436                     # if fp_root != '../':
    437                         # data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root
    438                     # else:
    439                         # data = 'export FLEXPART_ROOT_SCRIPTS=$HOME'
    440             # fo.write(data + '\n')
    441 
    442412    return
    443413
     
    470440        <nothing>
    471441    '''
    472     fp_root_path_to_python = os.path.join(fp_root, _config.FLEXEXTRACT_DIRNAME,
    473                          _config.PATH_REL_PYTHON)
    474 
    475     template = os.path.join(_config.PATH_REL_TEMPLATES,
    476                             _config.TEMPFILE_INSTALL_JOB)
    477     with open(template) as f:
    478         fdata = f.read().split('\n')
    479 
    480     jobfile_temp = os.path.join(_config.PATH_REL_TEMPLATES,
    481                                 _config.TEMPFILE_JOB)
    482     with open(jobfile_temp, 'w') as fo:
    483         for data in fdata:
    484             if '--workdir' in data:
    485                 data = '#SBATCH --workdir=/scratch/ms/' + ecgid + '/' + ecuid
    486             elif '##PBS -o' in data:
    487                 data = '##PBS -o /scratch/ms/' + ecgid + '/' + \
    488                         ecuid + 'flex_ecmwf.$Jobname.$Job_ID.out'
    489             elif  'export PATH=${PATH}:' in data:
    490                 data += fp_root_path_to_python
    491 
    492             fo.write(data + '\n')
     442    from genshi.template.text import NewTextTemplate
     443    from genshi.template import  TemplateLoader
     444
     445    loader = TemplateLoader(_config.PATH_TEMPLATES, auto_reload=False)
     446    compile_template = loader.load(_config.TEMPFILE_INSTALL_JOB,
     447                                   cls=NewTextTemplate)
     448
     449    fp_root_path_to_python = os.path.join(fp_root,
     450                                          _config.FLEXEXTRACT_DIRNAME,
     451                                          _config.PATH_REL_PYTHON)
     452
     453    stream = compile_template.generate(
     454        usergroup = ecgid,
     455        username = ecuid,
     456        version_number = _config._VERSION_STR,
     457        fp_root_path = fp_root_path_to_python,
     458    )
     459
     460    tempjobfile = os.path.join(_config.PATH_TEMPLATES,
     461                               _config.TEMPFILE_JOB)
     462
     463    with open(tempjobfile, 'w') as f:
     464        f.write(stream.render('text'))
     465
    493466    return
    494467
  • source/python/mods/prepare_flexpart.py

    r5bad6ec rc5074d2  
    160160    # deaccumulate the flux data
    161161    flexpart = EcFlexpart(c, fluxes=True)
    162     flexpart.write_namelist(c, _config.FILE_NAMELIST)
     162    flexpart.write_namelist(c)
    163163    flexpart.deacc_fluxes(inputfiles, c)
    164164
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG