[1989] | 1 | MODULE SUMP_TRANS_PRELEG_MOD |
---|
| 2 | CONTAINS |
---|
| 3 | SUBROUTINE SUMP_TRANS_PRELEG |
---|
| 4 | |
---|
| 5 | ! Set up distributed environment for the transform package (part 1) |
---|
| 6 | |
---|
| 7 | USE PARKIND1 ,ONLY : JPIM ,JPRB |
---|
| 8 | |
---|
| 9 | USE TPM_GEN |
---|
| 10 | USE TPM_DIM |
---|
| 11 | USE TPM_DISTR |
---|
| 12 | |
---|
| 13 | USE SUWAVEDI_MOD |
---|
| 14 | USE ABORT_TRANS_MOD |
---|
| 15 | |
---|
| 16 | IMPLICIT NONE |
---|
| 17 | |
---|
| 18 | INTEGER(KIND=JPIM) :: JA,JJ,JM,JMLOC,ILATPP,IRESTL,IMLOC,IDT,INM |
---|
| 19 | |
---|
| 20 | INTEGER(KIND=JPIM) :: IMYMS(R%NSMAX+1),INUMTPP(NPRTRW) |
---|
| 21 | INTEGER(KIND=JPIM) :: IDUMI1,IDUMI2,IDUMI3 |
---|
| 22 | INTEGER(KIND=JPIM) :: IDUM2(0:R%NSMAX), IDUM3(NPRTRW+1), IDUM4(R%NSMAX+1) |
---|
| 23 | |
---|
| 24 | LOGICAL :: LLP1,LLP2 |
---|
| 25 | |
---|
| 26 | ! ------------------------------------------------------------------ |
---|
| 27 | |
---|
| 28 | LLP1 = NPRINTLEV>0 |
---|
| 29 | LLP2 = NPRINTLEV>1 |
---|
| 30 | IF(LLP1) WRITE(NOUT,*) '=== ENTER ROUTINE SUMP_TRANS_PRELEG ===' |
---|
| 31 | |
---|
| 32 | !* 1. Initialize partitioning of wave numbers to PEs ! |
---|
| 33 | ! ---------------------------------------------- |
---|
| 34 | |
---|
| 35 | ALLOCATE(D%NASM0(0:R%NSMAX)) |
---|
| 36 | IF(LLP2)WRITE(NOUT,9) 'D%NASM0 ',SIZE(D%NASM0 ),SHAPE(D%NASM0 ) |
---|
| 37 | ALLOCATE(D%NATM0(0:R%NTMAX)) |
---|
| 38 | IF(LLP2)WRITE(NOUT,9) 'D%NATM0 ',SIZE(D%NATM0 ),SHAPE(D%NATM0 ) |
---|
| 39 | ALLOCATE(D%NUMPP(NPRTRW)) |
---|
| 40 | IF(LLP2)WRITE(NOUT,9) 'D%NUMPP ',SIZE(D%NUMPP ),SHAPE(D%NUMPP ) |
---|
| 41 | ALLOCATE(D%NPOSSP(NPRTRW+1)) |
---|
| 42 | IF(LLP2)WRITE(NOUT,9) 'D%NPOSSP',SIZE(D%NPOSSP ),SHAPE(D%NPOSSP ) |
---|
| 43 | ALLOCATE(D%NPROCM(0:R%NSMAX)) |
---|
| 44 | IF(LLP2)WRITE(NOUT,9) 'D%NPROCM',SIZE(D%NPROCM ),SHAPE(D%NPROCM ) |
---|
| 45 | ALLOCATE(D%NPTRMS(NPRTRW)) |
---|
| 46 | IF(LLP2)WRITE(NOUT,9) 'D%NPTRMS ',SIZE(D%NPTRMS ),SHAPE(D%NPTRMS ) |
---|
| 47 | ALLOCATE(D%NALLMS(R%NSMAX+1)) |
---|
| 48 | IF(LLP2)WRITE(NOUT,9) 'D%NALLMS ',SIZE(D%NALLMS ),SHAPE(D%NALLMS ) |
---|
| 49 | ALLOCATE(D%NDIM0G(0:R%NSMAX)) |
---|
| 50 | IF(LLP2)WRITE(NOUT,9) 'D%NDIM0G ',SIZE(D%NDIM0G ),SHAPE(D%NDIM0G ) |
---|
| 51 | |
---|
| 52 | CALL SUWAVEDI(R%NSMAX,R%NTMAX,NPRTRW,MYSETW,& |
---|
| 53 | &D%NASM0,D%NSPOLEGL,D%NPROCM,D%NUMPP,& |
---|
| 54 | &D%NSPEC,D%NSPEC2,D%NSPEC2MX,D%NPOSSP,IMYMS,& |
---|
| 55 | &D%NPTRMS,D%NALLMS,D%NDIM0G) |
---|
| 56 | CALL SUWAVEDI(R%NTMAX,R%NTMAX,NPRTRW,MYSETW,& |
---|
| 57 | &KASM0=D%NATM0,KUMPP=INUMTPP,KSPEC2=D%NTPEC2) |
---|
| 58 | |
---|
| 59 | D%NUMP = D%NUMPP (MYSETW) |
---|
| 60 | ALLOCATE(D%MYMS(D%NUMP)) |
---|
| 61 | IF(LLP2)WRITE(NOUT,9) 'D%MYMS ',SIZE(D%MYMS ),SHAPE(D%MYMS ) |
---|
| 62 | D%MYMS(:) = IMYMS(1:D%NUMP) |
---|
| 63 | D%NUMTP = INUMTPP(MYSETW) |
---|
| 64 | |
---|
| 65 | IF (D%NUMP == 0) THEN |
---|
| 66 | WRITE(NERR,'("SUMP: NPRTRW TOO LARGE FOR SPECTRAL RESOLUTION",/,& |
---|
| 67 | &"NOTE MAX VALUE FOR Tnnn CASE IS nnn+1",/,& |
---|
| 68 | &"MORE PROCESSORS CAN BE USED BY INCREASING NPRTRV")') |
---|
| 69 | CALL ABORT_TRANS('NPRTRW TOO LARGE FOR SPECTRAL RESOLUTION') |
---|
| 70 | ENDIF |
---|
| 71 | |
---|
| 72 | ALLOCATE(D%NLATLS(NPRTRW)) |
---|
| 73 | IF(LLP2)WRITE(NOUT,9) 'D%NLATLS',SIZE(D%NLATLS ),SHAPE(D%NLATLS ) |
---|
| 74 | ALLOCATE(D%NLATLE(NPRTRW)) |
---|
| 75 | IF(LLP2)WRITE(NOUT,9) 'D%NLATLE',SIZE(D%NLATLE ),SHAPE(D%NLATLE ) |
---|
| 76 | |
---|
| 77 | D%NLATLS(:) = 9999 |
---|
| 78 | D%NLATLE(:) = -1 |
---|
| 79 | |
---|
| 80 | ILATPP = R%NDGNH/NPRTRW |
---|
| 81 | IRESTL = R%NDGNH-NPRTRW*ILATPP |
---|
| 82 | DO JA=1,NPRTRW |
---|
| 83 | IF (JA > IRESTL) THEN |
---|
| 84 | D%NLATLS(JA) = IRESTL*(ILATPP+1)+(JA-IRESTL-1)*ILATPP+1 |
---|
| 85 | D%NLATLE(JA) = D%NLATLS(JA)+ILATPP-1 |
---|
| 86 | ELSE |
---|
| 87 | D%NLATLS(JA) = (JA-1)*(ILATPP+1)+1 |
---|
| 88 | D%NLATLE(JA) = D%NLATLS(JA)+ILATPP |
---|
| 89 | ENDIF |
---|
| 90 | ENDDO |
---|
| 91 | |
---|
| 92 | IF (LLP1) THEN |
---|
| 93 | WRITE(NOUT,'('' D%NLATLS '')') |
---|
| 94 | WRITE(NOUT,'(20(1X,I4))')(D%NLATLS(JJ),JJ=1,NPRTRW) |
---|
| 95 | WRITE(NOUT,'('' D%NLATLE '')') |
---|
| 96 | WRITE(NOUT,'(20(1X,I4))')(D%NLATLE(JJ),JJ=1,NPRTRW) |
---|
| 97 | ENDIF |
---|
| 98 | |
---|
| 99 | ALLOCATE(D%NPMT(0:R%NSMAX)) |
---|
| 100 | IF(LLP2)WRITE(NOUT,9) 'D%NPMT ',SIZE(D%NPMT ),SHAPE(D%NPMT ) |
---|
| 101 | ALLOCATE(D%NPMS(0:R%NSMAX)) |
---|
| 102 | IF(LLP2)WRITE(NOUT,9) 'D%NPMS ',SIZE(D%NPMS ),SHAPE(D%NPMS ) |
---|
| 103 | ALLOCATE(D%NPMG(0:R%NSMAX)) |
---|
| 104 | IF(LLP2)WRITE(NOUT,9) 'D%NPMG ',SIZE(D%NPMG ),SHAPE(D%NPMG ) |
---|
| 105 | IDT = R%NTMAX-R%NSMAX |
---|
| 106 | INM = 0 |
---|
| 107 | DO JMLOC=1,D%NUMP |
---|
| 108 | IMLOC = D%MYMS(JMLOC) |
---|
| 109 | D%NPMT(IMLOC) = INM |
---|
| 110 | D%NPMS(IMLOC) = INM+IDT |
---|
| 111 | INM = INM+R%NTMAX+2-IMLOC |
---|
| 112 | ENDDO |
---|
| 113 | INM = 0 |
---|
| 114 | DO JM=0,R%NSMAX |
---|
| 115 | D%NPMG(JM) = INM |
---|
| 116 | INM = INM+R%NTMAX+2-JM |
---|
| 117 | ENDDO |
---|
| 118 | |
---|
| 119 | D%NLEI3D = (R%NLEI3-1)/NPRTRW+1 |
---|
| 120 | |
---|
| 121 | ! ------------------------------------------------------------------ |
---|
| 122 | 9 FORMAT(1X,'ARRAY ',A10,' ALLOCATED ',8I8) |
---|
| 123 | |
---|
| 124 | END SUBROUTINE SUMP_TRANS_PRELEG |
---|
| 125 | END MODULE SUMP_TRANS_PRELEG_MOD |
---|