시작 값이 없습니다.
Oct 23 2020
이것은 후속 질문 입니다. 구조적으로 특이점 오류를 해결 한 후. 그것은 나에게 새로운 오류를 던진다.
Hochdruckreiniger2 : Iteration variable "der(Hochdrucktank.V)" is missing start value!
Iteration variable "der(Hochdrucktank.medium.h)" is missing start value
Iteration variable "der(Niederdrucktank.V)" is missing start value!
Iteration variable "der(Niederdrucktank.medium.h)" is missing start value!
Iteration variable "der(Swept1.medium.p)" is missing start value!
초기화에서 시작 값을 제공하고 하위 섹션을 초기화했지만이 오류가 발생합니다. 이 문제를 해결하는 방법을 제안 해 주시겠습니까?
model Hochdruckreiniger2
//Declaration(s)
Real V_max = 0.000003;
Real V_tod = 0.000002;
Real pi = 3.14;
Real N = 2800;
Real T_per;
Real f;
Real opening_NP;
Real opening_HP;
//Component(s)
Modelica.Fluid.Machines.SweptVolume Swept1 (
pistonCrossArea = 0.0001131,
clearance = 0.000002,
portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
0.1),Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
0.1)},
redeclare package Medium = Modelica.Media.Water.StandardWater,
nPorts = 2,
use_portsData = true,
p_start = 100,
use_T_start = true,
T_start = 293.15,
V(start = 10),
U(start = 20),
m(start = 10));
inner Modelica.Fluid.System system;
Modelica.Fluid.Vessels.OpenTank Niederdrucktank (
redeclare package Medium = Modelica.Media.Water.StandardWater,
nPorts = 1,
height = 40.84,
crossArea = 10,
portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
0.1)},
V(start = 10));
Modelica.Fluid.Vessels.OpenTank Hochdrucktank (
redeclare package Medium = Modelica.Media.Water.StandardWater,
nPorts = 1,
height = 4997,
crossArea = 10,
portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
0.1)},
V(start = 100));
Modelica.Mechanics.Translational.Sources.Position Posit1 (exact = true);
Modelica.Blocks.Sources.Sine Sine1 (freqHz = 46.72, amplitude = 0.0000005);
Modelica.Fluid.Valves.ValveIncompressible Hochdruckventile (
dp_nominal = 66.6175,
m_flow_nominal = 0.04873,
rho_nominal = 1019.921,
opening = opening_HP,
redeclare package Medium = Modelica.Media.Water.StandardWater);
Modelica.Fluid.Valves.ValveIncompressible Niederdruckventile (
dp_nominal = 65.21,
m_flow_nominal = 0.04873,
rho_nominal = 998.388,
opening = opening_NP,
redeclare package Medium = Modelica.Media.Water.StandardWater);
equation
T_per=pi/(180*3600*N/60);//Radian
f=((V_max-V_tod)/2)*sin((2*pi*time*T_per)+(V_tod+(V_max-V_tod)/2));
if der(f)>=0 then
opening_NP=1;
opening_HP=0;
else
opening_NP=0;
opening_HP=1;
end if;
//Connection(s)
connect(Sine1.y, Posit1.s_ref);
connect(Posit1.flange, Swept1.flange);
connect(Hochdrucktank.ports[1], Hochdruckventile.port_a);
connect(Hochdruckventile.port_b, Swept1.ports[2]);
connect(Niederdrucktank.ports[1], Niederdruckventile.port_a);
connect(Niederdruckventile.port_b, Swept1.ports[1]);
end Hochdruckreiniger2;
답변
2 HansOlsson Oct 23 2020 at 13:07
도함수에 대한 추측 값을 도입하려면 Modelica에서 다음과 같은 작업을 수행해야합니다.
Real dummyStart(start=...);
equation
dummyStart=der(Hochdrucktank.V);
또는 가능 :
Real dummyStart(start=...)=der(Hochdrucktank.V);
어떤 경우에는 그러한 변수가 이미 존재하므로 추가 변수가 필요하지 않으며 단지 찾는 문제 일뿐입니다.