24小时热门版块排行榜    

查看: 664  |  回复: 0

vas111

新虫 (初入文坛)

[求助] 为何decic函数提示Not enough input arguments.?

函数如下:

function TwoDimensions_OCM_Main
% 用对称正交配置法求解固定床反应器二维拟均相稳态模型(二维稳态PDE方程组)
% (只在r方向无因次化)

clear all
clc
format long
global AA BB RR N Tw r DeltaH m n R v P T0 F0
R = 8.314; %摩尔气体常数(单位:J/(mol*K))
%配置常数的选取
N = xlsread('Calculating_parameter.xlsx', 1, 'B6');  % 内配置点个数
if N == 3
    AA = xlsread('Configuration_constants.xlsx', 2, 'B2:E5');
    BB = xlsread('Configuration_constants.xlsx', 2, 'B11:E14');
    RR = xlsread('Configuration_constants.xlsx', 2, 'B19:E19');
elseif N == 5
    AA = xlsread('Configuration_constants.xlsx', 2, 'H2:M7');
    BB = xlsread('Configuration_constants.xlsx', 2, 'H11:M16');
    RR = xlsread('Configuration_constants.xlsx', 2, 'H19:M19');
elseif N == 7
    AA = xlsread('Configuration_constants.xlsx', 2, 'P2:W9');
    BB = xlsread('Configuration_constants.xlsx', 2, 'P11:W18');
    RR = xlsread('Configuration_constants.xlsx', 2, 'P19:W19');
else
    fprintf('区域选取错误!N应为3、5或7的整数!');
    return
end
%===========================================================================
% 输入系数
Er = xlsread('Calculating_parameter.xlsx', 1, 'B2'); % 径向有效扩散系数(单位: m^2/h)
u = xlsread('Calculating_parameter.xlsx', 1, 'B3'); % 空塔气速(单位: m/h)
rhoB = xlsread('Calculating_parameter.xlsx', 1, 'B4'); % 催化剂堆积密度(单位:kg/m^3)
lambda_er = xlsread('Calculating_parameter.xlsx', 1, 'B5');% 导热系数(单位:W/(m*K))
n = xlsread('Calculating_parameter.xlsx', 1, 'B7');% 反应组分数
hw = xlsread('Calculating_parameter.xlsx', 1, 'B8');% 壁面对流传热系数(单位:W/(m^2·K))
Tw = xlsread('Calculating_parameter.xlsx', 1, 'B9');% 壁面温度(单位: K)
T0 = xlsread('Calculating_parameter.xlsx', 1, 'B10');% 进口温度(单位: K)
P = xlsread('Calculating_parameter.xlsx', 1, 'B11');% 进口压力(单位: Pa)
r = xlsread('Calculating_parameter.xlsx', 1, 'B12');% 内径(单位:m)
L = xlsread('Calculating_parameter.xlsx', 1, 'B13');% 管长(单位:m)
%===========================================================================
Cp = xlsread('Calculating_parameter.xlsx', 4, 'B2:Z2'); %各组分的比热容(单位:kJ/(kmol*K))
DeltaH = xlsread('Calculating_parameter.xlsx', 4, 'B9:Z9'); %各个反应的反应热(单位:kJ/mol)
F0 = xlsread('Calculating_parameter.xlsx', 4, 'B3:Z3'); %各组分的进口摩尔流速(单位:kmol/(m^2*h))
v = xlsread('Calculating_parameter.xlsx', 3, 'B2:Z21');  %反应计量系数矩阵
m = rank(v);                                            %独立反应数
%===========================================================================
Xi(:,:,m) = 0;                                       %对反应进度Xi初始化
[A,B,E] = AtoE(Er,u,rhoB,lambda_er,hw); %利用函数AtoE对假定的参数A,B,C,D,E赋值

    y0(1:m*N) = 0;                                %状态变量Xi的初值,设为0
    y0(m*N+1: (m+1)*N) = T0;                       %状态变量T的初值,设为0
    y0 = transpose(y0);                           %对y0转置
    t0 = 0;
    fix_y0=ones((m+1)*N,1);
    dy0 = zeros((m+1)*N,1);
    fix_dy0=zeros((m+1)*N,1);
    [y0,dy0]=decic(@Equations,t0,y0,fix_y0,dy0,fix_dy0);

[z,y] = ode15i(@Equations,[0 0.0023],y0,dy0,[],A,B,lambda_er,rhoB,E,Cp); %ode15i求解方程


%============================================================================
function dydx = Equations(t,y,dy,A,B,lambda_er,rhoB,E,Cp)
global AA BB RR N Tw r DeltaH m n R v P F0

T= y(m*N+1: (m+1)*N);
dTdl = dy(m*N+1: (m+1)*N);
for j=1:m
    X(:,j) = y((j-1)*N+1:j*N);%j表示第j个独立反应,其中X的前j列表示Xi的
    dXdl(:,j) =dy((j-1)*N+1:j*N);
end
Rgene = ReactionRate(T(1:N),X)%普遍反应速率,结果返回应为矩阵,行代表对应的反应数m,列代表配置点个数N
for i=1:n
    for j=1:N
        F(i,j) = F0(i)+sum(X(j,: )/(3.14*r^2).*v(:,i)');
        dF(i,j) = sum(v(1:m,i).*dXdl(j,1:m)'/(3.14*r^2));
    end
end
for i=1:m
    for j=1:N
        CA(j,i) = P/R/T(j)*F(i,j)/sum(F(:,j));
    end
end
for i=1:m
    CAb(i)=-sum(AA(N+1,1:N).*CA(:,i)'/AA(N+1,N+1));
end

for i=1:m % m表示独立反应数的个数 n表示反应组分数
    for j=1:N % N表示正交配置点个数
        dC(j,i)=-P/R/(T(j)^2)*dTdl(j)*F(i,j)/sum(F(:,j))+(P/R/T(j)*(dF(i,j)*sum(F(:,j))-F(i,j)*(sum(dF(:,j))))/(sum(F(:,j)))^2)...
        -(A/r^2*(sum((BB(j,1:N)+AA(j,1:N)./RR(j)).*CA(:,i)')+(BB(j,N+1)+AA(j,N+1)./RR(j)).*CAb(i))-B*(-sum(v(1:m,i).*Rgene(1:m,j))));
    end
end

Tb = (r*E*(T(N)-Tw)- sum(AA(N+1,1:N).*T(1:N)')/AA(N+1,N+1));
for j=1:N
    FiCpi(j) = sum(F(1:n,j)'.*Cp(1:n));
end
for j=1:N
    dT(j) = dTdl(j)-((lambda_er/FiCpi(j))/r^2*(sum((BB(j,1:N)+AA(j,1:N)./RR(j)).*T(1:N)')+(BB(j,N+1)+AA(j,N+1)./RR(j))*Tb)+(rhoB/FiCpi(j))*sum(-DeltaH(1:m)'.*(-Rgene(1:m,j))));
end

dC = reshape(dC,N*m,1);% 将dC变化为列向量
dydx = [dC;dT'];


然后错误如下:
Error using Equations (line 28)
Not enough input arguments.


Error in decic (line 67)
res = feval(odefun,t0,y0,yp0,varargin{:});


Error in TwoDimensions_OCM_Main (line 62)
    [y0,dy0]=decic(@Equations,t0,y0,fix_y0,dy0,fix_dy0);
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 vas111 的主题更新
信息提示
请填处理意见