Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29277 Discussions

ifort 10.0.026 and mkl dss_solve_real

dclasen
Beginner
2,562 Views
Hi,

when I'm trying to build my code using ifort 10.0.026 and mkl 9.1.023 I get the following error message:

fortcom: Error: src/Z_matrixSP.f, line 57:
If the actual argument is scalar, the corresponding dummy argument shall be scalar unless the actual argument is an element of an array that is not an assumed-shape or pointer array, or a substring of such an element. [RSOLVALUES]

I pass an array a RSOLVALUES which seems to confuse the compiler but everything works fine for ifort 10.0.023 ...

Any hints how to solve this?

Dirk

0 Kudos
3 Replies
Steven_L_Intel1
Employee
2,562 Views
Can you show the actual source code for the call and the declarations for all the arguments? I believe that the error message is correct, but I'd want to see the actual code so that I can explain it to you.
0 Kudos
TimP
Honored Contributor III
2,562 Views
Are you INCLUDEing or USEing an appropriate file from MKL include directory? If not, that could improve the diagnostic messages.
0 Kudos
dclasen
Beginner
2,562 Views
It's strange. There is nothing included ...
cxml_dss contains all the types like CXML_DSS_HANDLE that are defined in mkl/9.1.023/include/mkl_dss.f90. So I did actually not program the code and was happy that it worked on the old compiler without changing anything ... I'm not very experienced with Fortran and so I'm wondering how I have to include/use mkl_dss.f90. Below you find the code that calls dss_solve_real.

Dirk



subroutine Z_matrixSP(s)

use inoutch_module
use subdomainDataTypeModule
USE cxml_dss

implicit none

type (subdomainType), target :: s

integer nd

! working variables
double precision alphal
double precision, allocatable :: values(:), fv(:)

! local variables
double precision, pointer :: a(:, :)
integer i, j, k

integer error
TYPE(CXML_DSS_HANDLE) :: handle ! Allocate storage for the solver handle.

s%z = 0.d0
a => s%z
nd = s%ndof

allocate( values(s%ncoe), fv(nd))
values = s%e0p !ltx $[E^0]$

! Initialize the solver.

error = dss_create( handle, CXML_DSS_DEFAULTS )
IF (error /= CXML_DSS_SUCCESS) GOTO 999

! Define the non-zero structure of the matrix.

error = dss_define_structure(handle, CXML_DSS_SYMMETRIC_STRUCTURE, &
& s%idiag, nd, nd, s%ia, s%ncoe )
IF (error /= CXML_DSS_SUCCESS) GOTO 999

! Reorder the matrix

error = dss_reorder( handle, CXML_DSS_DEFAULTS, (/0/) )
IF (error /= CXML_DSS_SUCCESS) GOTO 999

! Factor the matrix

error = dss_factor_real( handle, CXML_DSS_DEFAULTS, values )
IF (error /= CXML_DSS_SUCCESS) GOTO 999

do i = 1,nd
fv(:) = 0.d0
fv(i) = -1.d0
error = dss_solve_real(handle, CXML_DSS_DEFAULTS,
& fv(1), 1, a(1,nd+i) )
IF (error /= CXML_DSS_SUCCESS) GOTO 999
end do

end
0 Kudos
Reply