diff --git a/src/lisflood/global_modules/checkers.py b/src/lisflood/global_modules/checkers.py index 33bc1c24..48110dd5 100755 --- a/src/lisflood/global_modules/checkers.py +++ b/src/lisflood/global_modules/checkers.py @@ -21,7 +21,10 @@ import inspect import warnings +import numpy as np + from .errors import LisfloodError, LisfloodWarning +from .add1 import loadmap, loadsetclone from ..hydrological_modules import HydroModule from ..hydrological_modules import (surface_routing, evapowater, snow, routing, leafarea, inflow, waterlevel, waterbalance, wateruse, waterabstraction, lakes, riceirrigation, indicatorcalc, @@ -29,6 +32,20 @@ reservoir, transmission) +def lakes_present(lake_type): + """Check whether there are any lakes/reservoirs.""" + present = True + sites_dict = {'lakes': 'LakeSites', 'reservoir': 'ReservoirSites'} + MaskMap = loadsetclone('MaskMap') # need to define mask map to use loadmap + LakeSitesC = loadmap(sites_dict[lake_type]) + LakeSitesC[LakeSitesC < 1] = 0 + LakeSitesCC = np.compress(LakeSitesC > 0, LakeSitesC) + if LakeSitesCC.size == 0: + present = False + + return present + + class ModulesInputs: root_package = 'lisflood.hydrological_modules' # dict representing modules activated per option @@ -82,6 +99,12 @@ def check(cls, settings): and obj is not HydroModule and str(obj.__module__) == hydro_module.__name__] total_checks += len(clzzs) for clz in clzzs: + if clz.__name__ in ['lakes', 'reservoir']: + if not lakes_present(clz.__name__): + # No lakes/reservoirs so skip the check for these input files. + successful_checks += 1 + continue + errors = clz.check_input_files(option) successful_checks += int(bool(not errors)) all_errors += errors