seefmm_mix Module

*** SEEFMM_MIX - Implementation of Simple Exponential Expansion FMM

  • Interface. ----------

Uses

  • module~~seefmm_mix~2~~UsesGraph module~seefmm_mix~2 seefmm_mix ecsort_mix ecsort_mix module~seefmm_mix~2->ecsort_mix module~parkind_ectrans PARKIND_ECTRANS module~seefmm_mix~2->module~parkind_ectrans module~wts500_mod~2 WTS500_MOD module~seefmm_mix~2->module~wts500_mod~2 PARKIND1 PARKIND1 module~parkind_ectrans->PARKIND1

Used by

  • module~~seefmm_mix~2~~UsedByGraph module~seefmm_mix~2 seefmm_mix module~tpm_flt TPM_FLT module~tpm_flt->module~seefmm_mix~2 module~tpm_flt~2 TPM_FLT module~tpm_flt~2->module~seefmm_mix~2 proc~cdmap CDMAP proc~cdmap->module~seefmm_mix~2 proc~cdmap->module~tpm_flt~2 proc~cdmap~2 CDMAP proc~cdmap~2->module~seefmm_mix~2 proc~cdmap~2->module~tpm_flt~2 proc~dealloc_resol DEALLOC_RESOL proc~dealloc_resol->module~seefmm_mix~2 proc~dealloc_resol->module~tpm_flt~2 proc~dealloc_resol~2 DEALLOC_RESOL proc~dealloc_resol~2->module~seefmm_mix~2 proc~dealloc_resol~2->module~tpm_flt~2 proc~suleg SULEG proc~suleg->module~seefmm_mix~2 proc~suleg->module~tpm_flt~2 proc~suleg~2 SULEG proc~suleg~2->module~seefmm_mix~2 proc~suleg~2->module~tpm_flt~2 proc~dir_trans DIR_TRANS proc~dir_trans->module~tpm_flt~2 proc~fsc~2 FSC proc~fsc~2->module~tpm_flt~2 proc~ftinv_ctl FTINV_CTL proc~ftinv_ctl->module~tpm_flt~2 proc~inv_trans INV_TRANS proc~inv_trans->module~tpm_flt~2 proc~ledirad LEDIRAD proc~ledirad->module~tpm_flt~2 proc~ledir~2 LEDIR proc~ledir~2->module~tpm_flt~2 proc~leinvad LEINVAD proc~leinvad->module~tpm_flt~2 proc~leinv~2 LEINV proc~leinv~2->module~tpm_flt~2 proc~ltdir~2 LTDIR proc~ltdir~2->module~tpm_flt~2 proc~ltinv LTINV proc~ltinv->module~tpm_flt~2 proc~ltinv_ctl LTINV_CTL proc~ltinv_ctl->module~tpm_flt~2 proc~ltinv~2 LTINV proc~ltinv~2->module~tpm_flt~2 proc~read_legpol READ_LEGPOL proc~read_legpol->module~tpm_flt~2 proc~read_legpol~2 READ_LEGPOL proc~read_legpol~2->module~tpm_flt~2 proc~set_resol SET_RESOL proc~set_resol->module~tpm_flt~2 proc~set_resol~2 SET_RESOL proc~set_resol~2->module~tpm_flt~2 proc~setup_dims SETUP_DIMS proc~setup_dims->module~tpm_flt~2 proc~setup_dims~2 SETUP_DIMS proc~setup_dims~2->module~tpm_flt~2 proc~setup_trans SETUP_TRANS proc~setup_trans->module~tpm_flt~2 proc~setup_trans~2 SETUP_TRANS proc~setup_trans~2->module~tpm_flt~2 proc~trans_end TRANS_END proc~trans_end->module~tpm_flt~2 proc~trans_end~2 TRANS_END proc~trans_end~2->module~tpm_flt~2 proc~trans_inq TRANS_INQ proc~trans_inq->module~tpm_flt~2 proc~trans_inq~2 TRANS_INQ proc~trans_inq~2->module~tpm_flt~2 proc~trans_pnm TRANS_PNM proc~trans_pnm->module~tpm_flt~2 proc~trans_pnm~2 TRANS_PNM proc~trans_pnm~2->module~tpm_flt~2 proc~write_legpol WRITE_LEGPOL proc~write_legpol->module~tpm_flt~2 proc~write_legpol~2 WRITE_LEGPOL proc~write_legpol~2->module~tpm_flt~2

Variables

Type Visibility Attributes Name Initial
integer(kind=jpim), public :: nfmm_lim = 200
integer(kind=jpim), public, parameter :: nquadEm14 = 28
integer(kind=jpim), public, parameter :: nquadEm10 = 20
integer(kind=jpim), public, parameter :: nquadEm07 = 14

Derived Types

type, public ::  fmm_type

Components

Type Visibility Attributes Name Initial
integer(kind=jpim), public :: nxy
integer(kind=jpim), public :: nx
integer(kind=jpim), public :: nquad
integer(kind=jpim), public :: ncik
real(kind=JPRBT), public :: rw(56)
real(kind=JPRBT), public, pointer :: rdexp(:,:)
integer(kind=jpim), public, pointer :: index(:)
integer(kind=jpim), public, pointer :: nclose(:)
real(kind=JPRBT), public, pointer :: cik(:)

Subroutines

public recursive subroutine setup_seefmm(kx, px, ky, py, ydfmm, pdiff)

*** SETUP_SEEFMM - Setup seefmm

Arguments

Type IntentOptional Attributes Name
integer(kind=jpim), intent(in) :: kx
real(kind=jprd), intent(in) :: px(:)
integer(kind=jpim), intent(in) :: ky
real(kind=JPRBT), intent(in) :: py(:)
type(fmm_type), intent(out) :: ydfmm
real(kind=JPRBT), intent(in), optional :: pdiff(:,:)

public subroutine free_seefmm(ydfmm)

*** FREE_SEEFMM - Release memory

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(inout) :: ydfmm

public recursive subroutine potf(kn, kx, ldxout, kquad, prw, pq, prdexp, kindex, kclosel, kcik, pcik, ptheta)

Arguments

Type IntentOptional Attributes Name
integer(kind=jpim), intent(in) :: kn
integer(kind=jpim), intent(in) :: kx
logical, intent(in) :: ldxout
integer(kind=jpim), intent(in) :: kquad
real(kind=JPRBT), intent(in) :: prw(:)
real(kind=JPRBT), intent(in) :: pq(:)
real(kind=JPRBT), intent(in) :: prdexp(:,:)
integer(kind=jpim), intent(in) :: kindex(:)
integer(kind=jpim), intent(in) :: kclosel(:)
integer(kind=jpim), intent(in) :: kcik
real(kind=JPRBT), intent(in) :: pcik(:)
real(kind=JPRBT), intent(out) :: ptheta(:)

public recursive subroutine seefmm_mulv(ydfmm, ldxout, pq, ptheta)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(in) :: ydfmm
logical, intent(in) :: ldxout
real(kind=JPRBT), intent(in) :: pq(:)
real(kind=JPRBT), intent(out) :: ptheta(:)

public recursive subroutine seefmm_mulm(ydfmm, km, kskip, ldxout, pq, ptheta)

Arguments

Type IntentOptional Attributes Name
type(fmm_type), intent(in) :: ydfmm
integer(kind=jpim), intent(in) :: km
integer(kind=jpim), intent(in) :: kskip
logical, intent(in) :: ldxout
real(kind=JPRBT), intent(in) :: pq(:,:)
real(kind=JPRBT), intent(out) :: ptheta(:,:)

public recursive subroutine potfm(kn, km, kskip, kx, ldxout, kquad, prw, pq, prdexp, kindex, kclosel, kcik, pcik, ptheta)

Arguments

Type IntentOptional Attributes Name
integer(kind=jpim), intent(in) :: kn
integer(kind=jpim), intent(in) :: km
integer(kind=jpim), intent(in) :: kskip
integer(kind=jpim), intent(in) :: kx
logical, intent(in) :: ldxout
integer(kind=jpim), intent(in) :: kquad
real(kind=JPRBT), intent(in) :: prw(:)
real(kind=JPRBT), intent(in) :: pq(:,:)
real(kind=JPRBT), intent(in) :: prdexp(:,:)
integer(kind=jpim), intent(in) :: kindex(:)
integer(kind=jpim), intent(in) :: kclosel(:)
integer(kind=jpim), intent(in) :: kcik
real(kind=JPRBT), intent(in) :: pcik(:)
real(kind=JPRBT), intent(out) :: ptheta(:,:)

public recursive subroutine suquad(kn, prange, kquad, prw, prt, pr)

Arguments

Type IntentOptional Attributes Name
integer(kind=jpim), intent(in) :: kn
real(kind=JPRBT), intent(in) :: prange
integer(kind=jpim), intent(in) :: kquad
real(kind=JPRBT), intent(out) :: prw(:)
real(kind=JPRBT), intent(out) :: prt(:)
real(kind=JPRBT), intent(out) :: pr

public recursive subroutine comb_xy(kx, px, ky, py, kxy, pxy, kindex)

$do jxy=1,kxy $ kindex(irank(jxy))=jxy $enddo

Arguments

Type IntentOptional Attributes Name
integer(kind=jpim), intent(in) :: kx
real(kind=jprd), intent(in) :: px(:)
integer(kind=jpim), intent(in) :: ky
real(kind=JPRBT), intent(in) :: py(:)
integer(kind=jpim), intent(in) :: kxy
real(kind=JPRBT), intent(out) :: pxy(:)
integer(kind=jpim), intent(out) :: kindex(:)

public recursive subroutine prepotf(kx, kxy, kquad, prw, prt, pr, pxy, kindex, prdexp, kclosel, pcik, knocik, pdiff)

Arguments

Type IntentOptional Attributes Name
integer(kind=jpim), intent(in) :: kx
integer(kind=jpim), intent(in) :: kxy
integer(kind=jpim), intent(in) :: kquad
real(kind=JPRBT), intent(in) :: prw(:)
real(kind=JPRBT), intent(in) :: prt(:)
real(kind=JPRBT), intent(in) :: pr
real(kind=JPRBT), intent(in) :: pxy(:)
integer(kind=jpim), intent(in) :: kindex(:)
real(kind=JPRBT), intent(out) :: prdexp(:,:)
integer(kind=jpim), intent(out) :: kclosel(:)
real(kind=JPRBT), intent(out) :: pcik(:)
integer(kind=jpim), intent(out) :: knocik
real(kind=JPRBT), intent(in), optional :: pdiff(:,:)