TRGTOL Subroutine

public subroutine TRGTOL(ALLOCATOR, HTRGTOL, PREEL_REAL, KF_FS, KF_GP, KF_UV_G, KF_SCALARS_G, PGP, PGPUV, PGP3A, PGP3B, PGP2, KPTRGP, KVSETUV, KVSETSC, KVSETSC3A, KVSETSC3B, KVSETSC2)

Uses

  • proc~~trgtol~~UsesGraph proc~trgtol TRGTOL MPL_DATA_MODULE MPL_DATA_MODULE proc~trgtol->MPL_DATA_MODULE MPL_MODULE MPL_MODULE proc~trgtol->MPL_MODULE OML_MOD OML_MOD proc~trgtol->OML_MOD YOMHOOK YOMHOOK proc~trgtol->YOMHOOK iso_c_binding iso_c_binding proc~trgtol->iso_c_binding module~buffered_allocator_mod BUFFERED_ALLOCATOR_MOD proc~trgtol->module~buffered_allocator_mod module~eq_regions_mod~2 eq_regions_mod proc~trgtol->module~eq_regions_mod~2 module~openacc_ext openacc_ext proc~trgtol->module~openacc_ext module~parkind_ectrans PARKIND_ECTRANS proc~trgtol->module~parkind_ectrans module~pe2set_mod~2 PE2SET_MOD proc~trgtol->module~pe2set_mod~2 module~tpm_distr TPM_DISTR proc~trgtol->module~tpm_distr module~tpm_gen~2 TPM_GEN proc~trgtol->module~tpm_gen~2 module~tpm_stats TPM_STATS proc~trgtol->module~tpm_stats module~tpm_trans~2 TPM_TRANS proc~trgtol->module~tpm_trans~2 mpi_f08 mpi_f08 proc~trgtol->mpi_f08 module~buffered_allocator_mod->iso_c_binding module~buffered_allocator_mod->module~parkind_ectrans module~abort_trans_mod ABORT_TRANS_MOD module~buffered_allocator_mod->module~abort_trans_mod module~growing_allocator_mod GROWING_ALLOCATOR_MOD module~buffered_allocator_mod->module~growing_allocator_mod module~eq_regions_mod~2->module~parkind_ectrans module~openacc_ext->iso_c_binding iso_fortran_env iso_fortran_env module~openacc_ext->iso_fortran_env module~openacc_ext_type openacc_ext_type module~openacc_ext->module~openacc_ext_type openacc openacc module~openacc_ext->openacc PARKIND1 PARKIND1 module~parkind_ectrans->PARKIND1 EC_PARKIND EC_PARKIND module~tpm_distr->EC_PARKIND module~tpm_gen~2->module~parkind_ectrans module~tpm_trans~2->iso_c_binding module~tpm_trans~2->module~parkind_ectrans module~tpm_trans~2->module~growing_allocator_mod module~growing_allocator_mod->iso_c_binding module~openacc_ext_type->iso_c_binding

*** *TRGTOL * - transposition of grid point data from column structure to latitudinal. Reorganize data between grid point calculations and direct Fourier Transform

  • Interface. ---------- call *trgtol(...)

    1. Some initializations -------------------- Note we have either
    2. KVSETUV and KVSETSC (with PGP, which has u, v, and scalar fields), or
    3. KVSETUV, KVSETSC2, KVSETSC3A KVSETSC3B (with PGPUV, GP3A, PGP3B and PGP2) KVSETs are optionals. Their sizes canalso be inferred from KV_UV_G/KV_SCALARS_G (which should match PSPXXX and PGPXXX arrays) CALL ASSIGN_PTR(PREEL_REAL, GET_ALLOCATION(ALLOCATOR, HTRGTOL%HCOMBUFR_AND_REEL), size1, size2) this is safe-but-slow fallback for running without GPU-aware MPI

this is safe-but-slow fallback for running without GPU-aware MPI

Arguments

