只有幾個問題,我希望有人會抽空回答:)。在模式中使用偏微分方程耦合系統
如果我們有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