20 #ifndef _RIGID_LINE_PRESSURELOSS_H_
21 #define _RIGID_LINE_PRESSURELOSS_H_
23 #include "mbsim/link.h"
26 class GeneralizedForceLaw;
27 class GeneralizedImpactLaw;
30 namespace MBSimHydraulics {
34 class LinePressureLoss;
35 class ClosablePressureLoss;
36 class LeakagePressureLoss;
37 class UnidirectionalPressureLoss;
44 virtual std::string getType()
const {
return "RigidLinePressureLoss"; }
45 void plot(
double t,
double dt);
47 bool hasSmoothPart()
const {
return (bilateral || (unilateral && (fabs(dpMin)>1e-6))); }
49 void init(InitStage stage);
53 bool isSetValued()
const {
return (unilateral || bilateral); }
54 bool isSingleValued()
const {
return not isSetValued(); }
55 void calcgdSize(
int j) {gdSize=active?1:0; }
56 void calcsvSize() {svSize=isSetValued()?1:0; }
59 void updatedhdqRef(
const fmatvec::Mat& dhdqRef,
int i=0) {};
61 void updatedhdtRef(
const fmatvec::Vec& dhdtRef,
int i=0);
70 void updateg(
double t);
71 void checkActive(
int j);
73 bool gActiveChanged();
74 bool isActive()
const {
return active; }
76 void calclaSize(
int j) {laSize=active?1:0; }
78 void calcrFactorSize(
int j) {rFactorSize=active?1:0; }
79 void updategd(
double t);
80 void updateStopVector(
double t);
81 void updateh(
double t,
int j);
82 void updateW(
double t,
int j);
83 void updatedhdz(
double t);
90 void updaterFactors();
91 void solveImpactsFixpointSingle(
double dt);
92 void solveConstraintsFixpointSingle();
93 void solveImpactsGaussSeidel(
double dt);
94 void solveConstraintsGaussSeidel();
95 void solveImpactsRootFinding(
double dt);
96 void solveConstraintsRootFinding();
97 void jacobianImpacts();
98 void jacobianConstraints();
99 void checkImpactsForTermination(
double dt);
100 void checkConstraintsForTermination();
106 bool active, active0;
107 bool unilateral, bilateral;
Definition: pressure_loss.h:322
Definition: pressure_loss.h:50
Definition: pressure_loss.h:168
Definition: pressure_loss.h:39
Definition: pressure_loss.h:273
Definition: rigid_line_pressureloss.h:40