An error: Undefined function 'mrdivide' for input arguments of type 'NetworkEngine.ComponentVariableCompileData'.
1 次查看(过去 30 天)
显示 更早的评论
I'm trying to build an engine model in simscape. Here is my code;*
component engine_cylinders
% ine :0.1
% Provides an interface between the pneumatic, liquid and mechanical rotational
% domains.
%
% Eta is the conversion efficiency.
%
% If the pneumatic pressure drops from Port A to port B, then the
% resulting torque is positive acting from the mechanical C to S ports.
% Copyright 2014 SK.
nodes
A = foundation.pneumatic.pneumatic; % A:right
B = foundation.pneumatic.pneumatic; % B:right
F = foundation.thermal_liquid.thermal_liquid; % F:left
S = foundation.mechanical.rotational.rotational; % S:left
C = foundation.mechanical.rotational.rotational; % C:left
end
parameters
H_L = { 1, 'J/kg' }; % Fuel lower heating value
rev_cy = { 1, '1'}; % 1 for two stroke and 2 for four stroke engines
V_d = { 1, 'm^3' }; % Displacement volume
R_AF_high = { 27, '1'}; % Higher R_AF limit (typically 20-27 for HFO)
R_AF_low = { 5, '1'}; % Lower R_AF limit (typically 5-8)
end
parameters(Access = private)
gam = { 1.4, '1' }; % Ratio of specific heats
c_p = { 1005 , 'J/kg/K' }; % Specific heat at constant pressure
c_v = { 717.86 , 'J/kg/K' }; % Specific heat at constant volume
R = { 287.05, 'J/kg/K' }; % Specific gas constant
viscosity = { 18.21e-6, 'Pa*s' }; % Dynamic viscosity
kin_viscosity = { 15.11e-6, 'm^2/s'}; % Kinematic viscosity
Pa = { 101325, 'Pa' }; % Ambient pressure
Ta = { 293.15, 'K' }; % Ambient temperature
range_error = {2, '1' }; % Pressure or temperature below absolute zero
K_z1 = {0.0105e-5, '1'}; % Const. for fuel chem. energy prop. in exh gas
K_z0 = {0.3120, '1' }; % Const. for fuel chem. energy prop. in exh gas
end
variables
mdot_F = { 1, 'kg/s' }; % Fuel mass flow
mdot_A = { 1, 'kg/s' }; % Air mass flow
R_AF = {1, '1'}; % Air to fuel ratio
eta_c = { 1, '1' }; % Combustion Efficiency
p_i = {1, 'N/m^2' }; % Indicated mean effective pressure (IMEP)
x_r = {1, '1' }; % Fuel index position
p_imax = {1, 'N/m^2' }; % Maximum IMEP
p_b = {1, 'N/m^2' }; % Brake mean effective pressure (BMEP)
p_f = {1, 'N/m^2' }; % Friction mean effective pressure (FMEP)
zeta_a = {1, '1' }; % Fuel chemical energy proportion in exh gas
% Pneumatic through variables
G = { 0, 'kg/s' }; % Mass flow rate
Q_A = { 0, 'J/s' }; % Heat flow into port A
Q_B = { 0, 'J/s' }; % Heat flow into port B
% Mechanical through and across variables
t = { 0, 'N*m' }; % Torque
w = { 0, 'rad/s' }; % Angular velocity
BSFC = {0, 'kg/W' }; % Brake specific fuel consumption
pr_t = {0, '1'}; % Pressure ratio P_B/P_A
lambda_e = {0, '1'}; % Specific heat ratio
eta_b = {0, '1' }; % Brake efficiency
mdot = {0, 'kg/s'}; % Fuel mass flow
end
function setup
mdot_F == F.mdot;
mdot_A == A.G;
R_AF == mdot_A/mdot_F;
if R_AF>=R_AF_high
eta_c == 1;
elseif R_AF<=R_AF_low
eta_c == 0;
else
eta_c == (R_AF-R_AF_low)/(R_AF_high-R_AF_low);
end
if eta <= 0
pm_error( 'simscape:GreaterThanZero', 'Efficiency' )
end
if eta > 1
pm_error( 'simscape:LessThan', '1' )
end
end
branches
G : A.G -> B.G;
Q_A : A.Q -> *;
Q_B : B.Q -> *;
t : S.t -> C.t;
mdot: F.mdot -> *;
end
equations
let
% Logs of absolute pressures and temperatures. Extrapolate
% linearly for pressures below p_min.
P_A = if A.p < p_min, p_unit*exp(p_offset_min + p_gradient_min*(A.p - p_min)) else A.p end;
P_B = if B.p < p_min, p_unit*exp(p_offset_min + p_gradient_min*(B.p - p_min)) else B.p end;
% Efficiency from pneumatic to mechanical domains. Will be greater than one if pumping, and
% less than one if motoring.
in
w == S.w - C.w;
p_i == eta_c*p_imax*x_r;
p_b == p_i - p_f;
p_b == (p_imax - K_f3)*x_r-K_f0;
zeta_a == K_z1 * p_b + K_z0;
t == p_b*V_d/(2*pi*rev_cy);
p_b == pi*N_E*t/30;
BSFC == mdot_F/p_b;
eta_b == p_b/mdot_F/H_L;
if G>=0
Q_A == G*A.c_p*A.T;
else
Q_B == -G*A.c_p*B.T;
end
end
end
end
But I'm getting an error:
Failed to generate 'MySimscape_lib'
Caused by: Error using MySimscape.pneumatic/engine_cylinders>setup (line 73) Undefined function 'mrdivide' for input arguments of type 'NetworkEngine.ComponentVariableCompileData'.
What does this mean, and how can I get over that problem.
I'll appreciate if anyone can help?
0 个评论
回答(1 个)
Steve Miller
2023-5-9
The documentation page for equations in Simscape tells you which equations you can use and what the requirements are. mrdivide is permitted, but the second element must be a scalar.
--Steve
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Foundation and Custom Domains 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!