tpm_fields.F90 Source File


This file depends on

sourcefile~~tpm_fields.f90~~EfferentGraph sourcefile~tpm_fields.f90 tpm_fields.F90 sourcefile~parkind_ectrans.f90 parkind_ectrans.F90 sourcefile~tpm_fields.f90->sourcefile~parkind_ectrans.f90

Files dependent on this one

sourcefile~~tpm_fields.f90~~AfferentGraph sourcefile~tpm_fields.f90 tpm_fields.F90 sourcefile~dealloc_resol_mod.f90 dealloc_resol_mod.F90 sourcefile~dealloc_resol_mod.f90->sourcefile~tpm_fields.f90 sourcefile~set_resol_mod.f90 set_resol_mod.F90 sourcefile~dealloc_resol_mod.f90->sourcefile~set_resol_mod.f90 sourcefile~dealloc_resol_mod.f90~2 dealloc_resol_mod.F90 sourcefile~dealloc_resol_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~dealloc_resol_mod.f90~2->sourcefile~set_resol_mod.f90 sourcefile~fsc_mod.f90 fsc_mod.F90 sourcefile~fsc_mod.f90->sourcefile~tpm_fields.f90 sourcefile~fsc_mod.f90~2 fsc_mod.F90 sourcefile~fsc_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~fscad_mod.f90 fscad_mod.F90 sourcefile~fscad_mod.f90->sourcefile~tpm_fields.f90 sourcefile~fspgl_int_mod.f90 fspgl_int_mod.F90 sourcefile~fspgl_int_mod.f90->sourcefile~tpm_fields.f90 sourcefile~gpnorm_trans.f90 gpnorm_trans.F90 sourcefile~gpnorm_trans.f90->sourcefile~tpm_fields.f90 sourcefile~gpnorm_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_trans.f90~2 gpnorm_trans.F90 sourcefile~gpnorm_trans.f90~2->sourcefile~tpm_fields.f90 sourcefile~gpnorm_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_trans_ctl_mod.f90 gpnorm_trans_ctl_mod.F90 sourcefile~gpnorm_trans.f90~2->sourcefile~gpnorm_trans_ctl_mod.f90 sourcefile~gpnorm_trans_gpu.f90 gpnorm_trans_gpu.F90 sourcefile~gpnorm_trans_gpu.f90->sourcefile~tpm_fields.f90 sourcefile~gpnorm_trans_gpu.f90->sourcefile~set_resol_mod.f90 sourcefile~ldfou2_mod.f90 ldfou2_mod.F90 sourcefile~ldfou2_mod.f90->sourcefile~tpm_fields.f90 sourcefile~ldfou2ad_mod.f90 ldfou2ad_mod.F90 sourcefile~ldfou2ad_mod.f90->sourcefile~tpm_fields.f90 sourcefile~ledir_mod.f90 ledir_mod.F90 sourcefile~ledir_mod.f90->sourcefile~tpm_fields.f90 sourcefile~ledirad_mod.f90 ledirad_mod.F90 sourcefile~ledirad_mod.f90->sourcefile~tpm_fields.f90 sourcefile~leinv_mod.f90 leinv_mod.F90 sourcefile~leinv_mod.f90->sourcefile~tpm_fields.f90 sourcefile~ltdir_mod.f90~2 ltdir_mod.F90 sourcefile~ltdir_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~ltdir_mod.f90~2->sourcefile~ldfou2_mod.f90 sourcefile~ltdir_mod.f90~2->sourcefile~ledir_mod.f90 sourcefile~prepsnm_mod.f90 prepsnm_mod.F90 sourcefile~ltdir_mod.f90~2->sourcefile~prepsnm_mod.f90 sourcefile~uvtvd_mod.f90 uvtvd_mod.F90 sourcefile~ltdir_mod.f90~2->sourcefile~uvtvd_mod.f90 sourcefile~ltinv_mod.f90 ltinv_mod.F90 sourcefile~ltinv_mod.f90->sourcefile~tpm_fields.f90 sourcefile~ltinv_mod.f90->sourcefile~leinv_mod.f90 sourcefile~spnsde_mod.f90 spnsde_mod.F90 sourcefile~ltinv_mod.f90->sourcefile~spnsde_mod.f90 sourcefile~vdtuv_mod.f90 vdtuv_mod.F90 sourcefile~ltinv_mod.f90->sourcefile~vdtuv_mod.f90 sourcefile~ltinv_mod.f90~2 ltinv_mod.F90 sourcefile~ltinv_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~ltinv_mod.f90~2->sourcefile~fspgl_int_mod.f90 sourcefile~ltinv_mod.f90~2->sourcefile~leinv_mod.f90 sourcefile~ltinv_mod.f90~2->sourcefile~prepsnm_mod.f90 sourcefile~ltinv_mod.f90~2->sourcefile~spnsde_mod.f90 sourcefile~ltinv_mod.f90~2->sourcefile~vdtuv_mod.f90 sourcefile~pre_suleg_mod.f90 pre_suleg_mod.F90 sourcefile~pre_suleg_mod.f90->sourcefile~tpm_fields.f90 sourcefile~pre_suleg_mod.f90~2 pre_suleg_mod.F90 sourcefile~pre_suleg_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~prepsnm_mod.f90->sourcefile~tpm_fields.f90 sourcefile~prepsnm_mod.f90~2 prepsnm_mod.F90 sourcefile~prepsnm_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~set_resol_mod.f90->sourcefile~tpm_fields.f90 sourcefile~set_resol_mod.f90~2 set_resol_mod.F90 sourcefile~set_resol_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~setup_geom_mod.f90 setup_geom_mod.F90 sourcefile~setup_geom_mod.f90->sourcefile~tpm_fields.f90 sourcefile~setup_geom_mod.f90~2 setup_geom_mod.F90 sourcefile~setup_geom_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~setup_trans.f90 setup_trans.F90 sourcefile~setup_trans.f90->sourcefile~tpm_fields.f90 sourcefile~setup_trans.f90->sourcefile~pre_suleg_mod.f90 sourcefile~setup_trans.f90->sourcefile~prepsnm_mod.f90 sourcefile~setup_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~suleg_mod.f90 suleg_mod.F90 sourcefile~setup_trans.f90->sourcefile~suleg_mod.f90 sourcefile~setup_trans.f90~2 setup_trans.F90 sourcefile~setup_trans.f90~2->sourcefile~tpm_fields.f90 sourcefile~setup_trans.f90~2->sourcefile~pre_suleg_mod.f90 sourcefile~setup_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~setup_trans.f90~2->sourcefile~suleg_mod.f90 sourcefile~spnsde_mod.f90->sourcefile~tpm_fields.f90 sourcefile~spnsde_mod.f90~2 spnsde_mod.F90 sourcefile~spnsde_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~spnsdead_mod.f90 spnsdead_mod.F90 sourcefile~spnsdead_mod.f90->sourcefile~tpm_fields.f90 sourcefile~suleg_mod.f90->sourcefile~tpm_fields.f90 sourcefile~suleg_mod.f90->sourcefile~pre_suleg_mod.f90 sourcefile~suleg_mod.f90->sourcefile~prepsnm_mod.f90 sourcefile~suleg_mod.f90->sourcefile~setup_geom_mod.f90 sourcefile~sutrle_mod.f90 sutrle_mod.F90 sourcefile~suleg_mod.f90->sourcefile~sutrle_mod.f90 sourcefile~suleg_mod.f90~2 suleg_mod.F90 sourcefile~suleg_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~suleg_mod.f90~2->sourcefile~pre_suleg_mod.f90 sourcefile~suleg_mod.f90~2->sourcefile~prepsnm_mod.f90 sourcefile~suleg_mod.f90~2->sourcefile~setup_geom_mod.f90 sourcefile~suleg_mod.f90~2->sourcefile~sutrle_mod.f90 sourcefile~sutrle_mod.f90->sourcefile~tpm_fields.f90 sourcefile~sutrle_mod.f90~2 sutrle_mod.F90 sourcefile~sutrle_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~trans_end.f90 trans_end.F90 sourcefile~trans_end.f90->sourcefile~tpm_fields.f90 sourcefile~trans_end.f90->sourcefile~dealloc_resol_mod.f90 sourcefile~trans_end.f90->sourcefile~set_resol_mod.f90 sourcefile~trans_end.f90~2 trans_end.F90 sourcefile~trans_end.f90~2->sourcefile~tpm_fields.f90 sourcefile~trans_end.f90~2->sourcefile~dealloc_resol_mod.f90 sourcefile~trans_end.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_inq.f90 trans_inq.F90 sourcefile~trans_inq.f90->sourcefile~tpm_fields.f90 sourcefile~trans_inq.f90->sourcefile~set_resol_mod.f90 sourcefile~trans_inq.f90~2 trans_inq.F90 sourcefile~trans_inq.f90~2->sourcefile~tpm_fields.f90 sourcefile~trans_inq.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_pnm.f90 trans_pnm.F90 sourcefile~trans_pnm.f90->sourcefile~tpm_fields.f90 sourcefile~trans_pnm.f90->sourcefile~set_resol_mod.f90 sourcefile~trans_pnm.f90~2 trans_pnm.F90 sourcefile~trans_pnm.f90~2->sourcefile~tpm_fields.f90 sourcefile~trans_pnm.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trltom_pack_unpack.f90 trltom_pack_unpack.F90 sourcefile~trltom_pack_unpack.f90->sourcefile~tpm_fields.f90 sourcefile~trltom_pack_unpack.f90->sourcefile~ledir_mod.f90 sourcefile~uvtvd_mod.f90->sourcefile~tpm_fields.f90 sourcefile~uvtvd_mod.f90~2 uvtvd_mod.F90 sourcefile~uvtvd_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~uvtvdad_mod.f90 uvtvdad_mod.F90 sourcefile~uvtvdad_mod.f90->sourcefile~tpm_fields.f90 sourcefile~vdtuv_mod.f90->sourcefile~tpm_fields.f90 sourcefile~vdtuv_mod.f90~2 vdtuv_mod.F90 sourcefile~vdtuv_mod.f90~2->sourcefile~tpm_fields.f90 sourcefile~vdtuvad_mod.f90 vdtuvad_mod.F90 sourcefile~vdtuvad_mod.f90->sourcefile~tpm_fields.f90 sourcefile~dir_trans.f90 dir_trans.F90 sourcefile~dir_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~dir_trans_ctl_mod.f90 dir_trans_ctl_mod.F90 sourcefile~dir_trans.f90->sourcefile~dir_trans_ctl_mod.f90 sourcefile~dir_trans.f90~2 dir_trans.F90 sourcefile~dir_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dir_trans.f90~2->sourcefile~dir_trans_ctl_mod.f90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~trltom_pack_unpack.f90 sourcefile~ltdir_mod.f90 ltdir_mod.F90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~ltdir_mod.f90 sourcefile~dir_transad.f90~2 dir_transad.F90 sourcefile~dir_transad.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dir_trans_ctlad_mod.f90 dir_trans_ctlad_mod.F90 sourcefile~dir_transad.f90~2->sourcefile~dir_trans_ctlad_mod.f90 sourcefile~dist_grid.f90 dist_grid.F90 sourcefile~dist_grid.f90->sourcefile~set_resol_mod.f90 sourcefile~dist_grid.f90~2 dist_grid.F90 sourcefile~dist_grid.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dist_grid_32.f90 dist_grid_32.F90 sourcefile~dist_grid_32.f90->sourcefile~set_resol_mod.f90 sourcefile~dist_grid_32.f90~2 dist_grid_32.F90 sourcefile~dist_grid_32.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dist_spec.f90 dist_spec.F90 sourcefile~dist_spec.f90->sourcefile~set_resol_mod.f90 sourcefile~dist_spec.f90~2 dist_spec.F90 sourcefile~dist_spec.f90~2->sourcefile~set_resol_mod.f90 sourcefile~ftinv_ctl_mod.f90 ftinv_ctl_mod.F90 sourcefile~ftinv_ctl_mod.f90->sourcefile~fsc_mod.f90 sourcefile~ftinv_ctlad_mod.f90 ftinv_ctlad_mod.F90 sourcefile~ftinv_ctlad_mod.f90->sourcefile~fscad_mod.f90 sourcefile~gath_grid.f90 gath_grid.F90 sourcefile~gath_grid.f90->sourcefile~set_resol_mod.f90 sourcefile~gath_grid.f90~2 gath_grid.F90 sourcefile~gath_grid.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gath_grid_32.f90 gath_grid_32.F90 sourcefile~gath_grid_32.f90->sourcefile~set_resol_mod.f90 sourcefile~gath_grid_32.f90~2 gath_grid_32.F90 sourcefile~gath_grid_32.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gath_spec.f90 gath_spec.F90 sourcefile~gath_spec.f90->sourcefile~set_resol_mod.f90 sourcefile~gath_spec.f90~2 gath_spec.F90 sourcefile~gath_spec.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_trans_ctl_mod.f90->sourcefile~set_resol_mod.f90 sourcefile~inv_trans.f90 inv_trans.F90 sourcefile~inv_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~inv_trans_ctl_mod.f90 inv_trans_ctl_mod.F90 sourcefile~inv_trans.f90->sourcefile~inv_trans_ctl_mod.f90 sourcefile~inv_trans.f90~2 inv_trans.F90 sourcefile~inv_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~inv_trans.f90~2->sourcefile~inv_trans_ctl_mod.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~fsc_mod.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~ltinv_mod.f90 sourcefile~trmtol_pack_unpack.f90 trmtol_pack_unpack.F90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~trmtol_pack_unpack.f90 sourcefile~inv_transad.f90~2 inv_transad.F90 sourcefile~inv_transad.f90~2->sourcefile~set_resol_mod.f90 sourcefile~inv_trans_ctlad_mod.f90 inv_trans_ctlad_mod.F90 sourcefile~inv_transad.f90~2->sourcefile~inv_trans_ctlad_mod.f90 sourcefile~ltdir_mod.f90->sourcefile~ledir_mod.f90 sourcefile~ltdir_mod.f90->sourcefile~prepsnm_mod.f90 sourcefile~ltdir_mod.f90->sourcefile~uvtvd_mod.f90 sourcefile~ltdirad_mod.f90 ltdirad_mod.F90 sourcefile~ltdirad_mod.f90->sourcefile~ldfou2ad_mod.f90 sourcefile~ltdirad_mod.f90->sourcefile~ledirad_mod.f90 sourcefile~ltdirad_mod.f90->sourcefile~prepsnm_mod.f90 sourcefile~ltdirad_mod.f90->sourcefile~uvtvdad_mod.f90 sourcefile~ltinv_ctl_mod.f90 ltinv_ctl_mod.F90 sourcefile~ltinv_ctl_mod.f90->sourcefile~ltinv_mod.f90 sourcefile~ltinvad_mod.f90 ltinvad_mod.F90 sourcefile~ltinvad_mod.f90->sourcefile~prepsnm_mod.f90 sourcefile~ltinvad_mod.f90->sourcefile~spnsdead_mod.f90 sourcefile~ltinvad_mod.f90->sourcefile~vdtuvad_mod.f90 sourcefile~specnorm.f90 specnorm.F90 sourcefile~specnorm.f90->sourcefile~set_resol_mod.f90 sourcefile~specnorm.f90~2 specnorm.F90 sourcefile~specnorm.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_release.f90 trans_release.F90 sourcefile~trans_release.f90->sourcefile~dealloc_resol_mod.f90 sourcefile~trans_release.f90~2 trans_release.F90 sourcefile~trans_release.f90~2->sourcefile~dealloc_resol_mod.f90 sourcefile~trmtol_pack_unpack.f90->sourcefile~leinv_mod.f90 sourcefile~vd2uv_mod.f90 vd2uv_mod.F90 sourcefile~vd2uv_mod.f90->sourcefile~prepsnm_mod.f90 sourcefile~vd2uv_mod.f90->sourcefile~vdtuv_mod.f90 sourcefile~vd2uv_mod.f90~2 vd2uv_mod.F90 sourcefile~vd2uv_mod.f90~2->sourcefile~prepsnm_mod.f90 sourcefile~vd2uv_mod.f90~2->sourcefile~vdtuv_mod.f90 sourcefile~vordiv_to_uv.f90 vordiv_to_uv.F90 sourcefile~vordiv_to_uv.f90->sourcefile~set_resol_mod.f90 sourcefile~vd2uv_ctl_mod.f90 vd2uv_ctl_mod.F90 sourcefile~vordiv_to_uv.f90->sourcefile~vd2uv_ctl_mod.f90 sourcefile~vordiv_to_uv.f90~2 vordiv_to_uv.F90 sourcefile~vordiv_to_uv.f90~2->sourcefile~set_resol_mod.f90 sourcefile~vordiv_to_uv.f90~2->sourcefile~vd2uv_ctl_mod.f90 sourcefile~inv_trans_ctl_mod.f90~2 inv_trans_ctl_mod.F90 sourcefile~inv_trans_ctl_mod.f90~2->sourcefile~ftinv_ctl_mod.f90 sourcefile~inv_trans_ctl_mod.f90~2->sourcefile~ltinv_ctl_mod.f90 sourcefile~inv_trans_ctlad_mod.f90->sourcefile~ftinv_ctlad_mod.f90 sourcefile~ltinv_ctlad_mod.f90 ltinv_ctlad_mod.F90 sourcefile~inv_trans_ctlad_mod.f90->sourcefile~ltinv_ctlad_mod.f90 sourcefile~ltdir_ctl_mod.f90 ltdir_ctl_mod.F90 sourcefile~ltdir_ctl_mod.f90->sourcefile~ltdir_mod.f90 sourcefile~ltdir_ctlad_mod.f90 ltdir_ctlad_mod.F90 sourcefile~ltdir_ctlad_mod.f90->sourcefile~ltdirad_mod.f90 sourcefile~ltinv_ctlad_mod.f90->sourcefile~ltinvad_mod.f90 sourcefile~vd2uv_ctl_mod.f90->sourcefile~vd2uv_mod.f90 sourcefile~vd2uv_ctl_mod.f90~2 vd2uv_ctl_mod.F90 sourcefile~vd2uv_ctl_mod.f90~2->sourcefile~vd2uv_mod.f90 sourcefile~dir_trans_ctl_mod.f90~2 dir_trans_ctl_mod.F90 sourcefile~dir_trans_ctl_mod.f90~2->sourcefile~ltdir_ctl_mod.f90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~ltdir_ctlad_mod.f90

Source Code

! (C) Copyright 2000- ECMWF.
! (C) Copyright 2000- Meteo-France.
! (C) Copyright 2022- NVIDIA.
! 
! 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 TPM_FIELDS

USE PARKIND_ECTRANS  ,ONLY : JPIM, JPIB, JPRB, JPRBT, JPRD
USE ISO_C_BINDING

IMPLICIT NONE

SAVE

TYPE FIELDS_TYPE
REAL(KIND=JPRD)    ,ALLOCATABLE :: RPNM(:,:) ! Legendre polynomials
REAL(KIND=JPRD)    ,ALLOCATABLE :: RMU(:)    ! sin(theta) for Gaussian latitudes
REAL(KIND=JPRBT)   ,ALLOCATABLE :: RW(:)     ! Weights of the Gaussian quadrature
REAL(KIND=JPRBT)   ,ALLOCATABLE :: R1MU2(:)  ! 1.-MU*MU, cos(theta)**2
REAL(KIND=JPRBT)   ,ALLOCATABLE :: RACTHE(:) ! 1./SQRT(R1MU2), 1/(cos(theta))

REAL(KIND=JPRBT)   ,ALLOCATABLE :: REPSNM(:) ! eps(n,m) used in the Legendre transforms
REAL(KIND=JPRBT)   ,ALLOCATABLE :: RN(:)     ! n (to avoid integer to real conversion)
REAL(KIND=JPRBT)   ,ALLOCATABLE :: RLAPIN(:) ! eigen-values of the inverse Laplace operator
INTEGER(KIND=JPIM) ,ALLOCATABLE :: NLTN(:)   ! R%NTMAX+2-JN

REAL(KIND=JPRBT)   ,ALLOCATABLE :: RMU2(:)   ! sin(theta) for dual input/output latitudes
REAL(KIND=JPRBT)   ,ALLOCATABLE :: RACTHE2(:)! 1./SQRT(R1MU2), 1/(cos(theta)) dual input/output latitudes
END TYPE FIELDS_TYPE

!flat copies of the above
REAL(KIND=JPRBT) ,ALLOCATABLE :: F_RW(:)     ! Weights of the Gaussian quadrature
REAL(KIND=JPRBT) ,ALLOCATABLE :: F_RN(:)     ! n (to avoid integer to real conversion)
REAL(KIND=JPRBT) ,ALLOCATABLE :: F_RLAPIN(:) ! eigen-values of the inverse Laplace operator
REAL(KIND=JPRBT) ,ALLOCATABLE :: F_RACTHE(:) ! eigen-values of the inverse Laplace operator

TYPE(FIELDS_TYPE),ALLOCATABLE,TARGET :: FIELDS_RESOL(:)
TYPE(FIELDS_TYPE),POINTER     :: F

! scratch arrays for ltinv and ltdir and associated dimension variables

REAL(KIND=JPRBT),ALLOCATABLE :: ZAA(:,:,:)  !! JPRL for 1/2
REAL(KIND=JPRBT),ALLOCATABLE :: ZAS(:,:,:)  !! JPRL for 1/2

! for m=0 in ledir_mod:
REAL(KIND=JPRD),ALLOCATABLE :: ZAA0(:,:)
REAL(KIND=JPRD),ALLOCATABLE :: ZAS0(:,:)
INTEGER(KIND=JPIM) :: KMLOC0

REAL(KIND=JPRBT),ALLOCATABLE :: ZEPSNM(:,:)

END MODULE TPM_FIELDS