liuaiguo119 发表于 2008-12-7 18:02

使用s函数时提示call must be a real vector

提示:State derivatives returned by S-function 'sfunmc' in 'mcFC/S-Function' during flag=1 call must be a real vector of length 160.检查后发现是在else中的log内出现了负数,可是为什么会出现负数呢,如何更改呢。程序比较长不知道能不能显示完全,非常感谢您的关注,我的qq是5471282,如果哪位大虾能帮助解决不胜感激,可以请你吃饭或其他有偿的形式表达我的感谢,再次感谢。
sizes = simsizes;

sizes.NumContStates= 16*N;
sizes.NumDiscStates= 0;
sizes.NumOutputs   = 16*N;
sizes.NumInputs      = 16;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed

sys = simsizes(sizes);
x0= [];
function sys=mdlDerivatives(t,x,u,N)
L=0.4;%为电池长度
W=0.1;%为电池宽度
h=L/N;%N为离散的点数
for i=1:N
      
    F=96487;%法拉第常数
    R=8.314;
    hf=0.0008;%燃料流道的高度
    Af=W*hf;%通道截面积
    f=hf/W;
    f_w=24*(1-1.3553*f+1.9467*f^2-1.0712*f^3+0.9564*f^4-0.2537*f^5);%计算f(W,h)
    dhf=(2*W*hf)/(W+hf); % 阳极气流通道的hydraulic diameter

   
   if i==1
   
    roua(i)=u(14)*0.032+u(15)*0.028+u(16)*0.044;
    rouf(i)=u(9)*0.016+u(10)*0.002+u(11)*0.028+u(12)*0.044+u(13)*0.018;% the unit of rou
    nd_ch4=-9.9989+529.37*(u(5)/1000)-543.82*(u(5)/1000).^2+548.11*(u(5)/1000).^3-367.06*(u(5)/1000).^4+140.48*(u(5)/1000).^5-22.92*(u(5)/1000).^6;
    nd_co2=-20.434+680.07*(u(5)/1000)-432.49*(u(5)/1000).^2+244.22*(u(5)/1000).^3-85.929*(u(5)/1000).^4+14.45*(u(5)/1000).^5-0.4564*(u(5)/1000).^6;
    nd_h2o=-6.7541+244.93*(u(5)/1000)+419.5*(u(5)/1000).^2-522.38*(u(5)/1000).^3+348.12*(u(5)/1000).^4-126.96*(u(5)/1000).^5+19.591*(u(5)/1000).^6;
    nd_co=-4.9137+793.65*(u(5)/1000)+875.9*(u(5)/1000).^2+883.75*(u(5)/1000).^3-572.14*(u(5)/1000).^4+208.42*(u(5)/1000).^5-32.298*(u(5)/1000).^6;
    nd_h2=15.553+299.78*(u(5)/1000)-244.34*(u(5)/1000).^2+249.41*(u(5)/1000).^3-167.51*(u(5)/1000).^4+62.966*(u(5)/1000).^5-9.9892*(u(5)/1000).^6;
    mol_ch4=u(9)/(u(9)+u(10)+u(11)+u(12)+u(13));
    mol_h2=u(10)/(u(9)+u(10)+u(11)+u(12)+u(13));
    mol_co=u(11)/(u(9)+u(10)+u(11)+u(12)+u(13));
    mol_co2=u(12)/(u(9)+u(10)+u(11)+u(12)+u(13));
    mol_h2o=u(13)/(u(9)+u(10)+u(11)+u(12)+u(13));
      nd_fuel= (nd_co2*mol_co2*0.044^(0.5)+nd_h2o*mol_h2o*0.018^(0.5)+nd_ch4*mol_ch4*0.016^(0.5)+nd_co*mol_co*0.028^(0.5)+nd_h2*mol_h2*0.002^(0.5))*10^(-7)/(mol_co2*0.044^(0.5)+mol_h2o*0.018^(0.5)+mol_ch4*0.016^(0.5)+mol_co*0.028^(0.5)+mol_h2*0.002^(0.5));   
    cp_co2=4.3669+204.6*(u(5)/1000)-471.33*(u(5)/1000).^2+657.88*(u(5)/1000).^3-519.9*(u(5)/1000).^4+214.58*(u(5)/1000).^5-35.992*(u(5)/1000).^6;
    cp_h2o=37.737-41.205*(u(5)/1000)+146.01*(u(5)/1000).^2-217.08*(u(5)/1000).^3+181.54*(u(5)/1000).^4-79.409*(u(5)/1000).^5+14.105*(u(5)/1000).^6;
    cp_co=30.429-8.1781*(u(5)/1000)+5.2062*(u(5)/1000).^2+41.974*(u(5)/1000).^3-66.346*(u(5)/1000).^4+37.456*(u(5)/1000).^5-7.6538*(u(5)/1000).^6;
    cp_ch4=47.964-178.59*(u(5)/1000)+712.55*(u(5)/1000).^2-1068.7*(u(5)/1000).^3+856.93*(u(5)/1000).^4-358.75*(u(5)/1000).^5+61.321*(u(5)/1000).^6;
    cp_h2=21.157+56.036*(u(5)/1000)-150.55*(u(5)/1000).^2+199.29*(u(5)/1000).^3-136.15*(u(5)/1000).^4+46.903*(u(5)/1000).^5-6.4725*(u(5)/1000).^6;
    cp_mol=mol_ch4*cp_ch4+mol_h2*cp_h2+mol_co*cp_co+mol_co2*cp_co2+mol_h2o*cp_h2o;
    cpf=1000*cp_mol/(mol_ch4*16+ mol_h2*2+mol_co*28+mol_co2*44+mol_h2o*18);
    Mf=(16*mol_ch4+2*mol_h2+28*mol_co+44*mol_co2+18*mol_h2o)/1000      
   
    KfPEN=4.25;% J/s*m2*K
    C11=KfPEN/(rouf(i)*cpf*hf);
    C12=C11;   
    nd_co2_ca=-20.434+680.07*(u(6)/1000)-432.49*(u(6)/1000).^2+244.22*(u(6)/1000).^3-85.929*(u(6)/1000).^4+14.45*(u(6)/1000).^5-0.4564*(u(6)/1000).^6;
    nd_o2=-1.6918+889.75*(u(6)/1000)-892.79*(u(6)/1000).^2+905.98*(u(6)/1000).^3-598.36*(u(6)/1000).^4+221.64*(u(6)/1000).^5-34.754*(u(6)/1000).^6;
    nd_n2=1.2719+771.45*(u(6)/1000)-809.2*(u(6)/1000).^2+832.47*(u(6)/1000).^3-553.93*(u(6)/1000).^4+206.15*(u(6)/1000).^5-32.43*(u(6)/1000).^6;
    mol_co2_ca=u(16)/(u(14)+u(15)+u(16));
    mol_o2=u(14)/(u(14)+u(15)+u(16));
    mol_n2=u(15)/(u(14)+u(15)+u(16));
    nd_oxid= (nd_co2_ca*mol_co2_ca*0.044^(0.5)+nd_o2*mol_o2*0.032^(0.5)+nd_n2*mol_n2*0.028^(0.5))*10^(-7)/(mol_co2_ca*0.044^(0.5)+mol_o2*0.032^(0.5)+mol_n2*0.028^(0.5));
    cp_co2=4.3669+204.6*(u(6)/1000)-471.33*(u(6)/1000).^2+657.88*(u(6)/1000).^3-519.9*(u(6)/1000).^4+214.58*(u(6)/1000).^5-35.992*(u(6)/1000).^6;
    cp_o2=34.85-57.975*(u(6)/1000)+203.68*(u(6)/1000).^2-300.37*(u(6)/1000).^3+231.72*(u(6)/1000).^4-91.821*(u(6)/1000).^5+14.776*(u(6)/1000).^6;
    cp_n2=29.027+4.8987*(u(6)/1000)-38.04*(u(6)/1000).^2+105.17*(u(6)/1000).^3-113.56*(u(6)/1000).^4+55.554*(u(6)/1000).^5-10.35*(u(6)/1000).^6;
    cp_mol_ox=mol_o2*cp_o2+mol_n2*cp_n2+mol_co2_ca*cp_co2;
    cpa=1000*cp_mol_ox/(mol_co2_ca*44+ mol_o2*32+mol_n2*28);
    Ma=(44*mol_co2_ca+32*mol_o2+28*mol_n2)/1000   
    ha=0.0008
    KaPEN=10.1;%w/m2*k
    C21=KaPEN/(roua(i)*cpa*ha);
    C22=C21;
    lmdPEN=22;
