只有几个问题,我希望有人会抽空回答:)。在模式中使用偏微分方程耦合系统
如果我们有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;
这里有更多的问题:
- 这个代码不OpenModelica 1.8.1工作,也不要在工作Dymola 2013demo。我们怎样才能有变量c的连续函数,而不是函数数组?
- 我们可以将数组cp的值放在combiTable中吗?如何?
- 如果改为“算法”停留“方程”代码不能成功检查。为什么?在OpenModelica中,错误是:无法展平模型:S。
- 有没有简化的方法来使用一组耦合的方程(PDE)?我知道Modelica中的PDE库,但我认为它们很复杂。我想编写一个解决PDE的函数,并在“主模型”中调用这些函数,以便函数的输出是“c”的连续函数。我不知道用函数的数组做什么。
- 如果我们能像Matlab一样“说话”,您能否告诉我如何理解Modelica语言?例如:自变量r的值,我们可以在Matlab中specife,如r = 0:TimeStep:Rp ...如何在Modelica中做同样的事情?请解释一下“方程”部分是如何工作的,是否与Matlab有相似之处,并且是否有必要采用财务方法? 干杯:)
这是可悲的多少困扰我的是StackOverflow上不支持MathJax像MathExchange。 – kleineg