64 INTEGER(KIND=JPIM),
INTENT(IN) :: KMEDIAP
65 INTEGER(KIND=JPIM),
INTENT(IN) :: KRESTM
69 INTEGER(KIND=JPIM) :: IXPTLAT(
r%ndgl), ILSTPTLAT(
r%ndgl)
70 INTEGER(KIND=JPIM) :: ICHK(
r%ndlon,
r%ndgl), ICOMBUF(
r%ndgl*
n_regions_ew*2)
71 INTEGER(KIND=JPIM) :: I1, I2, IBUFLEN, IDGLG, IDWIDE,&
72 &IGL, IGL1, IGL2, IGLOFF, IGPTA, IGPTOT, &
73 &IGPTPRSETS, IGPTS, IGPTSP, ILEN, ILRECV, &
74 &ILSEND, INPLAT, INXLAT, IPART, IPOS, &
75 &IPROCB, IPTSRE, IRECV, IPE, &
76 &IREST, ISEND, ITAG, JA, JB, JGL, JL, JNPTSRE
78 LOGICAL :: LLABORT, LLALLAT
81 REAL(KIND=JPRB) :: ZLAT, ZLAT1
82 REAL(KIND=JPRB) :: ZDIVID(
r%ndgl),ZXPTLAT(
r%ndgl)
100 igptot = sum(
g%NLOEN(1:
r%NDGL))
109 IF( ipe <= krestm .OR. krestm == 0)
THEN
110 igpta = igpta + kmediap
112 igpta = igpta + (kmediap-1)
119 IF( ipe <= krestm .OR. krestm == 0 )
THEN
120 igpts = igpts + kmediap
122 igpts = igpts + (kmediap-1)
141 ixptlat(1) = igpta-igptprsets+1
142 zxptlat(1) =
REAL(ixptlat(1))
147 zxptlat(jgl) = 1.0_jprb
165 zdivid(jgl)=
REAL(G%NLOEN(D%NFRSTLAT(MY_REGION_NS)+JGL-1),JPRB)
169 IF (jb <= irest)
THEN
179 IF (
my_region_ns <=
d%NAPSETS .AND.(ipart /= 2.OR.llallat))
THEN
182 IF (ixptlat(jgl) <= ilstptlat(jgl))
THEN
183 zlat1 = (zxptlat(jgl)-1.0_jprb)/zdivid(jgl)
184 zlat = min(zlat1,zlat)
193 IF (ixptlat(jgl) <= ilstptlat(jgl))
THEN
194 zlat1 = (zxptlat(jgl)-1.0_jprb)/zdivid(jgl)
195 zlat = min(zlat1,zlat)
204 IF (ixptlat(jgl) <= ilstptlat(jgl))
THEN
205 zlat1 = (zxptlat(jgl)-1.0_jprb)/zdivid(jgl)
206 IF (zlat1 < zlat)
THEN
214 IF (inxlat >= i1 .AND. inxlat <= i2)
THEN
215 IF (
d%NSTA(
d%NPTRFLOFF+inxlat,jb) == 0)
THEN
216 d%NSTA(
d%NPTRFLOFF+inxlat,jb) = ixptlat(inxlat)
218 d%NONL(
d%NPTRFLOFF+inxlat,jb) =
d%NONL(
d%NPTRFLOFF+inxlat,jb)+1
220 ixptlat(inxlat) = ixptlat(inxlat)+1
221 zxptlat(inxlat) =
REAL(IXPTLAT(INXLAT),JPRB)
241 IF( ipos > ibuflen )
THEN
242 CALL abort_trans(
' SUSTAONL: SEND BUFFER TOO SMALL FOR GLOBAL INFO')
248 CALL set2pe(isend,ja,jb,0,0)
253 CALL abor1(
' SUSTAONL: JUSTE APRES MPL_SEND')
259 igl1 =
d%NFRSTLAT(ja)
262 CALL set2pe(irecv,ja,jb,0,0)
264 ilen = (
d%NLSTLAT(ja)-
d%NFRSTLAT(ja)+1)*2
268 CALL abor1(
' SUSTAONL: JUSTE APRES MPL_RCV')
271 igl =
d%NPTRFRSTLAT(ja)+jgl-igl1
273 d%NSTA(igl,jb) = icombuf(ipos)
275 d%NONL(igl,jb) = icombuf(ipos)
288 icombuf(ipos) =
d%NSTA(
d%NPTRFLOFF+jgl,jb)
290 icombuf(ipos) =
d%NONL(
d%NPTRFLOFF+jgl,jb)
293 IF( ipos > ibuflen )
THEN
294 CALL abort_trans(
' SUSTAONL: SEND BUFFER TOO SMALL FOR GLOBAL INFO')
303 CALL abor1(
' SUSTAONL: JUSTE APRES MPL_SEND')
310 ilen = (
d%NLSTLAT(ja)-
d%NFRSTLAT(ja)+1)*
n_regions(ja)*2
314 CALL abor1(
' SUSTAONL: JUSTE APRES MPL_RCV')
315 igl1 =
d%NFRSTLAT(ja)
320 igl =
d%NPTRFRSTLAT(ja)+jgl-igl1
322 d%NSTA(igl,jb) = icombuf(ipos)
324 d%NONL(igl,jb) = icombuf(ipos)
344 igloff =
d%NPTRFRSTLAT(ja)
346 igl1 =
d%NFRSTLAT(ja)
349 igl = igloff+jgl-igl1
350 DO jl=
d%NSTA(igl,jb),
d%NSTA(igl,jb)+
d%NONL(igl,jb)-1
351 IF( ichk(jl,jgl) /= 1 )
THEN
352 WRITE(
nout,
'(" SUSTAONL : seta=",i4," setb=",i4,&
353 &" row=",I4," sta=",I4," INVALID GRID POINT")')&
355 WRITE(0,
'(" SUSTAONL : seta=",i4," setb=",i4,&
356 &" ROW=",I4," sta=",I4," INVALID GRID POINT")')&
367 IF( ichk(jl,jgl) /= 2 )
THEN
368 WRITE(
nout,
'(" SUSTAONL : row=",i4," sta=",i4,&
369 &" GRID POINT NOT ASSIGNED")') jgl,jl
375 WRITE(
nout,
'(" SUSTAONL : inconsistent partitioning")')
376 CALL abort_trans(
' SUSTAONL: inconsistent partitioning')
381 WRITE(
unit=
nout,fmt=
'('' OUTPUT FROM ROUTINE SUSTAONL '')')
383 WRITE(
unit=
nout,fmt=
'('' PARTITIONING INFORMATION '')')
386 WRITE(
unit=
nout,fmt=
'(17X," SETB=",32(1X,I3))') (jb,jb=1,iprocb)
390 igloff =
d%NPTRFRSTLAT(ja)
391 igl1 =
d%NFRSTLAT(ja)
395 WRITE(
unit=
nout,fmt=
'(" SETA=",I3," LAT=",I3," NSTA=",&
396 &32(1X,I3))') ja,jgl,(
d%NSTA(igl,jb),jb=1,iprocb)
397 WRITE(
unit=
nout,fmt=
'(" SETA=",I3," LAT=",I3," D%NONL=",&
398 &32(1X,I3))') ja,jgl,(
d%NONL(igl,jb),jb=1,iprocb)
!$Id mode_top_bound COMMON comconstr r
integer(kind=jpim) mtagpart
!$Id mode_top_bound COMMON comconstr g
integer(kind=jpim), public n_regions_ns
type(distr_type), pointer d
integer(kind=jpim), public my_region_ns
integer(kind=jpim) myproc
!$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
integer(kind=jpim), public my_region_ew
!$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
integer(kind=jpim), public n_regions_ew
subroutine sustaonl(KMEDIAP, KRESTM)
subroutine set2pe(KPE, KPRGPNS, KPRGPEW, KPRTRW, KPRTRV)
integer(kind=jpim), dimension(:), allocatable, public n_regions
subroutine abort_trans(CDTEXT)
!$Header!integer nvarmx s s unit
integer(kind=jpim) nprintlev