FEAP User Forum
FEAP => Installation => Topic started by: truparel 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!
-
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.
-
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?
-
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.
-
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
-
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!
-
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.
-
cool! thanks!