181 lines
6.5 KiB
C++
181 lines
6.5 KiB
C++
//------------------------------------------------------------------------------
|
|
// Node - encapsulates information about a node topology type.
|
|
//------------------------------------------------------------------------------
|
|
// Copyright: See the COPYRIGHT file.
|
|
//------------------------------------------------------------------------------
|
|
// Notes:
|
|
//
|
|
//------------------------------------------------------------------------------
|
|
// History:
|
|
//
|
|
// 06 Jan 1998 Matthew J. Rutherford, Riverside Technology, inc
|
|
// Created initial version.
|
|
// 07 Apr 1998 Daniel Weiler, RTI Added setStates virtual.
|
|
// 13 Nov 2001 James R. VanShaar, RTi Added function setCOstring
|
|
// 20 Nov 2001 JRV, RTi Added _dischargeCO and _previousDischargeCO
|
|
// 20 Nov 2001 JRV, RTi Added transferCO().
|
|
// 10 Jun 2002 JRV, RTi Added and / or updated setEndInflow(),
|
|
// setEndOfTimestepStates, inflow, and discharge
|
|
// states for Rules testing.
|
|
// 24 Feb 2003 JRV, RTi Revised parameters passed to be consistent with
|
|
// Component carryover, despite not being a source
|
|
// of error.
|
|
// 16 Feb 2006 JRV, RTi Added diversion states.
|
|
// Commented out unused stage work.
|
|
// Added diversion time series.
|
|
// 16 Mar 2006 JRV, RTi Added valueToMethod, revised finalizeSolution to be
|
|
// virtual.
|
|
// 14 Aug 2007 DJS, RTi Added capability to define rating table or rating
|
|
// curve id at the node for Reservoir Tools
|
|
// enhancement project.
|
|
//------------------------------------------------------------------------------
|
|
// Variables: I/O Description
|
|
//
|
|
//
|
|
//------------------------------------------------------------------------------
|
|
|
|
#ifndef Node_INCLUDED
|
|
#define Node_INCLUDED
|
|
|
|
#include "Component.h"
|
|
#include "resj/Table.h"
|
|
|
|
class Node : public Component
|
|
{
|
|
public:
|
|
Node* copy(); // Calls copy constructor on "this"
|
|
|
|
//HourTS* getOutputTS( char* );
|
|
|
|
int buildMinimumTS( char**, int );
|
|
|
|
virtual int finalizeSolution( TSDate& );
|
|
// Handles solution cleanup at the end of
|
|
// each time-step.
|
|
int freeDataSpace(); // Frees dynamically allocated data.
|
|
|
|
Node(); // Default constructor.
|
|
|
|
Node( const Node& );
|
|
// Copy constructor.
|
|
|
|
virtual ~Node(); // Destructor.
|
|
|
|
void operator= ( const Node& );
|
|
// = Operator.
|
|
virtual void printContents( FILE* );
|
|
|
|
int setCOstring(); // Prepares carryover string for original
|
|
// parameter input and CO array sizing
|
|
|
|
int setCOstring(TSDate&); // Prepares carryover string for an
|
|
// existing the ResJSys carry over array
|
|
|
|
void setEndInflow(TSDate&); // Sums inflows at the end of
|
|
// the current timestep and sets
|
|
// the value of _endInflow, and
|
|
// also puts it in the
|
|
// _totalInflow timeseries, if
|
|
// applicable.
|
|
|
|
void setEndInflow(TSDate&, double);
|
|
// Sets the value of _endInflow,
|
|
// and also puts it in the
|
|
// _totalInflow timeseries, if
|
|
// applicable.
|
|
|
|
int setEndOfTimestepStates(TSDate&); // Reset states for next
|
|
// timestep and output
|
|
// carryover, if necessary.
|
|
|
|
int setStates( char**, int );
|
|
|
|
// HourTS *_stage_ts;
|
|
|
|
int transferCO ( Component * compOLD, char * cOLD, char * cNEW,
|
|
int * ipr );
|
|
// Transfers Node carryover given
|
|
// the new Node component and the old
|
|
// and new related portions of the
|
|
// carryover strings
|
|
|
|
void valueToMethod ( TSDate date, int reduceDiv );
|
|
|
|
HourTS *_diversion_ts;
|
|
// Diversion time series.
|
|
protected:
|
|
virtual double* getInternalValuePtr( char* );
|
|
// Returns a pointer to an internal data
|
|
// member.
|
|
private:
|
|
int initialize(); // Initializes private data members.
|
|
|
|
public:
|
|
// NOTE: In previous paradigms, the Node simply added inflows and
|
|
// discharged without further transformation. Both inflows
|
|
// and discharges (outflows) are considered below due to the
|
|
// possibility of adding a diversion capability to the Node at
|
|
// some future time.
|
|
double _prevInflow; // Total instantaneous inflow to the
|
|
// node at the timestep before
|
|
// the beginning of this timestep--
|
|
// corresponds to the sum of inflows
|
|
// at _prev_date minus one timestep
|
|
// when cur_date is the timestep
|
|
// being solved.
|
|
double _startInflow; // Total instantaneous inflow to the
|
|
// node at the beginning of this
|
|
// timestep--corresponds to the sum
|
|
// of inflows at _prev_date when
|
|
// cur_date is the timestep being
|
|
// solved.
|
|
double _endInflow; // Total instantaneous inflow to the
|
|
// node at the end of this
|
|
// timestep--corresponds to the sum
|
|
// of inflows at cur_date or the
|
|
// timestep being solved.
|
|
|
|
double _discharge; // Diversion from the node (after
|
|
// inflow, before discharge).
|
|
double _prevDischarge; // Discharge from the node at the
|
|
// timestep before the beginning of this
|
|
// timestep--at _prev_date minus one
|
|
// timestep when cur_date is the
|
|
// timestep being solved.
|
|
double _startDischarge;// Discharge from the node at the
|
|
// beginning of this timestep--at
|
|
// _prev_date when cur_date is the
|
|
// timestep being solved.
|
|
double _endDischarge; // Discharge from the node at the end of
|
|
// this timestep--at cur_date or the
|
|
// timestep being solved.
|
|
double _diversion; // Diversion from the node (after
|
|
// inflow, before discharge).
|
|
double _prevDiversion; // Diversion from the node at the
|
|
// timestep before the beginning of this
|
|
// timestep--at _prev_date minus one
|
|
// timestep when cur_date is the
|
|
// timestep being solved.
|
|
double _startDiversion;// Diversion from the node at the
|
|
// beginning of this timestep--at
|
|
// _prev_date when cur_date is the
|
|
// timestep being solved.
|
|
double _endDiversion; // Diversion from the node at the end of
|
|
// this timestep--at cur_date or the
|
|
// timestep being solved.
|
|
|
|
DistributedTS _min_ctl; // TS read from the control file
|
|
int _min; // Trigger for minimum flow parameterization
|
|
int _mode; // Mode of MinRemainder interpolation.
|
|
bool _has_rating_table;
|
|
// The following two params are new as of
|
|
// Aug 2007 and are optional -
|
|
// if they are not defined in an input
|
|
// deck, the system will function
|
|
// as before (i.e. backward compatibility
|
|
// is preserved.
|
|
Table _rating_table; // rating curve table (optional)
|
|
|
|
char _rating_curve_id[MAXC]; // rating curve id (optional)
|
|
};
|
|
#endif
|