55 pNode1(p1), pNode2(p2), pNode3(p3), pNode4(p4),
56 area_max(A_max), loss_area(Loss_A),
57 A1min(2.*area_max*loss_area),
58 A2min(area_max*loss_area),
59 A3min(2.*area_max*loss_area),
60 A4min(area_max*loss_area)
70 ASSERT(A_max > std::numeric_limits<doublereal>::epsilon());
96 return out <<
"Control_valve not implemented yet!" << std::endl;
106 silent_cerr(
"ControlValve(" <<
GetLabel() <<
") has no dofs!" << std::endl);
125 DEBUGCOUT(
"Entering Control_valve::AssJac()" << std::endl);
159 if (jumpPres12 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
160 jumpPres12 = 1.e8*std::numeric_limits<doublereal>::epsilon();
162 if (jumpPres13 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
163 jumpPres13 = 1.e8*std::numeric_limits<doublereal>::epsilon();
165 if (jumpPres24 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
166 jumpPres24 = 1.e8*std::numeric_limits<doublereal>::epsilon();
168 if (jumpPres34 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
169 jumpPres34 = 1.e8*std::numeric_limits<doublereal>::epsilon();
221 DEBUGCOUT(
"Entering Control_valve::AssRes()" << std::endl);
250 }
else if (
Stato < -1.) {
292 DEBUGCOUT(
"density: " << density << std::endl);
299 DEBUGCOUT(
"PORTATE AI VARI NODI (positive se entranti)"<< std::endl);
300 DEBUGCOUT(
"-Res_1 (portata nodo1): " << -Res_1 << std::endl);
301 DEBUGCOUT(
"-Res_2 (portata nodo2): " << -Res_2 << std::endl);
302 DEBUGCOUT(
"-Res_3 (portata nodo3): " << -Res_3 << std::endl);
303 DEBUGCOUT(
"-Res_4 (portata nodo4): " << -Res_4 << std::endl);
306 WorkVec.
PutItem(1, iNode1RowIndex, Res_1);
307 WorkVec.
PutItem(2, iNode2RowIndex, Res_2);
308 WorkVec.
PutItem(3, iNode3RowIndex, Res_3);
309 WorkVec.
PutItem(4, iNode4RowIndex, Res_4);
340 area_max(A_max), loss_area(Loss_A), area_min(area_max*loss_area)
381 return out <<
"Control_valve2 not implemented yet!" << std::endl;
409 DEBUGCOUT(
"Entering Control_valve2::AssJac()" << std::endl);
418 for (
int i = 0; i <
LAST_N; i++) {
423 for (
int i = 1; i <=
LAST_Q; i++) {
480 for (
int i = 0; i <
LAST_Q; i++) {
493 for (
int i = 0; i <
LAST_N; i++) {
547 DEBUGCOUT(
"Entering Control_valve2::AssRes()" << std::endl);
556 for (
int i = 0; i <
LAST_N; i++) {
563 for (
int i = 0; i <
LAST_Q; i++) {
564 q[i] = XCurr(iFirstIndex+i);
579 for (
int i = 0; i <
LAST_N; i++) {
580 WorkVec.
PutItem(1+i, iNodeRowIndex[i],
f[i]);
583 for (
int i = 0; i <
LAST_Q; i++) {
584 WorkVec.
PutItem(5+i, iFirstIndex+i,
585 A[i]*
A[i]*
dp[i]-q[i]*
fabs(q[i])/dKappa);
598 <<
" " << -
f[
N1] <<
" " << -
f[
N2]
599 <<
" " << -
f[
N3] <<
" " << -
f[
N4] << std::endl;
612 for (
int i = 0; i <
LAST_Q; i++) {
644 pNode1(p1), pNode2(p2), pNode3(p3), pNode4(p4),
645 start(s0), c_spost(cs), c_vel(cv), c_acc(ca),
646 width(W), loss_area(Loss_A),
647 valve_diameter(Valve_d), valve_density(Valve_rho), s_max(s_mx)
658 ASSERT(Valve_rho > std::numeric_limits<doublereal>::epsilon());
659 ASSERT(Valve_d > std::numeric_limits<doublereal>::epsilon());
660 ASSERT(W > std::numeric_limits<doublereal>::epsilon());
689 return out <<
"Dynamic_control_valve not implemented yet!" << std::endl;
717 DEBUGCOUT(
"Entering Control_valve::AssJac()" << std::endl);
752 s = XCurr(iFirstIndex+1);
753 v = XCurr(iFirstIndex+2);
760 if (jumpPres12 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
761 jumpPres12 = 1.e8*std::numeric_limits<doublereal>::epsilon();
763 if (jumpPres13 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
764 jumpPres13 = 1.e8*std::numeric_limits<doublereal>::epsilon();
766 if (jumpPres24 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
767 jumpPres24 = 1.e8*std::numeric_limits<doublereal>::epsilon();
769 if (jumpPres34 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
770 jumpPres34 = 1.e8*std::numeric_limits<doublereal>::epsilon();
869 DEBUGCOUT(
"Entering Dynamic_control_valve::AssRes()" << std::endl);
887 s = XCurr(iFirstIndex+1);
888 v = XCurr(iFirstIndex+2);
889 sp = XPrimeCurr(iFirstIndex+1);
890 vp = XPrimeCurr(iFirstIndex+2);
906 A1 = area_min+deltaA;
908 A3 = area_min+deltaA;
912 A2 = area_min-deltaA;
914 A4 = area_min-deltaA;
998 DEBUGCOUT(
"s_max : " << s_max << std::endl);
1005 DEBUGCOUT(
"smorzatore: " << C << std::endl);
1007 DEBUGCOUT(
"density: " << density << std::endl);
1009 DEBUGCOUT(
"Area_max: " << area_max << std::endl);
1010 DEBUGCOUT(
"Width: " << width << std::endl);
1011 DEBUGCOUT(
"Loss_area: " << loss_area << std::endl);
1022 DEBUGCOUT(
"PORTATE AI VARI NODI (positive se entranti)"<< std::endl);
1023 DEBUGCOUT(
"-Res_1 (portata nodo1): " << -Res_1 << std::endl);
1024 DEBUGCOUT(
"-Res_2 (portata nodo2): " << -Res_2 << std::endl);
1025 DEBUGCOUT(
"-Res_3 (portata nodo3): " << -Res_3 << std::endl);
1026 DEBUGCOUT(
"-Res_4 (portata nodo4): " << -Res_4 << std::endl);
1027 DEBUGCOUT(
"-Res_5 eq.dinamica : " << -Res_5 << std::endl);
1028 DEBUGCOUT(
"-Res_6 sp-v : " << -Res_6 << std::endl);
1031 WorkVec.
PutItem(1, iNode1RowIndex, Res_1);
1032 WorkVec.
PutItem(2, iNode2RowIndex, Res_2);
1033 WorkVec.
PutItem(3, iNode3RowIndex, Res_3);
1034 WorkVec.
PutItem(4, iNode4RowIndex, Res_4);
1035 WorkVec.
PutItem(5, iFirstIndex+1, Res_5);
1036 WorkVec.
PutItem(6, iFirstIndex+2, Res_6);
1047 <<
" " <<
s <<
" " <<
sp <<
" " <<
vp
1049 <<
" " <<
A1 <<
" " <<
A2 <<
" " <<
A3 <<
" " <<
A4 <<
" " << std::endl;
1087 pNode1(p1), pNode2(p2), pNode3(p3), pNode4(p4), pNode5(p5), pNode6(p6),
1088 start(s0), s_max(s_mx), width(W), loss_area(Loss_A),
1089 valve_diameter(Valve_d), valve_density(Valve_rho),
1090 c_spost(cs), c_vel(cv), c_acc(ca)
1105 ASSERT(Valve_rho > std::numeric_limits<doublereal>::epsilon());
1106 ASSERT(Valve_d > std::numeric_limits<doublereal>::epsilon());
1107 ASSERT(W > std::numeric_limits<doublereal>::epsilon());
1131 return out <<
"Pressure_flow_control_valve not implemented yet!" << std::endl;
1141 ASSERT(i >= 0 && i <= 1);
1159 DEBUGCOUT(
"Entering Control_valve::AssJac()" << std::endl);
1204 s = XCurr(iFirstIndex+1);
1205 v = XCurr(iFirstIndex+2);
1212 if (jumpPres12 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1213 jumpPres12 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1215 if (jumpPres13 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1216 jumpPres13 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1218 if (jumpPres24 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1219 jumpPres24 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1221 if (jumpPres34 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1222 jumpPres34 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1317 DEBUGCOUT(
"Entering Pressure_flow_control_valve::AssRes()" << std::endl);
1339 s = XCurr(iFirstIndex+1);
1340 v = XCurr(iFirstIndex+2);
1341 sp = XPrimeCurr(iFirstIndex+1);
1342 vp = XPrimeCurr(iFirstIndex+2);
1359 A1 = area_min+deltaA;
1361 A3 = area_min+deltaA;
1365 A2 = area_min-deltaA;
1367 A4 = area_min-deltaA;
1380 #warning "????????????? Res_6 = -Res_6 ?"
1411 DEBUGCOUT(
"s_max : " << s_max << std::endl);
1419 DEBUGCOUT(
"smorzatore: " << C << std::endl);
1421 DEBUGCOUT(
"density: " << density << std::endl);
1423 DEBUGCOUT(
"Area_max: " << area_max << std::endl);
1424 DEBUGCOUT(
"Width: " << width << std::endl);
1425 DEBUGCOUT(
"Loss_area: " << loss_area << std::endl);
1436 DEBUGCOUT(
"PORTATE AI VARI NODI (positive se entranti)"<< std::endl);
1437 DEBUGCOUT(
"-Res_1 (portata nodo1): " << -Res_1 << std::endl);
1438 DEBUGCOUT(
"-Res_2 (portata nodo2): " << -Res_2 << std::endl);
1439 DEBUGCOUT(
"-Res_3 (portata nodo3): " << -Res_3 << std::endl);
1440 DEBUGCOUT(
"-Res_4 (portata nodo4): " << -Res_4 << std::endl);
1441 DEBUGCOUT(
"-Res_5 (portata nodo3): " << -Res_5 << std::endl);
1442 DEBUGCOUT(
"-Res_6 (portata nodo4): " << -Res_6 << std::endl);
1443 DEBUGCOUT(
"-Res_6 eq dinamica : " << -Res_7 << std::endl);
1444 DEBUGCOUT(
"-Res_7 sp-v : " << -Res_8 << std::endl);
1447 WorkVec.
PutItem(1, iNode1RowIndex, Res_1);
1448 WorkVec.
PutItem(2, iNode2RowIndex, Res_2);
1449 WorkVec.
PutItem(3, iNode3RowIndex, Res_3);
1450 WorkVec.
PutItem(4, iNode4RowIndex, Res_4);
1451 WorkVec.
PutItem(5, iNode5RowIndex, Res_5);
1452 WorkVec.
PutItem(6, iNode6RowIndex, Res_6);
1453 WorkVec.
PutItem(7, iFirstIndex+1, Res_7);
1454 WorkVec.
PutItem(8, iFirstIndex+2, Res_8);
1465 <<
" " <<
s <<
" " <<
sp <<
" " <<
vp
1468 <<
" " <<
A1 <<
" " <<
A2 <<
" " <<
A3 <<
" " <<
A4 <<
" " << std::endl;
1502 pNode1(p1), pNode2(p2), area_diaf(A_dia), mass(mv),
1503 area_max(A_max),s_max(s_mx),
1504 Kappa(K), force0(F0), width(w),c_spost(cs), c_vel(cv), c_acc(ca)
1510 ASSERT(A_dia > std::numeric_limits<doublereal>::epsilon());
1511 ASSERT(mv > std::numeric_limits<doublereal>::epsilon());
1512 ASSERT(A_max > std::numeric_limits<doublereal>::epsilon());
1515 ASSERT(w > std::numeric_limits<doublereal>::epsilon());
1535 return out <<
"Pressure_valve not implemented yet!" << std::endl;
1547 ASSERT(i >= 0 && i <= 1);
1567 DEBUGCOUT(
"Entering Pressure_valve::AssJac()" << std::endl);
1593 s = XCurr(iFirstIndex+1);
1594 v = XCurr(iFirstIndex+2);
1600 if (jumpPres < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1601 jumpPres = 1.e8*std::numeric_limits<doublereal>::epsilon();
1627 Jac11 = -density*
width*
s*Cd/
sqrt(2*jumpPres/density)/density;
1690 s = XCurr(iFirstIndex+1);
1691 v = XCurr(iFirstIndex+2);
1692 sp = XPrimeCurr(iFirstIndex+1);
1693 vp = XPrimeCurr(iFirstIndex+2);
1771 DEBUGCOUT(
"jumpPres: " << jumpPres << std::endl);
1772 DEBUGCOUT(
"density: " << density << std::endl);
1795 DEBUGCOUT(
"PORTATE AI VARI NODI (positive se entranti)" << std::endl);
1796 DEBUGCOUT(
"-Res_1 (portata nodo1): " << -Res_1 << std::endl);
1797 DEBUGCOUT(
"-Res_2 (portata nodo2): " << -Res_2 << std::endl);
1798 DEBUGCOUT(
"Res_3: " << Res_3 << std::endl);
1799 DEBUGCOUT(
"Res_4: " << Res_4 << std::endl);
1802 WorkVec.
PutItem(1, iNode1RowIndex, Res_1);
1803 WorkVec.
PutItem(2, iNode2RowIndex, Res_2);
1804 WorkVec.
PutItem(3, iFirstIndex+1, Res_3);
1805 WorkVec.
PutItem(4, iFirstIndex+2, Res_4);
1816 <<
" " <<
s <<
" " <<
v <<
" "<<
vp
1817 <<
" " <<
flow1 <<
" " <<
flow2 << std::endl;
1852 pNode1(p1), pNode2(p2), pNode3(p3),
1853 area_diaf(A_dia), mass(mv), area_pipe(A_pipe), area_max(A_max),
1854 Kappa(K), force0(F0), width(w), s_max(s_mx), c_spost(cs), c_vel(cv), c_acc(ca)
1862 ASSERT(A_dia > std::numeric_limits<doublereal>::epsilon());
1863 ASSERT(mv > std::numeric_limits<doublereal>::epsilon());
1864 ASSERT(A_pipe > std::numeric_limits<doublereal>::epsilon());
1865 ASSERT(A_max > std::numeric_limits<doublereal>::epsilon());
1866 ASSERT(K > std::numeric_limits<doublereal>::epsilon() );
1868 ASSERT(w > std::numeric_limits<doublereal>::epsilon());
1891 return out <<
" Flow_valve not implemented yet!" << std::endl;
1903 ASSERT(i >= 0 && i <= 1);
1921 DEBUGCOUT(
"Entering Flow_valve::AssJac()" << std::endl);
1949 s = XCurr(iFirstIndex+1);
1950 v = XCurr(iFirstIndex+2);
1959 if (jumpPres12 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1960 jumpPres12 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1962 if (jumpPres23 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1963 jumpPres23 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1965 if (jumpPres13 < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1966 jumpPres13 = 1.e8*std::numeric_limits<doublereal>::epsilon();
1996 DEBUGCOUT(
"Valore di p1: " << p1 << std::endl);
1997 DEBUGCOUT(
"Valore di p2: " << p2 << std::endl);
1998 DEBUGCOUT(
"Valore di p3: " << p3 << std::endl);
1999 DEBUGCOUT(
"Valore di s: " <<
s << std::endl);
2046 DEBUGCOUT(
"Jac smorzatore " <<
h*density << std::endl);
2047 DEBUGCOUT(
"Jac smorzatore Jac45old1 " << Jac45old1 << std::endl);
2048 DEBUGCOUT(
"Jac smorzatore Jac45old2 " << Jac45old2 << std::endl);
2049 DEBUGCOUT(
"Jac smorzatore Jac45 " << Jac45 << std::endl);
2051 DEBUGCOUT(
"Jac11: " << Jac11 << std::endl);
2052 DEBUGCOUT(
"Jac12: " << Jac12 << std::endl);
2053 DEBUGCOUT(
"Jac13: " << Jac13 << std::endl);
2054 DEBUGCOUT(
"Jac14: " << Jac14 << std::endl);
2055 DEBUGCOUT(
"Jac15: " << Jac15 << std::endl);
2056 DEBUGCOUT(
"Jac21: " << Jac21 << std::endl);
2057 DEBUGCOUT(
"Jac22: " << Jac22 << std::endl);
2058 DEBUGCOUT(
"Jac23: " << Jac23 << std::endl);
2059 DEBUGCOUT(
"Jac24: " << Jac24 << std::endl);
2060 DEBUGCOUT(
"Jac25: " << Jac25 << std::endl);
2061 DEBUGCOUT(
"Jac31: " << Jac31 << std::endl);
2062 DEBUGCOUT(
"Jac32: " << Jac32 << std::endl);
2063 DEBUGCOUT(
"Jac33: " << Jac33 << std::endl);
2064 DEBUGCOUT(
"Jac34: " << Jac34 << std::endl);
2065 DEBUGCOUT(
"Jac35: " << Jac35 << std::endl);
2066 DEBUGCOUT(
"Jac41: " << Jac41 << std::endl);
2067 DEBUGCOUT(
"Jac42: " << Jac42 << std::endl);
2068 DEBUGCOUT(
"Jac43: " << Jac43 << std::endl);
2069 DEBUGCOUT(
"Jac44: " << Jac44 << std::endl);
2070 DEBUGCOUT(
"Jac45: " << Jac45 << std::endl);
2071 DEBUGCOUT(
"Jac51: " << Jac51 << std::endl);
2072 DEBUGCOUT(
"Jac52: " << Jac52 << std::endl);
2073 DEBUGCOUT(
"Jac53: " << Jac53 << std::endl);
2074 DEBUGCOUT(
"Jac54: " << Jac54 << std::endl);
2075 DEBUGCOUT(
"Jac55: " << Jac55 << std::endl);
2113 DEBUGCOUT(
"Entering Flow_valve::AssRes()" << std::endl);
2126 s = XCurr(iFirstIndex+1);
2127 v = XCurr(iFirstIndex+2);
2128 sp = XPrimeCurr(iFirstIndex+1);
2129 vp = XPrimeCurr(iFirstIndex+2);
2215 DEBUGCOUT(
"Res_4: " << Res_4 << std::endl);
2216 DEBUGCOUT(
"Res_4old: " << Res_4old << std::endl);
2224 DEBUGCOUT(
"jumpPres12: " << jumpPres12 << std::endl);
2225 DEBUGCOUT(
"jumpPres23: " << jumpPres23 << std::endl);
2226 DEBUGCOUT(
"jumpPres13: " << jumpPres13 << std::endl);
2227 DEBUGCOUT(
"density: " << density << std::endl);
2249 DEBUGCOUT(
"PORTATE AI VARI NODI (positive se entranti)" << std::endl);
2250 DEBUGCOUT(
"-Res_1 (portata nodo1): " << -Res_1 << std::endl);
2251 DEBUGCOUT(
"-Res_2 (portata nodo2): " << -Res_2 << std::endl);
2252 DEBUGCOUT(
"-Res_3:(portata nodo3): " << -Res_3 << std::endl);
2253 DEBUGCOUT(
"-Res_4: " << -Res_4 << std::endl);
2254 DEBUGCOUT(
"-Res_5: " << -Res_5 << std::endl);
2257 WorkVec.
PutItem(1, iNode1RowIndex, Res_1);
2258 WorkVec.
PutItem(2, iNode2RowIndex, Res_2);
2259 WorkVec.
PutItem(3, iNode3RowIndex, Res_3);
2260 WorkVec.
PutItem(4, iFirstIndex+1, Res_4);
2261 WorkVec.
PutItem(5, iFirstIndex+2, Res_5);
2271 <<
" " <<
s <<
" " <<
v <<
" "<<
vp
virtual HydraulicElem::Type GetHydraulicType(void) const
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
void PutColIndex(integer iSubCol, integer iCol)
virtual unsigned int iGetNumDof(void) const
const PressureNode * pNode1
virtual bool bToBeOutput(void) const
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
#define MBDYN_EXCEPT_ARGS
const PressureNode * pNode1
virtual unsigned int iGetNumDof(void) const
FullSubMatrixHandler & SetFull(void)
const PressureNode * pNode2
~Pressure_flow_control_valve(void)
virtual std::ostream & Restart(std::ostream &out) const
const PressureNode * pNode1
const PressureNode * pNode2
virtual DofOrder::Order GetDofType(unsigned int i) const
const PressureNode * pNode2
virtual void Output(OutputHandler &OH) const
void Resize(integer iNewRow, integer iNewCol)
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
~Dynamic_control_valve(void)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
const PressureNode * pNode4
Control_valve(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, const PressureNode *p3, const PressureNode *p4, doublereal A_max, doublereal Loss_a, const DriveCaller *pDC, flag fOut)
const PressureNode * pNode4
virtual void Output(OutputHandler &OH) const
const PressureNode * pNode3
const PressureNode * pNode4
doublereal valve_diameter
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
virtual void Output(OutputHandler &OH) const
const PressureNode * pNode6
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual DofOrder::Order GetDofType(unsigned int i) const
virtual DofOrder::Order GetDofType(unsigned int i) const
virtual HydraulicElem::Type GetHydraulicType(void) const
const PressureNode * pNode3
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
std::vector< Hint * > Hints
const PressureNode * pNode[LAST_N]
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
virtual void PutItem(integer iSubRow, integer iRow, const doublereal &dCoef)
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual std::ostream & Restart(std::ostream &out) const
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
const PressureNode * pNode2
Pressure_valve(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, doublereal A_dia, doublereal mv, doublereal A_max, doublereal s_mx, doublereal K, doublereal F0, doublereal w, doublereal cs, doublereal cv, doublereal ca, flag fOut)
virtual DofOrder::Order GetDofType(unsigned int i) const
doublereal valve_diameter
virtual doublereal dGetDensity(void) const =0
virtual const doublereal & dGetX(void) const
Pressure_flow_control_valve(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, const PressureNode *p3, const PressureNode *p4, const PressureNode *p5, const PressureNode *p6, const DriveCaller *pDC, doublereal s0, doublereal s_mx, doublereal W, doublereal Loss_A, doublereal Valve_d, doublereal Valve_rho, doublereal cs, doublereal cv, doublereal ca, flag fOut)
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
const PressureNode * pNode5
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual HydraulicElem::Type GetHydraulicType(void) const
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
const PressureNode * pNode1
virtual HydraulicElem::Type GetHydraulicType(void) const
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
doublereal copysign(doublereal x, doublereal y)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual void Output(OutputHandler &OH) const
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void Output(OutputHandler &OH) const
virtual integer iGetFirstRowIndex(void) const
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
const PressureNode * pNode3
virtual std::ostream & Restart(std::ostream &out) const
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
#define ASSERT(expression)
virtual std::ostream & Restart(std::ostream &out) const
Dynamic_control_valve(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, const PressureNode *p3, const PressureNode *p4, const DriveCaller *pDC, doublereal s0, doublereal s_mx, doublereal W, doublereal Loss_A, doublereal Valve_d, doublereal Valve_rho, doublereal cs, doublereal cv, doublereal ca, flag fOut)
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
DriveCaller * pGetDriveCaller(void) const
virtual DofOrder::Order GetDofType(unsigned int i) const
virtual void ResizeReset(integer, integer)
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual doublereal dGet(const doublereal &dVar) const =0
virtual DofOrder::Order GetDofType(unsigned int i) const
virtual unsigned int iGetNumDof(void) const
const PressureNode * pNode1
virtual std::ostream & Restart(std::ostream &out) const
void PutRowIndex(integer iSubRow, integer iRow)
Control_valve2(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, const PressureNode *p3, const PressureNode *p4, doublereal A_max, doublereal Loss_a, const DriveCaller *pDC, flag fOut)
const PressureNode * pNode3
virtual unsigned int iGetNumDof(void) const
virtual Node::Type GetNodeType(void) const
virtual HydraulicElem::Type GetHydraulicType(void) const
virtual void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
static const doublereal a
std::ostream & Hydraulic(void) const
virtual unsigned int iGetNumDof(void) const
virtual integer iGetFirstIndex(void) const
virtual std::ostream & Restart(std::ostream &out) const
unsigned int GetLabel(void) const
Flow_valve(unsigned int uL, const DofOwner *pD, HydraulicFluid *hf, const PressureNode *p1, const PressureNode *p2, const PressureNode *p3, doublereal A_dia, doublereal mv, doublereal A_pipe, doublereal A_max, doublereal K, doublereal F0, doublereal w, doublereal s_mx, doublereal cs, doublereal cv, doublereal ca, flag fOut)
const PressureNode * pNode2
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void Resize(integer iNewSize)=0
virtual void Output(OutputHandler &OH) const
virtual unsigned int iGetNumDof(void) const
virtual HydraulicElem::Type GetHydraulicType(void) const
virtual integer iGetFirstColIndex(void) const