Type IntentOptional Attributes Name
type(BUFFERED_ALLOCATOR), intent(in) :: ALLOCATOR
type(TRGTOL_HANDLE), intent(in) :: HTRGTOL
real(kind=JPRBT), intent(out), POINTER :: PREEL_REAL(:)
integer(kind=JPIM), intent(in) :: KF_FS
integer(kind=JPIM), intent(in) :: KF_GP
integer(kind=JPIM), intent(in) :: KF_UV_G
integer(kind=JPIM), intent(in) :: KF_SCALARS_G
real(kind=JPRB), intent(in), optional :: PGP(:,:,:)
real(kind=JPRB), intent(in), optional :: PGPUV(:,:,:,:)
real(kind=JPRB), intent(in), optional :: PGP3A(:,:,:,:)
real(kind=JPRB), intent(in), optional :: PGP3B(:,:,:,:)
real(kind=JPRB), intent(in), optional :: PGP2(:,:,:)
integer(kind=JPIM), intent(in), optional :: KPTRGP(:)
integer(kind=JPIM), intent(in), optional :: KVSETUV(:)
integer(kind=JPIM), intent(in), optional :: KVSETSC(:)
integer(kind=JPIM), intent(in), optional :: KVSETSC3A(:)
integer(kind=JPIM), intent(in), optional :: KVSETSC3B(:)
integer(kind=JPIM), intent(in), optional :: KVSETSC2(:)

Calls

proc~~trgtol~~CallsGraph proc~trgtol TRGTOL dr_hook dr_hook proc~trgtol->dr_hook interface~assign_ptr ASSIGN_PTR proc~trgtol->interface~assign_ptr interface~ext_acc_pass ext_acc_pass proc~trgtol->interface~ext_acc_pass mpi_irecv mpi_irecv proc~trgtol->mpi_irecv mpi_isend mpi_isend proc~trgtol->mpi_isend mpl_barrier mpl_barrier proc~trgtol->mpl_barrier mpl_comm_oml mpl_comm_oml proc~trgtol->mpl_comm_oml mpl_wait mpl_wait proc~trgtol->mpl_wait oml_my_thread oml_my_thread proc~trgtol->oml_my_thread proc~ext_acc_create ext_acc_create proc~trgtol->proc~ext_acc_create proc~ext_acc_delete ext_acc_delete proc~trgtol->proc~ext_acc_delete proc~get_allocation GET_ALLOCATION proc~trgtol->proc~get_allocation proc~gstats_nvtx GSTATS_NVTX proc~trgtol->proc~gstats_nvtx proc~pe2set PE2SET proc~trgtol->proc~pe2set acc_create acc_create proc~ext_acc_create->acc_create acc_delete acc_delete proc~ext_acc_delete->acc_delete proc~abort_trans ABORT_TRANS proc~get_allocation->proc~abort_trans proc~pe2set->proc~abort_trans mpl_abort mpl_abort proc~abort_trans->mpl_abort sdl_srlabort sdl_srlabort proc~abort_trans->sdl_srlabort sdl_traceback sdl_traceback proc~abort_trans->sdl_traceback

Called by

proc~~trgtol~~CalledByGraph proc~trgtol TRGTOL proc~dir_trans_ctl DIR_TRANS_CTL proc~dir_trans_ctl->proc~trgtol proc~ftdir_ctl FTDIR_CTL proc~ftdir_ctl->proc~trgtol proc~ftinv_ctlad FTINV_CTLAD proc~ftinv_ctlad->proc~trgtol proc~gpnorm_trans GPNORM_TRANS proc~gpnorm_trans->proc~trgtol proc~gpnorm_trans_ctl GPNORM_TRANS_CTL proc~gpnorm_trans_ctl->proc~trgtol proc~dir_trans DIR_TRANS proc~dir_trans->proc~dir_trans_ctl proc~dir_trans_ctl~2 DIR_TRANS_CTL proc~dir_trans_ctl~2->proc~ftdir_ctl proc~dir_trans~2 DIR_TRANS proc~dir_trans~2->proc~dir_trans_ctl proc~gpnorm_trans~2 GPNORM_TRANS proc~gpnorm_trans~2->proc~gpnorm_trans_ctl proc~inv_trans_ctlad INV_TRANS_CTLAD proc~inv_trans_ctlad->proc~ftinv_ctlad proc~inv_transad~2 INV_TRANSAD proc~inv_transad~2->proc~inv_trans_ctlad