Computational routine
eng

##
PerteDP

### File content

    model PerteDP
      parameter Real L "Longueur du tube";
      parameter Real D "Diametre interne du tube";
      parameter Real lambda "Coefficient de perte de charge-frottement (s.u.)";
      parameter Real z1 "Altitude entree tuyauterie";
      parameter Real z2 "Altitude sortie tuyauterie";
      parameter Real p_rho "Si > 0, masse volumique imposée du fluide";
    //  parameter Integer mode "Région IF97. 1:liquide - 2:vapeur - 4:saturation - 0:calcul automatique";

      parameter Real g = 9.80665 "Accélération de la pesanteur";
      parameter Real pi = 3.1415927;
      parameter Real eps = 1.e-0 "Limite inf. de la fonction carrée";
      Real khi "Coefficient de perte de charge hydraulique";
      Real deltaPf "Perte de charge par frottement";
      Real deltaP "Perte de charge totale";
      Real Q (start=500) "Débit massique";
      Real rho (start=998) "Masse volumique";
      Real Tm (start=290) "Température moyenne";
      Real Pm (start=1.e5) "Pression moyenne";
      Real Hm (start=100000) "Enthalpie spécifique moyenne";
      Real region (start=1) "Numéro de région IF97";
      Real ThermoCar;

    public
      PortPHQ1 C1 ;
      PortPHQ2 C2 ;

    equation

      C1.P - C2.P = deltaP;
      C2.Q = C1.Q;
      C2.H = C1.H;

      Q = C1.Q;

      /* Inversions de débit */
      0 = if (Q > 0.0) then (C1.H - C1.Hm) else (C2.H - C2.Hm);

      /* Calcul des pertes de charges */
      deltaP = deltaPf + rho*g*(z2 - z1);

      ThermoCar = if (abs(Q) > eps) then Q*abs(Q) else Q*eps;
      deltaPf = 8*khi*ThermoCar/(pi^2.0*D^4.0*rho);

        /* Formule de Darcy-Weisbach (Idel'cik p. 55). On suppose qu'on est en régime quadratique. */
      khi = lambda*L/D;

      /* Calcul des propriétés thermodynamiques */
      Pm = (C1.P + C2.P)/2;
      Hm = (C1.H + C2.H)/2;

      Tm = Hm/4187 + 273.15;
      region = 1;

      rho = 998;

    end PerteDP;