 
This package contains base classes that are used to construct the models in Buildings.Utilities.IO.BCVTB.
Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).
| Name | Description | 
|---|---|
|  FluidInterface | Partial class for fluid interface that can be coupled to BCVTB | 
|  establishClientSocket | Establishes the client socket connection | 
|  exchangeReals | Exchanges values of type Real with the socket | 
|  closeClientSocket | Closes the socket for the inter process communication | 
 Buildings.Utilities.IO.BCVTB.BaseClasses.FluidInterface
Buildings.Utilities.IO.BCVTB.BaseClasses.FluidInterface
 
This is a partial model that is used to construct models for interfacing fluid flow systems with the BCVTB interface.
Extends from Buildings.BaseClasses.BaseIcon (Base icon).
| Type | Name | Default | Description | 
|---|---|---|---|
| Boolean | use_m_flow_in | false | Get the mass flow rate from the input connector | 
| MassFlowRate | m_flow | 0 | Fixed mass flow rate going out of the fluid port [kg/s] | 
| Nominal condition | |||
| MassFlowRate | m_flow_nominal | Nominal mass flow rate, used for regularization near zero flow [kg/s] | |
| Advanced | |||
| MassFlowRate | m_flow_small | 1E-4*m_flow_nominal | For bi-directional flow, temperature is regularized in the region |m_flow| < m_flow_small (m_flow_small > 0 required) [kg/s] | 
| Type | Name | Description | 
|---|---|---|
| input RealInput | m_flow_in | Prescribed mass flow rate | 
| input RealInput | T_in | Prescribed boundary temperature | 
| FluidPorts_b | ports[nPorts] | |
| output RealOutput | HSen_flow | Sensible enthalpy flow rate, positive if flow into the component [W] | 
partial model FluidInterface 
  "Partial class for fluid interface that can be coupled to BCVTB"
  import Buildings;
  extends Buildings.BaseClasses.BaseIcon;
  replaceable package Medium =
      Modelica.Media.Interfaces.PartialMedium "Medium model within the source";
  parameter Integer nPorts=0 "Number of ports";
  Modelica.Blocks.Interfaces.RealInput m_flow_in if     use_m_flow_in 
    "Prescribed mass flow rate";
  Modelica.Blocks.Interfaces.RealInput T_in "Prescribed boundary temperature"; 
   parameter Boolean use_m_flow_in = false 
    "Get the mass flow rate from the input connector";
  parameter Medium.MassFlowRate m_flow = 0 
    "Fixed mass flow rate going out of the fluid port";
  parameter Medium.MassFlowRate m_flow_nominal(min=0) 
    "Nominal mass flow rate, used for regularization near zero flow";
  parameter Medium.MassFlowRate m_flow_small(min=0) = 1E-4*m_flow_nominal 
    "For bi-directional flow, temperature is regularized in the region |m_flow| < m_flow_small (m_flow_small > 0 required)";
  Buildings.Fluid.Sensors.EnthalpyFlowRate totEntFloRat[nPorts](
    redeclare final package Medium = Medium,
    each final m_flow_nominal=m_flow_nominal) 
    "Total enthalpy flow rate (sensible plus latent)";
  Modelica.Fluid.Interfaces.FluidPorts_b ports[
                                nPorts](
                     redeclare each package Medium = Medium,
                     m_flow(each max=if flowDirection==Modelica.Fluid.Types.PortFlowDirection.Leaving then 0 else 
                                     +Modelica.Constants.inf,
                            each min=if flowDirection==Modelica.Fluid.Types.PortFlowDirection.Entering then 0 else 
                                     -Modelica.Constants.inf)); 
  Modelica.Blocks.Math.Sum sumHTot_flow(nin=nPorts) 
    "Sum of total enthalpy flow rates";
  Modelica.Blocks.Interfaces.RealOutput HSen_flow(unit="W") 
    "Sensible enthalpy flow rate, positive if flow into the component";
  Buildings.Fluid.Sources.MassFlowSource_T bou(
    redeclare package Medium = Medium,
    final use_T_in=true,
    final nPorts=nPorts,
    use_X_in=false,
    use_C_in=false,
    final use_m_flow_in=true); 
protected 
  parameter Modelica.Fluid.Types.PortFlowDirection flowDirection=
                   Modelica.Fluid.Types.PortFlowDirection.Bidirectional 
    "Allowed flow direction";
equation 
  connect(m_flow_in, bou.m_flow_in);
  if not use_m_flow_in then
    bou.m_flow_in = m_flow;
  end if;
  connect(totEntFloRat.port_b, bou.ports);
  connect(sumHTot_flow.u, totEntFloRat.H_flow);
  connect(bou.T_in, T_in); 
end FluidInterface;
 
For the xml file name, on Windows use two backslashes to separate directories, i.e., use
xmlFileName="C:\\examples\\dymola-room\\socket.cfg"
| Type | Name | Default | Description | 
|---|---|---|---|
| String | xmlFileName | "socket.cfg" | Name of xml file that contains the socket information | 
| Type | Name | Description | 
|---|---|---|
| Integer | socketFD | Socket file descripter, or a negative value if an error occured | 
function establishClientSocket 
  "Establishes the client socket connection"
  input String xmlFileName = "socket.cfg" 
    "Name of xml file that contains the socket information";
  output Integer socketFD 
    "Socket file descripter, or a negative value if an error occured";
  external "C"
     socketFD=establishModelicaClient(xmlFileName);
end establishClientSocket;
 
Real with the socket.
This function must only be called once in each 
communication interval.
| Type | Name | Default | Description | 
|---|---|---|---|
| Integer | socketFD | Socket file descripter | |
| Integer | flaWri | Communication flag to write to the socket stream | |
| Time | simTimWri | Current simulation time in seconds to write [s] | |
| Real | dblValWri[nDblWri] | Double values to write | |
| Integer | nDblWri | Number of double values to write | |
| Integer | nDblRea | Number of double values to read | 
| Type | Name | Description | 
|---|---|---|
| Integer | flaRea | Communication flag read from the socket stream | 
| Time | simTimRea | Current simulation time in seconds read from socket [s] | 
| Real | dblValRea[nDblRea] | Double values read from socket | 
| Integer | retVal | The exit value, which is negative if an error occured | 
function exchangeReals 
  "Exchanges values of type Real with the socket"
  input Integer socketFD(min=1) "Socket file descripter";
  input Integer flaWri "Communication flag to write to the socket stream";
  input Modelica.SIunits.Time simTimWri 
    "Current simulation time in seconds to write";
  input Real[nDblWri] dblValWri "Double values to write";
  input Integer nDblWri "Number of double values to write";
  input Integer nDblRea "Number of double values to read";
  output Integer flaRea "Communication flag read from the socket stream";
  output Modelica.SIunits.Time simTimRea 
    "Current simulation time in seconds read from socket";
  output Real[nDblRea] dblValRea "Double values read from socket";
  output Integer retVal "The exit value, which is negative if an error occured";
  external "C"
     retVal=exchangeModelicaClient(socketFD,
       flaWri, flaRea,
       simTimWri,
       dblValWri, nDblWri,
       simTimRea,
       dblValRea, nDblRea);
end exchangeReals;
 
| Type | Name | Default | Description | 
|---|---|---|---|
| Integer | socketFD | Socket file descripter, or a negative value if an error occured | 
| Type | Name | Description | 
|---|---|---|
| Integer | retVal | Return value of the function that closes the socket connection | 
function closeClientSocket 
  "Closes the socket for the inter process communication"
  input Integer socketFD 
    "Socket file descripter, or a negative value if an error occured";
  output Integer retVal 
    "Return value of the function that closes the socket connection";
  external "C"
     retVal=closeModelicaClient(socketFD);
end closeClientSocket;