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

Reply via email to