Buildings.Fluid.Examples.Performance.BaseClasses
Information
Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).
Package Content
| Name | Description | 
|---|---|
|  Example1 | Example 1 partial model | 
 Buildings.Fluid.Examples.Performance.BaseClasses.Example1
Buildings.Fluid.Examples.Performance.BaseClasses.Example1
Example 1 partial model
 
Information
This partial model is extended by Buildings.Fluid.Examples.Performance.Example1v1 and Buildings.Fluid.Examples.Performance.Example1v2 and is created to avoid errors in the implementation of the two depending examples.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
| Type | Name | Default | Description | 
|---|---|---|---|
| Real | m_flow_nominal | 0.1 | Gain value multiplied with input signal | 
Modelica definition
partial model Example1 "Example 1 partial model"
  extends Modelica.Icons.Example;
  package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater;
  parameter Real m_flow_nominal=0.1 "Gain value multiplied with input signal";
  Buildings.Fluid.Sources.Boundary_pT bou(
    redeclare package Medium = Medium,
    nPorts=1) "Boundary for pressure boundary condition";
  Fluid.Movers.FlowControlled_m_flow pump(
    redeclare package Medium = Medium,
    m_flow_nominal=m_flow_nominal,
    use_inputFilter=false,
    allowFlowReversal=allowFlowReversal.k,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    nominalValuesDefineDefaultPressureCurve=true)
    "Pump model with unidirectional flow";
  Buildings.Fluid.HeatExchangers.Heater_T hea(
    redeclare package Medium = Medium,
    dp_nominal=1000,
    QMax_flow=1000,
    m_flow_nominal=m_flow_nominal,
    energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
    allowFlowReversal=allowFlowReversal.k) "Heater";
  Modelica.Blocks.Sources.Pulse pulse(period=1000) "Pulse input";
  Modelica.Blocks.Math.Gain gain(k=m_flow_nominal) "Gain for m_flow_nominal";
  Buildings.Fluid.Actuators.Valves.ThreeWayLinear val(
    redeclare package Medium = Medium,
    m_flow_nominal=m_flow_nominal,
    dpValve_nominal=1000,
    l={0.002,0.002},
    energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
    use_inputFilter=false,
    portFlowDirection_1=if allowFlowReversal.k then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
         else Modelica.Fluid.Types.PortFlowDirection.Entering,
    portFlowDirection_2=if allowFlowReversal.k then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
         else Modelica.Fluid.Types.PortFlowDirection.Leaving,
    portFlowDirection_3=if allowFlowReversal.k then Modelica.Fluid.Types.PortFlowDirection.Bidirectional
         else Modelica.Fluid.Types.PortFlowDirection.Entering)
    "Three way valve with constant input";
  Modelica.Blocks.Sources.Constant const(k=0.5) "Constant valve set point";
  Modelica.Blocks.Sources.BooleanConstant allowFlowReversal(k=true)
    "Block for setting allowFlowReversal in components";
  Buildings.Fluid.FixedResistances.PressureDrop[nRes.k] res(
    redeclare package Medium = Medium,
    each allowFlowReversal=allowFlowReversal.k,
    each m_flow_nominal=m_flow_nominal,
    each dp_nominal=1000,
    each from_dp=from_dp.k) "Fluid resistance for splitting flow";
  Modelica.Blocks.Sources.IntegerConstant nRes(k=20)
    "Number of parallel branches";
  Modelica.Blocks.Sources.BooleanConstant from_dp(k=false)
    "Block for setting from_dp in res";
equation 
  connect(bou.ports[1],hea. port_a);
  connect(pulse.y,hea. TSet);
  connect(pump.m_flow_in, gain.y);
  connect(gain.u,pulse. y);
  connect(hea.port_b,val. port_1);
  connect(val.port_2, pump.port_a);
  connect(const.y,val. y);
  connect(val.port_3,hea. port_a);
  for i in 1:nRes.k loop
    connect(pump.port_b, res[i].port_a);
  end for;
end Example1;
