Author Topic: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler  (Read 24124 times)

truparel

  • Jr. Member
  • **
  • Posts: 12
FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« on: June 06, 2013, 09:16:25 AM »
Hello,

I am trying to compile FEAP 8.3 (debug configuration) with Intel Fortran Compiler and Visual Studio 2008.
During my build I get the following error message:

Error   1    error #8284: If the actual argument is scalar, the dummy argument shall be scalar unless the actual argument is of type character or is an element of an array that is not assumed shape, pointer, or polymorphic.   [PDF]   E:\...\ver83\program\subsp.f   100   

subsp.f
line 100  -  call scalev(v(1,i),k,1,1,neq,.false.)

subroutine scalev(v,pdf,ndm,ndf,numnp,vflag)
     integer   pdf(*)

Any suggestions on how to fix this?

Thanks!
« Last Edit: June 06, 2013, 09:23:37 AM by truparel »

FEAP_Admin

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 993
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #1 on: June 06, 2013, 03:25:19 PM »
In subsp.f, change the declaration of pdf to integer pdf(1).  This will fix the problem.
There are many 'errors' of this type in the code.  Newer compilers have become more
particular with respect to these types of common fortran programming conventions.

We have fixed all of these issues and they will come out in the next release of the code.

truparel

  • Jr. Member
  • **
  • Posts: 12
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #2 on: June 07, 2013, 10:25:58 AM »
Thanks!
changing the declaration to pdf(*) -> pdf(1) (* inside the called subroutine - scalev) fixed this error.

although I have some more similar errors.

error #6634: The shape matching rules of actual arguments and dummy arguments have been violated.   [DETF]   E:\...\ver83\elements\material\finite\modltm.f   145   

-- modltm.f :

real*8    detf(*)
:
call stnhtm(d,detf,f,bb, gradt, ta, sig,aa, flux,kt,
     &                xlamd,ha,estore)

-- subroutine stnhtm

real*8    detf
______

I tried declaring detf(*) -> detf(1) (inside modltm.f)  -- same error

declaring detf -> detf(1) (inside the called subroutine stnhtm.f) produces other errors -- shape of the array expressions do not confirm

How do I fix these?

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #3 on: June 07, 2013, 10:40:57 AM »
Much of feap was originally coded according to F77 standards.

The issue with the modern compilers is passing an array by name to an array dimensioned causes an error.  Thus in a calling program if you have

        real*8 array(5)

        call sub1(array)

        .....

        suroutine sub1(array)

        real*8   array(*)

causes the error.

To correct you need to change the call to

         call subs(array(1))

This aligns the position in the array to pass.

In the case you cite first the change is to change detf to detf(1), etc.

You never need to change a detf(*) to a detf(1) this will cause other errors if you reference detf(2) or higher.

truparel

  • Jr. Member
  • **
  • Posts: 12
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #4 on: June 07, 2013, 11:35:50 AM »
I'm now able to fix array shape errors!
Thank you Prof. Taylor.
____

another error I encountered was for mr(np(67)) -> rsp

call sdrv (neqt,mr(np(47)),mr(np(48)),mr(np(93)+neqt),mr(np(94)),ad,b,b,mr(np(67)),mr(np(67)),esp,3     , is)

      sdrv (n     ,p               ,ip              ,ia                        ,ja              ,a  ,b,z,isp             ,rsp            ,esp,path, flag)

error #6633: The type of the actual argument differs from the type of the dummy argument.   [MR]   E:\...\ver83\program\dasol.f   81   


truparel

  • Jr. Member
  • **
  • Posts: 12
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #5 on: June 07, 2013, 02:21:25 PM »
Dear Admin, Prof. Taylor,

In visual studio 2008 + intel visual fortran compiler, I set the following option to NO
Project > Properties > Fortran > Diagnostics > Check Routine Interfaces = NO

Doing this got rid of all array shape violation errors and the build completed successfully (with no modification to stock files).

But I am not sure if setting "Check Routine Interfaces = NO" causes any other 'internal' issues within the compiled code. Any opinion?
- I did run Ex1 Ipatch_4el and the results are conforming.
_______

Also, I compiled my code with 'window1' for graphics option, but after I ran Ipatch_4el, I get a message "No graphics available"
How do I make the graphics available?

*** FIXED ***
Got rid of the dummy pplotf.f
graphics is now available
______
thanks!
« Last Edit: June 07, 2013, 02:46:41 PM by truparel »

FEAP_Admin

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 993
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #6 on: June 08, 2013, 11:44:55 AM »

But I am not sure if setting "Check Routine Interfaces = NO" causes any other 'internal' issues within the compiled code. Any opinion?
- I did run Ex1 Ipatch_4el and the results are conforming.
_______


You should be fine.  The compilation rules are being changed but I suspect the underlying functionality is still operating.

truparel

  • Jr. Member
  • **
  • Posts: 12
Re: FEAP 8.3 w/ VS2008 and Intel Fortran Compiler
« Reply #7 on: June 08, 2013, 01:47:21 PM »
cool! thanks!