Source code for jobs.tools.write_cosmo_input_ghg

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv
import sys
from .. import tools

STR2INT = {
    'ytype_adv': {
        'off': 0,
        'on': 1
    },
    'ytype_diff': {
        'off': 0,
        'on': 1
    },
    'ytype_turbmix': {
        'off': 0,
        '1D': 1,
        '3D': 2
    },
    'ytype_passconv': {
        'off': 0,
        'on': 1
    },
    'ytype_ini': {
        'zero': 0,
        'file': 1,
        'user': 2
    },
    'ytype_lbc': {
        'zero': 0,
        'file': 1,
        'constant': 2,
        'zero_gradient': 3,
        'user': 4
    },
    'ytype_bbc': {
        'zero_flux': 0,
        'zero_value': 1,
        'surface_value': 2
    },
    'ytype_relax': {
        'off': 0,
        'full': 1,
        'inflow': 2
    },
    'ytype_damp': {
        'off': 0,
        'on': 1
    },
    'ytype_clip': {
        'off': 0,
        'on': 1
    }
}

# Read initial conditions from file (= 1) in case of spinup simluation
STR2INT_recycling = STR2INT.copy()
STR2INT_recycling["ytype_ini"] = {'zero': 1, 'file': 1, 'user': 2}


def group2text(group, recycling=False):

    lines = ['&TRACER']
    for key, value in group.items():

        if key == '' or value == '':
            continue

        if key in STR2INT:
            if recycling:
                value = STR2INT_recycling[key][value]
            else:
                value = STR2INT[key][value]
            key = 'i%s' % key[1:]

        if key[0] == 'y':
            value = "'%s'" % value

        if key == 'ycatl' or key == 'ytpl' or key == 'yvpl':
            value = value.replace('\'\'', '\'')
        lines.append('  %s = %s,' % (key, value))
    lines.append('/\n')

    return '\n'.join(lines)


[docs]def main(csv_filename, namelist_filename, cfg=None): """Convert a table (``.csv`` file) to namelist file (``INPUT_GHG``) read by **COSMO**. Parameters ---------- csv_filename : str Path to the source csv-file namelist_filename : str Path to the namelist file that will be created cfg : Config Object holding all user-configuration parameters as attributes. """ with open(csv_filename, 'r') as csv_file: reader = csv.DictReader(csv_file, delimiter=',') reader = [r for r in reader if r[''] != '#'] with open(namelist_filename, 'a') as nml_file: for group in reader: if hasattr(cfg, 'spinup') and not cfg.first_one: nml_file.write(group2text(group, recycling=True)) else: nml_file.write(group2text(group))
if __name__ == '__main__': input_filename = sys.argv[1] # csv file with tracers output_filename = sys.argv[2] # filename (INPUT_TRCR) read by COSMO main(input_filename, output_filename)