modelPartialModularCompressors

Base model for all modular compressor models

Information

This is a base model for modular compressors that are used, for example, in close-loop systems like heat pumps or chillers.

Definitions needed for completion

Three definitions need to be added by an extending class using this component:

  • Redecleration of the model modCom.
  • Redecleration of the model modCon.
  • Connection of modCom[i].port_b with port_b.

The latter provides the possibility to add further components (e.g. sensors or pipes) located at the compressors' outlets.

Modeling approaches

This base model mainly consists of two sub-models and, therefore, please checkout these models for further information of underlying modeling approaches:

Parameters

TypeNameDefaultDescription
General › Modular approach
IntegernCom1Number of compressors in parallel
Compressors › Geometry
Modelica.Units.SI.Volume[nCom]VDisfill(13e-6, nCom)Displacement volume of the compressor
Modelica.Units.SI.Efficiency[nCom]epsReffill(0.04, nCom)Ratio of the real and the ideal displacement volume
Modelica.Units.SI.Diameter[nCom]diameterInlfill(12e-3, nCom)Diameter of the pipe at compressor's inlet
Modelica.Units.SI.Diameter[nCom]diameterOutfill(8e-3, nCom)Diameter of the pipe at compressor's outlet
Compressors › Compressor's characterisitcs
Modelica.Units.SI.Frequency[nCom]rotSpeMaxfill(120, nCom)Maximal rotational speed executable by the compressor
Real[nCom]piPreMaxfill(15, nCom)Maximal pressure ratio executable by the compressor
Compressors › Transient behaviour
Boolean[nCom]useInpFilfill(true, nCom)= true, if transient behaviour of rotational speed is computed
Modelica.Units.SI.Time[nCom]risTimfill(0.5, nCom)Time until rotational speed reaches 99.6 % of its set value
Controller › Base setup
BooleanuseExttrue= true, if external signal is used instead of internal controllers
Modelica.Blocks.Types.SimpleController[nCom]controllerTypefill(Modelica.Blocks.Types.SimpleController.PID, nCom)Type of controller
Boolean[nCom]reverseActionfill(false, nCom)= true, if medium flow rate is throttled through cooling coil controller
AixLib.Types.Reset[nCom]resetfill(AixLib.Types.Reset.Disabled, nCom)Type of controller output reset
Controller › PID setup
Real[nCom]kfill(1, nCom)Gain of controller
Modelica.Units.SI.Time[nCom]Tifill(0.5, nCom)Time constant of integrator block
Real[nCom]Nifill(0.9, nCom)Ni*Ti is time constant of anti-windup compensation
Modelica.Units.SI.Time[nCom]Tdfill(0.1, nCom)Time constant of derivative block
Real[nCom]Ndfill(10, nCom)The higher Nd, the more ideal the derivative block
Controller › Weighting and limits
Real[nCom]wpfill(1, nCom)Set-point weight for Proportional block (0..1)
Real[nCom]wdfill(0, nCom)Set-point weight for Derivative block (0..1)
Real[nCom]yMaxfill(1, nCom)Upper limit of output
Real[nCom]yMinfill(0, nCom)Lower limit of output
Pressure and heat losses › Pressure losses - General
Real[nCom]zetInl{((1/0.59 - 1)^2 + (1 - (diameterInl[i]/0.066)^2))*(1 - (diameterInl[i]/0.066)^2) for i in 1:nCom}Pressure loss factor at compressor's inlet for flow of port_a -> port_b
Real[nCom]zetOut{((1/0.59 - 1)^2 + (1 - (diameterOut[i]/0.1122)^2))*(1 - (diameterOut[i]/0.1122)^2) for i in 1:nCom}Pressure loss factor at compressor's outlet for flow of port_a -> port_b
Pressure and heat losses › Pressure losses - Advanced
Boolean[nCom]from_dpfill(false, nCom)= true, use m_flow = f(dp) else dp = f(m_flow)
Boolean[nCom]homotopyInitializationfill(true, nCom)= true, use homotopy method for initialisation
Boolean[nCom]linearizedfill(false, nCom)= true, use linear relation between m_flow and dp for any flow rate
Pressure and heat losses › Heat losses - General
Utilities.Types.HeatTransferModels[nCom]heaTraModfill(Utilities.Types.HeatTransferModels.Simplified, nCom)Choose heat transfer model for heat losses at compressor's inlet and outlet
Pressure and heat losses › Heat losses - Geometry
Modelica.Units.SI.Mass[nCom]mWalfill(2.5, nCom)Mass of the fictitious wall
Modelica.Units.SI.SpecificHeatCapacity[nCom]cpWalfill(450, nCom)Specific heat capacity of the fictitious wall
Pressure and heat losses › Heat losses - Thermal conductances
Modelica.Units.SI.ThermalConductance[nCom]kAMeaInlfill(25, nCom)Effective mean thermal conductance between medium and fictitious wall at inlet
Modelica.Units.SI.ThermalConductance[nCom]kAMeaOutfill(35, nCom)Effective mean thermal conductance between medium and fictitious wall at outlet
Modelica.Units.SI.ThermalConductance[nCom]kAMeaAmbfill(10, nCom)Effective mean thermal conductance coefficient between fictitious wall and ambient
Pressure and heat losses › Heat losses - Initialisation
Boolean[nCom]iniTWal0fill(true, nCom)= true, if wall is initialised at fixed temperature; Otherwise, steady state initialisation
Modelica.Units.SI.Temperature[nCom]TWal0fill(293.15, nCom)Temperature of wall at initialisation
Advanced › General
Modelica.Units.SI.PressureDifferencedp_start-20e5Guess value of compressor's dp = port_a.p - port_b.p
Medium.MassFlowRatem_flow_start0.5*m_flow_nominalGuess value of compressor's m_flow = port_a.m_flowr
Medium.MassFlowRatem_flow_small1e-6*m_flow_nominalSmall mass flow rate for regularization of compressor's zero flow
Modelica.Units.SI.MassFlowRatem_flow_nominal0.1Nominal mass flow rate
Advanced › Diagnostics
Booleanshow_Tfalse= true, if compressor's temperatures at port_a and port_b are computed
Booleanshow_V_flowfalse= true, if compressor's volume flow rate at inflowing port is computed
Booleanshow_staEfffalse= true, if thermodynamic states and efficiencies are computed
Booleanshow_quafalse= true, if vapour qualities are computed
Booleanshow_parComtrue= true, if compressors' input parameters are shown in results
Booleanshow_parContrue= true, if controller's input parameters are shown in results
Advanced › Initialisation
Modelica.Units.SI.Frequency[nCom]rotSpe0fill(60, nCom)Compressor's rotational spped at initialisation
Modelica.Units.SI.AbsolutePressure[nCom]pInl0fill(3e5, nCom)Pressure at compressor's inlet at initialisation
Modelica.Units.SI.Temperature[nCom]TInl0fill(283.15, nCom)Temperature at compressor's inlet at initialisation
Advanced › Initialisation Controller
Modelica.Blocks.Types.Init[nCom]initTypefill(Modelica.Blocks.Types.Init.InitialState, nCom)Init: (1: no init, 2: steady state, 3: initial state, 4: initial output)
Real[nCom]xi_startfill(0, nCom)Initial or guess value value for integrator output (= integrator state)
Real[nCom]xd_startfill(0, nCom)Initial or guess value for state of derivative block
Real[nCom]y_startfill(0, nCom)Initial value of output
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b[nCom]heatPortHeat port for compressors' heat losses
Controls.Interfaces.ModularHeatPumpControlBusdataBusConnector that contains all relevant control signals

Components

TypeNameDefaultDescription
SimpleCompressor[nCom]modComArray of compressor models in parallel
ModularControllermodConModel of internal controller

Contents

NameDescription
Medium
SimpleCompressor
EngineEfficiency
VolumetricEfficiency
IsentropicEfficiency
ModularController

Revisions

  • October 20, 2017, by Mirko Engelpracht:
    First implementation (see issue 467).