gernotbelger@8946: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8946: * Software engineering by gernotbelger@8946: * Björnsen Beratende Ingenieure GmbH gernotbelger@8946: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8946: * gernotbelger@8946: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8946: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8946: * documentation coming with Dive4Elements River for details. gernotbelger@8946: */ gernotbelger@8946: package org.dive4elements.river.artifacts.sinfo.flowdepth; gernotbelger@8946: gernotbelger@8946: import org.dive4elements.river.artifacts.model.Calculation; gernotbelger@8946: import org.dive4elements.river.artifacts.states.WaterlevelData; gernotbelger@8946: gernotbelger@8946: /** gernotbelger@8946: * @author Gernot Belger gernotbelger@8946: */ gernotbelger@8946: public final class FlowDepthUtils { gernotbelger@8946: gernotbelger@8946: private FlowDepthUtils() { gernotbelger@8946: throw new UnsupportedOperationException(); gernotbelger@8946: } gernotbelger@8946: gernotbelger@8946: /** gernotbelger@8946: * Checks the year difference between waterlevels and sounding, and issues a warning if too big. gernotbelger@8946: * gernotbelger@8946: * Zeitraum Zeitliche Differenz [a] gernotbelger@8946: * X ≥ 1998 ± 3 gernotbelger@8946: * 1958 ≤ X < 1998 ± 6 gernotbelger@8946: * 1918 ≤ X < 1958 ± 12 gernotbelger@8946: * X < 1918 ± 25 gernotbelger@8946: */ gernotbelger@8946: public static void checkYearDifference(final String label, final WaterlevelData waterlevel, final int soundingYear, final Calculation problems) { gernotbelger@8946: gernotbelger@8946: final int wstYear = waterlevel.getYear(); gernotbelger@8946: if (wstYear < 0) gernotbelger@8946: return; gernotbelger@8946: gernotbelger@8946: final int maxDifference = getMaxDifferenceYears(soundingYear); gernotbelger@8946: gernotbelger@8946: final int difference = Math.abs(soundingYear - wstYear); gernotbelger@8946: if (difference > maxDifference) { gernotbelger@8946: problems.addProblem("sinfo_calc_flow_depth.warning.year_difference", label, wstYear, soundingYear); gernotbelger@8946: } gernotbelger@8946: } gernotbelger@8946: gernotbelger@8946: public static int getMaxDifferenceYears(final int year) { gernotbelger@8946: gernotbelger@8946: if (year < 1918) gernotbelger@8946: return 25; gernotbelger@8946: gernotbelger@8946: if (1918 <= year && year < 1958) gernotbelger@8946: return 12; gernotbelger@8946: gernotbelger@8946: if (1958 <= year && year < 1998) gernotbelger@8946: return 6; gernotbelger@8946: gernotbelger@8946: /* >= 1998 */ gernotbelger@8946: return 3; gernotbelger@8946: } gernotbelger@8946: }