Ah, this makes the g++ complains comprehensible. Mine looks like that: #ifndef oscillator__H #define oscillator__H #include "modelica.h" #include <stdio.h> #include <stdlib.h> #include <errno.h>
#if defined(_MSC_VER)
#define DLLExport __declspec( dllexport )
#else
#define DLLExport /* nothing */
#endif
#include "simulation_runtime.h"
extern "C" {
}
#endif
Any ideas?
Am Dienstag, den 04.01.2011, 15:54 +0100 schrieb Martin Sjölund:
> Yes, I have it. It's part of oscillator_functions.h (attached; it should
> be included by oscillator_functions.cpp).
>
> --
> Martin Sjölund
>
> On 2011-01-04 15:24, Christoph Höger wrote:
> > does your omc create C++ code containing "Modelica_Math_sin_rettype"? If
> > so, where is it defined?
> >
> > Am Montag, den 03.01.2011, 19:06 +0100 schrieb Martin Sjölund:
> >> Yes, there are special rules in the flattening that handles certain
> >> external "C" functions in the standard library because they need to be
> >> evaluated quickly (launching gcc to compile and load a dll just to
> >> compute Modelica.Math.sin() is silly).
> >>
> >> However, these all work for me (they are just declared external "C", so
> >> nothing special should be needed to make them run):
> >> $ omc a.mos
> >> true
> >> true
> >> record SimulationResult
> >> resultFile = "oscillator_res.plt",
> >> simulationOptions = "startTime = 0.0, stopTime = 1.0,
> >> numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl',
> >> fileNamePrefix = 'oscillator', storeInTemp = false, noClean = false,
> >> options = '', outputFormat = 'plt'",
> >> messages = "",
> >> timeFrontend = 0.082646233,
> >> timeBackend = 0.004297787,
> >> timeSimCode = 0.001765213,
> >> timeTemplates = 0.003413401,
> >> timeCompile = 0.811047671,
> >> timeSimulation = 0.020562325,
> >> timeTotal = 0.923819948
> >> end SimulationResult;
> >>
> >> --
> >> Martin Sjölund
> >>
> >> On 2011-01-03 15:51, Christoph Höger wrote:
> >>> -----BEGIN PGP SIGNED MESSAGE-----
> >>> Hash: SHA1
> >>>
> >>> addendum: The following model
> >>>
> >>> model mathtest
> >>> parameter Real x = Modelica.Math.sin(1.0);
> >>> Real y;
> >>> equation
> >>> y = Modelica.Math.cos(time) + x;
> >>> end mathtest;
> >>>
> >>> gives the following omc output:
> >>>
> >>> class mathtest
> >>> parameter Real x = 0.841470984807897;
> >>> Real y;
> >>> equation
> >>> y = Modelica.Math.cos(time) + x;
> >>> end mathtest;
> >>>
> >>> So the compiler was able to invoke sin(), even if the runtime system
> >>> does not know it?
> >>>
> >>> Am 03.01.2011 15:34, schrieb Christoph Höger:
> >>>> Thanks for the fast fix. The lookup problem is indeed solved now.
> >>>>
> >>>> Unfortunately I get a C++ error now:
> >>>>
> >>>> [choe...@eurybates oscillator]$ LC_ALL=C omc oscillator.mos
> >>>> true
> >>>> true
> >>>> record SimulationResult
> >>>> resultFile = "",
> >>>> simulationOptions = "startTime = 0.0, stopTime = 10.0,
> >>>> numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl',
> >>>> fileNamePrefix = 'oscillator', storeInTemp = false, noClean = false,
> >>>> options = '', outputFormat = 'plt'",
> >>>> messages = "Simulation failed for model: oscillator
> >>>> Error: Error building simulator. Buildlog: g++ -I. -o oscillator
> >>>> oscillator.cpp oscillator_functions.cpp -lsim -linteractive
> >>>> -I"/opt/openmodelica//include/omc" -march=native -mfpmath=sse
> >>>> -lsendData -lQtNetwork -lQtCore -lQtGui -lpthread
> >>>> -L"/opt/openmodelica//lib/omc" -lc_runtime -lf2c oscillator_records.c
> >>>> oscillator.cpp: In function 'int function_updateDependents()':
> >>>> oscillator.cpp:918:3: error: 'Modelica_Math_sin_rettype' was not
> >>>> declared in this scope
> >>>>
> >>>> Since Modelica.Math.sin is a stdlib function, is there something I need
> >>>> to do, to get it working?
> >>>>
> >>>> Am 02.01.2011 16:48, schrieb Martin Sjölund:
> >>>>> This seems to be an issue with evaluation of parameters without
> >>>>> eq-bindings (it should look at start=binding and give a warning). It's
> >>>>> easy to fix it in the model, but thanks for reporting this; I'll look
> >>>>> into the compiler and see if I can make this work quickly.
> >>>>
> >>>>> sinevoltage1(freqHz=50,V=240); // works
> >>>>
> >>>>> --
> >>>>> Martin Sjölund
> >>>>
> >>>>> On 2010-12-29 13:20, Christoph Höger wrote:
> >>>>>> Hi all,
> >>>>>>
> >>>>>> the following code
> >>>>>>
> >>>>>> model oscillator
> >>>>>> Modelica.Electrical.Analog.Basic.Capacitor capacitor1;
> >>>>>> Modelica.Electrical.Analog.Sources.SineVoltage sinevoltage1;
> >>>>>> Modelica.Electrical.Analog.Basic.Inductor inductor1;
> >>>>>> Modelica.Electrical.Analog.Basic.Ground ground1;
> >>>>>>
> >>>>>> equation
> >>>>>> connect(inductor1.n,ground1.p);
> >>>>>> connect(capacitor1.p,inductor1.p);
> >>>>>> connect(sinevoltage1.p,capacitor1.p);
> >>>>>> connect(capacitor1.n,sinevoltage1.n);
> >>>>>> connect(capacitor1.n,inductor1.n);
> >>>>>> end oscillator;
> >>>>>>
> >>>>>> throws a lookup error (sinevoltage1.freqHz, sineVoltage1.V) with omc
> >>>>>> (current trunk) although the flattened output contains the lines:
> >>>>>>
> >>>>>> parameter Real sinevoltage1.V(quantity = "ElectricPotential",
> >>>>>> unit =
> >>>>>> "V", start = 1.0) "Amplitude of sine wave";
> >>>>>> parameter Real sinevoltage1.phase(quantity = "Angle", unit =
> >>>>>> "rad",
> >>>>>> displayUnit = "deg") = 0.0 "Phase of sine wave";
> >>>>>> parameter Real sinevoltage1.freqHz(quantity = "Frequency", unit =
> >>>>>> "Hz", start = 1.0) "Frequency of sine wave";
> >>>>>>
> >>>>>> Any ideas how to circumvent?
> >>>>>>
> >>>>>> best regards,
> >>>>>>
> >>>>>> Christoph
> >>>>
> >>>>
> >>>
> >>> - --
> >>> Christoph Höger
> >>>
> >>> Technische Universität Berlin
> >>> Fakultät IV - Elektrotechnik und Informatik
> >>> Übersetzerbau und Programmiersprachen
> >>>
> >>> Sekr. TEL12-2, Ernst-Reuter-Platz 7, 10587 Berlin
> >>>
> >>> Tel.: +49 (30) 314-24890
> >>> E-Mail: [email protected]
> >>> -----BEGIN PGP SIGNATURE-----
> >>> Version: GnuPG v1.4.11 (GNU/Linux)
> >>> Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
> >>>
> >>> iEYEARECAAYFAk0h4nkACgkQhMBO4cVSGS9ZhgCfUgaOST9SizEM9p3ZIXVqW837
> >>> YXMAn3iuBMrdQ7sYnHgaQ89goAQQ93uQ
> >>> =cXHV
> >>> -----END PGP SIGNATURE-----
> >>
> >
signature.asc
Description: This is a digitally signed message part
