diff --git a/dartwrf/workflows.py b/dartwrf/workflows.py index d53fc9a43e15e2bf15576a37699b626859c4c4ab..0fa0b8dea0379e9257a1405e7a337fa3b1fff89f 100644 --- a/dartwrf/workflows.py +++ b/dartwrf/workflows.py @@ -20,32 +20,6 @@ def dict_to_py(d, outfile): txt += '}' f.write(txt) -def _obskind_read(): - """Read dictionary of observation types + ID numbers ("kind") - from DART f90 script - """ - definitionfile = self.cluster.dart_srcdir+'/../../../assimilation_code/modules/observations/obs_kind_mod.f90' - with open(definitionfile, 'r') as f: - kind_def_f = f.readlines() - - obskind_nrs = {} - for i, line in enumerate(kind_def_f): - if 'Integer definitions for DART OBS TYPES' in line: - # data starts below this line - i_start = i - break - for line in kind_def_f[i_start+1:]: - if 'MAX_DEFINED_TYPES_OF_OBS' in line: - # end of data - break - if '::' in line: - # a line looks like this - # integer, parameter, public :: MSG_4_SEVIRI_TB = 261 - data = line.split('::')[-1].split('=') - kind_str = data[0].strip() - kind_nr = int(data[1].strip()) - obskind_nrs[kind_str] = kind_nr - return obskind_nrs class WorkFlows(object): def __init__(self, exp_config='cfg.py', server_config='server.py'): @@ -74,8 +48,34 @@ class WorkFlows(object): # copy obs kind def to config, we will read a table from there # file needs to exist within package so sphinx can read it + def _obskind_read(): + """Read dictionary of observation types + ID numbers ("kind") + from DART f90 script + """ + definitionfile = self.cluster.dart_srcdir+'/../../../assimilation_code/modules/observations/obs_kind_mod.f90' + with open(definitionfile, 'r') as f: + kind_def_f = f.readlines() + + obskind_nrs = {} + for i, line in enumerate(kind_def_f): + if 'Integer definitions for DART OBS TYPES' in line: + # data starts below this line + i_start = i + break + for line in kind_def_f[i_start+1:]: + if 'MAX_DEFINED_TYPES_OF_OBS' in line: + # end of data + break + if '::' in line: + # a line looks like this + # integer, parameter, public :: MSG_4_SEVIRI_TB = 261 + data = line.split('::')[-1].split('=') + kind_str = data[0].strip() + kind_nr = int(data[1].strip()) + obskind_nrs[kind_str] = kind_nr + return obskind_nrs dict_to_py(_obskind_read(), self.cluster.scriptsdir+'/../config/obskind.py') - + # Copy scripts to self.cluster.archivedir folder os.makedirs(self.cluster.archivedir, exist_ok=True) try: