MODULE ESPNORM_CTL_MOD CONTAINS SUBROUTINE ESPNORM_CTL(PSPEC,KFLD,KFLD_G,KVSET,KMASTER,PMET,PNORM) USE PARKIND1 ,ONLY : JPIM ,JPRB USE YOMHOOK ,ONLY : LHOOK, DR_HOOK, JPHOOK, JPHOOK USE TPM_DIM ,ONLY : R USE TPM_DISTR ,ONLY : D, MYSETV, MYPROC USE ESPNORMD_MOD ,ONLY : ESPNORMD USE SPNORMC_MOD ,ONLY : SPNORMC USE TPMALD_DIM ,ONLY : RALD ! IMPLICIT NONE REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PSPEC(:,:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KVSET(:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KMASTER REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PMET(:) REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PNORM(:) INTEGER(KIND=JPIM) , INTENT(IN) :: KFLD,KFLD_G INTEGER(KIND=JPIM) :: IVSET(KFLD_G) REAL(KIND=JPRB) :: ZMET(0:R%NSPEC_G) REAL(KIND=JPRB) :: ZSM(KFLD,D%NUMP) REAL(KIND=JPRB) :: ZGM(KFLD_G,0:RALD%NMSMAX) REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JPHOOK) :: ZHOOK_HANDLE1 ! ------------------------------------------------------------------ IF (LHOOK) CALL DR_HOOK('ESPNORM_CTL_MOD:ESPNORM_CTL',0,ZHOOK_HANDLE) IF(PRESENT(KVSET)) THEN IVSET(:) = KVSET(:) ELSE IVSET(:) = MYSETV ENDIF IF(PRESENT(PMET)) THEN ZMET(:) = PMET(:) ELSE ZMET(:) = 1.0_JPRB ENDIF CALL ESPNORMD(PSPEC,KFLD,ZMET,ZSM) IF (LHOOK) CALL DR_HOOK('ESPNORM_CTL_MOD:SPNORMC',0,ZHOOK_HANDLE1) CALL SPNORMC(ZSM,KFLD_G,IVSET,KMASTER,RALD%NMSMAX,ZGM) IF (LHOOK) CALL DR_HOOK('ESPNORM_CTL_MOD:SPNORMC',1,ZHOOK_HANDLE1) IF(MYPROC == KMASTER) THEN PNORM(1:KFLD_G) = SUM(ZGM,DIM=2) PNORM(1:KFLD_G) = SQRT(PNORM(1:KFLD_G)) ENDIF IF (LHOOK) CALL DR_HOOK('ESPNORM_CTL_MOD:ESPNORM_CTL',1,ZHOOK_HANDLE) ! ------------------------------------------------------------------ END SUBROUTINE ESPNORM_CTL END MODULE ESPNORM_CTL_MOD