Modal-setup-compiling

mpif90 -c -fconvert=swap -fno-second-underscore -fbacktrace -m64 -fopenmp -ffree-line-length-none -fno-sign-zero -fno-range-check -fpi c -fallow-argument-mismatch -g -pipe -ffree-form -DLINUX -DLITTLE_ENDIAN -DLITTLE -DADDRESS64 -O1 -I/home/celaleddin/model_kurulum/packs/46t1bf07_MAIN.01.MPIGNU.x/src/local/.include/algor/headers -I/home/celaleddin/model_kurulum/packs/ 46t1bf07_MAIN.01.MPIGNU.x/src/local/.include/ifsaux/modules -I/home/celaleddin/model_kurulum/packs/46t1bf07_MAIN.01.MPIGNU.x/src/local/.include/arpifs/modules -I/home/celaleddin/model_kurulum/packs/46t1bf07_MAIN.01.MPIGNU.x/src/local/if sobs/src/dbase m1qn3a.F90
I’m getting this error.
m1qn3a.F90:217:49:

217 | & YDTCV,YDTCV_BGC,YDGOM5,YDODB)
| 1
Error: Explicit interface required for polymorphic argument at (1)
m1qn3a.F90 file
`
SUBROUTINE M1QN3A (YDGEOMETRY,YDFIELDS,YDMTRAJ,YDMODEL,SIMUL, &
& PROSCA,CTONB,CTCAB,N,X,F,G,DXMIN,DF1, &
& EPSG,IMPRES,IO,MODE,NITER,NSIM,INMEMO,M,JMIN, &
& JMAX,D,GG,DIAG,AUX,ALPHA,YBAR,SBAR,YDJOT, &
& YDVARBC,YDTCV5,YDGOM, &
& YDTCV,YDTCV_BGC,YDGOM5,YDODB)
!AUTOPROMOTE
USE PARKIND1, ONLY : JPIM, JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
!----
!
! Code d’optimisation proprement dit.
!
!----
USE GEOMETRY_MOD , ONLY : GEOMETRY
USE FIELDS_MOD , ONLY : FIELDS
USE MTRAJ_MOD , ONLY : MTRAJ
USE VARBC_CLASS,ONLY: CLASS_VARBC
USE TYPE_MODEL , ONLY : MODEL
USE TOVSCV_MOD , ONLY : TOVSCV
USE TOVSCV_BGC_MOD , ONLY : TOVSCV_BGC
USE JO_TABLE_MOD , ONLY : JO_TABLE
USE SUPERGOM_CLASS , ONLY : CLASS_SUPERGOM
USE DBASE_MOD , ONLY : DBASE
USE CONTROL_VECTORS_MOD
!
IMPLICIT NONE
!
! arguments
!

    LOGICAL :: INMEMO
    INTEGER(KIND=JPIM) :: N
    INTEGER(KIND=JPIM) :: IMPRES
    INTEGER(KIND=JPIM) :: IO
    INTEGER(KIND=JPIM) :: MODE
    INTEGER(KIND=JPIM) :: NITER
    INTEGER(KIND=JPIM) :: NSIM
    INTEGER(KIND=JPIM) :: M
    INTEGER(KIND=JPIM) :: JMIN
    INTEGER(KIND=JPIM) :: JMAX
    INTEGER(KIND=JPIM) :: IPRINT
    REAL(KIND=JPRB) :: F
    REAL(KIND=JPRB) :: DXMIN
    REAL(KIND=JPRB) :: DF1
    REAL(KIND=JPRB) :: EPSG
    REAL(KIND=JPRB) :: ALPHA(M)
    EXTERNAL :: SIMUL,PROSCA,CTONB,CTCAB
    TYPE(GEOMETRY),    INTENT(INOUT) :: YDGEOMETRY
    TYPE(FIELDS),      INTENT(INOUT) :: YDFIELDS
    TYPE(MTRAJ),       INTENT(INOUT) :: YDMTRAJ
    TYPE(MODEL)       ,INTENT(INOUT) :: YDMODEL
    TYPE(JO_TABLE)    ,INTENT(INOUT) :: YDJOT
    TYPE(CLASS_VARBC), INTENT(INOUT) :: YDVARBC
    TYPE(CLASS_SUPERGOM),INTENT(INOUT) :: YDGOM, YDGOM5
    TYPE(TOVSCV)     , INTENT(INOUT) :: YDTCV5
    TYPE(TOVSCV)     , INTENT(INOUT) :: YDTCV
    TYPE(TOVSCV_BGC) , INTENT(INOUT) :: YDTCV_BGC
    CLASS(DBASE)     , INTENT(INOUT) :: YDODB
    TYPE (CONTROL_VECTOR) :: X
    TYPE (CONTROL_VECTOR) :: G
    TYPE (CONTROL_VECTOR) :: D
    TYPE (CONTROL_VECTOR) :: GG
    TYPE (CONTROL_VECTOR) :: DIAG
    TYPE (CONTROL_VECTOR) :: AUX
    TYPE (CONTROL_VECTOR),DIMENSION(M) :: YBAR
    TYPE (CONTROL_VECTOR),DIMENSION(M) :: SBAR

it is the part of code. and here is the m1qn3.h include file
INTERFACE
SUBROUTINE M1QN3A (YDGEOMETRY,YDFIELDS,YDMTRAJ,YDMODEL,SIMUL, &
& PROSCA,CTONB,CTCAB,N,X,F,G,DXMIN,DF1, &
& EPSG,IMPRES,IO,MODE,NITER,NSIM,INMEMO,M,JMIN, &
& JMAX,D,GG,DIAG,AUX,ALPHA,YBAR,SBAR,YDJOT, &
& YDVARBC,YDTCV5,YDGOM, &
& YDTCV,YDTCV_BGC,YDGOM5,YDODB)
USE PARKIND1, ONLY : JPIM, JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
USE GEOMETRY_MOD , ONLY : GEOMETRY
USE FIELDS_MOD , ONLY : FIELDS
USE MTRAJ_MOD , ONLY : MTRAJ
USE VARBC_CLASS,ONLY: CLASS_VARBC
USE TYPE_MODEL , ONLY : MODEL
USE TOVSCV_MOD , ONLY : TOVSCV
USE TOVSCV_BGC_MOD , ONLY : TOVSCV_BGC
USE JO_TABLE_MOD , ONLY : JO_TABLE
USE SUPERGOM_CLASS , ONLY : CLASS_SUPERGOM
USE DBASE_MOD , ONLY : DBASE
USE CONTROL_VECTORS_MOD
LOGICAL :: INMEMO
INTEGER(KIND=JPIM) :: N
INTEGER(KIND=JPIM) :: IMPRES
INTEGER(KIND=JPIM) :: IO
INTEGER(KIND=JPIM) :: MODE
INTEGER(KIND=JPIM) :: NITER
INTEGER(KIND=JPIM) :: NSIM
INTEGER(KIND=JPIM) :: M
INTEGER(KIND=JPIM) :: JMIN
INTEGER(KIND=JPIM) :: JMAX
INTEGER(KIND=JPIM) :: IPRINT
REAL(KIND=JPRB) :: F
REAL(KIND=JPRB) :: DXMIN
REAL(KIND=JPRB) :: DF1
REAL(KIND=JPRB) :: EPSG
REAL(KIND=JPRB) :: ALPHA(M)
EXTERNAL :: SIMUL,PROSCA,CTONB,CTCAB
TYPE(GEOMETRY), INTENT(INOUT) :: YDGEOMETRY
TYPE(FIELDS), INTENT(INOUT) :: YDFIELDS
TYPE(MTRAJ), INTENT(INOUT) :: YDMTRAJ
TYPE(MODEL) ,INTENT(INOUT) :: YDMODEL
TYPE(JO_TABLE) ,INTENT(INOUT) :: YDJOT
TYPE(CLASS_VARBC), INTENT(INOUT) :: YDVARBC
TYPE(CLASS_SUPERGOM),INTENT(INOUT) :: YDGOM, YDGOM5
TYPE(TOVSCV) , INTENT(INOUT) :: YDTCV5
TYPE(TOVSCV) , INTENT(INOUT) :: YDTCV
TYPE(TOVSCV_BGC) , INTENT(INOUT) :: YDTCV_BGC
CLASS(DBASE) , INTENT(INOUT) :: YDODB

`
I couldn’t compile this file. What can i do?

The culprit is the CLASS(DBASE) YDODB variable. The compiler needs to be sure that any caller of the subroutine uses a correctly typed variable. The easiest way is to put your routine in a module. (And I would recommend to use modules whenever possibile.)

I created optimization_mod.F90 , exactly which part should I add because there are some calculations in m1qn3a.F90

I would put all routines in a module:

module optimization
    ... relevant definitions and such
contains
subroutine m1qn3a( ...... )
    ... declarations and body of the subroutine
end subroutine