I want to calculate a heated pipes temperature development when it's heated up.
An internal pipe is heated, then there is a surrounding pipe. This surrounding pipe exchanges heat with the surrounding air.
So the heatflow goes into the surrounding air of the outer pipe.
My problem is how do I assign a Heat capacity to the air? The volume I have to consider isn't clear to me.
I would need this to calculate the air temperature from the Heatflow, which defines the temperature gradient that influences the heatflow.
model Waermeuebertragung
type Radius = Real(unit = "m");
type Laenge = Real(unit = "m");
type Dichte = Real(unit = "kg/m^3");
// REAKTORPARAMETER
parameter Radius rii = 10e-3 "Innenrohr Innenradius";
parameter Radius ria = 11e-3 "Innenrohr Außenradius";
parameter Radius rai = 23.5e-3 "Außenrohr Innenradius";
parameter Radius raa = 28.5e-3 "Außenrohr Außenradius";
parameter Laenge l = 1.5 "Länge Rohrreaktor";
parameter Dichte rho_SS = 7800 "Dichte Stahl";
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor Rohrwand_i(C = Waermekapazitaet_Rohr(ri=rii,ra=ria,l=l, density=rho_SS)) annotation(
Placement(visible = true, transformation(origin = {-44, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor Rohrwand_a(C = Waermekapazitaet_Rohr(ri=rai,ra=raa,l=l, density=rho_SS)) annotation(
Placement(visible = true, transformation(origin = {40, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Components.Convection convection_internal annotation(
Placement(visible = true, transformation(origin = {-4, -10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature prescribedTemperature annotation(
Placement(visible = true, transformation(origin = {-80, -10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Ramp T_ramp(duration = 300, height = 200, offset = T_amb, startTime = 0) annotation(
Placement(visible = true, transformation(origin = {-80, 72}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant const(k = 0.01) annotation(
Placement(visible = true, transformation(origin = {-10, 72}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Components.Convection convection annotation(
Placement(visible = true, transformation(origin = {84, -10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor_i annotation(
Placement(visible = true, transformation(origin = {-12, -54}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor_m annotation(
Placement(visible = true, transformation(origin = {30, -54}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor_a annotation(
Placement(visible = true, transformation(origin = {116, -54}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
parameter Modelica.Units.SI.Temperature T_amb = 293.15;
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor(C = 0.1) annotation(
Placement(visible = true, transformation(origin = {120, -2}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(convection_internal.fluid, Rohrwand_a.port) annotation(
Line(points = {{6, -10}, {40, -10}}, color = {191, 0, 0}));
connect(Rohrwand_i.port, convection_internal.solid) annotation(
Line(points = {{-44, -10}, {-14, -10}}, color = {191, 0, 0}));
connect(prescribedTemperature.port, Rohrwand_i.port) annotation(
Line(points = {{-70, -10}, {-44, -10}}, color = {191, 0, 0}));
connect(T_ramp.y, prescribedTemperature.T) annotation(
Line(points = {{-68, 72}, {-64, 72}, {-64, 50}, {-98, 50}, {-98, -10}, {-92, -10}}, color = {0, 0, 127}));
connect(const.y, convection_internal.Gc) annotation(
Line(points = {{2, 72}, {16, 72}, {16, 30}, {-4, 30}, {-4, 0}}, color = {0, 0, 127}));
connect(const.y, convection.Gc) annotation(
Line(points = {{2, 72}, {84, 72}, {84, 0}}, color = {0, 0, 127}));
connect(temperatureSensor_m.port, convection_internal.fluid) annotation(
Line(points = {{20, -54}, {8, -54}, {8, -34}, {20, -34}, {20, -10}, {6, -10}}, color = {191, 0, 0}));
connect(Rohrwand_a.port, convection.solid) annotation(
Line(points = {{40, -10}, {74, -10}}, color = {191, 0, 0}));
connect(prescribedTemperature.port, temperatureSensor_i.port) annotation(
Line(points = {{-70, -10}, {-44, -10}, {-44, -54}, {-22, -54}}, color = {191, 0, 0}));
connect(temperatureSensor_a.port, convection.fluid) annotation(
Line(points = {{106, -54}, {92, -54}, {92, -26}, {106, -26}, {106, -10}, {94, -10}}, color = {191, 0, 0}));
connect(heatCapacitor.port, convection.fluid) annotation(
Line(points = {{120, -12}, {120, -20}, {102, -20}, {102, -10}, {94, -10}}, color = {191, 0, 0}));
annotation(
Diagram(coordinateSystem(extent = {{-100, 100}, {140, -60}})));
end Waermeuebertragung;
When I need to use the convection block with a HeatCapacitor block (on the right), so I get a temperature.
I see at least two possibilities depending on the modeling needs.
The first is to just view it as the ambient air with infinite heat-capacity, and thus replace Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor
with a:
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature fixedTemperature(T=
T_amb)
The second option would be to first have a small air volume that then connects to the ambient air; but that would require more detailed modeling.