20 #ifndef _PRESSURE_LOSS_H_
21 #define _PRESSURE_LOSS_H_
23 #include "mbsim/element.h"
24 #include <mbsim/functions/function.h>
30 namespace MBSimHydraulics {
32 class HydlinePressureloss;
42 virtual void setLine(
const HLine *line_) { line = line_; }
61 void setLine(
const HLine *line_) { line = line_;
for(
unsigned int i=0; i<slp.size(); i++) slp[i]->setLine(line); }
63 double operator()(
const double& Q);
64 void initializeUsingXML(xercesc::DOMElement * element);
66 std::vector<LinePressureLoss*> slp;
74 void setLine(
const HLine *line_) { line = line_; pl->setLine(line); }
75 void setLinePressureLoss(
LinePressureLoss * pl_,
int number_) {pl=pl_; number=double(number_); }
76 double operator()(
const double& Q);
77 void initializeUsingXML(xercesc::DOMElement * element);
88 void setZeta(
double zeta_) {c=zeta_; }
89 double operator()(
const double& Q);
90 void initializeUsingXML(xercesc::DOMElement *element);
100 void setZetaPos(
double zeta_) {cPos=zeta_; }
101 void setZetaNeg(
double zeta_) {cNeg=zeta_; }
102 double operator()(
const double& Q);
103 void initializeUsingXML(xercesc::DOMElement *element);
113 double operator()(
const double& Q);
124 void setReferenceDiameter(
double dRef_) {dRef=dRef_; }
125 void setHydraulicDiameter(
double dHyd_,
double dHydNeg_=0);
126 void setSurfaceRoughness(
double k_) {k=k_; }
127 double operator()(
const double& Q);
128 void initializeUsingXML(xercesc::DOMElement *element);
130 double c, dRef, dHyd, dHydNeg, k, ReynoldsFactor, ReynoldsFactorNeg;
139 void setFactors(
double aPos_,
double bPos_,
double aNeg_,
double bNeg_,
double dRef_,
double dHyd_) { aPos=aPos_; bPos=bPos_; aNeg=aNeg_; bNeg=bNeg_; dRef=dRef_; dHyd=dHyd_; }
140 double operator()(
const double& Q);
141 void initializeUsingXML(xercesc::DOMElement *element);
144 double aPos, bPos, aNeg, bNeg;
145 double ReynoldsFactor;
154 void setZetaTabular(MBSim::Function<
double(
double)> * zetaTabular_) {
155 zetaTabular=zetaTabular_;
156 zetaTabular->setParent(
this);
157 zetaTabular->setName(
"Zeta");
159 double operator()(
const double& Q);
160 void initializeUsingXML(xercesc::DOMElement *element);
161 void init(MBSim::Element::InitStage stage);
163 MBSim::Function<double(double)> * zetaTabular;
178 void setZeta(
double zeta_) {c=zeta_; }
179 void setZetaNegative(
double zeta_) {cNeg=zeta_; }
180 virtual double operator()(
const double& Q);
181 void initializeUsingXML(xercesc::DOMElement *element);
191 void setLength(
double l_) {l=l_; }
192 void setWidth(
double b_) {b=b_; }
193 virtual double operator()(
const double& Q);
194 void initializeUsingXML(xercesc::DOMElement *element);
204 virtual double operator()(
const double& Q);
206 double nu, lambdaSlope, lambdaOffset, zetaFactor;
214 void setAlpha(
double alpha_) {alpha=alpha_; assert(alpha>.01); assert(alpha<=1.); }
215 virtual double operator()(
const double& Q);
216 void initializeUsingXML(xercesc::DOMElement *element);
218 double alpha, alpha2, c;
226 void setBallRadius(
double rBall_) {rBall=rBall_; }
227 double getBallRadius()
const {
return rBall; }
228 virtual double calcBallForceArea() {
return -1.; }
229 void initializeUsingXML(xercesc::DOMElement *element);
239 void setAlpha(
double alpha_) {alpha=alpha_; }
240 void setGamma(
double gamma_) {gamma=gamma_; }
241 virtual double calcBallForceArea() {
return M_PI*rBall*rBall*sin(gamma)*sin(gamma); }
242 double operator()(
const double& Q);
243 void initializeUsingXML(xercesc::DOMElement *element);
245 double alpha, gamma, c, siga, coga;
253 double operator()(
const double& Q);
263 void setAlpha(
double alpha_) {alpha=alpha_; }
264 double operator()(
const double& Q);
265 void initializeUsingXML(xercesc::DOMElement *element);
268 double numer[2], denom[2], c;
285 double operator()(
const double& pVorQ);
303 void setEccentricity(
double ecc_) {ecc=ecc_; }
304 double operator()(
const double& pVorQ);
305 void initializeUsingXML(xercesc::DOMElement *element);
307 double ecc, pVfac, xdfac;
315 double operator()(
const double& pVorQ);
317 double pVfac, vIfac, vOfac;
332 void setZeta(
double zeta_) {c=zeta_; }
333 virtual double operator()(
const double& Q);
334 void initializeUsingXML(xercesc::DOMElement *element);
Definition: pressure_loss.h:175
Definition: pressure_loss.h:211
Definition: pressure_loss.h:322
Definition: pressure_loss.h:50
Definition: pressure_loss.h:260
Definition: pressure_loss.h:168
Definition: pressure_loss.h:201
Definition: pressure_loss.h:136
Definition: pressure_loss.h:329
Definition: pressure_loss.h:39
Definition: pressure_loss.h:71
Definition: pressure_loss.h:273
Definition: pressure_loss.h:188
Definition: pressure_loss.h:85
Definition: pressure_loss.h:250
Definition: pressure_loss.h:120
Definition: pressure_loss.h:57
Definition: pressure_loss.h:300
Definition: pressure_loss.h:236
Definition: pressure_loss.h:110
Definition: pressure_loss.h:312
Definition: pressure_loss.h:282
Definition: pressure_loss.h:223
Definition: pressure_loss.h:150
Definition: pressure_loss.h:293
Definition: pressure_loss.h:27
Definition: pressure_loss.h:97