Dear Iris,
I am not an expert of C++ programming, but I think that, in order to
be consistent with Fortran declaration of these functions, you
should just declare the functions in the .h header file as :
extern "C" __declspec(dllimport) void _cdecl
TRNSYSFUNCTIONS_mp_SETNUMERICALDERIVATIVE(int, double);
extern "C" __declspec(dllimport) double _cdecl
TRNSYSFUNCTIONS_mp_GETNUMERICALSOLUTION(int);
and after
#define SetNumericalDerivative TRNSYSFUNCTIONS_mp_SETNUMERICALDERIVATIVE
#define GetNumericalSolution TRNSYSFUNCTIONS_mp_GETNUMERICALSOLUTION
Hope this helps!
Marcello Caciolo
Responsable Outils et Méthodes d'Analyse Energétique
Cellule Efficacité Energétique et Environnementale - Pôle Projets et
Réalisations
46 Boulevard de la Prairie au Duc
BP 40119 - 44201 Nantes Cedex 02
Tél.: +33 02 40 41 06 57
marcello.caciolo@cofelyaxima-gdfsuez.com
Pensez à l'environnement avant d'imprimer ce message
-----Message d'origine-----
De : TRNSYS-users
[mailto:trnsys-users-bounces@lists.onebuilding.org] De la part de
Iris Reichenbach
Envoyé : jeudi 28 août 2014 13:04
À : TRNSYS users mailing list at OneBuilding.org
Objet : Re: [TRNSYS-users] numerical solution in new type with C++
Dear David,
Thank you for your response, I tried to do this. However, I have no
idea what I am doing here.
As a first try I just added the lines
extern "C" __declspec(dllimport) double _cdecl
TRNSYSFUNCTIONS_mp_SETNUMERICALDERIVATIVE(void);
extern "C" __declspec(dllimport) double _cdecl
TRNSYSFUNCTIONS_mp_GETNUMERICALSOLUTION(void);
and
#define SetNumericalDerivative TRNSYSFUNCTIONS_mp_SETNUMERICALDERIVATIVE
#define GetNumericalSolution TRNSYSFUNCTIONS_mp_GETNUMERICALSOLUTION
to the TRNSYS.h file. However, this did not work. I also noticed
that there is a getNumericalSolver in the .h file, I'd think that
implies that there should be a numerical solver accessible for C++?
Also, I have the same problem for the function Tau_Alpha, I also
can't use it.
Could someone give me any more hints on how to either change the .h
file or use another way of finding the numerical solutions?
Thanks in advance,
Iris
Am 27.08.2014 17:46, schrieb David BRADLEY:
Iris,
I am no expert in writing C++ components (in fact I have never tried
it). My guess, however, is that you will need to modify the TRNSYS.h
file to make sure that the setNumericalDerivative() and
getNumericalSolution() functions are actually defined in there.
Kind regards,
David
On 8/27/2014 07:52, Iris Reichenbach wrote:
Dear fellow TRNSYS users,
I have the following problem. I'm trying to write a new type for
TRNSYS in C++, which involves the numerical solution of differential
equations. Usually, SetNumericalDerivative is used to set the
numerical derivatives and then GetNumericalSolution is used to obtain
the solution of the differential equation. However, when trying to
compile my code the compiler gives the following error: "error
C3861: "getNumericalSolution": Bezeichner wurde nicht gefunden."
That is, it can't find the identifier getNumericalSolution.
I also tried to instead use the older form and write dtdt[i] = x,
instead of SetNumericalDerivative(i,x), but here I got the error
message "error C2109: Index erfordert ein Array oder einen Zeigertyp"
(that is index requires an array or a pointer).
I use the project CPP-Mvs2003, which is included in
TRNSYS/Compilers, so it has access to TRNSYS.h and TRNDll.lib, and I
also successfully used my setup to generate another custom type,
albeit without any numerical solution.
So my question is: how can I solve numerical equations with a type
written in C++? How do I set the derivatives and how do I access the
solutions? Do GetNumericalSolution/SetNumericalDerivative not work
with C++ (I didn't find them in TRNSYS.h) and if so, what do I use
instead?
Thanks in advance for any pointers!
Cheers,
Iris
_______________________________________________
TRNSYS-users mailing list
TRNSYS-users@lists.onebuilding.org
http://lists.onebuilding.org/listinfo.cgi/trnsys-users-onebuilding.or
g