rouPEN=2000;
    cpPEN=800;
    C31=lmdPEN/(rouPEN*cpPEN);
    hPEN=0.001;%pen 厚度
    C32=KfPEN/(rouPEN*cpPEN*hPEN);
    C33=KaPEN/(rouPEN*cpPEN*hPEN);
    dh1= (206*10^3 - 16379.71 + 8.314*(7.951*u(5) - 4.354*10^(-3)*u(5)^2 + 0.7213*10^(-6)*u(5)^3 - 0.097*10^5/u(5)));
    dh2= (-41.1*10^3 - 7657.295 + 8.314*(1.86*u(5) - 0.27*10^(-3)*u(5)^2 + 1.164*10^5/u(5)));
    dh3= (-241*10^3 - 4098.471 + 8.314*(-1.5985*u(7) + 0.3875*10^(-3)*u(7)^2 - 0.1515*10^5/u(7)))
    Ca=2.04*10^(-3);
    C1=3.28*10^(-9);
    C2=3.39*10^(-6);
    Cir=1.12*10^(-2);
    detaHc1=132000;
    detaHc2=67100;
    detaHa=23700;
    detaHir=23000;
    vopt=0.7;
    detaG=-242000+45.8*u(7);
    E=-detaG/(2*F);
    Ph2_an=u(3)*mol_h2*10^(-5);%
    Po2_ca=u(4)*mol_o2*10^(-5);
    Pco2_ca=u(4)*mol_co2_ca*10^(-5);
    Ph2o_an=u(3)*mol_h2o*10^(-5);
    Pco2_an=u(3)*mol_co2*10^(-5);
    Nerst=R*u(7)*log((Ph2_an*Pco2_ca*Po2_ca^0.5)/(Ph2o_an*Pco2_an))/(2*F);
    Ran=Ca*(Ph2_an)^(-0.5)*exp(detaHa/(R*u(7)));
    Rca=C1*(Po2_ca)^(-0.75)*(Pco2_ca)^(0.5)*exp(detaHc1/(R*u(7)))+C2*exp(detaHc2/(R*u(7)))*mol_co2_ca^(-1);
    Rir=Cir*exp(detaHir/(R*u(7)));% change the pressure unit from pa to atm
    Rtol=Ran+Rca+Rir;
    j=10000*(E-vopt-Nerst)/Rtol;%current density unit is A/m2
    k0=4274*10^(-5);
    Ea=82000;
    kwgsr=2.35;%
    Keq=exp(4276/u(5)-3.961);
    P_ch4=u(3)*mol_ch4;%
    P_co=u(3)*mol_co;%   
    rate1 = k0*P_ch4*exp(- Ea/(R*u(5)));      
    rate2 = kwgsr*P_co*(1-(mol_co2*mol_h2)/(mol_co*mol_h2o*Keq))/10^5;      
    rate3 = j/(2*F);
   
    C34=(1/(rouPEN*cpPEN*hPEN))*[-dh3*rate3-j*vopt];
   
    sigma=5.6704*10^(-8);
    epsI=0.55
    epsPEN=0.55
    C35=(1/(rouPEN*cpPEN*hPEN))*(sigma/(1/epsI+1/epsPEN-1));
    lmdI=22; %
    rouI=8100;%
    cpI=462;%
    C41=lmdI/(rouI*cpI);
    hI=0.0008;
    KfI=KfPEN;
    C42=KfI/(rouI*cpI*hI);

      KaI=KaPEN;
    C43=KaI/(rouI*cpI*hI);
    C44=(1/(rouI*cpI*hI))*(sigma/(1/epsI+1/epsPEN-1));
   
    sys(i)=-Af*(x(2*N+i)-u(3))/h-2*f_w*nd_fuel*x(i)/(rouf(i)*dhf^2);
    sys(N+i)=-Af*(x(3*N+i)-u(4))/h-2*f_w*nd_oxid*x(N+i)/(roua(i)*dhf^2);
    sys(2*N+i)=R*x(4*N+i)*((-(x(i)-u(1))/(Af*h)))/Mf;
    %-(-0.5*0.016*rate3-0.044*rate3)/hf
    sys(3*N+i)=R*x(5*N+i)*((-(x(N+i)-u(2))/(Af*h)))/Ma;
    sys(4*N+i)=(-x(i)*x(4*N+i))/(rouf(i)*h*Af)+u(1)*u(5)/(rouf(i)*h*Af)+C11*(x(6*N+i)-x(4*N+i))+C12*(x(7*N+i)-x(4*N+i))+C11*(-dh1*rate1-rate2*dh2)/KfPEN;
   
    sys(5*N+i)=(-x(N+i)*x(5*N+i))/(roua(i)*h*Af)+u(2)*u(6)/(roua(i)*h*Af)+C21*(x(6*N+i)-x(5*N+i))+C22*(x(7*N+i)-x(5*N+i));
    sys(6*N+i)= C31*(x(6*N+i)-u(7))/h/h-C32*(x(6*N+i)-x(4*N+i))-C33*(x(6*N+i)-x(5*N+i))+C35*((x(7*N+i))^4-(x(6*N+i))^4)+C34;
       sys(7*N+i)= C41*(x(7*N+i)-u(8))/h/h-C42*(x(7*N+i)-x(4*N+i))-C43*(x(7*N+i)-x(5*N+i))-C44*((x(7*N+i))^4-(x(6*N+i))^4);
    sys(8*N+i)=(-x(i)*x(8*N+i)+u(1)*u(9))/(h*Af*rouf(i))-rate1/hf;
    sys(9*N+i)=(-x(i)*x(9*N+i)+u(1)*u(10))/(h*Af*rouf(i))+(3*rate1+rate2-rate3)/hf;
    sys(10*N+i)=(-x(i)*x(10*N+i)+u(1)*u(11))/(h*Af*rouf(i))-rate2/hf;
    sys(11*N+i)=(-x(i)*x(11*N+i)+u(1)*u(12))/(h*Af*rouf(i))+(rate2+rate3)/hf;
    sys(12*N+i)=(-x(i)*x(12*N+i)+u(1)*u(13))/(h*Af*rouf(i))-(rate1+rate2-rate3)/hf;
    sys(13*N+i)=(-x(N+i)*x(13*N+i)+u(2)*u(14))/(h*Af*roua(i))-rate3/(2*hf);
    sys(14*N+i)=(-x(N+i)*x(14*N+i)+u(2)*u(15))/(h*Af*roua(i));
    sys(15*N+i)=(-x(N+i)*x(15*N+i)+u(2)*u(16))/(h*Af*roua(i))-rate3/(hf);
    else if i==2
               roua(i)=x(13*N+i-1)*0.032+x(14*N+i-1)*0.028+x(15*N+i-1)*0.044;
               rouf(i)=x(8*N+i-1)*0.016+x(9*N+i-1)*0.002+x(10*N+i-1)*0.028+x(11*N+i-1)*0.044+x(12*N+i-1)*0.018;%            
               nd_ch4=-9.9989+529.37*(x(4*N+i-1)/1000)-543.82*(x(4*N+i-1)/1000).^2+548.11*(x(4*N+i-1)/1000).^3-367.06*(x(4*N+i-1)/1000).^4+140.48*(x(4*N+i-1)/1000).^5-22.92*(x(4*N+i-1)/1000).^6;
               nd_co2=-20.434+680.07*(x(4*N+i-1)/1000)-432.49*(x(4*N+i-1)/1000).^2+244.22*(x(4*N+i-1)/1000).^3-85.929*(x(4*N+i-1)/1000).^4+14.45*(x(4*N+i-1)/1000).^5-0.4564*(x(4*N+i-1)/1000).^6;
               nd_h2o=-6.7541+244.93*(x(4*N+i-1)/1000)+419.5*(x(4*N+i-1)/1000).^2-522.38*(x(4*N+i-1)/1000).^3+348.12*(x(4*N+i-1)/1000).^4-126.96*(x(4*N+i-1)/1000).^5+19.591*(x(4*N+i-1)/1000).^6;
               nd_co=-4.9137+793.65*(x(4*N+i-1)/1000)+875.9*(x(4*N+i-1)/1000).^2+883.75*(x(4*N+i-1)/1000).^3-572.14*(x(4*N+i-1)/1000).^4+208.42*(x(4*N+i-1)/1000).^5-32.298*(x(4*N+i-1)/1000).^6;
               nd_h2=15.553+299.78*(x(4*N+i-1)/1000)-244.34*(x(4*N+i-1)/1000).^2+249.41*(x(4*N+i-1)/1000).^3-167.51*(x(4*N+i-1)/1000).^4+62.966*(x(4*N+i-1)/1000).^5-9.9892*(x(4*N+i-1)/1000).^6;
       mol_ch4=x(8*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_h2=x(9*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_co=x(10*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_co2=x(11*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_h2o=x(12*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
      nd_fuel= (nd_co2*mol_co2*44^(0.5)+nd_h2o*mol_h2o*18^(0.5)+nd_ch4*mol_ch4*16^(0.5)+nd_co*mol_co*28^(0.5)+nd_h2*mol_h2*2^(0.5))*10^(-7)/(mol_co2*44^(0.5)+mol_h2o*18^(0.5)+mol_ch4*16^(0.5)+mol_co*28^(0.5)+mol_h2*2^(0.5));%
      cp_co2=4.3669+204.6*(x(4*N+i-1)/1000)-471.33*(x(4*N+i-1)/1000).^2+657.88*(x(4*N+i-1)/1000).^3-519.9*(x(4*N+i-1)/1000).^4+214.58*(x(4*N+i-1)/1000).^5-35.992*(x(4*N+i-1)/1000).^6;
    cp_h2o=37.737-41.205*(x(4*N+i-1)/1000)+146.01*(x(4*N+i-1)/1000).^2-217.08*(x(4*N+i-1)/1000).^3+181.54*(x(4*N+i-1)/1000).^4-79.409*(x(4*N+i-1)/1000).^5+14.105*(x(4*N+i-1)/1000).^6;
    cp_co=30.429-8.1781*(x(4*N+i-1)/1000)+5.2062*(x(4*N+i-1)/1000).^2+41.974*(x(4*N+i-1)/1000).^3-66.346*(x(4*N+i-1)/1000).^4+37.456*(x(4*N+i-1)/1000).^5-7.6538*(x(4*N+i-1)/1000).^6;
    cp_ch4=47.964-178.59*(x(4*N+i-1)/1000)+712.55*(x(4*N+i-1)/1000).^2-1068.7*(x(4*N+i-1)/1000).^3+856.93*(x(4*N+i-1)/1000).^4-358.75*(x(4*N+i-1)/1000).^5+61.321*(x(4*N+i-1)/1000).^6;
    cp_h2=21.157+56.036*(x(4*N+i-1)/1000)-150.55*(x(4*N+i-1)/1000).^2+199.29*(x(4*N+i-1)/1000).^3-136.15*(x(4*N+i-1)/1000).^4+46.903*(x(4*N+i-1)/1000).^5-6.4725*(x(4*N+i-1)/1000).^6;
   cp_mol=mol_ch4*cp_ch4+mol_h2*cp_h2+mol_co*cp_co+mol_co2*cp_co2+mol_h2o*cp_h2o;
    cpf=1000*cp_mol/(mol_ch4*16+ mol_h2*2+mol_co*28+mol_co2*44+mol_h2o*18);
    Mf=(16*mol_ch4+2*mol_h2+28*mol_co+44*mol_co2+18*mol_h2o)/1000;%fuel mol mass kg/mol
   
   KfPEN=4.25;
    C11=KfPEN/(rouf(i)*cpf*hf);

       C12=C11;
    nd_co2_ca=-20.434+680.07*(x(5*N+i-1)/1000)-432.49*(x(5*N+i-1)/1000).^2+244.22*(x(5*N+i-1)/1000).^3-85.929*(x(5*N+i-1)/1000).^4+14.45*(x(5*N+i-1)/1000).^5-0.4564*(x(5*N+i-1)/1000).^6;
    nd_o2=-1.6918+889.75*(x(5*N+i-1)/1000)-892.79*(x(5*N+i-1)/1000).^2+905.98*(x(5*N+i-1)/1000).^3-598.36*(x(5*N+i-1)/1000).^4+221.64*(x(5*N+i-1)/1000).^5-34.754*(x(5*N+i-1)/1000).^6;
    nd_n2=1.2719+771.45*(x(5*N+i-1)/1000)-809.2*(x(5*N+i-1)/1000).^2+832.47*(x(5*N+i-1)/1000).^3-553.93*(x(5*N+i-1)/1000).^4+206.15*(x(5*N+i-1)/1000).^5-32.43*(x(5*N+i-1)/1000).^6;
         mol_co2_ca=x(15*N+i-1)/(x(13*N+i-1)+x(14*N+i-1)+x(15*N+i-1));
    mol_o2=x(13*N+i-1)/(x(13*N+i-1)+x(14*N+i-1)+x(15*N+i-1));
    mol_n2=x(14*N+i-1)/(x(13*N+i-1)+x(14*N+i-1)+x(15*N+i-1));
       nd_oxid= (nd_co2_ca*mol_co2_ca*44^(0.5)+nd_o2*mol_o2*32^(0.5)+nd_n2*mol_n2*28^(0.5))*10^(-7)/(mol_co2_ca*44^(0.5)+mol_o2*32^(0.5)+mol_n2*28^(0.5));%

    cp_co2=4.3669+204.6*(x(5*N+i-1)/1000)-471.33*(x(5*N+i-1)/1000).^2+657.88*(x(5*N+i-1)/1000).^3-519.9*(x(5*N+i-1)/1000).^4+214.58*(x(5*N+i-1)/1000).^5-35.992*(x(5*N+i-1)/1000).^6;
    cp_o2=34.85-57.975*(x(5*N+i-1)/1000)+203.68*(x(5*N+i-1)/1000).^2-300.37*(x(5*N+i-1)/1000).^3+231.72*(x(5*N+i-1)/1000).^4-91.821*(x(5*N+i-1)/1000).^5+14.776*(x(5*N+i-1)/1000).^6;
    cp_n2=29.027+4.8987*(x(5*N+i-1)/1000)-38.04*(x(5*N+i-1)/1000).^2+105.17*(x(5*N+i-1)/1000).^3-113.56*(x(5*N+i-1)/1000).^4+55.554*(x(5*N+i-1)/1000).^5-10.35*(x(5*N+i-1)/1000).^6;
       cp_mol_ox=mol_o2*cp_o2+mol_n2*cp_n2+mol_co2_ca*cp_co2;
    cpa=1000*cp_mol_ox/(mol_co2_ca*44+ mol_o2*32+mol_n2*28);
    Ma=(44*mol_co2_ca+32*mol_o2+28*mol_n2)/1000;% oxidant mol mass
    ha=0.0008;%氧化剂流道的高度
   KaPEN=10.1;
    C21=KaPEN/(roua(i)*cpa*ha);
      C22=C21;

    lmdPEN=22;
    rouPEN=2000
    cpPEN=800;
    C31=lmdPEN/(rouPEN*cpPEN);
    hPEN=0.001;%pen 厚度
    C32=KfPEN/(rouPEN*cpPEN*hPEN);
       C33=KaPEN/(rouPEN*cpPEN*hPEN);
      dh1= (206e3 - 16379.71 + 8.314*(7.951*x(4*N+i-1) - 4.354*10^(-3)*x(4*N+i-1)^2 + 0.7213*10^(-6)*x(4*N+i-1)^3 - 0.097*10^5/x(4*N+i-1)));
    dh2= (-41.1*10^3 - 7657.295 + 8.314*(1.86*x(4*N+i-1) - 0.27*10^(-3)*x(4*N+i-1)^2 + 1.164*10^5/x(4*N+i-1)));
    dh3= (-241*10^3 - 4098.471 + 8.314*(-1.5985*x(6*N+i-1) + 0.3875*10^(-3)*x(6*N+i-1)^2 - 0.1515*10^5/x(6*N+i-1)));%
    Ca=2.04*10^(-3);
    C1=3.28*10^(-9);
    C2=3.39*10^(-6);
    Cir=1.12*10^(-2);
    detaHc1=132000;
    detaHc2=67100;
    detaHa=23700;
    detaHir=23000;
    vopt=0.7;%
    detaG=-242000+45.8*x(6*N+i-1);
    E=-detaG/(2*F);
    Ph2_an=x(2*N+i-1)*mol_h2*10^(-5);
    Po2_ca=x(3*N+i-1)*mol_o2*10^(-5);
    Pco2_ca=x(3*N+i-1)*mol_co2_ca*10^(-5);
    Ph2o_an=x(2*N+i-1)*mol_h2o*10^(-5);
    Pco2_an=x(2*N+i-1)*mol_co2*10^(-5);

    Nerst=R*x(6*N+i-1)*log((Ph2_an*Pco2_ca*Po2_ca^0.5)/(Ph2o_an*Pco2_an))/(2*F);
    %(Ph2_an*Pco2_ca*Po2_ca^0.5)/(Ph2o_an*Pco2_an)
    Ran=Ca*(Ph2_an)^(-0.5)*exp(detaHa/(R*x(6*N+i-1)));
    Rca=C1*(Po2_ca)^(-0.75)*(Pco2_ca)^(0.5)*exp(detaHc1/(R*x(6*N+i-1)))+C2*exp(detaHc2/(R*x(6*N+i-1)))*mol_co2_ca^(-1);
    Rir=Cir*exp(detaHir/(R*x(6*N+i-1)));% change the pressure unit from pa to atm
    Rtol=Ran+Rca+Rir;
    j=10000*(E-vopt-Nerst)/Rtol;%current density unit is A/m2
    k0=4274*10^5;%常数,unit is mol/s*m2*pa
    Ea=82000;%j/mol
    kwgsr=2.35;% water gas shift reaction
    Keq=exp(4276/x(4*N+i-1)-3.961);
    P_ch4=x(2*N+i-1)*mol_ch4;% ch4的分压力, pa
    P_co=x(2*N+i-1)*mol_co;%co分压力,pa
   
    rate1 = k0*P_ch4*exp(- Ea/(R*x(4*N+i-1)));             rate2 = kwgsr*P_co*(1-(mol_co2*mol_h2)/(mol_co*mol_h2o*Keq))/10^5;      
    rate3 = j/(2*F);
   
    C34=(1/(rouPEN*cpPEN*hPEN))*[-dh3*rate3*10^3-j*vopt];
   
       sigma=5.6704*10^(-8);   epsI=0.55
    epsPEN=0.55;%
    C35=(1/(rouPEN*cpPEN*hPEN))*(sigma/(1/epsI+1/epsPEN-1));

   
    lmdI=22; %
    rouI=8100;%    cpI=462;%    C41=lmdI/(rouI*cpI);

       hI=0.0008; %    KfI=KfPEN;
    C42=KfI/(rouI*cpI*hI);
      KaI=KaPEN;
    C43=KaI/(rouI*cpI*hI);
    C44=(1/(rouI*cpI*hI))*(sigma/(1/epsI+1/epsPEN-1));
   
    sys(i)=-Af*(x(2*N+i)-x(2*N+i-1))/h-2*f_w*nd_fuel*x(i)/(rouf(i)*dhf^2);
    sys(N+i)=-Af*(x(3*N+i)-x(3*N+i-1))/h-2*f_w*nd_oxid*x(N+i)/(roua(i)*dhf^2);
    sys(2*N+i)=R*x(4*N+i)*(-(x(i)-x(i-1))/(Af*h))/Mf;
    sys(3*N+i)=R*x(5*N+i)*(-(x(N+i)-x(N+i-1))/(Af*h))/Ma;
    sys(4*N+i)=(-x(i)*x(4*N+i))/(rouf(i)*h*Af)+x(i-1)*x(4*N+i-1)/(rouf(i)*h*Af)+C11*(x(6*N+i)-x(4*N+i))+C12*(x(7*N+i)-x(4*N+i))+C11*(-dh1*rate1-dh2*rate2)/KfPEN;
    sys(5*N+i)=(-x(N+i)*x(5*N+i))/(roua(i)*h*Af)+x(N+i-1)*x(5*N+i-1)/(roua(i)*h*Af)+C21*(x(6*N+i)-x(5*N+i))+C22*(x(7*N+i)-x(5*N+i));   
    sys(6*N+i)=C31*(x(6*N+i)-2*x(6*N+i-1)+u(7))/h/h-C32*(x(6*N+i)-x(4*N+i))-C33*(x(6*N+i)-x(5*N+i))+C35*((x(7*N+i))^4-(x(6*N+i))^4)+C34;
    sys(7*N+i)=C41*(x(7*N+i)-2*x(7*N+i-1)+u(8))/h/h-C42*(x(7*N+i)-x(4*N+i))-C43*(x(7*N+i)-x(5*N+i))+C44*((x(7*N+i))^4-(x(6*N+i))^4);
    sys(8*N+i)=(-x(i)*x(8*N+i)+x(i-1)*x(8*N+i-1))/(h*Af*rouf(i))-rate1/hf;
    sys(9*N+i)=(-x(i)*x(9*N+i)+x(i-1)*x(9*N+i-1))/(h*Af*rouf(i))+(3*rate1+rate2-rate3)/hf;
    sys(10*N+i)=(-x(i)*x(10*N+i)+x(i-1)*x(10*N+i-1))/(h*Af*rouf(i))-rate2/hf;
    sys(11*N+i)=(-x(i)*x(11*N+i)+x(i-1)*x(11*N+i-1))/(h*Af*rouf(i))+(rate2+rate3)/hf;
    sys(12*N+i)=(-x(i)*x(12*N+i)+x(i-1)*x(12*N+i-1))/(h*Af*rouf(i))-(rate1+rate2-rate3)/hf;
    sys(13*N+i)=(-x(N+i)*x(13*N+i)+x(N+i-1)*x(13*N+i-1))/(h*Af*roua(i))-rate3/(2*hf);
    sys(14*N+i)=(-x(N+i)*x(14*N+i)+x(N+i-1)*x(14*N+i-1))/(h*Af*roua(i));
    sys(15*N+i)=(-x(N+i)*x(15*N+i)+x(N+i-1)*x(15*N+i-1))/(h*Af*roua(i))-rate3/(hf);
   
            
       else
               roua(i)=x(13*N+i-1)*0.032+x(14*N+i-1)*0.028+x(15*N+i-1)*0.044;
               rouf(i)=x(8*N+i-1)*0.016+x(9*N+i-1)*0.002+x(10*N+i-1)*0.028+x(11*N+i-1)*0.044+x(12*N+i-1)*0.018;%                nd_ch4=-9.9989+529.37*(x(4*N+i-1)/1000)-543.82*(x(4*N+i-1)/1000).^2+548.11*(x(4*N+i-1)/1000).^3-367.06*(x(4*N+i-1)/1000).^4+140.48*(x(4*N+i-1)/1000).^5-22.92*(x(4*N+i-1)/1000).^6;
               nd_co2=-20.434+680.07*(x(4*N+i-1)/1000)-432.49*(x(4*N+i-1)/1000).^2+244.22*(x(4*N+i-1)/1000).^3-85.929*(x(4*N+i-1)/1000).^4+14.45*(x(4*N+i-1)/1000).^5-0.4564*(x(4*N+i-1)/1000).^6;
               nd_h2o=-6.7541+244.93*(x(4*N+i-1)/1000)+419.5*(x(4*N+i-1)/1000).^2-522.38*(x(4*N+i-1)/1000).^3+348.12*(x(4*N+i-1)/1000).^4-126.96*(x(4*N+i-1)/1000).^5+19.591*(x(4*N+i-1)/1000).^6;
               nd_co=-4.9137+793.65*(x(4*N+i-1)/1000)+875.9*(x(4*N+i-1)/1000).^2+883.75*(x(4*N+i-1)/1000).^3-572.14*(x(4*N+i-1)/1000).^4+208.42*(x(4*N+i-1)/1000).^5-32.298*(x(4*N+i-1)/1000).^6;
               nd_h2=15.553+299.78*(x(4*N+i-1)/1000)-244.34*(x(4*N+i-1)/1000).^2+249.41*(x(4*N+i-1)/1000).^3-167.51*(x(4*N+i-1)/1000).^4+62.966*(x(4*N+i-1)/1000).^5-9.9892*(x(4*N+i-1)/1000).^6;
      mol_ch4=x(8*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_h2=x(9*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_co=x(10*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_co2=x(11*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    mol_h2o=x(12*N+i-1)/(x(8*N+i-1)+x(9*N+i-1)+x(10*N+i-1)+x(11*N+i-1)+x(12*N+i-1));
    nd_fuel= (nd_co2*mol_co2*44^(0.5)+nd_h2o*mol_h2o*18^(0.5)+nd_ch4*mol_ch4*16^(0.5)+nd_co*mol_co*28^(0.5)+nd_h2*mol_h2*2^(0.5))*10^(-7)/(mol_co2*44^(0.5)+mol_h2o*18^(0.5)+mol_ch4*16^(0.5)+mol_co*28^(0.5)+mol_h2*2^(0.5));%
   
    cp_co2=4.3669+204.6*(x(4*N+i-1)/1000)-471.33*(x(4*N+i-1)/1000).^2+657.88*(x(4*N+i-1)/1000).^3-519.9*(x(4*N+i-1)/1000).^4+214.58*(x(4*N+i-1)/1000).^5-35.992*(x(4*N+i-1)/1000).^6;
    cp_h2o=37.737-41.205*(x(4*N+i-1)/1000)+146.01*(x(4*N+i-1)/1000).^2-217.08*(x(4*N+i-1)/1000).^3+181.54*(x(4*N+i-1)/1000).^4-79.409*(x(4*N+i-1)/1000).^5+14.105*(x(4*N+i-1)/1000).^6;
    cp_co=30.429-8.1781*(x(4*N+i-1)/1000)+5.2062*(x(4*N+i-1)/1000).^2+41.974*(x(4*N+i-1)/1000).^3-66.346*(x(4*N+i-1)/1000).^4+37.456*(x(4*N+i-1)/1000).^5-7.6538*(x(4*N+i-1)/1000).^6;
    cp_ch4=47.964-178.59*(x(4*N+i-1)/1000)+712.55*(x(4*N+i-1)/1000).^2-1068.7*(x(4*N+i-1)/1000).^3+856.93*(x(4*N+i-1)/1000).^4-358.75*(x(4*N+i-1)/1000).^5+61.321*(x(4*N+i-1)/1000).^6;
    cp_h2=21.157+56.036*(x(4*N+i-1)/1000)-150.55*(x(4*N+i-1)/1000).^2+199.29*(x(4*N+i-1)/1000).^3-136.15*(x(4*N+i-1)/1000).^4+46.903*(x(4*N+i-1)/1000).^5-6.4725*(x(4*N+i-1)/1000).^6;
   
    cp_mol=mol_ch4*cp_ch4+mol_h2*cp_h2+mol_co*cp_co+mol_co2*cp_co2+mol_h2o*cp_h2o;
    cpf=1000*cp_mol/(mol_ch4*16+ mol_h2*2+mol_co*28+mol_co2*44+mol_h2o*18);
    Mf=(16*mol_ch4+2*mol_h2+28*mol_co+44*mol_co2+18*mol_h2o)/1000;%KfPEN=4.25;
      C11=KfPEN/(rouf(i)*cpf*hf);
    C12=C11;
      KaPEN=10.1;
    C21=KaPEN/(roua(i)*cpa*ha);
      C22=C21;

   lmdPEN=22;       rouPEN=2000      cpPEN=800;       C31=lmdPEN/(rouPEN*cpPEN);

            hPEN=0.001      C32=KfPEN/(rouPEN*cpPEN*hPEN);
       C33=KaPEN/(rouPEN*cpPEN*hPEN);
               dh1= (206*10^3 - 16379.71 + 8.314*(7.951*x(4*N+i-1) - 4.354*10^(-3)*x(4*N+i-1)^2 + 0.7213*10^(-6)*x(4*N+i-1)^3 - 0.097*10^5/x(4*N+i-1)));
      dh2= (-41.1*10^3 - 7657.295 + 8.314*(1.86*x(4*N+i-1) - 0.27*10^(-3)*x(4*N+i-1)^2 + 1.164*10^5/x(4*N+i-1)));
      dh3= (-241*10^3 - 4098.471 + 8.314*(-1.5985*x(6*N+i-1) + 0.3875*10^(-3)*x(6*N+i-1)^2 - 0.1515*10^5/x(6*N+i-1
            Ca=2.04*10^(-3);
      C1=3.28*10^(-9);
      C2=3.39*10^(-6);
      Cir=1.12*10^(-2);
      detaHc1=132000;
      detaHc2=67100;
      detaHa=23700;
      detaHir=23000;
      vopt=0.7
          detaG=-242000+45.8*x(6*N+i-1);
      E=-detaG/(2*F);
      Ph2_an=x(2*N+i-1)*mol_h2*10^(-5);%
      Po2_ca=x(3*N+i-1)*mol_o2*10^(-5);
      Pco2_ca=x(3*N+i-1)*mol_co2_ca*10^(-5);
      Ph2o_an=x(2*N+i-1)*mol_h2o*10^(-5);
      Pco2_an=x(2*N+i-1)*mol_co2*10^(-5);
      Nerst=R*x(4*N+i-1)*log((Ph2_an*Pco2_ca*Po2_ca^0.5)/(Ph2o_an*Pco2_an))/(2*F);
      (Ph2_an*Pco2_ca*Po2_ca^0.5)/(Ph2o_an*Pco2_an)

      Ran=Ca*(Ph2_an)^(-0.5)*exp(detaHa/(R*x(6*N+i-1)));
      Rca=C1*(Po2_ca)^(-0.75)*(Pco2_ca)^(0.5)*exp(detaHc1/(R*x(6*N+i-1)))+C2*exp(detaHc2/(R*x(6*N+i-1)))*mol_co2_ca^(-1);
      Rir=Cir*exp(detaHir/(R*x(6*N+i-1)));% change the pressure unit from pa to atm
      Rtol=Ran+Rca+Rir;
      j=10000*(E-vopt-Nerst)/Rtol;%current density unit is A/m2
      k0=4274*10^5
      Ea=82000      kwgsr=2.35;%
      Keq=exp(4276/x(4*N+i-1)-3.961);
      P_ch4=x(2*N+i-1)*mol_ch4
      P_co=x(2*N+i-1)*mol_co   
      rate1 = k0*P_ch4*exp(- Ea/(R*x(4*N+i-1)));               rate2 = kwgsr*P_co*(1-(mol_co2*mol_h2)/(mol_co*mol_h2o*Keq))/10^5;      
      rate3 = j/(2*F);
   
      C34=(1/(rouPEN*cpPEN*hPEN))*[-dh3*rate3-j*vopt];
                sigma=5.6704*10^(-8); %      epsI=0.55;%
      epsPEN=0.55;%      C35=(1/(rouPEN*cpPEN*hPEN))*(sigma/(1/epsI+1/epsPEN-1));
                     lmdI=22;      rouI=8100       cpI=462       C41=lmdI/(rouI*cpI);
         hI=0.0008;
       KfI=KfPEN;
       C42=KfI/(rouI*cpI*hI);
            KaI=KaPEN;
      C43=KaI/(rouI*cpI*hI);
      C44=(1/(rouI*cpI*hI))*(sigma/(1/epsI+1/epsPEN-1));
             sys(i)=-Af*(x(2*N+i)-x(2*N+i-1))/h-2*f_w*nd_fuel*x(i)/(rouf(i)*dhf^2);
         sys(N+i)=-Af*(x(3*N+i)-x(3*N+i-1))/h-2*f_w*nd_oxid*x(N+i)/(roua(i)*dhf^2);
         sys(2*N+i)=R*x(4*N+i)*(-(x(i)-x(i-1))/(Af*h))/Mf;
         sys(3*N+i)=R*x(5*N+i)*(-(x(N+i)-x(N+i-1))/(Af*h))/Ma;
         sys(4*N+i)=(-x(i)*x(4*N+i))/(rouf(i)*h*Af)+x(i-1)*x(4*N+i-1)/(rouf(i)*h*Af)+C11*(x(6*N+i)-x(4*N+i))+C12*(x(7*N+i)-x(4*N+i))+C11*(-dh1*rate1-dh2*rate2)/KfPEN;
         sys(5*N+i)=(-x(N+i)*x(5*N+i))/(roua(i)*h*Af)+x(N+i-1)*x(5*N+i-1)/(roua(i)*h*Af)+C21*(x(6*N+i)-x(5*N+i))+C22*(x(7*N+i)-x(5*N+i));   
         sys(6*N+i)=C31*(x(6*N+i)-2*x(6*N+i-1)+x(6*N+i-2))/h/h-C32*(x(6*N+i)-x(4*N+i))-C33*(x(6*N+i)-x(5*N+i))+C35*((x(7*N+i))^4-(x(6*N+i))^4)+C34;
         sys(7*N+i)=C41*(x(7*N+i)-2*x(7*N+i-1)+x(7*N+i-2))/h/h-C42*(x(7*N+i)-x(4*N+i))-C43*(x(7*N+i)-x(5*N+i))+C44*((x(7*N+i))^4-(x(6*N+i))^4);
         sys(8*N+i)=(-x(i)*x(8*N+i)+x(i-1)*x(8*N+i-1))/(h*Af*rouf(i))-rate1/hf;
         sys(9*N+i)=(-x(i)*x(9*N+i)+x(i-1)*x(9*N+i-1))/(h*Af*rouf(i))+(3*rate1+rate2-rate3)/hf;
         sys(10*N+i)=(-x(i)*x(10*N+i)+x(i-1)*x(10*N+i-1))/(h*Af*rouf(i))-rate2/hf;
         sys(11*N+i)=(-x(i)*x(11*N+i)+x(i-1)*x(11*N+i-1))/(h*Af*rouf(i))+(rate2+rate3)/hf;
         sys(12*N+i)=(-x(i)*x(12*N+i)+x(i-1)*x(12*N+i-1))/(h*Af*rouf(i))-(rate1+rate2-rate3)/hf;
         sys(13*N+i)=(-x(N+i)*x(13*N+i)+x(N+i-1)*x(13*N+i-1))/(h*Af*roua(i))-rate3/(2*hf);
         sys(14*N+i)=(-x(N+i)*x(14*N+i)+x(N+i-1)*x(14*N+i-1))/(h*Af*roua(i));
         sys(15*N+i)=(-x(N+i)*x(15*N+i)+x(N+i-1)*x(15*N+i-1))/(h*Af*roua(i))-rate3/(hf);
   
            end
   end
end

chenrrhappy 发表于 2010-12-7 10:49

这个太专业了啊!
页: [1]
查看完整版本: 使用s函数时提示call must be a real vector