Commensurate units error - Simscape Covective heat transfer (Pipe)

1 vue (au cours des 30 derniers jours)
Aled
Aled le 8 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

Réponses (1)

Yifeng Tang
Yifeng Tang le 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:

Catégories

En savoir plus sur Elements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by