How to use IMSL Fortran 90

How to use IMSL Fortran 90

Hi

I use the Intel Visual Fortran Compiler version 11, whatever subversion. When calling the IMSL library I usally use old Fortran 77 syntax. How can I tell the compiler to use the new Fortran 90 syntax?

Example:

1) somewhere in my code I type:
INCLUDE 'link_fnl_static.h'
Fine.

2) in one of my subroutines I then have
use Numerical_Libraries
implicit none
[...]
call duvsta(ido,nrow,nvar,x0,ldx,ifrq,iwt,mopt,conprm,conprv,iprint,stat,ldstat,nrmiss)
! call duvsta(x0,stat)

Here, the first call is Fortran 77 syntax which works.
The second should be Fortran 90. It does not work. In particular, I do not know how to
1) tell the compiler to use F 90 instead of F 77
2) call the double-precision Fortran 90 solver - would this also be duvsta instead of uvsta or would this be d_uvsta?

Thanks much!

Best

Alex

publicaciones de 11 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

If you wish to use the "Fortran 90" interfaces, you should use the individual interface modules as described in the IMSL documentation for each routine.

DUVSTA is the double precision specific name for UVSTA. What you need is to add:

USE UVSTA_INT

to make the "Fortran 90" interface available. Here's an example from the IMSL manual.

USE UVSTA_INT
USE GDATA_INT
IMPLICIT NONE
INTEGER LDSTAT, LDX, NVAR
PARAMETER (LDSTAT=15, LDX=13, NVAR=5)
!
INTEGER IPRINT, NR, NROW, NV
REAL CONPRM, CONPRV, STAT(LDSTAT,NVAR), X(LDX,NVAR)
! Get data for example.
CALL GDATA (5, X, NR, NV)
! All data are input at once.
NROW = NR
! No unequal frequencies or weights
! are used.
! Get 95% confidence limits.
! Delete any row containing a missing
! value.
! Print results.
IPRINT = 1
CALL UVSTA (X, STAT, NROW=NROW, IPRINT=IPRINT)
END
Steve - Intel Developer Support

Hi Steve,

thanks, I added this:

use Numerical_Libraries
use uvsta_int
implicit none

[...]
! call duvsta(ido,nrow,nvar,x0,ldx,ifrq,iwt,mopt,conprm,conprv,iprint,stat,ldstat,nrmiss)
call duvsta(x0,stat)

but still get error messages because the compiler apparantly still address the F 77 routine b/c I get error messages such as

Error 3 error #6631: A non-optional actual argument must be present when invoking a procedure with an explicit interface. [NVAR] D:\work\Projects\OptEducFinance\Code\opteduc_v17\opteduc_v17\calibrskills.f90 90
Error 4 error #6631: A non-optional actual argument must be present when invoking a procedure with an explicit interface. [X] D:\work\Projects\OptEducFinance\Code\opteduc_v17\opteduc_v17\calibrskills.f90 90
Error 5 error #6631: A non-optional actual argument must be present when invoking a procedure with an explicit interface. [LDX] D:\work\Projects\OptEducFinance\Code\opteduc_v17\opteduc_v17\calibrskills.f90 90

and so on. So, to me at seems that some settings are still missing. Would be grateful if you can provide further help.

Thx!

Alex

Don't call duvsta .... call uvsta

-- Lorri

And don't USE NUMERICAL_LIBRARIES. Use only the _INT form of the modules.

Steve - Intel Developer Support

Hi Steve and Lorri,
sorry, made some stupid mistakes - fixed it now and it works. Thx for your help.
Alex
@ Steve: we have been in contact earlier regarding my inquiries about the Array Visualizer which does not work with the Intel VISUAL Fortran Compiler (at least not on 64bit systems and according to my experience not really on 32bit systems as well). Has this been fixed in the new versions? It was a really cool tool in the old Compaq compiler and I really wish that Intel managed to fix the apparent problems. Thx.

No fixes have been made yet regarding Array Visualizer. If you haven't already, please add a comment to the sticky thread in this forum requesting that AV be supported again.

Steve - Intel Developer Support

Dear Steve

I want to investigate Lagrangian particle trajectory in backward facing step flow but when I run its particle code that initial velocities of particles are  belonged to fluid velocity, the program gives this error

: forrtl: severe (157): Program Exception - access violation
that happens at the line: mainret = _tmain(__argc, _targv, _tenviron); in crt0.c tab.

my software is visual studio 2008 and  I know that I should use IMSL.I want to download it but I can't take it. Is it possible for you sending it for me.
I don't know how to install and use it.

system details
Library: Intel Fortran Compiler 10.1 Microsoft Visual Studio 2008 Windows 7 64-bit

Mary,

IMSL is an extra-cost option for Intel Visual Fortran - I can't provide it for you if you have not purchased a license. The error message you describe isn't very useful - I am sure the actual error happened elsewhere in the program. Please use the debugger to find out where the problem happened. I will comment that Intel Fortran 10.1 is quite old by now.

Steve - Intel Developer Support

Mary K.: There is an inconsistency in your reported problem. If you need IMSL, but do not have it, you are very unlikely to have successfully linked your program. Without that EXE, you would not have had anything to run, and there would have been no chance of producing an access violation that is attributable to your program. What gives?

My guess is that Mary encountered a problem in a program that she can build and run, and had been told about IMSL, so she thinks that using IMSL will solve her problem. That is almost certainly not the case.  Access violations are pretty easy to diagnose in the debugger, though some programmers might not recognize what caused the particular issue. The possibilities are endless....

Steve - Intel Developer Support

Deje un comentario

Por favor inicie sesión para agregar un comentario. ¿No es socio? Únase ya