OpenModelica解决PDE初始化错误

OpenModelica解决PDE初始化错误,modelica,pde,openmodelica,Modelica,Pde,Openmodelica,我试图用OpenModelica数值求解一个非常简单的PDE du/dx=du/dt,边界条件为u(0,t)=t^2和u_x(0,t)=0。我已经编写了以下代码: model pdetest_1 parameter Real L=1; parameter Integer N=100; parameter Real dx=L/(N-1); parameter Real[N] x=array(i*dx for i in 0:N-1); Real u[N],

我试图用OpenModelica数值求解一个非常简单的PDE du/dx=du/dt,边界条件为u(0,t)=t^2和u_x(0,t)=0。我已经编写了以下代码:

model pdetest_1

    parameter Real L=1;
    parameter Integer N=100;
    parameter Real dx=L/(N-1);
    parameter Real[N] x=array(i*dx for i in 0:N-1);

    Real u[N],ux[N];

initial equation

    for i in 1:N loop
      u[i]=0;
    end for;

equation
    u[1]=(time)^2;
    ux[1]=0;

    for i in 2:N loop
      u[i]=u[i-1]+dx*ux[i-1];
      der(u[i])=ux[i];
    end for;

end pdetest_1;
它会编译,但不会完成模拟退出,错误如下:

Blocstdout | OMEditInfo |C:/Users/../AppData/Local/Temp/OpenModelica/OMEdit/pdetest_1.exe-port=50450-logFormat=xmltcp-override=startTime=0,stopTime=1,stepSize=0.002,公差=1e-6,解算器=dassl,outputFormat=mat,变量过滤器=.*-r=pdetest_1_res.mat-jacobian=colorednumeric-w-lv=LOG_STATS

kquote LOG_INIT | error |由于以下等式,初始化问题不一致:0=0.000204061=u[4]

stdout | warning |初始化错误。存储结果并退出。
有关更多信息,请使用-lv=LOG_INIT-w

stdout | error |模拟进程失败。已退出,代码为-1


如果您能帮助我了解问题所在以及如何解决问题,我将不胜感激。

好的,首先,看到Modelica社区对这个问题如此麻木,我感到非常难过。在SO或OpenModelica论坛中有十几个与PDE相关的问题,没有多少能给出正确的答案。我决定收集我在互联网上能找到的所有相关资料,这样至少其他人就不必四处寻找一个有用的例子

但是关于上面的代码。代码几乎没有问题,问题在于问题的物理性

工作守则是:

model pdetest_1
  parameter Real L = 1;
  parameter Integer N = 100;
  parameter Real dx = L / (N - 1);
  parameter Real c = 1;
  Real u[N], ux[N];
initial equation
  for i in 1:N loop
    u[i] = 0;
  end for;
equation
  if c>0 then
    u[N] = time ^ 2;
    ux[N] = 0;
    for i in 1:N-1 loop
      u[i] = u[i + 1] - dx * ux[i];
      der(u[i]) = c*ux[i];
    end for;
  else
    u[1] = time ^ 2;
    ux[1] = 0;
    for i in 2:N loop
      u[i] = u[i - 1] + dx * ux[i];
      der(u[i]) = c*ux[i];
    end for;
  end if;
end pdetest_1;
我用中的代码解决了这个问题。我还提到了中的代码