lamSpectralTransform_mod

link to source code

Dependency Diagrams:

lamSpectralTransform_mod.svg

Direct Dependency Diagram

lamSpectralTransform_mod_rev.svg

Reverse Dependency Diagram

Description

MODULE lamSpectralTransform_mod (prefix=’lst’ category=’4. Data Object transformations’)

Purpose

Bi-Fourier spectral transform for limited-area applications. Depends on ffft8 and setfft8 routines in ARMNLIB.

Quick access

Variables

struct_lst

Routines

lst_laplacian(), lst_reshapetrunc(), lst_reshapetrunc_kij(), lst_setup(), lst_totalwavenumber(), lst_transform1d(), lst_transform1d_kij(), lst_vartransform(), lst_vartransform_ijk(), lst_vartransform_kij(), ngfft(), transpose2d_lattom(), transpose2d_lattom_kij(), transpose2d_levtolon(), transpose2d_levtolon_kij(), transpose2d_levtolon_kij_mpitypes(), transpose2d_levton(), transpose2d_levton_kij(), transpose2d_lontolev(), transpose2d_lontolev_kij(), transpose2d_lontolev_kij_mpitypes(), transpose2d_mtolat(), transpose2d_mtolat_kij(), transpose2d_ntolev(), transpose2d_ntolev_kij()

Needed modules

  • mpi

  • midasmpi_mod: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)

  • mathphysconstants_mod: MODULE mathPhysConstants_mod (prefix=’mpc’ category=’8. Low-level utilities and constants’)

  • earthconstants_mod: MODULE earthConstants_mod (prefix=’ec’ category=’8. Low-level utilities and constants’)

  • utilities_mod: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)

Types

  • type  lamspectraltransform_mod/unknown_type
    Type fields
    • % alllatbeg (*) [integer ,allocatable]

    • % alllatend (*) [integer ,allocatable]

    • % alllatperpe (*) [integer ,allocatable]

    • % alllevbeg (*) [integer ,allocatable]

    • % alllevend (*) [integer ,allocatable]

    • % alllonbeg (*) [integer ,allocatable]

    • % alllonend (*) [integer ,allocatable]

    • % alllonperpe (*) [integer ,allocatable]

    • % allmbeg (*) [integer ,allocatable]

    • % allmend (*) [integer ,allocatable]

    • % allmskip (*) [integer ,allocatable]

    • % allnbeg (*) [integer ,allocatable]

    • % allnend (*) [integer ,allocatable]

    • % allnskip (*) [integer ,allocatable]

    • % allocated [logical ]

    • % griddataorder [character ]

    • % ilafromek (*,*) [integer ,allocatable]

    • % ilaglobal (*) [integer ,allocatable]

    • % ilapxy (*) [real ,allocatable]

    • % k (*) [integer ,allocatable]

    • % k_r8 (*) [real ,allocatable]

    • % kfrommnglb (*,*) [integer ,allocatable]

    • % ktrunc [integer ]

    • % lapxy (*) [real ,allocatable]

    • % latperpe [integer ]

    • % latperpemax [integer ]

    • % lonlatdivisible [logical ]

    • % lonperpe [integer ]

    • % lonperpemax [integer ]

    • % m (*) [integer ,allocatable]

    • % maxlevcount [integer ]

    • % maxmactivecount [integer ]

    • % maxnla [integer ]

    • % mmax [integer ]

    • % mpimode [character ]

    • % mylatbeg [integer ]

    • % mylatend [integer ]

    • % mylevbeg [integer ]

    • % mylevcount [integer ]

    • % mylevend [integer ]

    • % mylonbeg [integer ]

    • % mylonend [integer ]

    • % mymactivecount [integer ]

    • % mymbeg [integer ]

    • % mymcount [integer ]

    • % mymend [integer ]

    • % mymindex (*) [integer ,allocatable]

    • % mymskip [integer ]

    • % mynbeg [integer ]

    • % myncount [integer ]

    • % mynend [integer ]

    • % mynindex (*) [integer ,allocatable]

    • % mynskip [integer ]

    • % n (*) [integer ,allocatable]

    • % neperk (*) [integer ,allocatable]

    • % neperkglobal (*) [integer ,allocatable]

    • % ni [integer ]

    • % nip [integer ]

    • % nj [integer ]

    • % njp [integer ]

    • % nla [integer ]

    • % nla_index (*,*) [integer ,allocatable]

    • % nlaglobal [integer ]

    • % nmax [integer ]

    • % normfactor (*,*) [real ,allocatable]

    • % normfactorad (*,*) [real ,allocatable]

    • % nphase [integer ]

    • % recvtype_levtolon [integer ]

    • % recvtype_lontolev [integer ]

    • % sendtype_levtolon [integer ]

    • % sendtype_lontolev [integer ]

    • % weight (*) [real ,allocatable]

Variables

  • lamspectraltransform_mod/struct_lst [public]

Subroutines and functions

subroutine  lamspectraltransform_mod/lst_setup(lst, ni_in, nj_in, dlon_in, ktrunc_in, mpimode[, maxlevels_opt[, griddataorder_opt]])
Arguments
  • lst [struct_lst ,out] :: OUT

  • ni_in [integer ,in] :: Global Grid point data horizontal dimensions

  • nj_in [integer ,in] :: Global Grid point data horizontal dimensions

  • dlon_in [real ,in] :: Grid Spacing in Radians

  • ktrunc_in [integer ,in] :: Spectral Truncation (global)

  • mpimode [character ,in] :: MPI Strategy

Options
  • maxlevels_opt [integer ,in,] :: Number of levels; Only needed when MpiMode = LatLev

  • griddataorder_opt [character ,in,] :: ‘ijk’ or ‘kij’

Called from

ensemblescaledecomposition(), horizcorrelfunction(), calcspectralstats(), normalizepowerspectrum(), applyhorizloc(), vortdivtopsichi_gsv(), lbhi_setup(), lsp_setup(), setuplamspectralhloc()

Call to

utl_abort(), ngfft(), mmpi_setup_lonbands(), mmpi_setup_latbands(), mmpi_setup_m(), mmpi_setup_n(), mmpi_setup_levels(), lst_totalwavenumber()

function  lamspectraltransform_mod/lst_totalwavenumber(m, n, mref, nref, kref)
Arguments
  • m [integer ,in]

  • n [integer ,in]

  • mref [integer ,in]

  • nref [integer ,in]

  • kref [integer ,in]

Return

r [real ]

Called from

lst_setup()

subroutine  lamspectraltransform_mod/lst_vartransform(lst, spectralstatevar, gridstate, transformdirection, nk)
Arguments
  • lst [struct_lst ,in]

  • spectralstatevar (*,*,*) [real ,inout] :: 3D spectral coefficients

  • gridstate (*,*,*) [real ,inout] :: 3D field in grid point space

  • transformdirection [character ,in] :: SpectralToGridPoint or GridPointToSpectral

  • nk [integer ,in] :: Grid point data dimensions

Called from

ensemblescaledecomposition(), horizcorrelfunction(), calcspectralstats(), normalizepowerspectrum(), applyhorizloc(), lbhi_cv2gd(), lbhi_cv2gdadj(), lst_laplacian(), setuplamspectralhloc(), lsp_lsqrt(), lsp_lsqrtad()

Call to

lst_vartransform_ijk(), lst_vartransform_kij()

subroutine  lamspectraltransform_mod/lst_vartransform_ijk(lst, spectralstatevar, gridstate, transformdirection, nk)
Arguments
  • lst [struct_lst ,in]

  • spectralstatevar (*,*,*) [real ,inout] :: OUT

  • gridstate (lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1,nk) [real ,inout] :: 3D field in grid point space

  • transformdirection [character ,in] :: IN

  • nk [integer ,in,] :: Grid point data dimensions

Called from

lst_vartransform()

Call to

transpose2d_lontolev(), utl_abort(), lst_reshapetrunc(), transpose2d_ntolev(), lst_transform1d(), transpose2d_lattom(), transpose2d_mtolat(), transpose2d_levton(), transpose2d_levtolon()

subroutine  lamspectraltransform_mod/lst_vartransform_kij(lst, spectralstatevar, gridstate, transformdirection, nk)
Arguments
  • lst [struct_lst ,in]

  • spectralstatevar (*,*,*) [real ,inout] :: OUT

  • gridstate (nk,lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1) [real ,inout] :: 3D field in grid point space

  • transformdirection [character ,in] :: IN

  • nk [integer ,in,] :: Grid point data dimensions

Called from

lst_vartransform()

Call to

transpose2d_lontolev_kij_mpitypes(), transpose2d_lontolev_kij(), utl_abort(), lst_reshapetrunc_kij(), transpose2d_ntolev_kij(), lst_transform1d_kij(), transpose2d_lattom_kij(), transpose2d_mtolat_kij(), transpose2d_levton_kij(), transpose2d_levtolon_kij_mpitypes(), transpose2d_levtolon_kij()

subroutine  lamspectraltransform_mod/lst_transform1d(field3d, transformdirection, transformaxe, ni_l, nj_l, nip_l, njp_l, kstart, kend)
Arguments
  • field3d (ni_l+nip_l,nj_l+njp_l,kend-kstart+1) [real ,inout]

  • transformdirection [character ,in] :: SpectralToGridPoint or GridPointToSpectral

  • transformaxe [character ,in] :: ‘i’ or ‘j’

  • ni_l [integer ,in] :: Grid point data dimensions

  • nj_l [integer ,in] :: Grid point data dimensions

  • nip_l [integer ,in] :: Extra point in spectral space

  • njp_l [integer ,in] :: Extra point in spectral space

  • kstart [integer ,in] :: Grid point data dimensions

  • kend [integer ,in] :: Grid point data dimensions

Called from

lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_abort(), ngfft(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/lst_transform1d_kij(field3d, transformdirection, transformaxe, ni_l, nj_l, nip_l, njp_l, kstart, kend)
Arguments
  • field3d (kend-kstart+1,ni_l+nip_l,nj_l+njp_l) [real ,inout]

  • transformdirection [character ,in] :: SpectralToGridPoint or GridPointToSpectral

  • transformaxe [character ,in] :: ‘i’ or ‘j’

  • ni_l [integer ,in] :: Grid point data dimensions

  • nj_l [integer ,in] :: Grid point data dimensions

  • nip_l [integer ,in] :: Extra point in spectral space

  • njp_l [integer ,in] :: Extra point in spectral space

  • kstart [integer ,in] :: Grid point data dimensions

  • kend [integer ,in] :: Grid point data dimensions

Called from

lst_vartransform_kij()

Call to

utl_tmg_start(), utl_abort(), ngfft(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_lontolev(gd_out, gd_in, nk, lst)
Arguments
  • gd_out (lst%ni,lst%mylatend-(lst%mylatbeg)+1,lst%mylevend-(lst%mylevbeg)+1) [real ,out]

  • gd_in (lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1,nk) [real ,in]

  • nk [integer ,in,]

  • lst [struct_lst ,in]

Called from

gst_gdsp(), gst_spgda(), gst_reespe(), lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_lontolev_kij_mpitypes(gd_out, gd_in, nk, lst)
Arguments
  • gd_out (lst%mylevend-(lst%mylevbeg)+1,lst%ni,lst%mylatend-(lst%mylatbeg)+1) [real ,out]

  • gd_in (nk,lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1) [real ,in]

  • nk [integer ,in,]

  • lst [struct_lst ,in]

Called from

lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_lontolev_kij(gd_out, gd_in, nk, lst)
Arguments
  • gd_out (lst%mylevend-(lst%mylevbeg)+1,lst%ni,lst%mylatend-(lst%mylatbeg)+1) [real ,out]

  • gd_in (nk,lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1) [real ,in]

  • nk [integer ,in,]

  • lst [struct_lst ,in]

Called from

gst_reespe_kij(), lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_levtolon(gd_out, gd_in, nk, lst)
Arguments
  • gd_out (lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1,nk) [real ,out]

  • gd_in (lst%ni,lst%mylatend-(lst%mylatbeg)+1,lst%mylevend-(lst%mylevbeg)+1) [real ,in]

  • nk [integer ,in]

  • lst [struct_lst ,in]

Called from

gst_spgd(), gst_speree(), lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_levtolon_kij_mpitypes(gd_out, gd_in, nk, lst)
Arguments
  • gd_out (nk,lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1) [real ,out]

  • gd_in (lst%mylevend-(lst%mylevbeg)+1,lst%ni,lst%mylatend-(lst%mylatbeg)+1) [real ,in]

  • nk [integer ,in]

  • lst [struct_lst ,in]

Called from

lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_levtolon_kij(gd_out, gd_in, nk, lst)
Arguments
  • gd_out (nk,lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1) [real ,out]

  • gd_in (lst%mylevend-(lst%mylevbeg)+1,lst%ni,lst%mylatend-(lst%mylatbeg)+1) [real ,in]

  • nk [integer ,in]

  • lst [struct_lst ,in]

Called from

gst_speree_kij(), lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_lattom(gd_out, gd_in, lst)
Arguments
  • gd_out (2*lst%mymcount,lst%nj+lst%njp,lst%mylevend-(lst%mylevbeg)+1) [real ,out]

  • gd_in (lst%ni+lst%nip,lst%latperpe,lst%mylevend-(lst%mylevbeg)+1) [real ,in]

  • lst [struct_lst ,in]

Called from

gst_gdsp(), gst_spgda(), gst_reespe(), lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_lattom_kij(gd_out, gd_in, lst)
Arguments
  • gd_out (lst%mylevend-(lst%mylevbeg)+1,2*lst%mymcount,lst%nj+lst%njp) [real ,out]

  • gd_in (lst%mylevend-(lst%mylevbeg)+1,lst%ni+lst%nip,lst%latperpe) [real ,in]

  • lst [struct_lst ,in]

Called from

gst_reespe_kij(), lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_mtolat(gd_out, gd_in, lst)
Arguments
  • gd_out (lst%ni+lst%nip,lst%latperpe,lst%mylevend-(lst%mylevbeg)+1) [real ,out]

  • gd_in (2*lst%mymcount,lst%nj+lst%njp,lst%mylevend-(lst%mylevbeg)+1) [real ,in]

  • lst [struct_lst ,in]

Called from

gst_spgd(), gst_speree(), lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_mtolat_kij(gd_out, gd_in, lst)
Arguments
  • gd_out (lst%mylevend-(lst%mylevbeg)+1,lst%ni+lst%nip,lst%latperpe) [real ,out]

  • gd_in (lst%mylevend-(lst%mylevbeg)+1,2*lst%mymcount,lst%nj+lst%njp) [real ,in]

  • lst [struct_lst ,in]

Called from

gst_speree_kij(), lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_levton(spectralstatevar, gd_in, nk, lst)
Arguments
  • spectralstatevar (lst%nla,lst%nphase,nk) [real ,out]

  • gd_in (2*lst%mymcount,lst%nj+lst%njp,lst%mylevend-(lst%mylevbeg)+1) [real ,in]

  • nk [integer ,in]

  • lst [struct_lst ,in]

Called from

gst_gdsp(), gst_spgda(), gst_reespe(), gst_reespe_kij(), lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_levton_kij(spectralstatevar, gd_in, nk, lst)
Arguments
  • spectralstatevar (lst%nla,lst%nphase,nk) [real ,out]

  • gd_in (lst%mylevend-(lst%mylevbeg)+1,2*lst%mymcount,lst%nj+lst%njp) [real ,in]

  • nk [integer ,in]

  • lst [struct_lst ,in]

Called from

lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_ntolev(gd_out, spectralstatevar, nk, lst)
Arguments
  • gd_out (2*lst%mymcount,lst%nj+lst%njp,lst%mylevend-(lst%mylevbeg)+1) [real ,out]

  • spectralstatevar (lst%nla,lst%nphase,nk) [real ,in]

  • nk [integer ,in,]

  • lst [struct_lst ,in]

Called from

gst_spgd(), gst_speree(), gst_speree_kij(), lst_vartransform_ijk()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/transpose2d_ntolev_kij(gd_out, spectralstatevar, nk, lst)
Arguments
  • gd_out (lst%mylevend-(lst%mylevbeg)+1,2*lst%mymcount,lst%nj+lst%njp) [real ,out]

  • spectralstatevar (lst%nla,lst%nphase,nk) [real ,in]

  • nk [integer ,in,]

  • lst [struct_lst ,in]

Called from

lst_vartransform_kij()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  lamspectraltransform_mod/lst_reshapetrunc(spectralstaterpn, spectralstatevar, direction, kstart, kend, lst)
Arguments
  • spectralstaterpn (2*lst%mymcount,2*lst%myncount,kend-kstart+1) [real ,inout]

  • spectralstatevar (lst%nla,lst%nphase,kend-kstart+1) [real ,inout]

  • direction [character ,in] :: ToVAR or ToRPN

  • kstart [integer ,in]

  • kend [integer ,in]

  • lst [struct_lst ,in]

Called from

lst_vartransform_ijk()

Call to

utl_abort()

subroutine  lamspectraltransform_mod/lst_reshapetrunc_kij(spectralstaterpn, spectralstatevar, direction, kstart, kend, lst)
Arguments
  • spectralstaterpn (kend-kstart+1,2*lst%mymcount,2*lst%myncount) [real ,inout]

  • spectralstatevar (lst%nla,lst%nphase,kend-kstart+1) [real ,inout]

  • direction [character ,in] :: ToVAR or ToRPN

  • kstart [integer ,in]

  • kend [integer ,in]

  • lst [struct_lst ,in]

Called from

lst_vartransform_kij()

Call to

utl_abort()

subroutine  lamspectraltransform_mod/lst_laplacian(lst, gridstate, mode, nk)
Arguments
  • lst [struct_lst ,in]

  • gridstate (lst%mylonend-(lst%mylonbeg)+1,lst%mylatend-(lst%mylatbeg)+1,nk) [real ,inout] :: 3D field in grid point space

  • mode [character ,in] :: Forward or Inverse

  • nk [integer ,in,] :: Grid point data dimensions

Called from

vortdivtopsichi_gsv(), lbhi_cv2gd(), lbhi_cv2gdadj()

Call to

utl_abort(), lst_vartransform()

subroutine  lamspectraltransform_mod/ngfft(n)
Arguments

n [integer ,inout] :: le plus petit entier >= n qui factorise

Called from

fft3dvar(), fft3dvar_kij(), lst_setup(), lst_transform1d(), lst_transform1d_kij()