1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
// $Id: SubordinateStation.hh 3491 2009-09-04 21:40:05Z flaterco $
/* SubordinateStation Station with offsets.
Copyright (C) 1998 David Flater.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class SubordinateStation: public Station {
public:
// See HarmonicsFile::getStation.
SubordinateStation (const Dstr &name_,
const StationRef &stationRef,
const ConstituentSet &constituents,
const Dstr ¬e_,
CurrentBearing minCurrentBearing_,
CurrentBearing maxCurrentBearing_,
const MetaFieldVector &metadata,
const HairyOffsets &offsets);
// All these public methods are replacing virtual methods of
// Station. See Station.hh for descriptions.
Station * const clone() const;
const PredictionValue minLevelHeuristic() const;
const PredictionValue maxLevelHeuristic() const;
const PredictionValue predictTideLevel (Timestamp predictTime);
void predictTideEvents (Timestamp startTime,
Timestamp endTime,
TideEventsOrganizer &organizer,
TideEventsFilter filter = noFilter);
protected:
const HairyOffsets _offsets;
// predictTideLevel cached bracket. The code has gotten wordy
// enough already without renaming these all to
// uncorrectedLeftEventTime, etc.
Timestamp uncleftt, uncrightt, subleftt, subrightt;
PredictionValue uncleftp, uncrightp, subleftp, subrightp;
Units::PredictionUnits cacheUnits;
const bool isSubordinateStation();
const bool haveFloodBegins();
const bool haveEbbBegins();
// Wrapper for findSimpleMarkCrossing that does necessary
// compensations for substation interpolation. Like
// findSimpleMarkCrossing and findMarkCrossing_Dairiki, this method
// is insensitive to the relative ordering of tideEvent1 and
// tideEvent2.
const Timestamp findInterpolatedSubstationMarkCrossing (
const TideEvent &tideEvent1,
const TideEvent &tideEvent2,
PredictionValue marklev,
bool &isRising_out);
// Submethod of predictTideEvents.
void addInterpolatedSubstationMarkCrossingEvents (
Timestamp startTime,
Timestamp endTime,
TideEventsOrganizer &organizer);
// Given eventTime and eventType, fill in other fields and possibly
// apply corrections.
void finishTideEvent (TideEvent &te);
};
// Cleanup2006 Done
|