- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are you INCLUDEing or USEing an appropriate file from MKL include directory? If not, that could improve the diagnostic messages.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page