#ifdef _WIN32
|
#ifndef VARS_H
|
#define VARS_H
|
|
#include "structs.h"
|
|
#define NodeObjCnt 4
|
#define ValveObjCnt 7
|
#define MAXERRS 10000000 // Max. input errors reported
|
|
|
//全局变量(epa项目)
|
EXTERN Project __defaultProject;
|
// EXTERN int addcurve(Network* network, char* id);
|
EXTERN void inperrmsg(Project* pr, int err, int sect, char* line);
|
EXTERN int unlinked(Project* pr);
|
EXTERN int getpumpparams(Project* pr);
|
EXTERN char Msg[MAXMSG + 1], /* Text of output message */
|
InpFname[MAXFNAME + 1], /* Input file name */
|
Rpt1Fname[MAXFNAME + 1], /* Primary report file name */
|
Rpt2Fname[MAXFNAME + 1], /* Secondary report file name */
|
HydFname[MAXFNAME + 1], /* Hydraulics file name */
|
OutFname[MAXFNAME + 1], /* Binary output file name */
|
MapFname[MAXFNAME + 1], /* Map file name */
|
TmpFname[MAXFNAME + 1], /* Temporary file name */ //(2.00.12 - LR)
|
TmpDir[MAXFNAME + 1], /* Temporary directory name */ //(2.00.12 - LR)
|
Title[MAXTITLE][MAXMSG + 1], /* Problem title */
|
ChemName[MAXID + 1], /* Name of chemical */
|
ChemUnits[MAXID + 1], /* Units of chemical */
|
DefPatID[MAXID + 1], /* Default demand pattern ID */
|
Atime[13]; /* Clock time (hrs:min:sec) */
|
EXTERN long Step; /* 计算步长(s) */
|
EXTERN int CalcType; /* 计算类型 */
|
|
EXTERN int G_ClearType; /* 数据输出类型 */
|
|
EXTERN bool IsPatternEmpty, /* 标志模式是否为空 */
|
IsStatusEmpty, /* 标志开关状态是否为空 */
|
IsQualEmpty; /* 标志水质模式是否为空 */
|
EXTERN float DefaultPattern, /* 默认模式值为1 */
|
DefaultStatus; /* 默认开关状态为1 */
|
|
EXTERN char* NodeFile[NodeObjCnt],
|
* ValveFile[ValveObjCnt];
|
|
EXTERN SLayout Layout[256];
|
/* 输入参数 */
|
EXTERN int FormulaType; /* 计算公式类型 */
|
EXTERN char Duration[100]; //epa动态平差计算持续的时间
|
EXTERN char HydStep[100]; //设置水力计算时间
|
EXTERN char QualStep[100]; //设置水质计算时间
|
EXTERN char ReportStart[100]; //设置report的开始时间
|
EXTERN char ReportStep[100]; //设置report的时间间隔
|
EXTERN float Accuracy; //设计计算精度
|
|
/* 水质计算输入参数 */
|
EXTERN int G_QualType; //水质计算类型
|
EXTERN float Diffusivity; //相对扩散系数
|
EXTERN int OrderBulk; //水体反应级数
|
EXTERN int OrderTank; //水池反应级数
|
EXTERN int OrderWall; //管壁反应级数
|
EXTERN bool UseDefaultGlobalBulk; //是否使用默认水体反应系数
|
EXTERN bool UseDefaultGlobalWall; //是否使用默认管壁反应系数
|
EXTERN float GlobalBulk; //默认水体反应系数
|
EXTERN float GlobalWall; //默认管壁反应系数
|
EXTERN float LimitingPotential; //上下限浓度
|
EXTERN float RoughnessCorrelation; //与各种水力计算公式的相关系数
|
|
/* 输入数据 */
|
|
|
/* 输入数据 */
|
EXTERN SInNode** InNodeList;
|
EXTERN SInValve** InValveList;
|
EXTERN SInTank* InTank; /* 水池节点 */
|
EXTERN SInReser* InReser; /* 水库节点 */
|
EXTERN SInReser* InPress; /* 已知压力点 */
|
EXTERN SInValve* InCV; /* 止回阀 */
|
EXTERN SInPump* InCSP, /* 定速泵 */
|
* InRSP; /* 变速泵 */
|
EXTERN SInPipe* InPipe; /* 管线 */
|
EXTERN SObjPat* InObjPat; /* 对象模式对应关系 */
|
EXTERN SObjPatHead* InObjPatHead;
|
EXTERN SCurveValue* InCurve1; /* 曲线数据 */
|
EXTERN SCurveHead* InCurveHead;
|
|
EXTERN __int64 TotalCalcTime, /* 总计算时间 */
|
TotalHydrCalcTime, /* 水力计算总时间 */
|
TotalQualCalcTime, /* 水质总计算时间 */
|
PureHydrCalcTime, /* 纯水力计算时间 */
|
PureQualCalcTime, /* 纯水质计算时间 */
|
DataLoadTime, /* 第一次加载计算数据 */
|
TotalSaveTime, /* 数据保存时间 */
|
TotalModifyTime; /* 装载下一次计算数据时间 */
|
|
|
/*
|
------------------------------------------------------
|
用于取得设备类型编号
|
设备类型编号 = 设备编号 / 2^24
|
------------------------------------------------------
|
*/
|
#define GET_LAYOUT_ID(x) ((BYTE)((x) >> 24))
|
|
/*
|
------------------------------------------------------
|
用于取得结构中的某个字段在结构中的偏移量
|
s 结构名称
|
f 字段名称
|
------------------------------------------------------
|
*/
|
#define STRUCT_OFFSET(s,f) ((int)(&(((s*)0)->f)))
|
/*
|
------------------------------------------------------
|
定义计算类型
|
------------------------------------------------------
|
*/
|
|
#define StaticCalc 0 // 静态计算
|
#define DynamicCalc 1 // 动态计算
|
#define OfflineScadaSimulate 2 // 离线SCADA模拟
|
#define OnlineScadaSimulate 3 // 在线SCADA模拟
|
#define ModelAttemp 4 // 调度
|
|
/*
|
------------------------------------------------------
|
定义数据输出方式
|
------------------------------------------------------
|
*/
|
#define ByClear 0 // 清除全部数据
|
#define ByReplace 1 // 更新指定时间的数据
|
#define ByUpdate 2 // 更新指定字段数据
|
|
/*
|
------------------------------------------------------
|
定义水质计算类型
|
------------------------------------------------------
|
*/
|
#define None 0 // 不进行水质计算
|
#define Age 1 // 水龄计算
|
#define Chlorine 2 // 余氯计算
|
#define THMs 3 // 三卤甲烷计算
|
#define Trace 4 // 物质追踪
|
|
|
|
|
/* 输入数据数量 */
|
EXTERN long* NodeCountList,
|
* ValveCountList;
|
|
EXTERN long TankCount, /* 水池节点数量 */
|
ReserCount, /* 水库节点数量 */
|
PressCount, /* 已知压力点数量 */
|
RealCVCount, /* 没有被删除的止回阀数量 */
|
CVCount, /* 止回阀数量 */
|
CSPCount, /* 定速泵数量 */
|
RSPCount, /* 变速泵数量 */
|
PipeCount, /* 管线数量 */
|
PressureCount, /* 压力监测点数量 */
|
QualityCount, /* 水质监测点数量 */
|
FlowMeterCount, /* 流量监测点数量 */
|
ObjPatCount, /* 对象模式对应关系数量 */
|
CurveCount1; /* 曲线数量 */
|
EXTERN int InCurveHeadCount;
|
EXTERN int InObjPatHeadCount;
|
/* SCADA模拟数据 */
|
EXTERN float TotalSimuDemand; /* 模拟总流量 */
|
EXTERN float TotalScadaDemand; /* 实际总流量 */
|
EXTERN float DemandMult; /* 模拟总流量和实际总流量比例系数 */
|
|
/* 输出数据 */
|
EXTERN SOutNode** OutNodeList;
|
EXTERN SOutValve** OutValveList;
|
EXTERN SOutTank* OutTank; /* 水池节点 */
|
EXTERN SOutReser* OutReser; /* 水库节点 */
|
EXTERN SOutReser* OutPress; /* 已知压力点 */
|
EXTERN SOutPump* OutCSP, /* 定速泵 */
|
* OutRSP; /* 变速泵 */
|
EXTERN SOutPipe* OutPipe; /* 管线 */
|
|
|
typedef struct HTentry *HTtable;
|
/* Array pointers not allocated and freed in same routine */
|
//EXTERN char *S, /* Link status */
|
// *OldStat; /* Previous link/tank status */
|
// EXTERN double *D, /* Node actual demand */
|
// *C, /* Node actual quality */
|
// *E, /* Emitter flows */
|
// *K, /* Link settings */
|
// *Q, /* Link flows */
|
// *R, /* Pipe reaction rate */
|
// *X; /* General purpose array */
|
EXTERN double *H; /* Node heads */
|
//EXTERN Snode *Node; /* Node data */
|
//EXTERN HashTable *Nht, *Lht; /* Hash tables for ID labels */
|
#define FLAG 151200769 // 数据版本DWORD
|
// 0x09 03 24 01
|
#define LAYOUT_BASE 65536 // 层基数
|
#define DEF_GPV_X_0 0
|
#define DEF_GPV_Y_0 0
|
#define DEF_GPV_X_1 10000
|
#define DEF_GPV_Y_1 0
|
|
/* ------------ 输入输出文件名 ---------- */
|
#define L_GeneralNode "65542"
|
#define L_TransportNode "65543"
|
#define L_FireplugNode "65545"
|
#define L_MeterNode "65544"
|
#define L_Tank "65538"
|
#define L_Reser "65539"
|
#define L_Press "65540"
|
#define L_FCV "65546"
|
#define L_PRV "65550"
|
#define L_PBV "65551"
|
#define L_PSV "65547"
|
#define L_TCV "65549"
|
#define L_GPV "65548"
|
#define L_CV "65552"
|
#define L_CSP "65554"
|
#define L_RSP "65555"
|
#define L_Pipe "65556"
|
|
#define L_CurveValue "1"
|
#define L_Status "2"
|
#define L_PatternValue "3"
|
#define L_ObjectPattern "4"
|
#define L_QualPattern "5"
|
|
//以下仅为输入文件
|
#define f_PatternValue "PatternValue"
|
#define f_Status "Status"
|
#define f_ObjectPattern "ObjectPattern"
|
#define f_CurveValue "CurveValue"
|
|
#define w_DEFAULT_GPV "GPVDefault"
|
#define Water_R 1000
|
|
|
//EXTERN int MaxNodes, /* Node count from input file */
|
// MaxLinks, /* Link count from input file */
|
//
|
//EXTERN int MaxJuncs, /* Junction count */
|
// MaxJuncsA, /* Actual Junction Count */
|
// MaxJuncsV, /* Virtual Junction Count */
|
// MaxPipes, /* Pipe count */
|
// MaxTanks, /* Tank count */
|
// MaxPumps, /* Pump count */
|
// MaxValves, /* Valve count */
|
// MaxControls, /* Control count */
|
// MaxRules, /* Rule count */
|
// MaxPats, /* Pattern count */
|
// MaxCurves, /* Curve count */
|
// Nnodes, /* Number of network nodes */
|
// Ntanks, /* Number of tanks */
|
// Njuncs, /* Number of junction nodes */
|
// Nlinks, /* Number of network links */
|
// Npipes, /* Number of pipes */
|
// Npumps, /* Number of pumps */
|
// Nvalves, /* Number of valves */
|
// Ncontrols, /* Number of simple controls */
|
// Nrules, /* Number of control rules */
|
// Npats, /* Number of time patterns */
|
// Ncurves, /* Number of data curves */
|
// Nperiods, /* Number of reporting periods */
|
// Ncoeffs, /* Number of non-0 matrix coeffs*/
|
// DefPat, /* Default demand pattern */
|
// Epat, /* Energy cost time pattern */
|
// MaxIter, /* Max. hydraulic trials */
|
// ExtraIter, /* Extra hydraulic trials */
|
// TraceNode, /* Source node for flow tracing */
|
// PageSize, /* Lines/page in output report */
|
// CheckFreq, /* Hydraulics solver parameter */
|
// MaxCheck; /* Hydraulics solver parameter */
|
//
|
EXTERN STmplist *Patlist; /* Temporary time pattern list */
|
EXTERN STmplist *Curvelist; /* Temporary list of curves */
|
//EXTERN Spattern *Pattern; /* Time patterns */
|
//EXTERN Scurve *Curve; /* Curve data */
|
|
|
#endif
|
#endif
|