[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [TRNSYS-users] Compaq visual fortran 6.1A



Michaël Kummert a écrit :

David,

I'm trying to change/develop user components and everything (CVF configurations, building of the different Dlls with old TRNSYS user types etc...) was ok until I decide to insert "use TRNSYSconstants" in one of my subroutine, compiler returning the following message:

T:\TypesUtil\Type242\Type242.f90(89) : Error: The module file cannot be read. Its format requires a more recent F90 compiler. [TRNSYSCONSTANTS]

Should I necessarly update my CVF to 6.6 or is there something i can do wrong ?


Module files (.mod) are compiler-dependent so you cannot mix different compiler versions. Theoretically, you could get rid of that error by recompiling the main TRNSYS DLL (TRNDll.dll) with your compiler. However, in your case you would have a different problem, which is that CVF versions prior to 6.6B do not fully support the instructions to build a multi-DLL project that are used in the TRNDll source code.

So in short, yes, you do have to upgrade to CVF 6.6B in order to be able to use the module files.

A more general note on adding user Types in external DLL's:
You can create Types in any programming language with a compiler that is able to create Windows DLL's. The advantage of using CVF6.6b (or IVF) is that you are able to directly "use" the data modules, which means you can use kernel constants and functions without having to re-declare them. If you are using another compiler (in Fortran or not), you are still able to create a user Type that uses the access functions, but you have to declare them correctly (see e.g the Trnsys.h file for C/C++ Types). So, again in theory, you should be able to create an external DLL with CVF 6.1 if you do not use the modules but rather access the kernel variables through access functions. This assumes CVF 6.1 is able to create working Windows DLL's, which I don't think is true. Please let us know if you succeed in doing so.



I hope this helps,

Michaël Kummert


When I tried to recompile the main TRNDll, I get the following error message with each type:
C:\Program Files\Trnsys16\SourceCode\Types\Type109.f90
f90: Error: Unrecognized keyword "arg_temp_created" for option "-check"
C:\Program Files\Trnsys16\SourceCode\Kernel\View.for
f90: Error: Unrecognized keyword "arg_temp_created" for option "-check"
C:\Program Files\Trnsys16\SourceCode\Kernel\TrnsysConstants.f90
f90: Error: Unrecognized keyword "arg_temp_created" for option "-check"
etc... for all types : it sounds like if CVF 6.1 is not able to re- compile/build the TRNDll, isn't it? Is there any option I should(n't) activate?


Moreover it's possible to create multiDll project with CVF 6.1A (See the screenshot attached file) and until I use the "use TRNSYSconstants" there wasn't pb and I was able to build the "CLIPSOLDll.dll". Since I have to adapt all of my previous user types to new TRNSYS 16 programming, I have not yet attempted to run simulation that uses these types. So I can't say categorically that it works well about the multiDll structure.

Thanks

--
David Chèze
--
Développement produit
CLIPSOL - www.clipsol.com
PAE Les Combaruches
73100 Aix-les-Bains - France
tel:0479349818

JPEG image