All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
environment.h
1 /* Copyright (C) 2004-2009 MBSim Development Team
2  *
3  * This library is free software; you can redistribute it and/or
4  * modify it under the terms of the GNU Lesser General Public
5  * License as published by the Free Software Foundation; either
6  * version 2.1 of the License, or (at your option) any later version.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  * Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public
14  * License along with this library; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16  *
17  * Contact: markus.ms.schneider@gmail.com
18  */
19 
20 #ifndef _MBSIMHYDRAULICS_ENVIRONMENT_H_
21 #define _MBSIMHYDRAULICS_ENVIRONMENT_H_
22 
23 #include "mbxmlutilshelper/dom.h"
24 #include "mbsim/environment.h"
25 
26 namespace MBSimHydraulics {
27 
28  const MBXMLUtils::NamespaceURI MBSIMHYDRAULICS("http://www.mbsim-env.de/MBSimHydraulics");
29 
32  private:
33  double rhoConstant, dVdT, rho0, T0, dRhodT;
34  double (HydraulicEnvironment::*calcRho)(double T);
35  double calcConstantSpecificMass(double T) {return rhoConstant; }
36  double calcVolumeDependingOnTemperature(double T) {return rho0*(1./(1.+dVdT*(T-T0))); }
37  double calcSpecificMassDependingOnTemperature(double T) {return rho0 + dRhodT*(T- T0 ); }
38 
39  double nuConstant, Tm, Wm, T2, m;
40  double (HydraulicEnvironment::*calcNu)(double T);
41  double calcConstantKinematicViscosity(double T) {return nuConstant; }
42  double calcWalterUbbelohdeKinematicViscosity(double T);
43 
44  double T;
45 
46  protected:
47  double E0, kappa, rho, nu;
48  double pinf;
49  static boost::scoped_ptr<HydraulicEnvironment> instance;
50  HydraulicEnvironment() : Environment(), rhoConstant(0), dVdT(0), rho0(0), T0(0), dRhodT(0), nuConstant(0), Tm(0), Wm(0), T2(0), m(0), T(0), E0(0), kappa(0), rho(0), nu(0), pinf(0) {}
51 
52  public:
53  static HydraulicEnvironment * getInstance() {return instance.get(); }
54  virtual void initializeUsingXML(xercesc::DOMElement *e);
55  virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent) { return 0;}
56  virtual void initializeFluidData();
57 
59  void setBasicBulkModulus(double E0_) {E0=E0_; }
61  void setKappa(double kappa_) {kappa=kappa_; }
62 
64  void setTemperature(double T_) {T=T_; }
65 
67  void setConstantSpecificMass(double rho_);
69  void setVolumeDependingOnTemperature(double dVdT_, double rho0_, double T0_);
71  void setSpecificMassDependingOnTemperature(double dRhodT_, double rho0_, double T0_);
72 
74  void setConstantKinematicViscosity(double nu_);
76  void setWalterUbbelohdeKinematicViscosity(double T1, double nu1, double T2, double nu2);
77 
79  void setEnvironmentPressure(double pinf_) {pinf=pinf_; }
81  double getEnvironmentPressure() {return pinf; }
82 
84  double getSpecificMass() {return rho; }
86  double getBasicBulkModulus() {return E0; }
88  double getKinematicViscosity() {return nu; }
90  double getKappa() {return kappa; }
92  double getDynamicViscosity() {return nu*rho; }
94  double getTemperature() {return T;}
95  };
96 
99  public:
100  OilBulkModulus(const std::string &name, double E0, double pinf, double kappa, double fracAir) {
101  ownerName=name;
102  factor[0]=E0*(1.+fracAir);
103  factor[1]=pow(pinf, 1./kappa) * fracAir * E0 / kappa;
104  factor[2]=-(1.+1./kappa);
105 
106  // HYSIM[0]=E0;
107  // HYSIM[1]=fracAir*pinf;
108  // HYSIM[2]=pow(pinf, 1./kappa) * fracAir * E0 / kappa;
109  // HYSIM[3]=1./kappa;
110  }
111  double operator()(const double &p);
112  private:
113  std::string ownerName;
114  double factor[3];
115  double HYSIM[4];
116  };
117 
118 }
119 
120 #endif
double getDynamicViscosity()
Definition: environment.h:92
double getTemperature()
Definition: environment.h:94
double getSpecificMass()
Definition: environment.h:84
void setSpecificMassDependingOnTemperature(double dRhodT_, double rho0_, double T0_)
Definition: environment.cc:108
void setEnvironmentPressure(double pinf_)
Definition: environment.h:79
double getKinematicViscosity()
Definition: environment.h:88
Definition: environment.h:98
void setConstantKinematicViscosity(double nu_)
Definition: environment.cc:115
double getEnvironmentPressure()
Definition: environment.h:81
void setKappa(double kappa_)
Definition: environment.h:61
double getKappa()
Definition: environment.h:90
void setTemperature(double T_)
Definition: environment.h:64
void setWalterUbbelohdeKinematicViscosity(double T1, double nu1, double T2, double nu2)
Definition: environment.cc:120
void setBasicBulkModulus(double E0_)
Definition: environment.h:59
void setVolumeDependingOnTemperature(double dVdT_, double rho0_, double T0_)
Definition: environment.cc:101
Definition: environment.h:31
void setConstantSpecificMass(double rho_)
Definition: environment.cc:96
double getBasicBulkModulus()
Definition: environment.h:86

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML