Quantcast
Channel: Intel® Software - Intel® Visual Fortran Compiler for Windows*
Viewing all articles
Browse latest Browse all 5691

error #8169: The specified interface is not declared.

$
0
0

Hi, everyone, 

I tried to compile the source code below but the Intel Visual Fortran compiler 2013 issues a compiler error saying that error #8169: The specified interface is not declared at line 16.

However, the same source code can be compiled using the Portland Visual Fortran 12.10. Can anyone help me out with figuring out anything wrong in my program? Thanks!

Li

PS. I have the Visual Studio 2010 solution file attached. Also, the error list generated by the IVF compiler and the results obtained by the PVF compiler are enclosed in the attachment. 

MODULE toolbox 
IMPLICIT NONE 
REAL, DIMENSION(:), POINTER :: fvec1p, fvec2p 
ABSTRACT INTERFACE 
FUNCTION functions_system(x) RESULT(y) 
IMPLICIT NONE 
REAL, DIMENSION(:), INTENT(IN) :: x 
REAL, DIMENSION(SIZE(x)) :: y 
END FUNCTION 
END INTERFACE 
ABSTRACT INTERFACE 
FUNCTION middle_function_template(x,fvec_p,proc_p) RESULT(y) 
IMPLICIT NONE 
REAL, DIMENSION(:), INTENT(IN) :: x 
REAL, DIMENSION(:), POINTER :: fvec_p 
PROCEDURE(functions_system), POINTER :: proc_p 
REAL :: y 
END FUNCTION 
END INTERFACE 
PROCEDURE(functions_system), POINTER :: proc1p, proc2p 
CONTAINS 
FUNCTION func_system1(x) RESULT(y) 
IMPLICIT NONE 
REAL, DIMENSION(:), INTENT(IN) :: x 
REAL, DIMENSION(size(x)) :: y 
y(1)=x(1) 
y(2)=x(2) 
END FUNCTION func_system1
! the major program returns the normalization of
! a given vector 
SUBROUTINE MajorSolver(ans,x,fvec_p,proc_p)
IMPLICIT NONE
REAL, DIMENSION(:), POINTER :: ans
REAL, DIMENSION(:), INTENT(IN) :: x
REAL, DIMENSION(:), POINTER :: fvec_p
PROCEDURE(functions_system), POINTER :: proc_p
PROCEDURE(middle_function_template), POINTER :: proc3p
REAL, DIMENSION(SIZE(x)), TARGET :: y ! kept for other use
REAL :: z
fvec_p=>y 
proc3p=>MiddleFunction 
z=AssistantSolver(x,proc3p,fvec_p,proc_p) 
ans=fvec_p**2/z 
END SUBROUTINE MajorSolver 
FUNCTION AssistantSolver(x,func,fvec_p,proc_p) 
IMPLICIT NONE 
REAL, DIMENSION(:), INTENT(IN) :: x 
procedure(middle_function_template), pointer :: func
REAL, DIMENSION(:), POINTER :: fvec_p 
PROCEDURE(functions_system), POINTER :: proc_p 
REAL :: AssistantSolver 
AssistantSolver=func(x,fvec_p,proc_p) 
END FUNCTION AssistantSolver 
! return the innder product of the vector proc_p evaluated at x
FUNCTION MiddleFunction(x,fvec_p,proc_p) 
IMPLICIT NONE 
REAL, DIMENSION(:), INTENT(IN) :: x 
REAL, DIMENSION(:), POINTER :: fvec_p 
PROCEDURE(functions_system), POINTER :: proc_p
REAL :: MiddleFunction
fvec_p=proc_p(x)
MiddleFunction=dot_product(fvec_p,fvec_p)
END FUNCTION 
END MODULE toolbox
PROGRAM main
USE toolbox
IMPLICIT NONE
REAL, DIMENSION(:), POINTER :: ans
REAL :: data2(2)
data2=[1.,2.] 
proc1p=>func_system1 
allocate(ans(size(data2))) 
call MajorSolver(ans,data2,fvec1p,proc1p) 
write(*,'(a,2(f7.3))'),'Equations system 1: Ans= ',ans
nullify(ans,proc1p)
END PROGRAM main
AttachmentSize
Downloadsimple.zip580.84 KB
Downloadresult.png20.66 KB
Downloaderrorlist.png40.73 KB

Viewing all articles
Browse latest Browse all 5691

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>