zoukankan      html  css  js  c++  java
  • EPANET头文件解读系列9——VARS.H

    /*
    ************************************************************************
                Global Variables for EPANET Program                           
                                                                       
    VERSION:    2.00                                              
    DATE:       5/8/00
                6/24/02
                2/14/08    (2.00.12)
    AUTHOR:     L. Rossman                                        
                US EPA - NRMRL
                                                                        
    ************************************************************************
    */
    //该文件定义了EPANET程序中的全局变量。文件的组织形式是根据变量的类型。每个变量都有一个简单的说明。
    EXTERN FILE     *InFile,               /* Input file pointer           */
                    *OutFile,              /* Output file pointer          */
                    *RptFile,              /* Report file pointer          */
                    *HydFile,              /* Hydraulics file pointer      */
                    *TmpOutFile;           /* Temporary file handle        */
    EXTERN long     HydOffset,             /* Hydraulics file byte offset  */
                    OutOffset1,            /* 1st output file byte offset  */
                    OutOffset2;            /* 2nd output file byte offset  */
    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    */

    /*** Updated 6/24/02 ***/
                    Atime[13],             /* Clock time (hrs:min:sec)     */

                    Outflag,               /* Output file flag             */      //(2.00.12 - LR)
                    Hydflag,               /* Hydraulics flag              */
                    Qualflag,              /* Water quality flag           */
                    Reactflag,             /* Reaction indicator           */      //(2.00.12 - LR)
                    Unitsflag,             /* Unit system flag             */
                    Flowflag,              /* Flow units flag              */
                    Pressflag,             /* Pressure units flag          */
                    Formflag,              /* Hydraulic formula flag       */
                    Rptflag,               /* Report flag                  */
                    Summaryflag,           /* Report summary flag          */
                    Messageflag,           /* Error/warning message flag   */
                    Statflag,              /* Status report flag           */
                    Energyflag,            /* Energy report flag           */
                    Nodeflag,              /* Node report flag             */
                    Linkflag,              /* Link report flag             */
                    Tstatflag,             /* Time statistics flag         */
                    Warnflag,              /* Warning flag                 */
                    Openflag,              /* Input processed flag         */
                    OpenHflag,             /* Hydraul. system opened flag  */
                    SaveHflag,             /* Hydraul. results saved flag  */
                    OpenQflag,             /* Quality system opened flag   */
                    SaveQflag,             /* Quality results saved flag   */
                    Saveflag;              /* General purpose save flag    */
    EXTERN int      MaxNodes,              /* Node count from input file   */
                    MaxLinks,              /* Link count from input file   */
                    MaxJuncs,              /* 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 double   Ucf[MAXVAR],           /* Unit conversion factors      */
                    Ctol,                  /* Water quality tolerance      */
                    Htol,                  /* Hydraulic head tolerance     */
                    Qtol,                  /* Flow rate tolerance          */
                    RQtol,                 /* Flow resistance tolerance    */
                    Hexp,                  /* Exponent in headloss formula */
                    Qexp,                  /* Exponent in orifice formula  */
                    Dmult,                 /* Demand multiplier            */
                    Hacc,                  /* Hydraulics solution accuracy */
                    DampLimit,             /* Solution damping threshold   */      //(2.00.12 - LR)
                    BulkOrder,             /* Bulk flow reaction order     */
                    WallOrder,             /* Pipe wall reaction order     */
                    TankOrder,             /* Tank reaction order          */
                    Kbulk,                 /* Global bulk reaction coeff.  */
                    Kwall,                 /* Global wall reaction coeff.  */
                    Climit,                /* Limiting potential quality   */
                    Rfactor,               /* Roughness-reaction factor    */
                    Diffus,                /* Diffusivity (sq ft/sec)      */
                    Viscos,                /* Kin. viscosity (sq ft/sec)   */
                    SpGrav,                /* Specific gravity             */
                    Ecost,                 /* Base energy cost per kwh     */
                    Dcost,                 /* Energy demand charge/kw/day  */
                    Epump,                 /* Global pump efficiency       */
                    Emax,                  /* Peak energy usage            */
                    Dsystem,               /* Total system demand          */
                    Wbulk,                 /* Avg. bulk reaction rate      */
                    Wwall,                 /* Avg. wall reaction rate      */
                    Wtank,                 /* Avg. tank reaction rate      */
                    Wsource;               /* Avg. mass inflow             */
    EXTERN long     Tstart,                /* Starting time of day (sec)   */
                    Hstep,                 /* Nominal hyd. time step (sec) */
                    Qstep,                 /* Quality time step (sec)      */
                    Pstep,                 /* Time pattern time step (sec) */
                    Pstart,                /* Starting pattern time (sec)  */
                    Rstep,                 /* Reporting time step (sec)    */
                    Rstart,                /* Time when reporting starts   */
                    Rtime,                 /* Next reporting time          */
                    Htime,                 /* Current hyd. time (sec)      */
                    Qtime,                 /* Current quality time (sec)   */
                    Hydstep,               /* Actual hydraulic time step   */
                    Rulestep,              /* Rule evaluation time step    */
                    Dur;                   /* Duration of simulation (sec) */
    EXTERN SField   Field[MAXVAR];         /* Output reporting fields      */

    /* 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 STmplist *Patlist;              /* Temporary time pattern list  */
    EXTERN STmplist *Curvelist;            /* Temporary list of curves     */
    EXTERN Spattern *Pattern;              /* Time patterns                */
    EXTERN Scurve   *Curve;                /* Curve data                   */
    EXTERN Snode    *Node;                 /* Node data                    */
    EXTERN Slink    *Link;                 /* Link data                    */
    EXTERN Stank    *Tank;                 /* Tank data                    */
    EXTERN Spump    *Pump;                 /* Pump data                    */
    EXTERN Svalve   *Valve;                /* Valve data                   */
    EXTERN Scontrol *Control;              /* Control data                 */
    EXTERN HTtable  *Nht, *Lht;            /* Hash tables for ID labels    */
    EXTERN Padjlist *Adjlist;              /* Node adjacency lists         */

    /*
    ** NOTE: Hydraulic analysis of the pipe network at a given point in time
    **       is done by repeatedly solving a linearized version of the
    **       equations for conservation of flow & energy:
    **
    **           A*H = F
    **
    **       where H = vector of heads (unknowns) at each node,
    **             F = vector of right-hand side coeffs.
    **             A = square matrix of coeffs.
    **       and both A and F are updated at each iteration until there is
    **       negligible change in pipe flows.
    **
    **       Each row (or column) of A corresponds to a junction in the pipe
    **       network. Each link (pipe, pump or valve) in the network has a
    **       non-zero entry in the row-column of A that corresponds to its
    **       end points. This results in A being symmetric and very sparse.
    **       The following arrays are used to efficiently manage this sparsity:
    */

    EXTERN double   *Aii,        /* Diagonal coeffs. of A               */
                    *Aij,        /* Non-zero, off-diagonal coeffs. of A */
                    *F;          /* Right hand side coeffs.             */
    EXTERN double   *P,          /* Inverse headloss derivatives        */
                    *Y;          /* Flow correction factors             */
    EXTERN int      *Order,      /* Node-to-row of A                    */
                    *Row,        /* Row-to-node of A                    */
                    *Ndx;        /* Index of link's coeff. in Aij       */
    /*
    ** The following arrays store the positions of the non-zero coeffs.   
    ** of the lower triangular portion of A whose values are stored in Aij:
    */
    EXTERN int      *XLNZ,       /* Start position of each column in NZSUB  */
                    *NZSUB,      /* Row index of each coeff. in each column */
                    *LNZ;        /* Position of each coeff. in Aij array    */

  • 相关阅读:
    多文档上传文件
    每个程序员都有一颗想改变世界的心
    获取在服务器上面的路径
    串行口通信(二)之串行口方式0
    串行口通信(一)
    keil进阶教程
    keil教程之新建软件工程
    定时器2的使用
    定时器之计数器应用
    定时器(二)
  • 原文地址:https://www.cnblogs.com/KingOfFreedom/p/3312316.html
Copyright © 2011-2022 走看看