Valor inicial ausente
Oct 23 2020
Esta é uma pergunta de acompanhamento . Depois resolvi erro estruturalmente de singularidade. Isso me lança um novo erro dizendo
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!
Embora eu forneça valores iniciais na inicialização e inicialize as subseções, recebo este erro. Você poderia me dar uma sugestão para resolver esse problema?
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;
Respostas
2 HansOlsson Oct 23 2020 at 13:07
Para introduzir um valor estimado para uma derivada, você deve fazer algo como o seguinte em Modelica:
Real dummyStart(start=...);
equation
dummyStart=der(Hochdrucktank.V);
ou possivelmente:
Real dummyStart(start=...)=der(Hochdrucktank.V);
Em alguns casos, uma variável extra não é necessária porque já existe tal variável, e é apenas uma questão de encontrá-la.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas