INTERFACE
SUBROUTINE CPG_DIA(&
 & CDCONF,&
 & KST,KEND,KSTC,KENDC,KSTGLO,KDDHI,&
 & LDLDIAB,LDLADNMI,LDLFSTEP,LDLRESET,&
 & PGM,PGEMU,PGSQM2,PGELAM,PGNORDL,PGNORDM,PRCORI,PRCORIC,PRATATX,PRATATH,&
 & POROGL,POROGM,&
 & PUT0,PVT0,PTT0,PGFL,&
 & PDIVT0,PVORT0,PUT0L,PVT0L,PTT0L,PTT0M,&
 & PRE0,PRE0F,PDELP0,PRDELP0,PLNPR0,PRTGR0,&
 & PHI0,PHIF0,PHI0FL,PHI0FM,PCP0,PR0,&
 & PEVEL0,PVVEL0,POMEGA,PKENE0,&
 & PSDIV0,PDIVP0,PRT0L,PRT0M,PRE0L,PRE0M,&
 & PSGRTL,PSGRTM,&
 & P3DIVG,PNHPRE0F,PNHPRE0H,PQCHA0L,PQCHA0M,&
 & PVCRSSA0F,PVCRSSA0FL,PVCRSSA0FM,PVCRSSA0H,&
 & PVCASRS0F,PVCASRS0H,PVCW0F,PVCMUS0F,PWDLW0F,PRDLR,&
 & PLSM,PSNS,PTP,PTSOL,&
 & PWP,PWS,&
 & PDHSF,&
 & PALB,PCAPE,PCLCC,PCLCH,PCLCL,PCLCM,PCLCT,PCLPH,PCT,&
 & PDIFCQ,PDIFCQN,PDIFCQL,PDIFCS,PDIFTQ,PDIFTQN,PDIFTQL,PDIFTS,&
 & PFCCQL,PFCCQN,PFCHSP,PFCLL,PFCLN,PFCQNNG,PFCQLNG,PFCQNG,PFCS,&
 & PFCSQL,PFCSQN,PFEVL,PFEVN,PFEVV,PFGEL,PFGELS,PFLWSP,PFONTE,&
 & PFPLCL,PFPLCN,PFPLCG,PFPLCH,PFPLSL,PFPLSN,PFPLSG,PFPLSH,&
 & PFRMH,PFRSO,PFRSOC,PFRSODS,PFRSOLU,&
 & PFRSOPS,PFRSOPT,PFRTH,PFRTHC,PFRTHDS,PFTR,PGZ0,PGZ0H,PNEB,&
 & PQICE,PQLI,PQS,&
 & PRH,PRHCLS,PRUISL,PRUISP,PRUISS,&
 & PSTRCU,PSTRCV,PSTRDU,PSTRDV,PSTRTU,PSTRTV,&
 & PUCLS,PVCLS,PTCLS,PQCLS,PUGST,PVGST,&
 & PMOCON,PFDIS,&
 & PFHPCL,PFHPCN,PFHPSL,PFHPSN,PFHSCL,PFHSCN,PFHSSL,PFHSSN,&
 & PFEPFP, PFCMPCQ, PFCMPSN, PFCMPSL,&
 & PFPFPSL,PFPFPSN,PFPFPCL,PFPFPCN,PFPEVPSL,PFPEVPSN,&
 & PFPEVPCL,PFPEVPCN,PGPAR,&
 & PFCQRNG, PFCQSNG,&
 & PDHCV, PDRNSHF) 
USE PARKIND1 ,ONLY : JPIM ,JPRB
USE YOMDIM , ONLY : NFLEVG ,NPROMA ,NPROMM ,NPROMVC ,NPROMDLW ,&
 & NPROMDLR ,NPROMNH 
