Commensurate units error - Simscape Covective heat transfer (Pipe)

1 Ansicht (letzte 30 Tage)
Aled
Aled am 8 Mai 2021
Beantwortet: Yifeng Tang am 11 Mai 2021
Hi all,
I'm trying to create a custom block in simulink for external convective heat transfer for a cylinder. The equation for convective heat transfer coefficient uses a couple of empirical coefficients which are just numbers and do not have units (see attached image for equation). I am getting an error in the code of 'uncomensurate units' (see attached images) i believe because these coefficients need to be physical values.
From pervious models i understand that coefficients of an equation units need to be comensurate which i have tried to do here but not sure why i am getting the error. Any advice would be apprecitated
component convection_radial_empirical < pipe_model.branchThermal
% Convective Heat Transfer - Radial Empirical Correlation
% The block represents an energy transfer by convection between two
% bodies by means of fluid motion. The transfer is governed by the Newton
% law of cooling and is directly proportional to the convection heat
% transfer coefficient, pipe surface area and the temperature difference.
%
% Connections A and B are thermal conserving ports associated
% with the points between which the energy transport by convection takes
% place. The block positive direction is from port A to port B. This means
% that the heat flow is positive if it flows from A to B.
% Copyright 2005-2016 The MathWorks, Inc.
parameters
d = { 1e-4, 'm' }; % Outer diameter
l = { 1e-4, 'm' }; % Length
C1 = { 1e-4, 'm' }; % Shape factor coefficient
Airflow = { 1, 'm/s^3' }; % External airflow
end
parameters (Access=private)
a = { 1, 'm/s' }; % C1 - Number 1
b = { 1.277, 'm/s^2' }; % C1 - Number 2
end
variables
heat_tr_coeff = { 20, 'W/(m^2*K)' }; % Heat transfer coefficient
C2 = { 1, 'm/s' }; % Airflow coefficient 2
end
equations
assert(d>0)
assert(l>0)
assert(heat_tr_coeff>0)
C2 == sqrt(a + b * Airflow)
heat_tr_coeff == C1 *((1 / d)^0.2) * (1 / (Tavg))^0.181 * (T)^0.266 * C2
Q == heat_tr_coeff * pi * d * (T) * l;
end
end

Antworten (1)

Yifeng Tang
Yifeng Tang am 11 Mai 2021
Hi Aled,
Consider use the syntax
value(a,'unit','type')
to use only the value of a variable with specified unit.
More details here:

Kategorien

Mehr zu Elements finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by