1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/hydr/valve.h,v 1.30 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 VALVE_H 38 #define VALVE_H 39 40 #include <preselem.h> 41 42 /* Control_valve - begin */ 43 44 class Control_valve : virtual public Elem, public HydraulicElem, public DriveOwner { 45 private: 46 const PressureNode* pNode1; 47 const PressureNode* pNode2; 48 const PressureNode* pNode3; 49 const PressureNode* pNode4; 50 doublereal Stato; 51 doublereal Cd; /* coefficiente di perdita */ 52 doublereal area_max; /* larghezza del condotto: A=x*area_max */ 53 doublereal loss_area; /* area di trafilamento in % sull'area max*/ 54 doublereal s_max; 55 doublereal flow1; /* portata nodo 1 (per l'output) */ 56 doublereal flow2; /* portata nodo 2 (per l'output) */ 57 doublereal flow3; /* portata nodo 3 (per l'output) */ 58 doublereal flow4; /* portata nodo 4 (per l'output) */ 59 doublereal A1; 60 doublereal A2; 61 doublereal A3; 62 doublereal A4; 63 doublereal A1min; 64 doublereal A2min; 65 doublereal A3min; 66 doublereal A4min; 67 68 public: 69 Control_valve(unsigned int uL, const DofOwner* pD, HydraulicFluid* hf, 70 const PressureNode* p1, const PressureNode* p2, 71 const PressureNode* p3, const PressureNode* p4, 72 doublereal A_max, doublereal Loss_a, const DriveCaller* pDC,flag fOut); 73 74 ~Control_valve(void); 75 76 /* Tipo di elemento idraulico (usato solo per debug ecc.) */ 77 virtual HydraulicElem::Type GetHydraulicType(void) const; 78 79 /* Contributo al file di restart */ 80 virtual std::ostream& Restart(std::ostream& out) const; 81 82 virtual unsigned int iGetNumDof(void) const; 83 virtual DofOrder::Order GetDofType(unsigned int i) const; 84 85 virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const; 86 87 VariableSubMatrixHandler& AssJac(VariableSubMatrixHandler& WorkMat, 88 doublereal dCoef, 89 const VectorHandler& XCurr, 90 const VectorHandler& XPrimeCurr); 91 92 SubVectorHandler& AssRes(SubVectorHandler& WorkVec, 93 doublereal dCoef, 94 const VectorHandler& XCurr, 95 const VectorHandler& XPrimeCurr); 96 97 virtual void Output(OutputHandler& OH) const; 98 99 /* *******PER IL SOLUTORE PARALLELO******** */ 100 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento 101 utile per l'assemblaggio della matrice di connessione fra i dofs */ GetConnectedNodes(std::vector<const Node * > & connectedNodes)102 virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const { 103 connectedNodes.resize(4); 104 connectedNodes[0] = pNode1; 105 connectedNodes[1] = pNode2; 106 connectedNodes[2] = pNode3; 107 connectedNodes[3] = pNode4; 108 }; 109 /* ************************************************ */ 110 }; 111 112 /* Control_valve - end */ 113 114 115 /* Control_valve2 - begin */ 116 117 #define VALVE_6 118 // #undef VALVE_6 119 120 class Control_valve2 121 : virtual public Elem, public HydraulicElem, public DriveOwner { 122 private: 123 /* 124 * 125 * Node 1 Node 4 126 * __ 127 * | \ | / \ 128 * | \ / | 129 * | \/ | 130 * | /\ | 131 * \ / / __| | 132 * 133 * Node 2 Node 3 134 * 135 */ 136 enum { 137 N1 = 0, 138 N2 = 1, 139 N3 = 2, 140 N4 = 3, 141 LAST_N = 4 142 }; 143 enum { 144 Q12 = 0, 145 Q34 = 1, 146 Q13 = 2, 147 Q24 = 3, 148 #ifdef VALVE_6 149 Q14 = 4, 150 Q23 = 5, 151 LAST_Q = 6 152 #else /* !VALVE_6 */ 153 LAST_Q = 4 154 #endif /* !VALVE_6 */ 155 }; 156 157 const PressureNode* pNode[LAST_N]; 158 doublereal q[LAST_Q]; 159 doublereal dp[LAST_Q]; 160 doublereal density; 161 162 doublereal Stato; 163 doublereal Cd; /* coefficiente di perdita */ 164 doublereal area_max; /* larghezza del condotto: A=x*area_max */ 165 doublereal loss_area; /* area di trafilamento in % sull'area max */ 166 doublereal area_min; /* area di trafilamento = area_max*loss_area */ 167 doublereal s_max; 168 doublereal f[LAST_N]; 169 doublereal A[LAST_Q]; 170 171 /* gathers data from nodes and computes intermediate member data */ 172 void Prepare(void); 173 174 public: 175 Control_valve2(unsigned int uL, const DofOwner* pD, HydraulicFluid* hf, 176 const PressureNode* p1, const PressureNode* p2, 177 const PressureNode* p3, const PressureNode* p4, 178 doublereal A_max, doublereal Loss_a, 179 const DriveCaller* pDC,flag fOut); 180 181 ~Control_valve2(void); 182 183 /* Tipo di elemento idraulico (usato solo per debug ecc.) */ 184 virtual HydraulicElem::Type GetHydraulicType(void) const; 185 186 /* Contributo al file di restart */ 187 virtual std::ostream& Restart(std::ostream& out) const; 188 189 virtual unsigned int iGetNumDof(void) const; 190 virtual DofOrder::Order GetDofType(unsigned int i) const; 191 192 virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const; 193 194 VariableSubMatrixHandler& AssJac(VariableSubMatrixHandler& WorkMat, 195 doublereal dCoef, const VectorHandler& XCurr, 196 const VectorHandler& XPrimeCurr); 197 198 SubVectorHandler& AssRes(SubVectorHandler& WorkVec, 199 doublereal dCoef, const VectorHandler& XCurr, 200 const VectorHandler& XPrimeCurr); 201 202 virtual void Output(OutputHandler& OH) const; 203 204 virtual void SetValue(DataManager *pDM, 205 VectorHandler& X, VectorHandler& XP, 206 SimulationEntity::Hints *ph = 0); 207 208 /* *******PER IL SOLUTORE PARALLELO******** */ 209 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento 210 * utile per l'assemblaggio della matrice di connessione fra i dofs */ GetConnectedNodes(std::vector<const Node * > & connectedNodes)211 virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const { 212 connectedNodes.resize(4); 213 connectedNodes[0] = pNode[N1]; 214 connectedNodes[1] = pNode[N2]; 215 connectedNodes[2] = pNode[N3]; 216 connectedNodes[3] = pNode[N4]; 217 }; 218 /* ************************************************ */ 219 }; 220 221 /* Control_valve2 - end */ 222 223 224 /* Control_valve_dinamica - begin */ 225 226 class Dynamic_control_valve : virtual public Elem, public HydraulicElem, public DriveOwner { 227 private: 228 const PressureNode* pNode1; 229 const PressureNode* pNode2; 230 const PressureNode* pNode3; 231 const PressureNode* pNode4; 232 doublereal start; /* posizione iniziale della valvola */ 233 doublereal c_spost; /* coef dello spostamento */ 234 doublereal c_vel; /* coef della velocita' */ 235 doublereal c_acc; /* coef dell'accelerazione */ 236 doublereal Force; /* forza applicata alla valvola */ 237 238 doublereal Cd; /* coefficiente di perdita */ 239 doublereal width; /* larghezza del condotto: A=x*width */ 240 doublereal loss_area; /* area di trafilamento in % sull'area max*/ 241 doublereal valve_diameter; /* diametro della valvola */ 242 doublereal valve_density; /* densita' del corpo della valvola */ 243 244 doublereal s_max; /* corsa massima della valvola */ 245 246 doublereal A1; /* area di collegamento nodo 1 & nodo 2 */ 247 doublereal A2; /* area di collegamento nodo 1 & nodo 3 */ 248 doublereal A3; /* area di collegamento nodo 3 & nodo 4 */ 249 doublereal A4; /* area di collegamento nodo 2 & nodo 4 */ 250 251 doublereal Mass; /* massa del corpo della valvola */ 252 doublereal flow1; /* portata nodo 1 (per l'output) */ 253 doublereal flow2; /* portata nodo 2 (per l'output) */ 254 doublereal flow3; /* portata nodo 3 (per l'output) */ 255 doublereal flow4; /* portata nodo 4 (per l'output) */ 256 doublereal s; /* spostamento valvola (per l'output) */ 257 doublereal v; /* velocita' valvola (per l'output) */ 258 doublereal sp; /* velocita' valvola */ 259 doublereal vp; /* accelerazione valvola (per l'output) */ 260 doublereal c1; /* coef dello spostamento */ 261 doublereal c2; /* coef della velocita' */ 262 doublereal c3; /* coef dell'accelerazione */ 263 doublereal cf1; /* coef dello spostamento finale */ 264 doublereal cf2; /* coef della velocita' finale */ 265 doublereal cf3; /* coef dell'accelerazione finale */ 266 doublereal deltaP; /* salto di pressione p1-p2+p3 */ 267 268 public: 269 Dynamic_control_valve(unsigned int uL, const DofOwner* pD, 270 HydraulicFluid* hf, 271 const PressureNode* p1, const PressureNode* p2, 272 const PressureNode* p3, const PressureNode* p4, 273 const DriveCaller* pDC, doublereal s0, 274 doublereal s_mx, doublereal W, doublereal Loss_A, 275 doublereal Valve_d, doublereal Valve_rho, 276 doublereal cs, doublereal cv, doublereal ca, flag fOut); 277 278 ~Dynamic_control_valve(void); 279 280 /* Tipo di elemento idraulico (usato solo per debug ecc.) */ 281 virtual HydraulicElem::Type GetHydraulicType(void) const; 282 283 /* Contributo al file di restart */ 284 virtual std::ostream& Restart(std::ostream& out) const; 285 286 virtual unsigned int iGetNumDof(void) const; 287 virtual DofOrder::Order GetDofType(unsigned int i) const; 288 289 virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const; 290 291 VariableSubMatrixHandler& AssJac(VariableSubMatrixHandler& WorkMat, 292 doublereal dCoef, 293 const VectorHandler& XCurr, 294 const VectorHandler& XPrimeCurr); 295 296 SubVectorHandler& AssRes(SubVectorHandler& WorkVec, 297 doublereal dCoef, 298 const VectorHandler& XCurr, 299 const VectorHandler& XPrimeCurr); 300 301 virtual void Output(OutputHandler& OH) const; 302 303 virtual void SetValue(DataManager *pDM, 304 VectorHandler& X, VectorHandler& XP, 305 SimulationEntity::Hints *ph = 0); 306 307 /* *******PER IL SOLUTORE PARALLELO******** */ 308 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento 309 utile per l'assemblaggio della matrice di connessione fra i dofs */ GetConnectedNodes(std::vector<const Node * > & connectedNodes)310 virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const { 311 connectedNodes.resize(4); 312 connectedNodes[0] = pNode1; 313 connectedNodes[1] = pNode2; 314 connectedNodes[2] = pNode3; 315 connectedNodes[3] = pNode4; 316 }; 317 /* ************************************************ */ 318 }; 319 320 /* Dynamic_control_valve - end */ 321 322 /* Pressure flow control_valve_dinamica - begin */ 323 324 class Pressure_flow_control_valve : virtual public Elem, public HydraulicElem, public DriveOwner { 325 private: 326 const PressureNode* pNode1; 327 const PressureNode* pNode2; 328 const PressureNode* pNode3; 329 const PressureNode* pNode4; 330 const PressureNode* pNode5; 331 const PressureNode* pNode6; 332 doublereal start; /* posizione iniziale della valvola */ 333 doublereal c_spost; /* coef dello spostamento */ 334 doublereal c_vel; /* coef della velocita' */ 335 doublereal c_acc; /* coef dell'accelerazione */ 336 doublereal Force; /* forza applicata alla valvola */ 337 338 doublereal Cd; /* coefficiente di perdita */ 339 doublereal width; /* larghezza del condotto: A=x*width */ 340 doublereal loss_area; /* area di trafilamento in % sull'area max*/ 341 doublereal valve_diameter; /* diametro della valvola */ 342 doublereal valve_density; /* densita' del corpo della valvola */ 343 doublereal valve_area; /* area della valvola */ 344 doublereal s_max; /* corsa massima della valvola */ 345 346 doublereal A1; /* area di collegamento nodo 1 & nodo 2 */ 347 doublereal A2; /* area di collegamento nodo 1 & nodo 3 */ 348 doublereal A3; /* area di collegamento nodo 3 & nodo 4 */ 349 doublereal A4; /* area di collegamento nodo 2 & nodo 4 */ 350 351 doublereal Mass; /* massa del corpo della valvola */ 352 doublereal flow1; /* portata nodo 1 (per l'output) */ 353 doublereal flow2; /* portata nodo 2 (per l'output) */ 354 doublereal flow3; /* portata nodo 3 (per l'output) */ 355 doublereal flow4; /* portata nodo 4 (per l'output) */ 356 doublereal flow5; /* portata nodo 5 (per l'output) */ 357 doublereal flow6; /* portata nodo 6 (per l'output) */ 358 359 doublereal s; /* spostamento valvola (per l'output) */ 360 doublereal v; /* velocita' valvola (per l'output) */ 361 doublereal sp; /* velocita' valvola */ 362 doublereal vp; /* accelerazione valvola (per l'output) */ 363 doublereal c1; /* coef dello spostamento */ 364 doublereal c2; /* coef della velocita' */ 365 doublereal c3; /* coef dell'accelerazione */ 366 doublereal cf1; /* coef dello spostamento finale */ 367 doublereal cf2; /* coef della velocita' finale */ 368 doublereal cf3; /* coef dell'accelerazione finale */ 369 doublereal deltaP; /* salto di pressione p1-p2+p3 */ 370 371 public: 372 Pressure_flow_control_valve(unsigned int uL, const DofOwner* pD, 373 HydraulicFluid* hf, 374 const PressureNode* p1, const PressureNode* p2, 375 const PressureNode* p3, const PressureNode* p4, 376 const PressureNode* p5, const PressureNode* p6, 377 const DriveCaller* pDC, doublereal s0, 378 doublereal s_mx, doublereal W, doublereal Loss_A, 379 doublereal Valve_d, doublereal Valve_rho, 380 doublereal cs, doublereal cv, doublereal ca, flag fOut); 381 382 ~Pressure_flow_control_valve(void); 383 384 /* Tipo di elemento idraulico (usato solo per debug ecc.) */ 385 virtual HydraulicElem::Type GetHydraulicType(void) const; 386 387 /* Contributo al file di restart */ 388 virtual std::ostream& Restart(std::ostream& out) const; 389 390 virtual unsigned int iGetNumDof(void) const; 391 virtual DofOrder::Order GetDofType(unsigned int i) const; 392 393 virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const; 394 395 VariableSubMatrixHandler& AssJac(VariableSubMatrixHandler& WorkMat, 396 doublereal dCoef, 397 const VectorHandler& XCurr, 398 const VectorHandler& XPrimeCurr); 399 400 SubVectorHandler& AssRes(SubVectorHandler& WorkVec, 401 doublereal dCoef, 402 const VectorHandler& XCurr, 403 const VectorHandler& XPrimeCurr); 404 405 virtual void Output(OutputHandler& OH) const; 406 407 virtual void SetValue(DataManager *pDM, 408 VectorHandler& X, VectorHandler& XP, 409 SimulationEntity::Hints *ph = 0); 410 411 /* *******PER IL SOLUTORE PARALLELO******** */ 412 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento 413 utile per l'assemblaggio della matrice di connessione fra i dofs */ GetConnectedNodes(std::vector<const Node * > & connectedNodes)414 virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const { 415 connectedNodes.resize(6); 416 connectedNodes[0] = pNode1; 417 connectedNodes[1] = pNode2; 418 connectedNodes[2] = pNode3; 419 connectedNodes[3] = pNode4; 420 connectedNodes[4] = pNode5; 421 connectedNodes[5] = pNode6; 422 }; 423 /* ************************************************ */ 424 }; 425 426 /* Pressure_flow_control_valve - end */ 427 428 429 /* Pressure_valve - begin */ 430 431 class Pressure_valve : virtual public Elem, public HydraulicElem { 432 private: 433 const PressureNode* pNode1; 434 const PressureNode* pNode2; 435 doublereal area_diaf; /* area diaframma */ 436 doublereal mass; /* massa valvola */ 437 doublereal area_max; /* area maggiore della valvola */ 438 doublereal Kappa; /* costante della molla */ 439 doublereal force0; /* precarico della molla */ 440 doublereal width; /* larghezza luce di passaggio */ 441 doublereal s_max; /* corsa massima della valvola */ 442 doublereal c_spost; /* coef dello spostamento */ 443 doublereal c_vel; /* coef della velocita' */ 444 doublereal c_acc; /* coef dell'accelerazione */ 445 doublereal c1; /* coef dello spostamento */ 446 doublereal c2; /* coef della velocita' */ 447 doublereal c3; /* coef dell'accelerazione */ 448 doublereal c4; /* coef. per il termine costante */ 449 doublereal cf1; /* coef dello spostamento finale */ 450 doublereal cf2; /* coef della velocita' finale */ 451 doublereal cf3; /* coef dell'accelerazione finale */ 452 doublereal cf4; /* coef. per il termine costante finale */ 453 454 doublereal s; /* spostamento diaframma (per l'output) */ 455 doublereal v; /* velocita' diaframma (per l'output) */ 456 doublereal sp; /* velocita' diaframma */ 457 doublereal vp; /* accelerazione diaframma (per l'output) */ 458 doublereal flow1; /* portata nodo 1 (per l'output) */ 459 doublereal flow2; /* portata nodo 2 (per l'output) */ 460 461 public: 462 Pressure_valve(unsigned int uL, const DofOwner* pD, 463 HydraulicFluid* hf, 464 const PressureNode* p1, const PressureNode* p2, 465 doublereal A_dia, doublereal mv, 466 doublereal A_max, doublereal s_mx, doublereal K, 467 doublereal F0, doublereal w, 468 doublereal cs, doublereal cv, doublereal ca, flag fOut); 469 470 ~Pressure_valve(void); 471 472 /* Tipo di elemento idraulico (usato solo per debug ecc.) */ 473 virtual HydraulicElem::Type GetHydraulicType(void) const; 474 475 /* Contributo al file di restart */ 476 virtual std::ostream& Restart(std::ostream& out) const; 477 478 virtual unsigned int iGetNumDof(void) const; 479 virtual DofOrder::Order GetDofType(unsigned int i) const; 480 481 virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const; 482 483 VariableSubMatrixHandler& AssJac(VariableSubMatrixHandler& WorkMat, 484 doublereal dCoef, 485 const VectorHandler& XCurr, 486 const VectorHandler& XPrimeCurr); 487 488 SubVectorHandler& AssRes(SubVectorHandler& WorkVec, 489 doublereal dCoef, 490 const VectorHandler& XCurr, 491 const VectorHandler& XPrimeCurr); 492 493 virtual void Output(OutputHandler& OH) const; 494 495 virtual void SetValue(DataManager *pDM, 496 VectorHandler& X, VectorHandler& XP, 497 SimulationEntity::Hints *ph = 0); 498 499 /* *******PER IL SOLUTORE PARALLELO******** */ 500 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento 501 utile per l'assemblaggio della matrice di connessione fra i dofs */ GetConnectedNodes(std::vector<const Node * > & connectedNodes)502 virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const { 503 connectedNodes.resize(2); 504 connectedNodes[0] = pNode1; 505 connectedNodes[1] = pNode2; 506 }; 507 /* ************************************************ */ 508 509 }; 510 511 /* Pressure_valve - end */ 512 513 514 /* Flow_valve - begin */ 515 516 class Flow_valve : virtual public Elem, public HydraulicElem { 517 private: 518 const PressureNode* pNode1; 519 const PressureNode* pNode2; 520 const PressureNode* pNode3; 521 doublereal area_diaf; /* area diaframma */ 522 doublereal mass; /* massa valvola */ 523 doublereal area_pipe; /* area del tubo */ 524 doublereal area_max; /* area maggiore della valvola */ 525 doublereal Kappa; /* costante della molla */ 526 doublereal force0; /* precarico della molla */ 527 doublereal width; /* larghezza luce di passaggio */ 528 doublereal s_max; /* corsa massima della valvola */ 529 doublereal c_spost; /* coef dello spostamento */ 530 doublereal c_vel; /* coef della velocita' */ 531 doublereal c_acc; /* coef dell'accelerazione */ 532 doublereal c1; /* coef dello spostamento */ 533 doublereal c2; /* coef della velocita' */ 534 doublereal c3; /* coef dell'accelerazione */ 535 doublereal c4; /* coef. per il termine costante */ 536 doublereal cf1; /* coef dello spostamento finale */ 537 doublereal cf2; /* coef della velocita' finale */ 538 doublereal cf3; /* coef dell'accelerazione finale */ 539 doublereal cf4; /* coef. per il termine costante finale */ 540 541 doublereal h; /* perdita di carico concentrata tra i nodi 1 e 2 (smorza il moto della valvola) */ 542 doublereal s; /* spostamento valvola (per l'output) */ 543 doublereal sp; /* velocita' valvola (per l'output) */ 544 doublereal v; /* velocita' valvola (per l'output) */ 545 doublereal vp; /* accelerazione valvola (per l'output) */ 546 doublereal flow1; /* portata nodo 1 (per l'output) */ 547 doublereal flow2; /* portata nodo 2 (per l'output) */ 548 doublereal flow3; /* portata nodo 3 (per l'output) */ 549 550 public: 551 Flow_valve(unsigned int uL, const DofOwner* pD, HydraulicFluid* hf, 552 const PressureNode* p1, const PressureNode* p2, 553 const PressureNode* p3, doublereal A_dia, 554 doublereal mv, doublereal A_pipe,doublereal A_max, 555 doublereal K, doublereal F0, doublereal w,doublereal s_mx, 556 doublereal cs, doublereal cv, doublereal ca, flag fOut); 557 558 ~Flow_valve(void); 559 560 /* Tipo di elemento idraulico (usato solo per debug ecc.) */ 561 virtual HydraulicElem::Type GetHydraulicType(void) const; 562 563 /* Contributo al file di restart */ 564 virtual std::ostream& Restart(std::ostream& out) const; 565 566 virtual unsigned int iGetNumDof(void) const; 567 virtual DofOrder::Order GetDofType(unsigned int i) const; 568 569 virtual void WorkSpaceDim(integer* piNumRows, integer* piNumCols) const; 570 571 VariableSubMatrixHandler& AssJac(VariableSubMatrixHandler& WorkMat, 572 doublereal dCoef, 573 const VectorHandler& XCurr, 574 const VectorHandler& XPrimeCurr); 575 576 SubVectorHandler& AssRes(SubVectorHandler& WorkVec, 577 doublereal dCoef, 578 const VectorHandler& XCurr, 579 const VectorHandler& XPrimeCurr); 580 581 virtual void Output(OutputHandler& OH) const; 582 583 virtual void SetValue(DataManager *pDM, 584 VectorHandler& X, VectorHandler& XP, 585 SimulationEntity::Hints *ph = 0); 586 587 /* *******PER IL SOLUTORE PARALLELO******** */ 588 /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento 589 utile per l'assemblaggio della matrice di connessione fra i dofs */ GetConnectedNodes(std::vector<const Node * > & connectedNodes)590 virtual void GetConnectedNodes(std::vector<const Node *>& connectedNodes) const { 591 connectedNodes.resize(3); 592 connectedNodes[0] = pNode1; 593 connectedNodes[1] = pNode2; 594 connectedNodes[2] = pNode3; 595 }; 596 /* ************************************************ */ 597 }; 598 599 /* Flow_valve - end */ 600 601 #endif /* VALVE_H */ 602 603