USE YOMMDDH , ONLY : NDHCSSU ,NDHCVSUN
USE YOM_YGFL , ONLY : YGFL,YQ, YL, YI, YA, YO3
USE YOMDPHY , ONLY : NTSSG
USE SURFACE_FIELDS_MIX , ONLY : YSP_SBD
USE YOMARAR , ONLY : NGPAR ,MVQS ,MVTS
USE PAR_RDLR , ONLY : JP_ASRF ,JP_DIMR
CHARACTER(LEN=1) ,INTENT(IN) :: CDCONF
INTEGER(KIND=JPIM),INTENT(IN) :: KST
INTEGER(KIND=JPIM),INTENT(IN) :: KEND
INTEGER(KIND=JPIM),INTENT(IN) :: KSTC
INTEGER(KIND=JPIM),INTENT(IN) :: KENDC
INTEGER(KIND=JPIM),INTENT(IN) :: KSTGLO
INTEGER(KIND=JPIM),INTENT(IN) :: KDDHI(NPROMA)
LOGICAL ,INTENT(IN) :: LDLDIAB
LOGICAL ,INTENT(IN) :: LDLADNMI
LOGICAL ,INTENT(IN) :: LDLFSTEP
LOGICAL ,INTENT(IN) :: LDLRESET
REAL(KIND=JPRB) ,INTENT(IN) :: PGM(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PGEMU(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PGSQM2(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PGELAM(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PGNORDL(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PGNORDM(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PRCORI(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PRCORIC(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PRATATX(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PRATATH(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: POROGL(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: POROGM(NPROMA)
REAL(KIND=JPRB) ,INTENT(INOUT) :: PUT0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(INOUT) :: PVT0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PTT0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PGFL(NPROMA,NFLEVG,YGFL%NDIM)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIVT0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVORT0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PUT0L(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVT0L(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PTT0L(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PTT0M(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRE0(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRE0F(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDELP0(NPROMA,0:NFLEVG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PRDELP0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PLNPR0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRTGR0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PHI0(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PHIF0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PHI0FL(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PHI0FM(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PCP0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PR0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PEVEL0(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVVEL0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: POMEGA(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PKENE0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSDIV0(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIVP0(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRT0L(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRT0M(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRE0L(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PRE0M(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PSGRTL(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSGRTM(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: P3DIVG(NPROMNH,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PNHPRE0F(NPROMNH,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PNHPRE0H(NPROMNH,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PQCHA0L(NPROMNH,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PQCHA0M(NPROMNH,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCRSSA0F(NPROMVC,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCRSSA0FL(NPROMVC,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCRSSA0FM(NPROMVC,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCRSSA0H(NPROMVC,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCASRS0F(NPROMVC,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCASRS0H(NPROMVC,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCW0F(NPROMVC,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCMUS0F(NPROMVC,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PWDLW0F(NPROMDLW,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRDLR(NPROMDLR,0:NFLEVG,JP_DIMR)
REAL(KIND=JPRB) ,INTENT(IN) :: PLSM(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PSNS(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PTP(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PTSOL(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PWP(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PWS(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PDHSF(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PALB(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCAPE(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCLCC(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCLCH(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCLCL(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCLCM(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCLCT(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PCLPH(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PCT(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFCQ(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFCQN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFCQL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFCS(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFTQ(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFTQN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFTQL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PDIFTS(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCCQL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCCQN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCHSP(NPROMM,YSP_SBD%NLEVS)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCLL(NPROMM,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCLN(NPROMM,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCQNNG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCQLNG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCQNG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCS(NPROMM,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCSQL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCSQN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFEVL(NPROMM,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFEVN(NPROMM,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFEVV(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFGEL(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFGELS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFLWSP(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFONTE(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLCL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLCN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLCG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLCH(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLSL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLSN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLSG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPLSH(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRMH(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRSO(NPROMM,0:NFLEVG,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRSOC(NPROMM,0:1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRSODS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRSOLU(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRSOPS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRSOPT(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRTH(NPROMM,0:NFLEVG,NTSSG+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRTHC(NPROMM,0:1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFRTHDS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFTR(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PGZ0(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PGZ0H(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PNEB(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(INOUT) :: PQICE(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(INOUT) :: PQLI(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PQS(NPROMA)
REAL(KIND=JPRB) ,INTENT(IN) :: PRH(NPROMA,NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PRHCLS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PRUISL(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PRUISP(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PRUISS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PSTRCU(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSTRCV(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSTRDU(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSTRDV(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSTRTU(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PSTRTV(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PUCLS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PVCLS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PTCLS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PQCLS(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PUGST(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PVGST(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PMOCON(NPROMM)
REAL(KIND=JPRB) ,INTENT(IN) :: PFDIS(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHPCL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHPCN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHPSL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHPSN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHSCL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHSCN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHSSL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFHSSN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(OUT) :: PFEPFP(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(OUT) :: PFCMPCQ(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(OUT) :: PFCMPSN(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(OUT) :: PFCMPSL(NPROMA,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPFPSL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPFPSN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPFPCL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPFPCN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPEVPSL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPEVPSN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPEVPCL(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFPEVPCN(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PGPAR(NPROMA,NGPAR+1)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCQRNG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(IN) :: PFCQSNG(NPROMM,0:NFLEVG)
REAL(KIND=JPRB) ,INTENT(INOUT) :: PDHCV(NPROMA,0:NFLEVG,NDHCVSUN)
REAL(KIND=JPRB) ,INTENT(INOUT) :: PDRNSHF(NPROMM)
END SUBROUTINE CPG_DIA
END INTERFACE
