Bache

Scicos Block
fr - eng

##
Thermohydraulic tank (reservoir)

### Contents

- Thermohydraulic tank (reservoir)
  - Description
  - Dialog box
  - Default properties
  - Interfacing function
  - Modelica model

### Description

The Bache block represents a thermo-hydraulic tank or reservoir. This block has two inlets and two outlets whose altitudes can be changed by the user. Conventionnally, for input ports (black ports) flow direction is positive when fluid flows into the tank. On the other hand, for output ports (white ports) flow direction is positive when fluid flows out of the tank. The user can set the surface area of the tank, the initial temperature and initial level of the fluid in the tank. If an input or output port is left unused, it should be blocked by a stopper block.

### Dialog box

Parametres de la bache |
Pression dans le ciel de la bache : Patm (Pa) | 101300
Section de la bache : A (m2) | 1
Altitude du piquage d entrée 1: ze1 (m) | 40
Altitude du piquage d entrée 2: ze2 (m) | 0
Altitude du piquage de sortie 1: zs1 (m) | 40
Altitude du piquage de sortie 2: zs2 (m) | 0
Altitude initiale du fluide : z0 (m) | 30
Température initiale du fluide : T0 (K) | 290
Si 0, masse volumique imposée du fluide : p_rho (kg/m3) | 0

- Pression dans le ciel de la bache : Patm (Pa) : Type 'vec' of size -1. Atmospheric pressure inside the tank.
- Section de la bache : A (m2) : Type 'vec' of size -1. Surface area of the tank.
- Altitude du piquage d entrée 1: ze1 (m) : Type 'vec' of size -1. Altitude of the first input port
- Altitude du piquage d entrée 2: ze2 (m) : Type 'vec' of size -1. Altitude of the second input port
- Altitude du piquage de sortie 1: zs1 (m) : Type 'vec' of size -1. Altitude of the first output port.
- Altitude du piquage de sortie 2: zs2 (m) : Type 'vec' of size -1. Altitude of the second output port.
- Altitude initiale du fluide : z0 (m) : Type 'vec' of size -1. Initial fluid level in the tank.
- Température initiale du fluide : T0 (K) : Type 'vec' of size -1. Temperature of fluid in the tank
- Si 0, masse volumique imposée du fluide : p_rho (kg/m3) : Type 'vec' of size -1. Density of fluid

### Default properties

- always active: no
- direct-feedthrough: yes
- zero-crossing: no
- mode: no
- number/sizes of inputs: 2 / 1 1
- number/sizes of outputs: 3 / 1 1 1
- number/sizes of activation inputs: 0 /
- number/sizes of activation outputs: 0 /
- continuous-time state: no
- discrete-time state: no
- name of modelica function: Bache

### Interfacing function

`Bache.sci`

### Modelica model

    class Bache
      parameter Real Patm "Pression dans le ciel de la bache";
      parameter Real A "Section de la bache";
      parameter Real ze1 "Altitude du piquage d'entrée 1";
      parameter Real ze2 "Altitude du piquage d'entrée 2";
      parameter Real zs1 "Altitude du piquage de sortie 1";
      parameter Real zs2 "Altitude du piquage de sortie 2";
      parameter Real z0 "Altitude initiale du fluide";
      parameter Real T0 "Temperature initiale du fluide";
      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 e=0.25 "Ouverture des piquages";
      parameter Real k=1
        "Coefficient de perte de charge des piquages";
      parameter Real eps=1.e-0 "Limite inf. de la fonction carrée";
      parameter Real zmin=1.e-6
        "Hauteur minimum d'eau pour l'équation de l'énergie";
      Real z(start=z0) "Hauteur du fluide";
      Real Tm(start=T0) "Température moyenne";
      Real Pm(start=1.e5) "Pression moyenne";
      Real Hm(start=100000) "Enthalpie spécifique moyenne";
      Real rho(start=998) "Masse volumique";
      Real BQ "Bilan de masse";
      Real BH "Bilan d'énergie";
      Real Oe1;
      Real Oe2;
      Real Os1;
      Real Os2;
      Real region(start=1) "Numéro de région IF97";
      Real Max_e1;
      Real Max_e2;
      Real Max_s1;
      Real Max_s2;
      Real ThermoCar1;
      Real ThermoCar2;

      Real yNiveau ;

    public
    //  SortieReelle yNiveau ;
      PortPHQ1 Ce1 ;
      PortPHQ2 Cs2 ;
    //  PortTher Cth ; /* Port non utilisé dans le modèle désiré, non implanté sur le bloc SCICOS */
      PortPHQ1 Ce2 ;
      PortPHQ2 Cs1 ;

    //initial equation

    //  Hm = 100000;

    equation

      Ce2.Q = 0;
      Ce2.H = 1.e5;

      Cs1.Q = 0;
      Cs1.H = 1.e5;

      Max_e1 = if (z - ze1 < 0.0) then 0.0 else (z - ze1);
      ThermoCar1 = if (abs(Ce1.Q) > eps) then Ce1.Q*abs(Ce1.Q) else Ce1.Q*eps;
      (Patm + rho*g*Max_e1 - Ce1.P)*Oe1 = k*ThermoCar1/2/rho;

      Oe1 = if (Ce1.Q >= 0.0) then 1.0
    	elseif (z > ze1 + e) then 1.0
    	elseif (z < ze1) then 0.0
    	else (z - ze1)/e;

       Max_e2 = if (z - ze2 < 0.0) then 0.0 else (z - ze2);

      Ce2.P = Patm + rho*g*Max_e2;
      Oe2 = 0;

      Max_s1 = if (z - zs1 < 0.0) then 0.0 else (z - zs1);
      Cs1.P = Patm + rho*g*Max_s1;
      Os1 = 0;

      Max_s2 = if (z - zs2 < 0.0) then 0.0 else (z - zs2);
      ThermoCar2 =if (abs(Cs2.Q) > eps) then Cs2.Q*abs(Cs2.Q) else Cs2.Q*eps;
      (Patm + rho*g*Max_s2 - Cs2.P)*Os2 = k*ThermoCar2/2/rho;

      Os2 = if (Cs2.Q <= 0.0) then 1.0
        elseif (z > zs2 + e) then 1.0
        elseif (z < zs2) then 0.0
        else (z - zs2)/e;

      /* Bilan de masse */
      BQ = Ce1.Q + Ce2.Q - Cs1.Q - Cs2.Q;
      rho*A*der(z) = BQ;

      /* Bilan d'énergie */
      /* le port thermique n'est pas utilisé ici  "+ Cth.W" (on a W=0)*/
      BH = Ce1.Q*(Ce1.H - Hm) + Ce2.Q*(Ce2.H - Hm) - Cs1.Q*(Cs1.H - Hm) - Cs2.Q*(Cs2.H - Hm);

      der(Hm) = if (z > zmin) then BH/(rho*A*z) else 0.0;

      Ce1.Hm = Hm;
      Ce2.Hm = Hm;
      Cs1.Hm = Hm;
      Cs2.Hm = Hm;

    //  Cth.T = Tm; /* le port thermique n'est pas utilisé ici*/

      /* Capteur de niveau */
      yNiveau = z;

      /* Calcul des propriétés thermodynamiques */
      Pm = Patm + rho*g*z/2;

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

      rho = 998.0;

    end Bache;