LMDZ
sump_trans_preleg_mod.F90
Go to the documentation of this file.
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
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
!$Id mode_top_bound COMMON comconstr r
Definition: comconst.h:7
type(distr_type), pointer d
Definition: tpm_distr.F90:152
integer, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim) nerr
Definition: tpm_gen.F90:10
subroutine suwavedi(KSMAX, KTMAX, KPRTRW, KMYSETW, KASM0, KSPOLEGL, KPROCM, KUMPP, KSPEC, KSPEC2, KSPEC2MX, KPOSSP, KMYMS, KPTRMS, KALLMS, KDIM0G)
Definition: suwavedi_mod.F90:6
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
integer(kind=jpim) mysetw
Definition: tpm_distr.F90:21
integer(kind=jpim) nprtrw
Definition: tpm_distr.F90:14
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim) nout
Definition: tpm_gen.F90:9
subroutine abort_trans(CDTEXT)
integer(kind=jpim) nprintlev
Definition: tpm_gen.F90:11