Skip to content
Open
2 changes: 1 addition & 1 deletion ATMOSPHERE/online/analysis_input_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def argument():
INPUTDIR=addsep(args.inputdir)
OUTDIR = addsep(args.outdir)

TL = TimeList.fromfilenames(None, INPUTDIR, "*_an-fv12.00.nc", prefix="", dateformat="%Y%m%d")
TL = TimeList.fromfilenames(None, INPUTDIR, "*_an-fv1[2-9].00.nc", prefix="", dateformat="%Y%m%d")

filename=TL.filelist[0]
ncIN=netCDF4.Dataset(filename)
Expand Down
4 changes: 2 additions & 2 deletions ATMOSPHERE/online/analysis_input_gen_singleframe.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ def argument():
parser = argparse.ArgumentParser(description = '''
Generates daily files for OASIM by reading ECMWF file provided by CMCC
Valid for analysis file having a single frame
YYYYMMDD-ECMWF---AM0100-MEDATL-bYYYYMMDD_an00-fv12.00.nc analisi at 00 of the same day YYYYMMDD
YYYYMMDD-ECMWF---AM0100-MEDATL-bYYYYMMDD_an00-fv1[2-9].00.nc analisi at 00 of the same day YYYYMMDD
''',
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
Expand Down Expand Up @@ -48,7 +48,7 @@ def argument():
INPUTDIR=addsep(args.inputdir)
OUTDIR = addsep(args.outdir)

TL = TimeList.fromfilenames(None, INPUTDIR, "*_an00-fv12.00.nc", prefix="", dateformat="%Y%m%d")
TL = TimeList.fromfilenames(None, INPUTDIR, "*_an00-fv1[2-9].00.nc", prefix="", dateformat="%Y%m%d")

nframes_in_day = 1
deltaH = 6
Expand Down
5 changes: 5 additions & 0 deletions BC/EFAS/river_generation.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,11 @@ def main():
)

var_mask = RIVERS.get_variable_mask(variable)
if not np.any(var_mask):
# If var_mask is False for any river, print a message
print(f"Warning: {variable.name} empty, it is not defined for any river")


raw_var_concentration = RIVERS[variable.name][var_mask]

# Keep only the values related to the current variable
Expand Down
33 changes: 31 additions & 2 deletions BC/EFAS/river_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,28 @@ def read_xml_vars(xml_dataset):
return tuple(bgc_vars)


def read_defaults(xml_dataset):
"""
Read the field "common_concentrations" of the rivers.xml file
"""
default_node=xml_dataset.getElementsByTagName("default_concentrations")
defaults={}
for node in default_node[0].getElementsByTagName("var"):
try:
var_name = node.getAttribute("name")
value = float(node.getAttribute("value"))
defaults[var_name]=value
except Exception:
raise InvalidRiverXMLFile(
'Error while reading the following var node:\n{}'.format(
node.toxml()
)
)
return defaults

xmldoc = minidom.parse("rivers.xml")
BGC_VARS = read_xml_vars(xmldoc)
DEFAULTS = read_defaults(xmldoc)


class Rivers:
Expand Down Expand Up @@ -134,6 +154,15 @@ def __init__(self):
rivers[ind]['SAL'] = salinity
rivers[ind]['name'] = name
rivers[ind]['mouth'] = mn.getAttribute('name')
for varname in DEFAULTS:
if varname not in self.__bgc_var_dict:
raise ValueError('Unknown variable: {}'.format(varname))
rivers[ind][varname] = DEFAULTS[varname]

bgc_var = self.__bgc_var_dict[varname]
assert not self.__var_defined[bgc_var][ind]
self.__var_defined[bgc_var][ind] = True

for vn in concentrations_node.getElementsByTagName('var'):
varname = vn.getAttribute('name')
if varname not in self.__bgc_var_dict:
Expand All @@ -142,8 +171,8 @@ def __init__(self):

rivers[ind][varname] = vn.getAttribute('value')

assert not self.__var_defined[bgc_var][ind]
self.__var_defined[bgc_var][ind] = True
if not self.__var_defined[bgc_var][ind]:
self.__var_defined[bgc_var][ind] = True

visited_ids[ind] = True

Expand Down
Loading