Hi Wendelin,
For me it works perfectly fine.
Are you sure you loaded the Modelica
library via a script command first?
See Electric.mos
Cheers,
Adrian Pop/
Wendelin Hoffmann-Walbeck wrote:
Hi,
I am trying to simulate models using electrical parts of the Modelica-lib but
openmodelica fails to flatten the models.
Above a minimal example.
Any suggestions?
Is there a list which parts of the Modelica-lib should actually be supported by
openmodelica?
Cheers,
Wendelin
package minimal_electric_circuit
model elcectic_minimal
Modelica.Electrical.Analog.Basic.Ground Ground1;
Modelica.Electrical.Analog.Basic.Resistor R_Load(R=100);
Modelica.Electrical.Analog.Sources.SineVoltage V_Grid(
V=400,
freqHz=50);
equation
connect(Ground1.p, V_Grid.n);
connect(V_Grid.n, R_Load.n);
connect(R_Load.p, V_Grid.p);
end elcectic_minimal;
end minimal_electric_circuit;
loadModel(Modelica);
loadFile("Electric.mo");
instantiateModel(minimal_electric_circuit.elcectic_minimal);
simulate(minimal_electric_circuit.elcectic_minimal);
package minimal_electric_circuit
model elcectic_minimal
Modelica.Electrical.Analog.Basic.Ground Ground1;
Modelica.Electrical.Analog.Basic.Resistor R_Load(R=100);
Modelica.Electrical.Analog.Sources.SineVoltage V_Grid(
V=400,
freqHz=50);
equation
connect(Ground1.p, V_Grid.n);
connect(V_Grid.n, R_Load.n);
connect(R_Load.p, V_Grid.p);
end elcectic_minimal;
end minimal_electric_circuit;
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/package.mo
subdirs =Mechanics, Math, Electrical, C-Sources, Blocks
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Mechanics/package.mo
subdirs =
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Mechanics/Translational.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Mechanics/Rotational.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Math/package.mo
subdirs =
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/package.mo
subdirs =Analog
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/package.mo
subdirs =Examples
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/package.mo
subdirs =Utilities
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/Utilities/package.mo
subdirs =
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/Utilities/Transistor.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/Utilities/RealSwitch.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/Utilities/NonlinearResistor.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/Utilities/Nand.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/ShowVariableResistor.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/ShowSaturatingInductor.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/Rectifier.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/NandGate.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/HeatingRectifier.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/HeatingNPN_OrGate.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/HeatingMOSInverter.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/DifferenceAmplifier.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/ChuaCircuit.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/CharacteristicThyristors.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/CharacteristicIdealDiodes.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Examples/CauerFilter.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Sources.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Sensors.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Semiconductors.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Lines.mo
parsing
C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Interfaces.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Ideal.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Electrical/Analog/Basic.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/package.mo
subdirs =
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Types.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Sources.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Nonlinear.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Math.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Logical.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Interfaces.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Discrete.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Blocks/Continuous.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/StateGraph.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/SIunits.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Icons.mo
parsing C:\OpenModelica1.4.4\ModelicaLibrary/Modelica/Constants.mo
true
true
"fclass minimal_electric_circuit.elcectic_minimal
Real Ground1.p.v(quantity = "ElectricPotential", unit = "V") "Potential at the
pin";
Real Ground1.p.i(quantity = "ElectricCurrent", unit = "A") "Current flowing
into the pin";
Real R_Load.v(quantity = "ElectricPotential", unit = "V") "Voltage drop between
the two pins (= p.v - n.v)";
Real R_Load.i(quantity = "ElectricCurrent", unit = "A") "Current flowing from
pin p to pin n";
Real R_Load.p.v(quantity = "ElectricPotential", unit = "V") "Potential at the
pin";
Real R_Load.p.i(quantity = "ElectricCurrent", unit = "A") "Current flowing into
the pin";
Real R_Load.n.v(quantity = "ElectricPotential", unit = "V") "Potential at the
pin";
Real R_Load.n.i(quantity = "ElectricCurrent", unit = "A") "Current flowing into
the pin";
parameter Real R_Load.R(quantity = "Resistance", unit = "Ohm", min = 0.0) = 100
"Resistance";
Real V_Grid.v(quantity = "ElectricPotential", unit = "V") "Voltage drop between
the two pins (= p.v - n.v)";
Real V_Grid.i(quantity = "ElectricCurrent", unit = "A") "Current flowing from
pin p to pin n";
Real V_Grid.p.v(quantity = "ElectricPotential", unit = "V") "Potential at the
pin";
Real V_Grid.p.i(quantity = "ElectricCurrent", unit = "A") "Current flowing into
the pin";
Real V_Grid.n.v(quantity = "ElectricPotential", unit = "V") "Potential at the
pin";
Real V_Grid.n.i(quantity = "ElectricCurrent", unit = "A") "Current flowing into
the pin";
parameter Real V_Grid.offset(quantity = "ElectricPotential", unit = "V") = 0
"Voltage offset";
parameter Real V_Grid.startTime(quantity = "Time", unit = "s") = 0 "Time
offset";
Real V_Grid.signalSource.y "Connector of Real output signal";
parameter Real V_Grid.signalSource.amplitude = V_Grid.V "Amplitude of sine
wave";
parameter Real V_Grid.signalSource.freqHz(quantity = "Frequency", unit = "Hz")
= V_Grid.freqHz "Frequency of sine wave";
parameter Real V_Grid.signalSource.phase(quantity = "Angle", unit = "rad",
displayUnit = "deg") = V_Grid.phase "Phase of sine wave";
parameter Real V_Grid.signalSource.offset = V_Grid.offset "Offset of output
signal";
parameter Real V_Grid.signalSource.startTime(quantity = "Time", unit = "s") =
V_Grid.startTime "Output = offset for time < startTime";
protected constant Real V_Grid.signalSource.pi = 3.14159265358979;
parameter Real V_Grid.V(quantity = "ElectricPotential", unit = "V") = 400
"Amplitude of sine wave";
parameter Real V_Grid.phase(quantity = "Angle", unit = "rad", displayUnit =
"deg") = 0 "Phase of sine wave";
parameter Real V_Grid.freqHz(quantity = "Frequency", unit = "Hz") = 50
"Frequency of sine wave";
equation
Ground1.p.v = 0.0;
R_Load.R * R_Load.i = R_Load.v;
R_Load.v = R_Load.p.v - R_Load.n.v;
0.0 = R_Load.p.i + R_Load.n.i;
R_Load.i = R_Load.p.i;
V_Grid.signalSource.y = V_Grid.signalSource.offset + (if time <
V_Grid.signalSource.startTime then 0.0 else V_Grid.signalSource.amplitude *
Modelica.Math.sin(6.28318530717959 * V_Grid.signalSource.freqHz * (time -
V_Grid.signalSource.startTime) + V_Grid.signalSource.phase));
V_Grid.v = V_Grid.signalSource.y;
V_Grid.v = V_Grid.p.v - V_Grid.n.v;
0.0 = V_Grid.p.i + V_Grid.n.i;
V_Grid.i = V_Grid.p.i;
R_Load.p.i + V_Grid.p.i = 0.0;
R_Load.p.v = V_Grid.p.v;
Ground1.p.i + V_Grid.n.i + R_Load.n.i = 0.0;
Ground1.p.v = V_Grid.n.v;
V_Grid.n.v = R_Load.n.v;
end minimal_electric_circuit.elcectic_minimal;
"
record
resultFile = "minimal_electric_circuit.elcectic_minimal_res.plt"
end record