只有几个问题,我希望有人能抽出时间回答:)。
如果我们有COUPLED模型示例怎么办:n个独立变量的系统X和n非线性偏微分方程PDEf(X,PDEf(X))相对于取决于X的时间,PDEf(X)(偏微分方程取决于变量X)。你能提一些建议吗?这是一个例子:
假设c是输出或期望的变量。假设r是自变量。偏微分方程看起来像:
∂c/∂t= D * 1 / r +∂c/∂r+ 2(D *(∂^ 2 c)/(∂r^ 2)) d =常数 r = 0:0.1:Rp-Matlab语法,如何在Modelica中表示相同(我使用积分器,但没有工作)?
这是一个代码(不起作用):
model PDEtest
/* Boundary conditions
1. delta(c)/delta(r)=0 for r=0
2. delta(c)/delta(r)=-j*d for r=Rp*/
parameter Real Rp=88*1e-3; // length
parameter Real initialConc=1000;
parameter Real Dp=1e-14;
parameter Integer np=10; // num. of points
Real cp[np](start=fill(initialConc,np));
Modelica.Blocks.Continuous.Integrator r(k=1); // independent x1
Real j;
protected
parameter Real dr=Rp/np;
parameter Real ts= 0.01; // for using when loop (sample(0,ts) )
algorithm
j:=sin(time); // this should be indepedent variable like x2
r.u:=dr;
while r.y<=Rp loop
for i in 2:np-1 loop
der(cp[i]):=2*Dp/r.y+(cp[i]-cp[i-1])/dr+2*(Dp*(cp[i+1]-2*cp[i]+cp[i-1])/dr^2);
end for;
if r.y==Rp then
cp[np]:=-j*Dp;
end if;
cp[1]:=if time >=0 then initialConc else initialConc;
end while;
annotation (uses(Modelica(version="3.2")));
end PDEtest;
以下是更多问题:
答案 0 :(得分:5)
很难回答你的问题,因为你假设Modelica~Matlab,但事实并非如此。所以我不会评论你的代码,因为它确实是错的。让我给你一个burger equation的示例模型。也许你可以用它作为起点。
model burgereqn
Real u[N+2](start=u0);
parameter Real h = 1/(N+1);
parameter Integer N = 10;
parameter Real v = 234;
parameter Real Pi = 3.14159265358979;
parameter Real u0[N+2]={((sin(2*Pi*x[i]))+0.5*sin(Pi*x[i])) for i in 1:N+2};
parameter Real x[N+2] = { h*i for i in 1:N+2};
equation
der(u[1]) = 0;
for i in 2:N+1 loop
der(u[i]) = - ((u[i+1]^2-u[i-1]^2)/(4*(x[i+1]-x[i-1])))
+ (v/(x[i+1]-x[i-1])^2)*(u[i+1]-2*u[i]+u[i+1]);
end for;
der(u[N+2]) = 0;
end burgereqn;
您的进一步问题: