espnormd_mod.F90 Source File


This file depends on

sourcefile~~espnormd_mod.f90~~EfferentGraph sourcefile~espnormd_mod.f90 espnormd_mod.F90 sourcefile~tpm_dim.f90 tpm_dim.F90 sourcefile~espnormd_mod.f90->sourcefile~tpm_dim.f90 sourcefile~tpm_distr.f90 tpm_distr.F90 sourcefile~espnormd_mod.f90->sourcefile~tpm_distr.f90 sourcefile~tpmald_distr.f90 tpmald_distr.F90 sourcefile~espnormd_mod.f90->sourcefile~tpmald_distr.f90

Files dependent on this one

sourcefile~~espnormd_mod.f90~~AfferentGraph sourcefile~espnormd_mod.f90 espnormd_mod.F90 sourcefile~espnorm_ctl_mod.f90 espnorm_ctl_mod.F90 sourcefile~espnorm_ctl_mod.f90->sourcefile~espnormd_mod.f90 sourcefile~especnorm.f90 especnorm.F90 sourcefile~especnorm.f90->sourcefile~espnorm_ctl_mod.f90

Source Code

! (C) Copyright 2001- ECMWF.
! (C) Copyright 2001- Meteo-France.
! 
! This software is licensed under the terms of the Apache Licence Version 2.0
! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
! In applying this licence, ECMWF does not waive the privileges and immunities
! granted to it by virtue of its status as an intergovernmental organisation
! nor does it submit to any jurisdiction.
! 


MODULE ESPNORMD_MOD
CONTAINS
SUBROUTINE ESPNORMD(PSPEC,KFLD,PMET,PSM)

USE PARKIND1  ,ONLY : JPIM     ,JPRB
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK, JPHOOK

USE TPM_DIM         ,ONLY : R
USE TPM_DISTR       ,ONLY : D

USE TPMALD_DISTR    ,ONLY : DALD
!

IMPLICIT NONE

REAL(KIND=JPRB)    ,INTENT(IN)  :: PSPEC(:,:)
REAL(KIND=JPRB)    ,INTENT(IN)  :: PMET(0:R%NSPEC_G)
INTEGER(KIND=JPIM) ,INTENT(IN)  :: KFLD
REAL(KIND=JPRB)    ,INTENT(OUT) :: PSM(:,:)
INTEGER(KIND=JPIM) :: JM ,JFLD ,JN ,IM ,ISP
INTEGER(KIND=JPIM) :: IN,ISPE
REAL(KIND=JPHOOK) :: ZHOOK_HANDLE

!     ------------------------------------------------------------------

IF (LHOOK) CALL DR_HOOK('ESPNORMD_MOD:ESPNORMD',0,ZHOOK_HANDLE)

!$OMP PARALLEL DO SCHEDULE(STATIC,1)  PRIVATE(JM,IM,JN,ISP,JFLD,IN,ISPE)
DO JM=1,D%NUMP
  PSM(:,JM) = 0.0_JPRB
  IM = D%MYMS(JM)

  IN=DALD%NCPL2M(IM)/2 - 1
  DO JN=0,IN
    ISP=DALD%NESM0(IM) + (JN)*4
    ISPE=DALD%NPME (IM) + JN
    DO JFLD=1,KFLD
      PSM(JFLD,JM) =PSM(JFLD,JM)&
       & + PMET(ISPE) *&
       & ( PSPEC(JFLD,ISP  )**2 + PSPEC(JFLD,ISP+1)**2 +&
       & PSPEC(JFLD,ISP+2)**2 + PSPEC(JFLD,ISP+3)**2   )

    ENDDO
  ENDDO

ENDDO
!$OMP END PARALLEL DO

IF (LHOOK) CALL DR_HOOK('ESPNORMD_MOD:ESPNORMD',1,ZHOOK_HANDLE)

!     ------------------------------------------------------------------

END SUBROUTINE ESPNORMD
END MODULE ESPNORMD_MOD