MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Pressure_valve Class Reference

#include <valve.h>

Inheritance diagram for Pressure_valve:
Collaboration diagram for Pressure_valve:

Public Member Functions

 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)
 
 ~Pressure_valve (void)
 
virtual HydraulicElem::Type GetHydraulicType (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual unsigned int iGetNumDof (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void Output (OutputHandler &OH) const
 
virtual void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- Public Member Functions inherited from Elem
 Elem (unsigned int uL, flag fOut)
 
virtual ~Elem (void)
 
virtual std::ostream & DescribeDof (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeDof (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual std::ostream & DescribeEq (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeEq (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual bool bInverseDynamics (void) const
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
virtual int GetNumConnectedNodes (void) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from SimulationEntity
 SimulationEntity (void)
 
virtual ~SimulationEntity (void)
 
virtual bool bIsValidIndex (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void Update (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void DerivativesUpdate (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from HydraulicElem
 HydraulicElem (unsigned int uL, const DofOwner *pDO, HydraulicFluid *hf, flag fOut)
 
virtual ~HydraulicElem (void)
 
virtual Elem::Type GetElemType (void) const
 
- Public Member Functions inherited from ElemWithDofs
 ElemWithDofs (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~ElemWithDofs (void)
 
- Public Member Functions inherited from DofOwnerOwner
 DofOwnerOwner (const DofOwner *pDO)
 
virtual ~DofOwnerOwner ()
 
virtual const DofOwnerpGetDofOwner (void) const
 
virtual integer iGetFirstIndex (void) const
 
virtual void SetInitialValue (VectorHandler &X)
 

Private Attributes

const PressureNodepNode1
 
const PressureNodepNode2
 
doublereal area_diaf
 
doublereal mass
 
doublereal area_max
 
doublereal Kappa
 
doublereal force0
 
doublereal width
 
doublereal s_max
 
doublereal c_spost
 
doublereal c_vel
 
doublereal c_acc
 
doublereal c1
 
doublereal c2
 
doublereal c3
 
doublereal c4
 
doublereal cf1
 
doublereal cf2
 
doublereal cf3
 
doublereal cf4
 
doublereal s
 
doublereal v
 
doublereal sp
 
doublereal vp
 
doublereal flow1
 
doublereal flow2
 

Additional Inherited Members

- Public Types inherited from Elem
enum  Type {
  UNKNOWN = -1, AIRPROPERTIES = 0, INDUCEDVELOCITY, AUTOMATICSTRUCTURAL,
  GRAVITY, BODY, JOINT, JOINT_REGULARIZATION,
  BEAM, PLATE, FORCE, INERTIA,
  ELECTRICBULK, ELECTRIC, THERMAL, HYDRAULIC,
  BULK, LOADABLE, DRIVEN, EXTERNAL,
  AEROMODAL, AERODYNAMIC, GENEL, SOCKETSTREAM_OUTPUT,
  RTAI_OUTPUT = SOCKETSTREAM_OUTPUT, LASTELEMTYPE
}
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 
- Public Types inherited from HydraulicElem
enum  Type {
  UNKNOWN = -1, MINOR_LOSS = 0, THREEWAYMINORLOSS, CONTROL_VALVE,
  DYNAMIC_CONTROL_VALVE, PRESSURE_FLOW_CONTROL_VALVE, PRESSURE_VALVE, FLOW_VALVE,
  ORIFICE, ACCUMULATOR, TANK, PIPE,
  DYNAMIC_PIPE, HYDRAULIC_ACTUATOR, ACTUATOR, LASTHYDRAULICTYPE
}
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from HydraulicElem
HydraulicFluidHF
 

Detailed Description

Definition at line 431 of file valve.h.

Constructor & Destructor Documentation

Pressure_valve::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 
)

Definition at line 1491 of file valve.cc.

References ASSERT, PressureNode::GetNodeType(), Node::HYDRAULIC, pNode1, and pNode2.

1500 : Elem(uL, fOut),
1501 HydraulicElem(uL, pDO, hf, fOut),
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)
1505 {
1506  ASSERT(pNode1 != NULL);
1508  ASSERT(pNode2 != NULL);
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());
1513  ASSERT(K >= 0. );
1514  ASSERT(F0 >= 0.);
1515  ASSERT(w > std::numeric_limits<doublereal>::epsilon());
1516  ASSERT(s_mx>=0.); // corsa massima della valvola
1517 
1518 }
doublereal width
Definition: valve.h:440
const PressureNode * pNode2
Definition: valve.h:434
doublereal c_acc
Definition: valve.h:444
doublereal Kappa
Definition: valve.h:438
doublereal area_max
Definition: valve.h:437
doublereal c_vel
Definition: valve.h:443
HydraulicElem(unsigned int uL, const DofOwner *pDO, HydraulicFluid *hf, flag fOut)
Definition: preselem.cc:54
doublereal mass
Definition: valve.h:436
doublereal force0
Definition: valve.h:439
#define ASSERT(expression)
Definition: colamd.c:977
doublereal c_spost
Definition: valve.h:442
const PressureNode * pNode1
Definition: valve.h:433
virtual Node::Type GetNodeType(void) const
Definition: presnode.h:54
doublereal area_diaf
Definition: valve.h:435
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
doublereal s_max
Definition: valve.h:441

Here is the call graph for this function:

Pressure_valve::~Pressure_valve ( void  )

Definition at line 1520 of file valve.cc.

References NO_OP.

1521 {
1522  NO_OP;
1523 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

VariableSubMatrixHandler & Pressure_valve::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 1562 of file valve.cc.

References area_diaf, area_max, c1, c2, c3, cf1, cf2, cf3, copysign(), DEBUGCOUT, HydraulicFluid::dGetDensity(), ScalarAlgebraicNode::dGetX(), grad::fabs(), HydraulicElem::HF, Node::iGetFirstColIndex(), DofOwnerOwner::iGetFirstIndex(), Node::iGetFirstRowIndex(), Kappa, mass, pNode1, pNode2, grad::pow(), FullSubMatrixHandler::PutCoef(), FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::Resize(), s, VariableSubMatrixHandler::SetFull(), grad::sqrt(), v, and width.

1566 {
1567  DEBUGCOUT("Entering Pressure_valve::AssJac()" << std::endl);
1568 
1569  FullSubMatrixHandler& WM = WorkMat.SetFull();
1570  WM.Resize(4, 4);
1571 
1572  integer iNode1RowIndex = pNode1->iGetFirstRowIndex()+1;
1573  integer iNode2RowIndex = pNode2->iGetFirstRowIndex()+1;
1574  integer iNode1ColIndex = pNode1->iGetFirstColIndex()+1;
1575  integer iNode2ColIndex = pNode2->iGetFirstColIndex()+1;
1576  integer iFirstIndex = iGetFirstIndex();
1577 
1578  WM.PutRowIndex(1, iNode1RowIndex);
1579  WM.PutRowIndex(2, iNode2RowIndex);
1580  WM.PutColIndex(1, iNode1ColIndex);
1581  WM.PutColIndex(2, iNode2ColIndex);
1582 
1583  WM.PutRowIndex(3, iFirstIndex+1);
1584  WM.PutColIndex(3, iFirstIndex+1);
1585  WM.PutRowIndex(4, iFirstIndex+2);
1586  WM.PutColIndex(4, iFirstIndex+2);
1587 
1588  doublereal p1 = pNode1->dGetX();
1589  doublereal p2 = pNode2->dGetX();
1590  /* p1 = XCurr(pNode1->iGetFirstRowIndex()+1); */
1591  doublereal density = HF->dGetDensity();
1592 
1593  s = XCurr(iFirstIndex+1); /* spostamento */
1594  v = XCurr(iFirstIndex+2); /* velocita' */
1595 
1596  doublereal Cd = .6;
1597  doublereal jumpPres = fabs(p1-p2);
1598 
1599  /* evito di dividere per un numero troppo piccolo */
1600  if (jumpPres < 1.e8*std::numeric_limits<doublereal>::epsilon()) {
1601  jumpPres = 1.e8*std::numeric_limits<doublereal>::epsilon();
1602  }
1603 
1604  doublereal Jac11 = 0.;
1605  doublereal Jac12 = 0.;
1606  doublereal Jac13 = 0.;
1607  doublereal Jac14 = 0.;
1608  doublereal Jac21 = 0.;
1609  doublereal Jac22 = 0.;
1610  doublereal Jac23 = 0.;
1611  doublereal Jac24 = 0.;
1612  doublereal Jac31 = 0.;
1613  doublereal Jac32 = 0.;
1614  doublereal Jac33 = 0.;
1615  doublereal Jac34 = 0.;
1616  doublereal Jac41 = 0.;
1617  doublereal Jac42 = 0.;
1618  doublereal Jac43 = 0.;
1619  doublereal Jac44 = 0.;
1620 
1621 #ifdef HYDR_DEVEL
1622  DEBUGCOUT("Valore di c1: " << c1 << std::endl);
1623  DEBUGCOUT("Valore di c2: " << c2 << std::endl);
1624  DEBUGCOUT("Valore di c3: " << c3 << std::endl);
1625 #endif
1626 
1627  Jac11 = -density*width*s*Cd/sqrt(2*jumpPres/density)/density;
1628  Jac12 = -Jac11;
1629  Jac13 = -density*width*Cd*copysign(sqrt(2*jumpPres/density), p1-p2)*dCoef;
1630  Jac14 = 0.;
1631 
1632  Jac21 = -Jac11;
1633  Jac22 = Jac11;
1634  Jac23 = -Jac13; /* density*width*Cd*copysign(sqrt(2*jumpPres/density),(p1-p2))*dCoef; */
1635  Jac24 = 0.;
1636 
1637  Jac31 = area_max;
1638  Jac32 = 0.;
1639  Jac33 = -Kappa*dCoef-c1*dCoef-cf1*dCoef;
1640  Jac34 = -mass
1641  -density*area_max*pow(area_max/(area_diaf*Cd), 2)*fabs(v)*dCoef
1642  -c2*dCoef-c3-cf2*dCoef-cf3;
1643 
1644  Jac41 = 0.;
1645  Jac42 = 0.;
1646  Jac43 = -1.;
1647  Jac44 = dCoef;
1648 
1649 #ifdef HYDR_DEVEL
1650  DEBUGCOUT("Jac smorzatore " << density*area_max*pow(area_max/(area_diaf*Cd), 2) << std::endl);
1651 #endif
1652 
1653  WM.PutCoef(1, 1, Jac11);
1654  WM.PutCoef(1, 2, Jac12);
1655  WM.PutCoef(1, 3, Jac13);
1656  WM.PutCoef(1, 4, Jac14);
1657  WM.PutCoef(2, 1, Jac21);
1658  WM.PutCoef(2, 2, Jac22);
1659  WM.PutCoef(2, 3, Jac23);
1660  WM.PutCoef(2, 4, Jac24);
1661  WM.PutCoef(3, 1, Jac31);
1662  WM.PutCoef(3, 2, Jac32);
1663  WM.PutCoef(3, 3, Jac33);
1664  WM.PutCoef(3, 4, Jac34);
1665  WM.PutCoef(4, 1, Jac41);
1666  WM.PutCoef(4, 2, Jac42);
1667  WM.PutCoef(4, 3, Jac43);
1668  WM.PutCoef(4, 4, Jac44);
1669 
1670  return WorkMat;
1671 }
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
doublereal v
Definition: valve.h:455
doublereal width
Definition: valve.h:440
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2961
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
const PressureNode * pNode2
Definition: valve.h:434
void Resize(integer iNewRow, integer iNewCol)
Definition: submat.cc:138
doublereal Kappa
Definition: valve.h:438
doublereal cf3
Definition: valve.h:451
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:672
doublereal c1
Definition: valve.h:445
doublereal area_max
Definition: valve.h:437
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
Definition: gradient.h:2973
doublereal cf1
Definition: valve.h:449
virtual doublereal dGetDensity(void) const =0
virtual const doublereal & dGetX(void) const
Definition: node.h:492
HydraulicFluid * HF
Definition: preselem.h:79
doublereal c3
Definition: valve.h:447
doublereal s
Definition: valve.h:454
doublereal mass
Definition: valve.h:436
doublereal copysign(doublereal x, doublereal y)
Definition: gradient.h:97
#define DEBUGCOUT(msg)
Definition: myassert.h:232
doublereal cf2
Definition: valve.h:450
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
doublereal c2
Definition: valve.h:446
const PressureNode * pNode1
Definition: valve.h:433
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
doublereal area_diaf
Definition: valve.h:435
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:88

Here is the call graph for this function:

SubVectorHandler & Pressure_valve::AssRes ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 1674 of file valve.cc.

References area_diaf, area_max, c1, c2, c3, c4, c_acc, c_spost, c_vel, cf1, cf2, cf3, cf4, copysign(), DEBUGCOUT, HydraulicFluid::dGetDensity(), ScalarAlgebraicNode::dGetX(), grad::fabs(), flow1, flow2, force0, HydraulicElem::HF, DofOwnerOwner::iGetFirstIndex(), Node::iGetFirstRowIndex(), Kappa, mass, pNode1, pNode2, grad::pow(), SubVectorHandler::PutItem(), VectorHandler::Resize(), s, s_max, sp, grad::sqrt(), v, vp, and width.

1679 {
1680  integer iNode1RowIndex = pNode1->iGetFirstRowIndex()+1;
1681  integer iNode2RowIndex = pNode2->iGetFirstRowIndex()+1;
1682 
1683  doublereal p1 = pNode1->dGetX();
1684  doublereal p2 = pNode2->dGetX();
1685 
1686  WorkVec.Resize(4);
1687 
1688  integer iFirstIndex = iGetFirstIndex();
1689 
1690  s = XCurr(iFirstIndex+1); /* spostamento */
1691  v = XCurr(iFirstIndex+2); /* velocita' */
1692  sp = XPrimeCurr(iFirstIndex+1); /* velocita' */
1693  vp = XPrimeCurr(iFirstIndex+2); /* accelerazione */
1694  doublereal density = HF->dGetDensity();
1695 
1696  doublereal Cd = .6;
1697  doublereal jumpPres = fabs(p1-p2);
1698  doublereal Res_1 = 0.;
1699  doublereal Res_2 = 0.;
1700  doublereal Res_3 = 0.;
1701  doublereal Res_4 = 0.;
1702  doublereal x0 = (p1*area_max-force0)/Kappa; /* punto di equilibrio */
1703 
1704 #ifdef HYDR_DEVEL
1705  DEBUGCOUT("s: " << s << std::endl);
1706  DEBUGCOUT("sp: " << sp << std::endl);
1707  DEBUGCOUT("v: " << v << std::endl);
1708  DEBUGCOUT("vp: " << vp << std::endl);
1709 #endif
1710 
1711  if (s <= 0.) {
1712  c1 = c_spost;
1713 
1714  if (sp < 0.) {
1715  c2 = c_vel; /* ho v negativa devo smorzare */
1716  } else {
1717  c2 = 0.;
1718  }
1719 
1720  if (vp < 0.) {
1721  c3 = c_acc; /* ho acc negativa devo smorzare */
1722  } else {
1723  c3 = 0.;
1724  }
1725 
1726  c4 = 0.; /* (force0-p1*area_max); */
1727  } else {
1728  c1 = 0.;
1729  c2 = 0.;
1730  c3 = 0.;
1731  c4 = 0.;
1732  }
1733 
1734  if (s >= s_max) {
1735  cf1 = c_spost;
1736 
1737  if (sp > 0.) {
1738  cf2 = c_vel; /* ho v positiva devo smorzare */
1739  } else {
1740  cf2 = 0.;
1741  }
1742 
1743  if (vp > 0.) {
1744  cf3 = c_acc; /* ho acc positiva devo smorzare */
1745  } else {
1746  cf3 = 0.;
1747  }
1748 
1749  cf4 = 0.; /* (force0-p1*area_max); */
1750  } else {
1751  cf1 = 0.;
1752  cf2 = 0.;
1753  cf3 = 0.;
1754  cf4 = 0.;
1755  }
1756 
1757  Res_1 = density*width*s*Cd*copysign(sqrt(2.*jumpPres/density), p1-p2);
1758  Res_2 = -Res_1;
1759  Res_3 = mass*vp-p1*area_max
1760  +copysign(.5*density*area_max*pow(sp*area_max/(area_diaf*Cd), 2), sp)
1762  Res_4 = sp-v;
1763 
1764 
1765  flow1 = -Res_1; /* per l'output */
1766  flow2 = -Res_2; /* per l'output */
1767 
1768 #ifdef HYDR_DEVEL
1769  DEBUGCOUT("width: " << width << std::endl);
1770  DEBUGCOUT("Cd: " << Cd << std::endl);
1771  DEBUGCOUT("jumpPres: " << jumpPres << std::endl);
1772  DEBUGCOUT("density: " << density << std::endl);
1773  DEBUGCOUT("p1: " << p1 << std::endl);
1774  DEBUGCOUT("p2: " << p2 << std::endl);
1775  DEBUGCOUT("s: " << s << std::endl);
1776  DEBUGCOUT("sp: " << sp << std::endl);
1777  DEBUGCOUT("v: " << v << std::endl);
1778  DEBUGCOUT("vp: " << vp << std::endl);
1779  DEBUGCOUT("area_max: " << area_max << std::endl);
1780  DEBUGCOUT("Kappa: " << Kappa << std::endl);
1781  DEBUGCOUT("force0: " << force0 << std::endl);
1782  DEBUGCOUT("mass: " << mass << std::endl);
1783  DEBUGCOUT("x0: " << x0 << std::endl);
1784  DEBUGCOUT("s_max: " << s_max << std::endl);
1785  DEBUGCOUT("Valore dello smorzatore: "
1786  << copysign(.5*density*area_max*pow(area_max/(area_diaf*Cd), 2), sp) << std::endl);
1787  DEBUGCOUT("c1: " << c1 << std::endl);
1788  DEBUGCOUT("c2: " << c2 << std::endl);
1789  DEBUGCOUT("c3: " << c3 << std::endl);
1790  DEBUGCOUT("c4: " << c4 << std::endl);
1791  DEBUGCOUT("cf1: " << cf1 << std::endl);
1792  DEBUGCOUT("cf2: " << cf2 << std::endl);
1793  DEBUGCOUT("cf3: " << cf3 << std::endl);
1794  DEBUGCOUT("cf4: " << cf4 << 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);
1800 #endif
1801 
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);
1806 
1807  return WorkVec;
1808 }
doublereal v
Definition: valve.h:455
doublereal width
Definition: valve.h:440
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2961
doublereal sp
Definition: valve.h:456
doublereal c4
Definition: valve.h:448
const PressureNode * pNode2
Definition: valve.h:434
doublereal c_acc
Definition: valve.h:444
doublereal Kappa
Definition: valve.h:438
doublereal flow2
Definition: valve.h:459
doublereal cf3
Definition: valve.h:451
doublereal cf4
Definition: valve.h:452
doublereal c1
Definition: valve.h:445
doublereal area_max
Definition: valve.h:437
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
Definition: gradient.h:2973
virtual void PutItem(integer iSubRow, integer iRow, const doublereal &dCoef)
Definition: submat.h:1445
doublereal cf1
Definition: valve.h:449
virtual doublereal dGetDensity(void) const =0
virtual const doublereal & dGetX(void) const
Definition: node.h:492
doublereal c_vel
Definition: valve.h:443
HydraulicFluid * HF
Definition: preselem.h:79
doublereal c3
Definition: valve.h:447
doublereal s
Definition: valve.h:454
doublereal mass
Definition: valve.h:436
doublereal copysign(doublereal x, doublereal y)
Definition: gradient.h:97
#define DEBUGCOUT(msg)
Definition: myassert.h:232
doublereal cf2
Definition: valve.h:450
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
doublereal force0
Definition: valve.h:439
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
doublereal c2
Definition: valve.h:446
doublereal flow1
Definition: valve.h:458
doublereal c_spost
Definition: valve.h:442
const PressureNode * pNode1
Definition: valve.h:433
doublereal area_diaf
Definition: valve.h:435
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
doublereal vp
Definition: valve.h:457
virtual void Resize(integer iNewSize)=0
doublereal s_max
Definition: valve.h:441

Here is the call graph for this function:

virtual void Pressure_valve::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
inlinevirtual

Reimplemented from Elem.

Definition at line 502 of file valve.h.

References pNode1, and pNode2.

502  {
503  connectedNodes.resize(2);
504  connectedNodes[0] = pNode1;
505  connectedNodes[1] = pNode2;
506  };
const PressureNode * pNode2
Definition: valve.h:434
const PressureNode * pNode1
Definition: valve.h:433
DofOrder::Order Pressure_valve::GetDofType ( unsigned int  i) const
virtual

Reimplemented from Elem.

Definition at line 1545 of file valve.cc.

References ASSERT, and DofOrder::DIFFERENTIAL.

1546 {
1547  ASSERT(i >= 0 && i <= 1);
1548  return DofOrder::DIFFERENTIAL;
1549 }
#define ASSERT(expression)
Definition: colamd.c:977
HydraulicElem::Type Pressure_valve::GetHydraulicType ( void  ) const
virtual

Implements HydraulicElem.

Definition at line 1526 of file valve.cc.

References HydraulicElem::PRESSURE_VALVE.

unsigned int Pressure_valve::iGetNumDof ( void  ) const
virtual

Reimplemented from Elem.

Definition at line 1539 of file valve.cc.

1540 {
1541  return 2;
1542 }
void Pressure_valve::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 1811 of file valve.cc.

References ToBeOutput::bToBeOutput(), flow1, flow2, WithLabel::GetLabel(), OutputHandler::Hydraulic(), s, v, and vp.

1812 {
1813  if (bToBeOutput()) {
1814  std::ostream& out = OH.Hydraulic();
1815  out << std::setw(8) << GetLabel()
1816  << " " << s << " " << v << " "<< vp
1817  << " " << flow1 << " " << flow2 << std::endl;
1818  }
1819 }
doublereal v
Definition: valve.h:455
virtual bool bToBeOutput(void) const
Definition: output.cc:890
doublereal flow2
Definition: valve.h:459
doublereal s
Definition: valve.h:454
doublereal flow1
Definition: valve.h:458
std::ostream & Hydraulic(void) const
Definition: output.h:492
unsigned int GetLabel(void) const
Definition: withlab.cc:62
doublereal vp
Definition: valve.h:457

Here is the call graph for this function:

std::ostream & Pressure_valve::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 1533 of file valve.cc.

1534 {
1535  return out << "Pressure_valve not implemented yet!" << std::endl;
1536 }
void Pressure_valve::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 1822 of file valve.cc.

References DofOwnerOwner::iGetFirstIndex(), and VectorHandler::PutCoef().

1825 {
1826  integer i = iGetFirstIndex();
1827 
1828  X.PutCoef(i+1, 0.);
1829  X.PutCoef(i+2, 0.);
1830  XP.PutCoef(i+1, 0.);
1831  XP.PutCoef(i+2, 0.);
1832 }
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

void Pressure_valve::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
virtual

Implements Elem.

Definition at line 1553 of file valve.cc.

1554 {
1555  *piNumRows = 4;
1556  *piNumCols = 4;
1557 
1558 }

Member Data Documentation

doublereal Pressure_valve::area_diaf
private

Definition at line 435 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::area_max
private

Definition at line 437 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::c1
private

Definition at line 445 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::c2
private

Definition at line 446 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::c3
private

Definition at line 447 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::c4
private

Definition at line 448 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::c_acc
private

Definition at line 444 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::c_spost
private

Definition at line 442 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::c_vel
private

Definition at line 443 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::cf1
private

Definition at line 449 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::cf2
private

Definition at line 450 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::cf3
private

Definition at line 451 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::cf4
private

Definition at line 452 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::flow1
private

Definition at line 458 of file valve.h.

Referenced by AssRes(), and Output().

doublereal Pressure_valve::flow2
private

Definition at line 459 of file valve.h.

Referenced by AssRes(), and Output().

doublereal Pressure_valve::force0
private

Definition at line 439 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::Kappa
private

Definition at line 438 of file valve.h.

Referenced by AssJac(), and AssRes().

doublereal Pressure_valve::mass
private

Definition at line 436 of file valve.h.

Referenced by AssJac(), and AssRes().

const PressureNode* Pressure_valve::pNode1
private

Definition at line 433 of file valve.h.

Referenced by AssJac(), AssRes(), GetConnectedNodes(), and Pressure_valve().

const PressureNode* Pressure_valve::pNode2
private

Definition at line 434 of file valve.h.

Referenced by AssJac(), AssRes(), GetConnectedNodes(), and Pressure_valve().

doublereal Pressure_valve::s
private

Definition at line 454 of file valve.h.

Referenced by AssJac(), AssRes(), and Output().

doublereal Pressure_valve::s_max
private

Definition at line 441 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::sp
private

Definition at line 456 of file valve.h.

Referenced by AssRes().

doublereal Pressure_valve::v
private

Definition at line 455 of file valve.h.

Referenced by AssJac(), AssRes(), and Output().

doublereal Pressure_valve::vp
private

Definition at line 457 of file valve.h.

Referenced by AssRes(), and Output().

doublereal Pressure_valve::width
private

Definition at line 440 of file valve.h.

Referenced by AssJac(), and AssRes().


The documentation for this class was generated from the following files: