3 SUBROUTINE sumplatb(KDGSA,KDGL,KPROCA,KLOENG,LDSPLIT,&
4 &kmediap,krestm,kindic,klast)
65 INTEGER(KIND=JPIM),
INTENT(IN) :: KDGSA
66 INTEGER(KIND=JPIM),
INTENT(IN) :: KDGL
67 INTEGER(KIND=JPIM),
INTENT(IN) :: KPROCA
68 INTEGER(KIND=JPIM),
INTENT(IN) :: KLOENG(kdgsa:kdgl)
69 LOGICAL,
INTENT(IN) :: LDSPLIT
70 INTEGER(KIND=JPIM),
INTENT(OUT) :: KMEDIAP
71 INTEGER(KIND=JPIM),
INTENT(OUT) :: KRESTM
72 INTEGER(KIND=JPIM),
INTENT(OUT) :: KINDIC(kproca)
73 INTEGER(KIND=JPIM),
INTENT(OUT) :: KLAST(kproca)
76 INTEGER(KIND=JPIM) :: IPP1(kproca),ILAST1(kproca)
77 INTEGER(KIND=JPIM) :: IPP(kproca)
78 INTEGER(KIND=JPIM) :: IFIRST(kproca)
81 INTEGER(KIND=JPIM) :: ICOMP, IGL, IMAXI, IMAXIOL, IMEDIA, ITOT, JA, JGL,&
82 &ILAST,IREST,ILIMIT,IFRST
92 imedia = sum(kloeng(kdgsa:kdgl))
93 kmediap = imedia / kproca
94 IF (kmediap < kloeng(kdgl/2))
THEN
95 CALL abort_trans (
'SUMPLATB: KPROCA TOO BIG FOR THIS RESOLUTION')
97 krestm = imedia - kmediap * kproca
98 IF (krestm > 0) kmediap = kmediap + 1
107 IF (ja <= krestm .OR. krestm == 0)
THEN
116 IF(itot+kloeng(jgl) < icomp)
THEN
117 itot = itot+kloeng(jgl)
118 ELSEIF(itot+kloeng(jgl) == icomp)
THEN
124 irest = kloeng(jgl) -(icomp-itot)
137 imaxiol = huge(imaxiol)
147 IF (ipp1(ja) < ilimit .OR. ja == 1)
THEN
149 ipp1(ja) = ipp1(ja) + kloeng(jgl)
150 IF(ilast1(ja) == 0) ilast1(ja) = jgl
155 imaxi = max(imaxi,ipp1(ja))
157 IF(imaxi >= imaxiol)
EXIT
167 IF (klast(1) > 0) ifirst(1) = 1
169 IF (ipp(ja) > 0)
THEN
170 ifirst(ja) = klast(ja-1)+1
177 DO WHILE( .NOT.lldone )
181 IF (ipp(ja) > ipp(ja+1))
THEN
182 IF (ipp(ja)-ipp(ja+1) > ipp(ja+1) + 2 *&
183 &kloeng(klast(ja)) -ipp(ja) )
THEN
184 ipp(ja) = ipp(ja) - kloeng(klast(ja))
185 ipp(ja+1) = ipp(ja+1) + kloeng(klast(ja))
186 IF (klast(ja+1) == 0) klast(ja+1) = klast(ja)
187 ifirst(ja+1) = klast(ja)
188 klast(ja) = klast(ja) - 1
189 IF (klast(ja) == 0) ifirst(ja) = 0
193 IF( ifirst(ja+1) > 0 )
THEN
194 IF (ipp(ja+1)-ipp(ja) >= ipp(ja) + 2 *&
195 &kloeng(ifirst(ja+1)) -ipp(ja+1) )
THEN
196 ipp(ja) = ipp(ja) + kloeng(ifirst(ja+1))
197 ipp(ja+1) = ipp(ja+1) - kloeng(ifirst(ja+1))
198 klast(ja) = ifirst(ja+1)
199 IF (ifirst(ja) == 0) ifirst(ja) = klast(ja)
200 IF (klast(ja+1) == klast(ja))
THEN
204 ifirst(ja+1) = ifirst(ja+1) + 1
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine sumplatb(KDGSA, KDGL, KPROCA, KLOENG, LDSPLIT, KMEDIAP, KRESTM, KINDIC, KLAST)
subroutine abort_trans(CDTEXT)