EPANET  3.0
EPANET Development Project
headlossmodel.h
Go to the documentation of this file.
1 /* EPANET 3
2  *
3  * Copyright (c) 2016 Open Water Analytics
4  * Licensed under the terms of the MIT License (see the LICENSE file for details).
5  *
6  */
7 
10 
11 #ifndef HEADLOSSMODEL_H_
12 #define HEADLOSSMODEL_H_
13 
14 #include <string>
15 
16 class Pipe;
17 
25 
27 {
28  public:
29 
31  HeadLossModel(double viscos);
32  virtual ~HeadLossModel() = 0;
33 
35  static HeadLossModel* factory(const std::string model, double viscos);
36 
38  static void findClosedHeadLoss(double flow, double& headLoss, double& gradient);
39  static void addCVHeadLoss(double flow, double& headLoss, double& gradient);
40 
42  void setViscosity(double v) { viscosity = v;}
43  virtual void setResistance(Pipe* pipe) = 0;
44 
46  virtual void findHeadLoss(
47  Pipe* pipe, double flow, double& headLoss, double& gradient) = 0;
48 
49  protected:
50  double viscosity;
51 };
52 
53 
54 //-----------------------------------------------------------------------------
57 //-----------------------------------------------------------------------------
58 
60 {
61  public:
62  HW_HeadLossModel(double viscos);
63  void setResistance(Pipe* pipe);
64  void findHeadLoss(Pipe* pipe, double flow, double& headLoss, double& gradient);
65 };
66 
67 
68 //-----------------------------------------------------------------------------
71 //-----------------------------------------------------------------------------
72 
74 {
75  public:
76  DW_HeadLossModel(double viscos);
77  void setResistance(Pipe* pipe);
78  void findHeadLoss(Pipe* pipe, double flow, double& headLoss, double& gradient);
79 };
80 
81 
82 //-----------------------------------------------------------------------------
85 //-----------------------------------------------------------------------------
86 
88 {
89  public:
90  CM_HeadLossModel(double viscos);
91  void setResistance(Pipe* pipe);
92  void findHeadLoss(Pipe* pipe, double flow, double& headLoss, double& gradient);
93 };
94 
95 #endif
HeadLossModel(double viscos)
Constructor/destructor.
Definition: headlossmodel.cpp:49
static void findClosedHeadLoss(double flow, double &headLoss, double &gradient)
Static methods for closed links & links with check valves.
Definition: headlossmodel.cpp:71
double viscosity
water viscosity (ft2/sec)
Definition: headlossmodel.h:50
static HeadLossModel * factory(const std::string model, double viscos)
Factory method for creating a headloss model.
Definition: headlossmodel.cpp:61
A circular conduit Link through which water flows.
Definition: pipe.h:23
The Chezy-Manning head loss model.
Definition: headlossmodel.h:87
void setViscosity(double v)
Methods that set model parameters.
Definition: headlossmodel.h:42
The Darcy-Weisbach head loss model.
Definition: headlossmodel.h:73
The Hazen-Williams head loss model.
Definition: headlossmodel.h:59
virtual void findHeadLoss(Pipe *pipe, double flow, double &headLoss, double &gradient)=0
Method that finds a link&#39;s head loss and its gradient.
The interface for a pipe head loss model.
Definition: headlossmodel.h:26