user3858411
user3858411

Reputation: 41

Intel Fortran error #6633: The type of the actual argument differs from the type of the dummy argument

Accept my apologies for probably asking such a basic question here, I am new to programming with Intel Fortran so I think there is something missing or wrongly organized that I am not aware of in this case. I would be grateful if someone can help me in this regard.

The problem is that I see the following errors when compiling my code, while I believe that I have declared the derived type variables cr and me correctly.

error #6633: The type of the actual argument differs from the type of the dummy argument.   [CR]

error #6633: The type of the actual argument differs from the type of the dummy argument.   [ME]

My code contains a Module named InputData which contains the definition of the derived type grid and declaration of the derived type variables cr and me of type grid. I make use of these definitions in the main program using a USE statement. The error refers to a line in the main program which CALLs an internal subroutine that uses cr and “me” as input argument (INTENT(IN)). Surprisingly, I use exactly the same way for declaring the derived type variable ls of type Levelset defined in Module OutputData using a USE statement in the Main program and get no error on that variable in the same subroutine. Adding a USE InputData statement to the subroutine ComputeLS also did not address the issue. The structure of the program units are as follow:

MODULE InputData
    TYPE grid                                               
        REAL, DIMENSION(:,:), POINTER :: nodes 
        INTEGER, DIMENSION(:,:), POINTER :: connectivity    
    END TYPE grid
    TYPE(grid) :: cr, me

    CONTAINS
        …
END MODULE InputData

MODULE OutputData
   TYPE levelset                                                  
       REAL, DIMENSION(:), POINTER :: f, g       
   END TYPE levelset    
   …
   TYPE(levelset) :: ls                

   CONTAINS
   …
END MODULE OutputData

PROGRAM Main
    USE InputData
    USE OutputData
    USE Timing
    IMPLICIT NONE

    INTEGER, DIMENSION(:,:), POINTER :: ed
    …

    CALL ComputeLS(me, cr, ed, ls)    <========= error #6633 refers to this line    
    …

    CONTAINS

    ! INTERNAL PROCEDURES
    SUBROUTINE ComputeLS(me, cr, ed, ls)

        USE MathCalc
        IMPLICIT NONE

        TYPE(grid), INTENT(IN) :: me, cr
        INTEGER, DIMENSION(:,:), INTENT(IN) :: ed

        TYPE(levelset), INTENT(OUT) :: ls
        …

    END SUBROUTINE ComputeLS
    …
END PROGRAM Main

I tried to remove all modules and include all type definitions and variable declarations in the Main program instead of in separate modules. But unfortunately the errors still exist.

Upvotes: 4

Views: 7927

Answers (1)

Steve Lionel
Steve Lionel

Reputation: 7277

I think this is a known compiler bug, ID DPD200250382, that is fixed for our upcoming 15.0 release, but your partial example differs a bit from the problem description. Are you using our Windows compiler and have Diagnostics > Check Routine Interfaces enabled? If so, try setting that option to No and see what happens.

If that doesn't help, I'd like to see a complete test case.

Upvotes: 1

Related Questions