Commit f8fe1d8e authored by i.elizarov's avatar i.elizarov
Browse files

Finished the first working version of the cooling system with the thermal demonstrator

parent 25240687
within CoolingSystem.Data;
record PBMX201E102 "Performance record for the EDUR PBMX 201 E10.2 pump"
extends IBPSA.Fluid.Movers.Data.Generic(
speed_rpm_nominal=2900,
use_powerCharacteristic = true,
power(V_flow={2.777777777777778e-05,0.0009722222222222222}, P={4100, 2300}),
pressure(V_flow={2.777777777777778e-05, 0.0009722222222222222}, dp={1181000, 319000}));
end PBMX201E102;
within CoolingSystem;
package Data
end Data;
within CoolingSystem.Devices;
model CoolingPlant "Model of the cooling plant"
package Medium =
CoolingSystem.Media.ConstantPropertyLiquidNovec;
parameter Modelica.SIunits.HeatFlowRate Q_max = 10.83e3 "Maximum cooling capacity of the plant";
IBPSA.Fluid.Movers.SpeedControlled_y pump(
redeclare package Medium = Medium,
redeclare CoolingSystem.Data.PBMX201E102 per, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, p_start = 3e5
) annotation(
Placement(visible = true, transformation(origin = {6, 34}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
IBPSA.Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, T = 273.15 + 20, nPorts = 1, p = 3e5) annotation(
Placement(visible = true, transformation(origin = {-90, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
inner Modelica.Fluid.System system annotation(
Placement(visible = true, transformation(origin = {90, 90}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
IBPSA.Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear val(redeclare package Medium = Medium, CvData = IBPSA.Fluid.Types.CvTypes.Kv, Kv = 12, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, l = {0.02e-3, 0.2e-3}, m_flow_nominal = 1.125, p_start = 3e5, portFlowDirection_1 = Modelica.Fluid.Types.PortFlowDirection.Entering, portFlowDirection_2 = Modelica.Fluid.Types.PortFlowDirection.Leaving, portFlowDirection_3 = Modelica.Fluid.Types.PortFlowDirection.Leaving, riseTime = 15, use_inputFilter = true, y_start = 0.5) annotation(
Placement(visible = true, transformation(origin = {16, -34}, extent = {{-10, 10}, {10, -10}}, rotation = 0)));
IBPSA.Fluid.Sensors.VolumeFlowRate volJun(redeclare package Medium = Medium, allowFlowReversal = false, m_flow_nominal = 1.125 * 0.5) annotation(
Placement(visible = true, transformation(origin = {16, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 90)));
IBPSA.Fluid.Sensors.VolumeFlowRate volDUT(redeclare package Medium = Medium, allowFlowReversal = false, m_flow_nominal = 1.125 * 0.5) annotation(
Placement(visible = true, transformation(origin = {46, 34}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
IBPSA.Fluid.FixedResistances.PressureDrop filter(redeclare package Medium = Medium, dp_nominal = 0.07e5, m_flow_nominal = 1.5854) annotation(
Placement(visible = true, transformation(origin = {-28, 34}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
IBPSA.Fluid.HeatExchangers.SensibleCooler_T coo(redeclare package Medium = Medium, QMin_flow = -Q_max, dp_nominal = 7.94e3, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, m_flow_nominal = 4050 / 3600, tau = 40) annotation(
Placement(visible = true, transformation(origin = {-56, -10}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Blocks.Continuous.FirstOrder firstOrder(T = 287.61, y_start = 273.15 + 20) annotation(
Placement(visible = true, transformation(origin = {-92, 8}, extent = {{-8, -8}, {8, 8}}, rotation = 0)));
equation
connect(val.port_3, volJun.port_a) annotation(
Line(points = {{16, -24}, {16, -10}}, color = {0, 127, 255}));
connect(pump.port_a, volJun.port_b) annotation(
Line(points = {{16, 34}, {16, 10}}, color = {0, 127, 255}));
connect(volDUT.port_b, pump.port_a) annotation(
Line(points = {{36, 34}, {16, 34}}, color = {0, 127, 255}));
connect(pump.port_b, filter.port_a) annotation(
Line(points = {{-4, 34}, {-18, 34}}, color = {0, 127, 255}));
connect(bou.ports[1], filter.port_b) annotation(
Line(points = {{-80, 50}, {-38, 50}, {-38, 34}}, color = {0, 127, 255}));
connect(coo.port_a, filter.port_b) annotation(
Line(points = {{-56, 0}, {-56, 34}, {-38, 34}}, color = {0, 127, 255}));
connect(coo.port_b, val.port_1) annotation(
Line(points = {{-56, -20}, {-56, -34}, {6, -34}}, color = {0, 127, 255}));
connect(firstOrder.y, coo.TSet) annotation(
Line(points = {{-83.2, 8}, {-48.2, 8}, {-48.2, 2}}, color = {0, 0, 127}));
annotation(
uses(Modelica(version = "3.2.3"), IBPSA(version = "3.0.0")),
Diagram);
end CoolingPlant;
within CoolingSystem.Devices;
model Pipelines
package Medium = CoolingSystem.Media.ConstantPropertyLiquidNovec;
Modelica.Fluid.Pipes.StaticPipe pipe_T1_1(redeclare package Medium = Medium, diameter = 35e-3, length = 0.8 + 0.8 + 9.3 + 3.63 + 0.35 + 0.65 + 1.93 + 0.735 + 0.5, roughness = 1.5e-06) annotation(
Placement(visible = true, transformation(origin = {-60, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Pipes.StaticPipe pipe_T1_2(redeclare package Medium = Medium, diameter = 28e-3, length = 0.656 + 0.572 + 0.190 + 0.178 + 1.629 + 0.85 + 0.69 + 0.2, roughness = 1.5e-06) annotation(
Placement(visible = true, transformation(origin = {-2, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Pipes.StaticPipe pipe_T1_3(redeclare package Medium = Medium, diameter = 33.7e-3, length = 4) annotation(
Placement(visible = true, transformation(origin = {58, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Pipes.StaticPipe pipe_T2_1(redeclare package Medium = Medium, diameter = 35e-3, length = 0.8 + 0.8 + 9.3 + 3.63 + 0.35 + 0.65 + 1.93 + 0.735 + 0.5, roughness = 1.5e-06) annotation(
Placement(visible = true, transformation(origin = {-62, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Fluid.Pipes.StaticPipe pipe_T2_2(redeclare package Medium = Medium, diameter = 28e-3, length = 0.656 + 0.572 + 0.190 + 0.178 + 1.629 + 0.85 + 0.69 + 0.2, roughness = 1.5e-06) annotation(
Placement(visible = true, transformation(origin = {-2, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Fluid.Pipes.StaticPipe pipe_T2_3(redeclare package Medium = Medium, diameter = 33.7e-3, length = 4) annotation(
Placement(visible = true, transformation(origin = {56, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
inner Modelica.Fluid.System system(p_start(displayUnit = "Pa") = 3e5) annotation(
Placement(visible = true, transformation(origin = {90, 90}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Interfaces.FluidPort_a port_T1_a(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {-100, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {-98, -48}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Interfaces.FluidPort_b port_T1_b(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {100, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {100, -46}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Interfaces.FluidPort_a port_T2_a(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {100, -50}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {100, 52}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Interfaces.FluidPort_b port_b(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {-100, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {-100, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(port_T1_a, pipe_T1_1.port_a) annotation(
Line(points = {{-100, 50}, {-88, 50}, {-88, 20}, {-70, 20}}));
connect(pipe_T1_1.port_b, pipe_T1_2.port_a) annotation(
Line(points = {{-50, 20}, {-12, 20}}, color = {0, 127, 255}));
connect(pipe_T1_2.port_b, pipe_T1_3.port_a) annotation(
Line(points = {{8, 20}, {48, 20}}, color = {0, 127, 255}));
connect(pipe_T1_3.port_b, port_T1_b) annotation(
Line(points = {{68, 20}, {86, 20}, {86, 50}, {100, 50}}, color = {0, 127, 255}));
connect(pipe_T2_1.port_a, pipe_T2_2.port_b) annotation(
Line(points = {{-52, -26}, {-12, -26}}, color = {0, 127, 255}));
connect(pipe_T2_2.port_a, pipe_T2_3.port_b) annotation(
Line(points = {{8, -26}, {46, -26}}));
connect(pipe_T2_3.port_a, port_T2_a) annotation(
Line(points = {{66, -26}, {80, -26}, {80, -50}, {100, -50}}, color = {0, 127, 255}));
connect(port_b, pipe_T2_1.port_b) annotation(
Line(points = {{-100, -26}, {-72, -26}}));
annotation(
uses(Modelica(version = "3.2.3")),
Icon(graphics = {Rectangle(fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), Rectangle(origin = {-3, 50}, extent = {{-45, 10}, {45, -10}}), Rectangle(origin = {-3, -46}, extent = {{-45, 10}, {45, -10}}), Line(origin = {54, 50}, points = {{-12, 0}, {12, 0}}), Line(origin = {-59, 50}, points = {{11, 0}, {-11, 0}}), Line(origin = {54, -46}, points = {{-12, 0}, {12, 0}}), Line(origin = {-61, -46}, points = {{13, 0}, {-13, 0}})}),
Diagram(graphics = {Text(origin = {-60, 35}, extent = {{-16, 5}, {16, -5}}, textString = "Copper 35 mm"), Text(origin = {-2, 35}, extent = {{-16, 5}, {16, -5}}, textString = "Copper 28 mm"), Text(origin = {60, 36}, extent = {{-22, 8}, {22, -8}}, textString = "Stainless Steel 33.7 mm")}));
end Pipelines;
within CoolingSystem.Devices;
model ThermalDemonstrator "Thermohydraulic model of the thermal demonstrator"
replaceable package Medium = CoolingSystem.Media.ConstantPropertyLiquidNovec annotation(
Documentation(info = "<html><head></head><body>This model does not include thermal performance of the side panel</body></html>"));
parameter Modelica.SIunits.MassFlowRate m_flow_plate = 0.0893455 "Nominal flow rate for the cooling plate";
parameter Modelica.SIunits.PressureDifference dp_plate = 1.32e5 "Pressure loss at the cooling plate";
parameter Modelica.SIunits.Volume V_plate = 0.0582e-3 "Volume of the liquid in the cooling plate";
parameter Modelica.SIunits.HeatFlowRate Q_flow_plate = 300 "Nominal cooling capacity of the cooling plate";
IBPSA.Fluid.HeatExchangers.HeaterCooler_u plate1_1(redeclare package Medium = Medium, Q_flow_nominal = Q_flow_plate, allowFlowReversal = true, dp_nominal = dp_plate, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, m_flow_nominal = m_flow_plate, tau = V_plate * 1785.9 / m_flow_plate) annotation(
Placement(visible = true, transformation(origin = {-60, 0}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.HeatExchangers.HeaterCooler_u plate1_2(redeclare package Medium = Medium, Q_flow_nominal = Q_flow_plate, allowFlowReversal = true, dp_nominal = dp_plate, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, m_flow_nominal = m_flow_plate, tau = V_plate * 1785.9 / m_flow_plate) annotation(
Placement(visible = true, transformation(origin = {-20, 0}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.HeatExchangers.HeaterCooler_u plate1_3(redeclare package Medium = Medium, Q_flow_nominal = Q_flow_plate, allowFlowReversal = true, dp_nominal = dp_plate, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, m_flow_nominal = m_flow_plate, tau = V_plate * 1785.9 / m_flow_plate) annotation(
Placement(visible = true, transformation(origin = {20, 0}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.HeatExchangers.HeaterCooler_u plate1_4(redeclare package Medium = Medium, Q_flow_nominal = Q_flow_plate, allowFlowReversal = true, dp_nominal = dp_plate, energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, m_flow_nominal = m_flow_plate, tau = V_plate * 1785.9 / m_flow_plate) annotation(
Placement(visible = true, transformation(origin = {60, 0}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Fluid.Interfaces.FluidPort_a port_a(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {0, 100}, extent = {{-10, -10}, {10, 10}}, rotation = 180), iconTransformation(origin = {0, 100}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Interfaces.FluidPort_b port_b(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {0, -100}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {0, -98}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Interfaces.RealInput u(min = 0, max = 1) "Control input for cooling plates" annotation(
Placement(visible = true, transformation(origin = {-120, 60}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-120, 60}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
Modelica.Blocks.Interfaces.RealInput u1 annotation(
Placement(visible = true, transformation(origin = {120, 80}, extent = {{-20, -20}, {20, 20}}, rotation = 180), iconTransformation(origin = {120, 100}, extent = {{-20, -20}, {20, 20}}, rotation = 180)));
Modelica.Fluid.Fittings.GenericResistances.VolumeFlowRate sidePanel1(redeclare package Medium = Medium, a = 7485597e8, allowFlowReversal = false, b = 1212001e3) annotation(
Placement(visible = true, transformation(origin = {30, -82}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Blocks.Interfaces.RealInput u2 annotation(
Placement(visible = true, transformation(origin = {120, 40}, extent = {{-20, -20}, {20, 20}}, rotation = 180)));
Modelica.Blocks.Interfaces.RealInput u3 annotation(
Placement(visible = true, transformation(origin = {120, 0}, extent = {{-20, -20}, {20, 20}}, rotation = 180)));
Modelica.Blocks.Interfaces.RealInput u4 annotation(
Placement(visible = true, transformation(origin = {120, -40}, extent = {{-20, -20}, {20, 20}}, rotation = 180)));
Modelica.Blocks.Interfaces.RealInput u5 annotation(
Placement(visible = true, transformation(origin = {120, -78}, extent = {{-20, -20}, {20, 20}}, rotation = 180)));
IBPSA.Fluid.Actuators.Valves.TwoWayLinear val1(redeclare package Medium = Medium, CvData = IBPSA.Fluid.Types.CvTypes.Kv, Kv = 6.3, l = 0.009, m_flow_nominal = 0.1, riseTime = 5) annotation(
Placement(visible = true, transformation(origin = {-60, 32}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.Actuators.Valves.TwoWayLinear val2(redeclare package Medium = Medium, CvData = IBPSA.Fluid.Types.CvTypes.Kv, Kv = 6.3, l = 0.009, m_flow_nominal = 0.1, riseTime = 5) annotation(
Placement(visible = true, transformation(origin = {-20, 32}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.Actuators.Valves.TwoWayLinear val3(redeclare package Medium = Medium, CvData = IBPSA.Fluid.Types.CvTypes.Kv, Kv = 6.3, l = 0.009, m_flow_nominal = 0.1, riseTime = 5) annotation(
Placement(visible = true, transformation(origin = {20, 32}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.Actuators.Valves.TwoWayLinear val4(redeclare package Medium = Medium, CvData = IBPSA.Fluid.Types.CvTypes.Kv, Kv = 6.3, l = 0.009, m_flow_nominal = 0.1, riseTime = 5) annotation(
Placement(visible = true, transformation(origin = {60, 32}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
IBPSA.Fluid.Actuators.Valves.TwoWayLinear val5(redeclare package Medium = Medium, CvData = IBPSA.Fluid.Types.CvTypes.Kv, Kv = 6.3, l = 0.009, m_flow_nominal = 0.1, riseTime = 5) annotation(
Placement(visible = true, transformation(origin = {30, -56}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
equation
connect(plate1_2.port_b, port_b) annotation(
Line(points = {{-20, -10}, {-20, -32}, {0, -32}, {0, -100}}, color = {0, 127, 255}));
connect(plate1_3.port_b, port_b) annotation(
Line(points = {{20, -10}, {20, -32}, {0, -32}, {0, -100}}, color = {0, 127, 255}));
connect(plate1_4.port_b, port_b) annotation(
Line(points = {{60, -10}, {60, -32}, {0, -32}, {0, -100}}, color = {0, 127, 255}));
connect(plate1_4.u, u) annotation(
Line(points = {{66, 12}, {66, 60}, {-120, 60}}, color = {0, 0, 127}));
connect(sidePanel1.port_b, port_b) annotation(
Line(points = {{30, -92}, {30, -100}, {0, -100}}, color = {0, 127, 255}));
connect(plate1_1.port_b, port_b) annotation(
Line(points = {{-60, -10}, {-60, -32}, {0, -32}, {0, -100}}, color = {0, 127, 255}));
connect(plate1_1.u, u) annotation(
Line(points = {{-54, 12}, {-54, 60}, {-120, 60}}, color = {0, 0, 127}));
connect(plate1_2.u, u) annotation(
Line(points = {{-14, 12}, {-14, 60}, {-120, 60}}, color = {0, 0, 127}));
connect(plate1_3.u, u) annotation(
Line(points = {{26, 12}, {26, 60}, {-120, 60}}, color = {0, 0, 127}));
connect(plate1_1.port_a, val1.port_b) annotation(
Line(points = {{-60, 10}, {-60, 22}}, color = {0, 127, 255}));
connect(plate1_2.port_a, val2.port_b) annotation(
Line(points = {{-20, 10}, {-20, 22}}, color = {0, 127, 255}));
connect(plate1_3.port_a, val3.port_b) annotation(
Line(points = {{20, 10}, {20, 22}}, color = {0, 127, 255}));
connect(plate1_4.port_a, val4.port_b) annotation(
Line(points = {{60, 10}, {60, 22}}, color = {0, 127, 255}));
connect(val4.y, u4) annotation(
Line(points = {{72, 32}, {76, 32}, {76, -40}, {120, -40}}, color = {0, 0, 127}));
connect(val3.y, u3) annotation(
Line(points = {{32, 32}, {42, 32}, {42, 46}, {82, 46}, {82, 0}, {120, 0}}, color = {0, 0, 127}));
connect(val2.y, u2) annotation(
Line(points = {{-8, 32}, {2, 32}, {2, 48}, {90, 48}, {90, 40}, {120, 40}}, color = {0, 0, 127}));
connect(val1.y, u1) annotation(
Line(points = {{-48, 32}, {-40, 32}, {-40, 54}, {86, 54}, {86, 80}, {120, 80}}, color = {0, 0, 127}));
connect(val1.port_a, port_a) annotation(
Line(points = {{-60, 42}, {-60, 74}, {0, 74}, {0, 100}}, color = {0, 127, 255}));
connect(val2.port_a, port_a) annotation(
Line(points = {{-20, 42}, {-20, 66}, {0, 66}, {0, 100}}, color = {0, 127, 255}));
connect(val3.port_a, port_a) annotation(
Line(points = {{20, 42}, {20, 66}, {0, 66}, {0, 100}}, color = {0, 127, 255}));
connect(val4.port_a, port_a) annotation(
Line(points = {{60, 42}, {58, 42}, {58, 78}, {0, 78}, {0, 100}}, color = {0, 127, 255}));
connect(sidePanel1.port_a, val5.port_b) annotation(
Line(points = {{30, -72}, {30, -66}}, color = {0, 127, 255}));
connect(val5.port_a, port_a) annotation(
Line(points = {{30, -46}, {30, -40}, {-70, -40}, {-70, 82}, {0, 82}, {0, 100}}, color = {0, 127, 255}));
connect(val5.y, u5) annotation(
Line(points = {{42, -56}, {80, -56}, {80, -82}, {120, -82}, {120, -78}}, color = {0, 0, 127}));
annotation(
uses(IBPSA(version = "3.0.0"), Modelica(version = "3.2.3")),
Icon(graphics = {Rectangle(fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), Rectangle(origin = {0, 65}, fillColor = {132, 132, 132}, fillPattern = FillPattern.Solid, extent = {{-34, 15}, {34, -15}}), Rectangle(origin = {0, 23}, fillColor = {132, 132, 132}, fillPattern = FillPattern.Solid, extent = {{-34, 15}, {34, -15}}), Rectangle(origin = {0, -21}, fillColor = {132, 132, 132}, fillPattern = FillPattern.Solid, extent = {{-34, 15}, {34, -15}}), Rectangle(origin = {0, -63}, fillColor = {132, 132, 132}, fillPattern = FillPattern.Solid, extent = {{-34, 15}, {34, -15}}), Line(origin = {49.4832, 74.5866}, points = {{-15, 0}, {15, 0}}), Line(origin = {48.4832, 32.5866}, points = {{-14, 0}, {16, 0}}), Line(origin = {47.4832, -9.41341}, points = {{-13, 0}, {17, 0}}), Line(origin = {47.4832, -53.4134}, points = {{-13, 0}, {17, 0}}), Line(origin = {43.4832, 58.5866}, points = {{-9, 0}, {9, 0}}), Line(origin = {43.4832, 16.5866}, points = {{-9, 0}, {9, 0}}), Line(origin = {42.4832, -29.4134}, points = {{-8, 0}, {10, 0}}), Line(origin = {43.4832, -71.4134}, points = {{-9, 0}, {9, 0}}), Line(origin = {52.4832, -6.41341}, points = {{0, 65}, {0, -65}}), Line(origin = {64.4832, 10.5866}, points = {{0, 64}, {0, -64}}), Rectangle(origin = {-49, 0}, fillColor = {122, 122, 122}, fillPattern = FillPattern.Solid, extent = {{-5, 80}, {5, -80}}), Text(origin = {-82, 60}, extent = {{-10, 10}, {10, -10}}, textString = "Q")}),
Documentation(info = "<html><head></head><body>This model does not include thermal performance of the sice panel</body></html>"));
end ThermalDemonstrator;
within CoolingSystem.Devices.Validation;
model Pipelines
package Medium = CoolingSystem.Media.ConstantPropertyLiquidNovec;
inner Modelica.Fluid.System system annotation(
Placement(visible = true, transformation(origin = {90, 90}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
CoolingSystem.Devices.Pipelines pipelines1 annotation(
Placement(visible = true, transformation(origin = {8, 2}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Sources.Boundary_pT boundary1(redeclare package Medium = Medium, T = 273.15 - 40, p = 3e5, nPorts = 1) annotation(
Placement(visible = true, transformation(origin = {-70, 46}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Sources.Boundary_pT boundary(redeclare package Medium = Medium, T = 273.15 - 40, nPorts = 1, p = 2e5) annotation(
Placement(visible = true, transformation(origin = {80, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Fluid.Sources.Boundary_pT boundary2(redeclare package Medium = Medium, T = 273.15 - 40, nPorts = 1, p = 2e5) annotation(
Placement(visible = true, transformation(origin = {76, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Fluid.Sources.Boundary_pT boundary3(redeclare package Medium = Medium, T = 273.15 - 40, nPorts = 1, p = 1e5) annotation(
Placement(visible = true, transformation(origin = {-68, -38}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(boundary1.ports[1], pipelines1.port_T1_a) annotation(
Line(points = {{-60, 46}, {-24, 46}, {-24, 8}, {-2, 8}}, color = {0, 127, 255}));
connect(boundary.ports[1], pipelines1.port_T1_b) annotation(
Line(points = {{70, 40}, {44, 40}, {44, 6}, {18, 6}, {18, 8}}, color = {0, 127, 255}));
connect(boundary2.ports[1], pipelines1.port_T2_a) annotation(
Line(points = {{66, -26}, {40, -26}, {40, -2}, {18, -2}}, color = {0, 127, 255}));
connect(boundary3.ports[1], pipelines1.port_b) annotation(
Line(points = {{-58, -38}, {-16, -38}, {-16, 2}, {-2, 2}, {-2, 0}}, color = {0, 127, 255}));
annotation(
uses(Modelica(version = "3.2.3"), IBPSA(version = "3.0.0")),
Diagram);
end Pipelines;
within CoolingSystem.Devices.Validation;
model ThermalDemonstrator "Validation model for the thermal demonstrator"
package Medium =
CoolingSystem.Media.ConstantPropertyLiquidNovec;
inner Modelica.Fluid.System system annotation(
Placement(visible = true, transformation(origin = {90, 90}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Sources.FixedBoundary boundary1(redeclare package Medium = Medium, nPorts = 1, p = 1e5) annotation(
Placement(visible = true, transformation(origin = {-48, -72}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Fluid.Sources.FixedBoundary boundary(redeclare package Medium = Medium, nPorts = 1, p = boundary1.p + 1.32e5) annotation(
Placement(visible = true, transformation(origin = {-40, 38}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
CoolingSystem.Devices.ThermalDemonstrator thermal_demonstrator1(redeclare package Medium = Medium) annotation(
Placement(visible = true, transformation(origin = {4, -12}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
IBPSA.Fluid.Sensors.TemperatureTwoPort senTem2(redeclare package Medium = Medium, m_flow_nominal = 0.0893455 * 4) annotation(
Placement(visible = true, transformation(origin = {38, -50}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Blocks.Sources.Constant const1(k = 1) annotation(
Placement(visible = true, transformation(origin = {84, -16}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Sources.Ramp ramp(duration = 250, height = -1, offset = 1, startTime = 50) annotation(
Placement(visible = true, transformation(origin = {72, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Sources.Ramp ramp1(duration = 250, height = -1, offset = 1, startTime = 50) annotation(
Placement(visible = true, transformation(origin = {-66, 2}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(senTem2.port_b, boundary1.ports[1]) annotation(
Line(points = {{38, -60}, {38, -72}, {-38, -72}}, color = {0, 127, 255}));
connect(boundary.ports[1], thermal_demonstrator1.port_a) annotation(
Line(points = {{-30, 38}, {4, 38}, {4, -2}}, color = {0, 127, 255}));
connect(thermal_demonstrator1.port_b, senTem2.port_a) annotation(
Line(points = {{4, -22}, {4, -34}, {38, -34}, {38, -40}}, color = {0, 127, 255}));
connect(thermal_demonstrator1.u2, const1.y) annotation(
Line(points = {{16, -8}, {49.5, -8}, {49.5, -16}, {73, -16}}, color = {0, 0, 127}));
connect(thermal_demonstrator1.u3, const1.y) annotation(
Line(points = {{16, -12}, {49.5, -12}, {49.5, -16}, {73, -16}}, color = {0, 0, 127}));
connect(thermal_demonstrator1.u4, const1.y) annotation(
Line(points = {{16, -16}, {73, -16}}, color = {0, 0, 127}));
connect(thermal_demonstrator1.u5, const1.y) annotation(
Line(points = {{16, -20}, {30, -20}, {30, -16}, {73, -16}}, color = {0, 0, 127}));
connect(ramp.y, thermal_demonstrator1.u1) annotation(
Line(points = {{62, 40}, {42, 40}, {42, -2}, {16, -2}}, color = {0, 0, 127}));
connect(ramp1.y, thermal_demonstrator1.u) annotation(
Line(points = {{-54, 2}, {-24, 2}, {-24, -4}, {-8, -4}, {-8, -6}}, color = {0, 0, 127}));
annotation(
uses(Modelica(version = "3.2.3"), IBPSA(version = "3.0.0")),
Diagram);
end ThermalDemonstrator;
within CoolingSystem.Devices;
package Validation
end Validation;
within CoolingSystem;
package Devices
end Devices;
CoolingPlant
Pipelines
ThermalDemonstrator
Validation
within CoolingSystem.Experimental;
model ControlSystem
extends CoolingSystem.Devices.CoolingPlant;
CoolingSystem.Devices.Pipelines pipelines1 annotation(
Placement(visible = true, transformation(origin = {86, -2}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
CoolingSystem.Devices.ThermalDemonstrator thermal_demonstrator1 annotation(
Placement(visible = true, transformation(origin = {130, -2}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant const1(k = 1) annotation(
Placement(visible = true, transformation(origin = {218, -32}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Sources.Ramp ramp(duration = 250, height = -1, offset = 1, startTime = 50) annotation(
Placement(visible = true, transformation(origin = {178, 46}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Sources.Constant const(k = 1) annotation(
Placement(visible = true, transformation(origin = {90, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant const2(k = 273.15 - 40) annotation(
Placement(visible = true, transformation(origin = {-130, 10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant const3(k = 0.5) annotation(
Placement(visible = true, transformation(origin = {-54, -64}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant const4(k = 0.2) annotation(
Placement(visible = true, transformation(origin = {-28, 88}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(const4.y, pump.y) annotation(
Line(points = {{-16, 88}, {-4, 88}, {-4, 48}, {-12, 48}, {-12, 16}, {6, 16}, {6, 22}}, color = {0, 0, 127}));
connect(const3.y, val.y) annotation(
Line(points = {{-42, -64}, {16, -64}, {16, -46}}, color = {0, 0, 127}));
connect(const2.y, firstOrder.u) annotation(
Line(points = {{-118, 10}, {-102, 10}, {-102, 8}}, color = {0, 0, 127}));
connect(pipelines1.port_T1_a, val.port_2) annotation(
Line(points = {{76, -7}, {40, -7}, {40, -34}, {26, -34}}, color = {0, 127, 255}));
connect(volDUT.port_a, pipelines1.port_b) annotation(
Line(points = {{56, 34}, {64, 34}, {64, 4}, {76, 4}}, color = {0, 127, 255}));
connect(pipelines1.port_T1_b, thermal_demonstrator1.port_a) annotation(
Line(points = {{96, -6}, {106, -6}, {106, 14}, {132, 14}, {132, 8}, {130, 8}}, color = {0, 127, 255}));
connect(pipelines1.port_T2_a, thermal_demonstrator1.port_b) annotation(
Line(points = {{96, 4}, {102, 4}, {102, -28}, {130, -28}, {130, -12}}, color = {0, 127, 255}));
connect(ramp.y, thermal_demonstrator1.u1) annotation(
Line(points = {{167, 46}, {154, 46}, {154, 8}, {142, 8}}, color = {0, 0, 127}));
connect(const1.y, thermal_demonstrator1.u2) annotation(
Line(points = {{207, -32}, {192, -32}, {192, 2}, {142, 2}}, color = {0, 0, 127}));
connect(thermal_demonstrator1.u3, const1.y) annotation(
Line(points = {{142, -2}, {192, -2}, {192, -32}, {207, -32}}, color = {0, 0, 127}));
connect(thermal_demonstrator1.u4, const1.y) annotation(
Line(points = {{142, -6}, {192, -6}, {192, -32}, {207, -32}}, color = {0, 0, 127}));
connect(thermal_demonstrator1.u5, const1.y) annotation(
Line(points = {{142, -10}, {192, -10}, {192, -32}, {207, -32}}, color = {0, 0, 127}));
connect(const.y, thermal_demonstrator1.u) annotation(
Line(points = {{102, 50}, {112, 50}, {112, 4}, {118, 4}}, color = {0, 0, 127}));
end ControlSystem;
within CoolingSystem;
package Experimental
end Experimental;
within CoolingSystem.Media;
package ConstantPropertyLiquidNovec "Novec649: Simple liquid Novec 649 medium (incompressible, constant data)"
extends Modelica.Icons.VariantsPackage;
// redeclare record extends FluidConstants
// end FluidConstants;
constant Modelica.Media.Interfaces.Types.Basic.FluidConstants[1]
simpleNovecConstants(
each chemicalFormula="C6F12O",
each structureFormula="C6F12O",
each casRegistryNumber="756-13-8",
each iupacName="Novec649",
each molarMass=0.31601);
extends Modelica.Media.Interfaces.PartialSimpleMedium(
mediumName="SimpleLiquidNovec649",
cp_const=1093,
cv_const=1093,
d_const=1786,
eta_const=1.970e-3,
lambda_const=0.07102,
a_const=715.87,
T_min=Modelica.SIunits.Conversions.from_degC(-41),
T_max=Modelica.SIunits.Conversions.from_degC(49),
T0=273.15,
MM_const=0.31601,
fluidConstants=simpleNovecConstants,
p_default=300000,
reference_p=300000,
reference_T=273.15,
reference_X={1},
AbsolutePressure(start=p_default),
Temperature(start=T_default),
Density(start=d_const)
//final cv_const=cp_const
);
redeclare replaceable model BaseProperties "Base properties (p, d, T, h, u, R, MM and X and Xi) of a medium"
parameter Boolean preferredMediumStates=false
"= true if StateSelect.prefer shall be used for the independent property variables of the medium"
annotation (Evaluate=true, Dialog(tab="Advanced"));
final parameter Boolean standardOrderComponents=true
"If true, and reducedX = true, the last element of X will be computed from the other ones";
Modelica.SIunits.Density d=d_const "Density of medium";
Temperature T(stateSelect=
if preferredMediumStates then StateSelect.prefer else StateSelect.default)
"Temperature of medium";
InputAbsolutePressure p "Absolute pressure of medium";
InputMassFraction[nXi] Xi=fill(0, 0)
"Structurally independent mass fractions";
InputSpecificEnthalpy h "Specific enthalpy of medium";
Modelica.SIunits.SpecificInternalEnergy u
"Specific internal energy of medium";
Modelica.SIunits.MassFraction[nX] X={1}
"Mass fractions (= (component mass)/total mass m_i/m)";
final Modelica.SIunits.SpecificHeatCapacity R=0
"Gas constant (of mixture if applicable)";
final Modelica.SIunits.MolarMass MM=MM_const
"Molar mass (of mixture or single fluid)";
ThermodynamicState state
"Thermodynamic state record for optional functions";
Modelica.SIunits.Conversions.NonSIunits.Temperature_degC T_degC=
Modelica.SIunits.Conversions.to_degC(T)
"Temperature of medium in [degC]";
Modelica.SIunits.Conversions.NonSIunits.Pressure_bar p_bar=
Modelica.SIunits.Conversions.to_bar(p)
"Absolute pressure of medium in [bar]";
// Local connector definition, used for equation balancing check
connector InputAbsolutePressure = input Modelica.SIunits.AbsolutePressure
"Pressure as input signal connector";
connector InputSpecificEnthalpy = input Modelica.SIunits.SpecificEnthalpy
"Specific enthalpy as input signal connector";
connector InputMassFraction = input Modelica.SIunits.MassFraction
"Mass fraction as input signal connector";
equation
h = cp_const*(T-reference_T);
u = h;
state.T = T;
state.p = p;
// Assertions to test for bounds
assert(noEvent(T >= T_min), "In " + getInstanceName() + ": Temperature T = " + String(T) + " K exceeded its minimum allowed value of " +
String(T_min-273.15) + " degC (" + String(T_min) + " Kelvin) as required from medium model");
assert(noEvent(T <= T_max), "In " + getInstanceName() + ": Temperature T = " + String(T) + " K exceeded its maximum allowed value of " +
String(T_max-273.15) + " degC (" + String(T_max) + " Kelvin) as required from medium model");
assert(noEvent(p >= 0.0), "Pressure (= " + String(p) + " Pa) of medium is negative\n(Temperature = " + String(T) + " K)");
end BaseProperties;
function enthalpyOfLiquid "Return the specific enthalpy of liquid"
extends Modelica.Icons.Function;
input Modelica.SIunits.Temperature T "Temperature";
output Modelica.SIunits.SpecificEnthalpy h "Specific enthalpy";
algorithm
h := cp_const*(T-reference_T);
annotation (
smoothOrder=5,
Inline=true);
end enthalpyOfLiquid;
end ConstantPropertyLiquidNovec;
within CoolingSystem.Media.Validation;
package BaseClasses
partial model PartialProperties "Partial model that contains common parameters of the fluid properties"
replaceable package Medium = Modelica.Media.Interfaces.PartialMedium;
parameter Modelica.SIunits.Temperature TMin "Minimum temperature for the simulation";
parameter Modelica.SIunits.Temperature TMax "Maximum temperature for the simulation";
parameter Modelica.SIunits.Pressure p = Medium.p_default "Pressure";
parameter Modelica.SIunits.MassFraction X[Medium.nX] = Medium.X_default "Mass fraction";
parameter Real errAbs = 1E-8 "Absolute error used in the check of the state calculations";
Medium.Temperature T "Temperature";
Modelica.SIunits.Conversions.NonSIunits.Temperature_degC T_degC "Celsius temperature";
Medium.ThermodynamicState state_pTX "Medium state";
Modelica.SIunits.Density d "Density";