title: Intel Fortran error #6633: The type of the actual argument differs from the type of the dummy argument
body: <p>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.</p>
  
  <p>The problem is that I see the following errors when compiling my code, while I believe that I have declared the derived type variables <code>cr</code> and <code>me</code> correctly.</p>
  
  <pre><code>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]
  </code></pre>
  
  <p>My code contains a Module named <code>InputData</code> which contains the definition of the derived type <code>grid</code> and declaration of the derived type variables <code>cr</code> and <code>me</code> of type <code>grid</code>. I make use of these definitions in the main program using a <code>USE</code> statement. The error refers to a line in the main program which <code>CALLs</code> an internal subroutine that uses <code>cr</code> and “me” as input argument (<code>INTENT(IN)</code>). Surprisingly, I use exactly the same way for declaring the derived type variable <code>ls</code> of type <code>Levelset</code> defined in Module <code>OutputData</code> using a <code>USE</code> statement in the Main program and get no error on that variable in the same subroutine. Adding a <code>USE InputData</code> statement to the subroutine <code>ComputeLS</code> also did not address the issue. The structure of the program units are as follow:</p>
  
  <pre><code>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)    &lt;========= 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
  </code></pre>
  
  <p>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.</p>