MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
hutils.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/hydr/hutils.h,v 1.26 2017/01/12 14:46:32 masarati Exp $ */
2 /*
3  * MBDyn (C) is a multibody analysis code.
4  * http://www.mbdyn.org
5  *
6  * Copyright (C) 1996-2017
7  *
8  * Pierangelo Masarati <masarati@aero.polimi.it>
9  * Paolo Mantegazza <mantegazza@aero.polimi.it>
10  *
11  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
12  * via La Masa, 34 - 20156 Milano, Italy
13  * http://www.aero.polimi.it
14  *
15  * Changing this copyright notice is forbidden.
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation (version 2 of the License).
20  *
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */
31 
32 /*
33  * Copyright 1999-2000 Lamberto Puggelli <puggelli@tiscalinet.it>
34  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
35  */
36 
37 #ifndef HUTILS_H
38 #define HUTILS_H
39 
40 #include "preselem.h"
41 
42 /* Accumulator - begin */
43 
44 class Accumulator : virtual public Elem, public HydraulicElem {
45  private:
47  doublereal stroke; /* corsa pistone */
48  doublereal start; /* posizione iniziale*/
49  doublereal area; /* area stantufo */
50  doublereal area_pipe; /* area del tubo */
51  doublereal mass; /* massa valvola */
52  doublereal press0; /* pressione del gas con l'accumulatore scarico */
53  doublereal press_max; /* pressione massima del gas nell'accumulatore */
54  doublereal Kappa; /* costante della trasformazione */
55  doublereal weight; /* peso */
56  doublereal spring; /* costante della molla */
57  doublereal force0; /* precarico della molla */
58  doublereal h_in; /* coef per la perdita di carico concentrata */
59  doublereal h_out; /* in entrata & uscita accumulatore */
60  doublereal h; /* quella giusta delle due*/
61  doublereal density; /* densita' del fluido */
62 
63 
64  doublereal s_min_gas; /* spazio minimo del gas */
65  doublereal s_max; /* corsa massima della valvola */
66  doublereal ratio2; /* rapporto (area accumulatore/area tubo)^2 */
67  doublereal c_spost; /* coef dello spostamento */
68  doublereal c_vel; /* coef della velocita' */
69  doublereal c_acc; /* coef dell'accelerazione */
70  doublereal c1; /* coef dello spostamento */
71  doublereal c2; /* coef della velocita' */
72  doublereal c3; /* coef dell'accelerazione */
73  doublereal c4; /* coef. per il termine costante */
74  doublereal cf1; /* coef dello spostamento finale */
75  doublereal cf2; /* coef della velocita' finale */
76  doublereal cf3; /* coef dell'accelerazione finale */
77  doublereal cf4; /* coef. per il termine costante finale */
78 
79  doublereal s; /* spostamento diaframma (per l'output) */
80  doublereal v; /* velocita' diaframma (per l'output) */
81  doublereal sp; /* velocita' diaframma */
82  doublereal vp; /* accelerazione diaframma (per l'output) */
83  doublereal pgas; /* pressione gas (per l'output) */
84  doublereal flow; /* portata nodo 1 (per l'output) */
85 
86  public:
87  Accumulator(unsigned int uL, const DofOwner* pD,
88  HydraulicFluid* hf, const PressureNode* p1,
91  doublereal P0, doublereal Pmax, doublereal k,
93  doublereal cs, doublereal cv, doublereal ca, flag fOut);
94 
95  ~Accumulator(void);
96 
97  /* Tipo di elemento idraulico (usato solo per debug ecc.) */
98  virtual HydraulicElem::Type GetHydraulicType(void) const;
99 
100  /* Contributo al file di restart */
101  virtual std::ostream& Restart(std::ostream& out) const;
102 
103  virtual unsigned int iGetNumDof(void) const;
104  virtual DofOrder::Order GetDofType(unsigned int i) const;
105 
106  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const;
107 
109  doublereal dCoef,
110  const VectorHandler& XCurr,
111  const VectorHandler& XPrimeCurr);
112 
114  doublereal dCoef,
115  const VectorHandler& XCurr,
116  const VectorHandler& XPrimeCurr);
117 
118  virtual void Output(OutputHandler& OH) const;
119 
120  virtual void SetValue(DataManager *pDM,
122  SimulationEntity::Hints *ph = 0);
123 
124  /* *******PER IL SOLUTORE PARALLELO******** */
125  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
126  utile per l'assemblaggio della matrice di connessione fra i dofs */
127  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
128  connectedNodes.resize(1);
129  connectedNodes[0] = pNode1;
130  };
131  /* ************************************************ */
132 };
133 
134 /* Accumulator - end */
135 
136 
137 /* Tank - begin */
138 
139 class Tank : virtual public Elem, public HydraulicElem {
140  private:
147  doublereal s_max; /* livello massimo dell'olio */
148  doublereal s_min; /* soglia d'allarme */
149  doublereal Kappa1; /* coef.di perdita concentrata fluido entrante nel serbatoio */
150  doublereal Kappa2; /* coef.di perdita concentrata fluido uscente dal serbatoio */
152  doublereal s; /* livello */
153  doublereal sp; /* tasso di crescita del livello */
154  doublereal flow1; /* portata al nodo di carico (per l'output) */
155  doublereal flow2; /* portata al nodo di scarico (per l'output) */
156 
157  public:
158  Tank(unsigned int uL, const DofOwner* pD,
159  HydraulicFluid* hf,
160  const PressureNode* p1, const PressureNode* p2,
161  doublereal press, doublereal A_pipe, doublereal A_serb,
162  doublereal lev, doublereal s_mx, doublereal s_mn,
163  doublereal c_s, flag fOut);
164 
165  ~Tank(void);
166 
167  /* Tipo di elemento idraulico (usato solo per debug ecc.) */
168  virtual HydraulicElem::Type GetHydraulicType(void) const;
169 
170  /* Contributo al file di restart */
171  virtual std::ostream& Restart(std::ostream& out) const;
172 
173  virtual unsigned int iGetNumDof(void) const;
174  virtual DofOrder::Order GetDofType(unsigned int i) const;
175 
176  virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const;
177 
179  doublereal dCoef,
180  const VectorHandler& XCurr,
181  const VectorHandler& XPrimeCurr);
182 
184  doublereal dCoef,
185  const VectorHandler& XCurr,
186  const VectorHandler& XPrimeCurr);
187 
188  virtual void Output(OutputHandler& OH) const;
189 
190  virtual void SetValue(DataManager *pDM,
192  SimulationEntity::Hints *ph = 0);
193 
194  /* *******PER IL SOLUTORE PARALLELO******** */
195  /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
196  utile per l'assemblaggio della matrice di connessione fra i dofs */
197  virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
198  connectedNodes.resize(2);
199  connectedNodes[0] = pNode1;
200  connectedNodes[1] = pNode2;
201  };
202  /* ************************************************ */
203 };
204 
205 /* Tank - end */
206 
207 #endif
doublereal flow2
Definition: hutils.h:155
doublereal area_serb
Definition: hutils.h:145
doublereal h_in
Definition: hutils.h:58
doublereal cf1
Definition: hutils.h:74
doublereal press
Definition: hutils.h:143
const PressureNode * pNode2
Definition: hutils.h:142
doublereal s
Definition: hutils.h:79
doublereal weight
Definition: hutils.h:55
long int flag
Definition: mbdyn.h:43
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: hutils.cc:466
doublereal press0
Definition: hutils.h:52
doublereal press_max
Definition: hutils.h:53
~Accumulator(void)
Definition: hutils.cc:88
doublereal c_acc
Definition: hutils.h:69
doublereal s
Definition: hutils.h:152
doublereal spring
Definition: hutils.h:56
doublereal c2
Definition: hutils.h:71
doublereal stroke
Definition: hutils.h:47
Definition: hutils.h:139
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: hutils.h:197
virtual unsigned int iGetNumDof(void) const
Definition: hutils.cc:443
doublereal level
Definition: hutils.h:146
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: hutils.cc:561
doublereal Kappa2
Definition: hutils.h:150
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
Definition: hutils.h:127
doublereal s_max
Definition: hutils.h:65
virtual void Output(OutputHandler &OH) const
Definition: hutils.cc:365
std::vector< Hint * > Hints
Definition: simentity.h:89
doublereal h
Definition: hutils.h:60
doublereal area
Definition: hutils.h:49
doublereal flow1
Definition: hutils.h:154
doublereal h_out
Definition: hutils.h:59
doublereal force0
Definition: hutils.h:57
~Tank(void)
Definition: hutils.cc:420
doublereal c3
Definition: hutils.h:72
virtual std::ostream & Restart(std::ostream &out) const
Definition: hutils.cc:436
doublereal v
Definition: hutils.h:80
virtual std::ostream & Restart(std::ostream &out) const
Definition: hutils.cc:102
doublereal pgas
Definition: hutils.h:83
doublereal c4
Definition: hutils.h:73
doublereal vp
Definition: hutils.h:82
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: hutils.cc:672
doublereal sp
Definition: hutils.h:153
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: hutils.cc:129
doublereal sp
Definition: hutils.h:81
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: hutils.cc:115
doublereal c_spost
Definition: hutils.h:67
virtual HydraulicElem::Type GetHydraulicType(void) const
Definition: hutils.cc:95
doublereal s_min_gas
Definition: hutils.h:64
doublereal c_spost
Definition: hutils.h:151
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
Definition: hutils.cc:376
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: hutils.cc:459
virtual unsigned int iGetNumDof(void) const
Definition: hutils.cc:109
doublereal start
Definition: hutils.h:48
const PressureNode * pNode1
Definition: hutils.h:141
Accumulator(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, doublereal St, doublereal start, doublereal As, doublereal A_pipe, doublereal ms, doublereal h_in, doublereal h_out, doublereal P0, doublereal Pmax, doublereal k, doublereal Wg, doublereal Kspr, doublereal force0, doublereal cs, doublereal cv, doublereal ca, flag fOut)
Definition: hutils.cc:46
virtual void Output(OutputHandler &OH) const
Definition: hutils.cc:662
Definition: elem.h:75
doublereal cf2
Definition: hutils.h:75
doublereal mass
Definition: hutils.h:51
doublereal s_max
Definition: hutils.h:147
Tank(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, doublereal press, doublereal A_pipe, doublereal A_serb, doublereal lev, doublereal s_mx, doublereal s_mn, doublereal c_s, flag fOut)
Definition: hutils.cc:393
virtual HydraulicElem::Type GetHydraulicType(void) const
Definition: hutils.cc:428
doublereal density
Definition: hutils.h:61
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: hutils.cc:122
doublereal s_min
Definition: hutils.h:148
doublereal cf3
Definition: hutils.h:76
const PressureNode * pNode1
Definition: hutils.h:46
doublereal Kappa
Definition: hutils.h:54
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
doublereal flow
Definition: hutils.h:84
doublereal Kappa1
Definition: hutils.h:149
doublereal ratio2
Definition: hutils.h:66
doublereal c1
Definition: hutils.h:70
doublereal area_pipe
Definition: hutils.h:50
doublereal cf4
Definition: hutils.h:77
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: hutils.cc:218
doublereal c_vel
Definition: hutils.h:68
doublereal area_pipe
Definition: hutils.h:144
virtual DofOrder::Order GetDofType(unsigned int i) const
Definition: hutils.cc:450