Ignore:
Timestamp:
Jun 7, 2007, 12:01:52 PM (17 years ago)
Author:
Laurent Fairhead
Message:

Suite du merge entre la version et la HEAD: quelques modifications
de Yann sur le

LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/phyetat0.F

    r766 r776  
    1515     .           t_ancien_p,q_ancien_p,ancien_ok_p, rnebcon_p, ratqs_p,
    1616     .           clwcon_p,run_off_lic_0_p)
    17       USE dimphy,klon=>klon2,klon2=>klon,zmasq_p=>zmasq
     17      USE dimphy
     18      USE mod_grid_phy_lmdz
     19      USE mod_phys_lmdz_para
    1820      USE iophy
    1921      IMPLICIT none
     
    3335      REAL dtime
    3436      INTEGER radpas
     37      REAL rlat_p(klon), rlon_p(klon)
    3538      REAL rlat_p(klon2), rlon_p(klon2)
    3639      REAL co2_ppm_etat0
    3740      REAL solaire_etat0
    38       REAL tsol_p(klon2,nbsrf)
    39       REAL tsoil_p(klon2,nsoilmx,nbsrf)
    40       REAL tslab_p(klon2), seaice_p(klon2)
    41       REAL qsurf_p(klon2,nbsrf)
    42       REAL qsol_p(klon2)
    43       REAL snow_p(klon2,nbsrf)
    44       REAL albe_p(klon2,nbsrf)
     41      REAL tsol_p(klon,nbsrf)
     42      REAL tsoil_p(klon,nsoilmx,nbsrf)
     43      REAL tslab_p(klon), seaice_p(klon)
     44      REAL qsurf_p(klon,nbsrf)
     45      REAL qsol_p(klon)
     46      REAL snow_p(klon,nbsrf)
     47      REAL albe_p(klon,nbsrf)
    4548cIM BEG alblw
    46       REAL alblw_p(klon2,nbsrf)
     49      REAL alblw_p(klon,nbsrf)
    4750cIM END alblw
    48       REAL evap_p(klon2,nbsrf)
    49       REAL radsol_p(klon2)
    50       REAL rain_fall_p(klon2)
    51       REAL snow_fall_p(klon2)
    52       REAL sollw_p(klon2)
    53       real solsw_p(klon2)
    54       real fder_p(klon2)
    55       REAL frugs_p(klon2,nbsrf)
    56       REAL agesno_p(klon2,nbsrf)
    57       REAL zmea_p(klon2)
    58       REAL zstd_p(klon2)
    59       REAL zsig_p(klon2)
    60       REAL zgam_p(klon2)
    61       REAL zthe_p(klon2)
    62       REAL zpic_p(klon2)
    63       REAL zval_p(klon2)
    64       REAL rugsrel_p(klon2)
    65       REAL pctsrf_p(klon2, nbsrf)
    66       REAL run_off_lic_0_p(klon2)
     51      REAL evap_p(klon,nbsrf)
     52      REAL radsol_p(klon)
     53      REAL rain_fall_p(klon)
     54      REAL snow_fall_p(klon)
     55      REAL sollw_p(klon)
     56      real solsw_p(klon)
     57      real fder_p(klon)
     58      REAL frugs_p(klon,nbsrf)
     59      REAL agesno_p(klon,nbsrf)
     60      REAL zmea_p(klon)
     61      REAL zstd_p(klon)
     62      REAL zsig_p(klon)
     63      REAL zgam_p(klon)
     64      REAL zthe_p(klon)
     65      REAL zpic_p(klon)
     66      REAL zval_p(klon)
     67      REAL rugsrel_p(klon)
     68      REAL pctsrf_p(klon, nbsrf)
     69      REAL run_off_lic_0_p(klon)
    6770     
    68       REAL t_ancien_p(klon2,klev), q_ancien_p(klon2,klev)
    69       real rnebcon_p(klon2,klev),clwcon_p(klon2,klev)
    70       real ratqs_p(klon2,klev)
     71      REAL t_ancien_p(klon,klev), q_ancien_p(klon,klev)
     72      real rnebcon_p(klon,klev),clwcon_p(klon,klev)
     73      real ratqs_p(klon,klev)
    7174      LOGICAL,SAVE ::  ancien_ok
    7275      LOGICAL ::  ancien_ok_p
    7376     
    74       REAL zmasq(klon)
    75       REAL rlat(klon), rlon(klon)
    76       REAL tsol(klon,nbsrf)
    77       REAL tsoil(klon,nsoilmx,nbsrf)
     77      REAL zmasq_glo(klon_glo)
     78      REAL rlat(klon_glo), rlon(klon_glo)
     79      REAL tsol(klon_glo,nbsrf)
     80      REAL tsoil(klon_glo,nsoilmx,nbsrf)
    7881cIM "slab" ocean
    79       REAL tslab(klon), seaice(klon)
    80       REAL qsurf(klon,nbsrf)
    81       REAL qsol(klon)
    82       REAL snow(klon,nbsrf)
    83       REAL albe(klon,nbsrf)
    84       REAL alblw(klon,nbsrf)
    85       REAL evap(klon,nbsrf)
    86       REAL radsol(klon)
    87       REAL rain_fall(klon)
    88       REAL snow_fall(klon)
    89       REAL sollw(klon)
    90       real solsw(klon)
    91       real fder(klon)
    92       REAL frugs(klon,nbsrf)
    93       REAL agesno(klon,nbsrf)
    94       REAL zmea(klon)
    95       REAL zstd(klon)
    96       REAL zsig(klon)
    97       REAL zgam(klon)
    98       REAL zthe(klon)
    99       REAL zpic(klon)
    100       REAL zval(klon)
    101       REAL rugsrel(klon)
    102       REAL pctsrf(klon, nbsrf)
    103       REAL fractint(klon)
    104       REAL run_off_lic_0(klon)
    105       REAL t_ancien(klon,klev)
    106       REAL q_ancien(klon,klev)
    107       real rnebcon(klon,klev)
    108       real clwcon(klon,klev)
    109       real ratqs(klon,klev)
    110 
    111       REAL,ALLOCATABLE,SAVE :: zmasq_mpi(:)
    112       REAL,ALLOCATABLE,SAVE :: rlat_mpi(:), rlon_mpi(:)
    113       REAL,ALLOCATABLE,SAVE :: tsol_mpi(:,:)
    114       REAL,ALLOCATABLE,SAVE :: tsoil_mpi(:,:,:)
    115       REAL,ALLOCATABLE,SAVE :: tslab_mpi(:)
    116       REAL,ALLOCATABLE,SAVE :: seaice_mpi(:)
    117       REAL,ALLOCATABLE,SAVE :: qsurf_mpi(:,:)
    118       REAL,ALLOCATABLE,SAVE :: qsol_mpi(:)
    119       REAL,ALLOCATABLE,SAVE :: snow_mpi(:,:)
    120       REAL,ALLOCATABLE,SAVE :: albe_mpi(:,:)
    121       REAL,ALLOCATABLE,SAVE :: alblw_mpi(:,:)
    122       REAL,ALLOCATABLE,SAVE :: evap_mpi(:,:)
    123       REAL,ALLOCATABLE,SAVE :: radsol_mpi(:)
    124       REAL,ALLOCATABLE,SAVE :: rain_fall_mpi(:)
    125       REAL,ALLOCATABLE,SAVE :: snow_fall_mpi(:)
    126       REAL,ALLOCATABLE,SAVE :: sollw_mpi(:)
    127       real,ALLOCATABLE,SAVE :: solsw_mpi(:)
    128       real,ALLOCATABLE,SAVE :: fder_mpi(:)
    129       REAL,ALLOCATABLE,SAVE :: frugs_mpi(:,:)
    130       REAL,ALLOCATABLE,SAVE :: agesno_mpi(:,:)
    131       REAL,ALLOCATABLE,SAVE :: zmea_mpi(:)
    132       REAL,ALLOCATABLE,SAVE :: zstd_mpi(:)
    133       REAL,ALLOCATABLE,SAVE :: zsig_mpi(:)
    134       REAL,ALLOCATABLE,SAVE :: zgam_mpi(:)
    135       REAL,ALLOCATABLE,SAVE :: zthe_mpi(:)
    136       REAL,ALLOCATABLE,SAVE :: zpic_mpi(:)
    137       REAL,ALLOCATABLE,SAVE :: zval_mpi(:)
    138       REAL,ALLOCATABLE,SAVE :: rugsrel_mpi(:)
    139       REAL,ALLOCATABLE,SAVE :: pctsrf_mpi(:, :)
    140       REAL,ALLOCATABLE,SAVE :: run_off_lic_0_mpi(:)
    141       REAL,ALLOCATABLE,SAVE :: t_ancien_mpi(:,:)
    142       REAL,ALLOCATABLE,SAVE :: q_ancien_mpi(:,:)
    143       real,ALLOCATABLE,SAVE :: rnebcon_mpi(:,:)
    144       real,ALLOCATABLE,SAVE :: clwcon_mpi(:,:)
    145       real,ALLOCATABLE,SAVE :: ratqs_mpi(:,:)
    146            
     82      REAL tslab(klon_glo), seaice(klon_glo)
     83      REAL qsurf(klon_glo,nbsrf)
     84      REAL qsol(klon_glo)
     85      REAL snow(klon_glo,nbsrf)
     86      REAL albe(klon_glo,nbsrf)
     87      REAL alblw(klon_glo,nbsrf)
     88      REAL evap(klon_glo,nbsrf)
     89      REAL radsol(klon_glo)
     90      REAL rain_fall(klon_glo)
     91      REAL snow_fall(klon_glo)
     92      REAL sollw(klon_glo)
     93      real solsw(klon_glo)
     94      real fder(klon_glo)
     95      REAL frugs(klon_glo,nbsrf)
     96      REAL agesno(klon_glo,nbsrf)
     97      REAL zmea(klon_glo)
     98      REAL zstd(klon_glo)
     99      REAL zsig(klon_glo)
     100      REAL zgam(klon_glo)
     101      REAL zthe(klon_glo)
     102      REAL zpic(klon_glo)
     103      REAL zval(klon_glo)
     104      REAL rugsrel(klon_glo)
     105      REAL pctsrf(klon_glo, nbsrf)
     106      REAL fractint(klon_glo)
     107      REAL run_off_lic_0(klon_glo)
     108      REAL t_ancien(klon_glo,klev)
     109      REAL q_ancien(klon_glo,klev)
     110      real rnebcon(klon_glo,klev)
     111      real clwcon(klon_glo,klev)
     112      real ratqs(klon_glo,klev)
    147113
    148114      CHARACTER*6 ocean
     
    172138
    173139c$OMP MASTER
    174       print*,'fichnom ',fichnom
    175       ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
    176       IF (ierr.NE.NF_NOERR) THEN
    177         write(6,*)' Pb d''ouverture du fichier '//fichnom
    178         write(6,*)' ierr = ', ierr
    179         CALL ABORT
     140      IF (is_mpi_root) THEN
     141        print*,'fichnom ',fichnom
     142        ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
     143        IF (ierr.NE.NF_NOERR) THEN
     144          write(6,*)' Pb d''ouverture du fichier '//fichnom
     145          write(6,*)' ierr = ', ierr
     146          CALL ABORT
     147        ENDIF
    180148      ENDIF
    181149c$OMP END MASTER
     
    184152c
    185153c$OMP MASTER
     154      IF (is_mpi_root) THEN
     155     
    186156      ierr = NF_INQ_VARID (nid, "controle", nvarid)
    187157      IF (ierr.NE.NF_NOERR) THEN
     
    198168         CALL abort
    199169      ENDIF
     170      ENDIF
     171
    200172c$OMP END MASTER
    201 c$OMP BARRIER
    202173       
    203        DO i = 1, length
    204          tab_cntrl( i ) = tab_cntrl_omp( i )
    205        ENDDO
     174       CALL bcast(tab_cntrl)
    206175       
    207176c
     
    281250c
    282251c$OMP MASTER
     252      IF (is_mpi_root) THEN
     253     
    283254      ierr = NF_INQ_VARID (nid, "latitude", nvarid)
    284255      IF (ierr.NE.NF_NOERR) THEN
     
    321292      IF (ierr .EQ.  NF_NOERR) THEN
    322293#ifdef NC_DOUBLE
    323           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmasq)
    324 #else
    325           ierr = NF_GET_VAR_REAL(nid, nvarid, zmasq)
     294          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmasq_glo)
     295#else
     296          ierr = NF_GET_VAR_REAL(nid, nvarid, zmasq_glo)
    326297#endif
    327298          IF (ierr.NE.NF_NOERR) THEN
     
    348319      IF (ierr .EQ.  NF_NOERR) THEN
    349320#ifdef NC_DOUBLE
    350           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_ter))
    351 #else
    352           ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon,is_ter))
     321          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,       
     322     .                             pctsrf(1 : klon_glo,is_ter))
     323#else
     324          ierr = NF_GET_VAR_REAL(nid, nvarid,
     325     .                           pctsrf(1 : klon_glo,is_ter))
    353326#endif
    354327          IF (ierr.NE.NF_NOERR) THEN
     
    367340      IF (ierr .EQ.  NF_NOERR) THEN
    368341#ifdef NC_DOUBLE
    369           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_lic))
    370 #else
    371           ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon,is_lic))
     342          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
     343     .                             pctsrf(1 : klon_glo,is_lic))
     344#else
     345          ierr = NF_GET_VAR_REAL(nid, nvarid,
     346     .                           pctsrf(1 : klon_glo,is_lic))
    372347#endif
    373348          IF (ierr.NE.NF_NOERR) THEN
     
    385360      IF (ierr .EQ.  NF_NOERR) THEN
    386361#ifdef NC_DOUBLE
    387           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_oce))
    388 #else
    389           ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon,is_oce))
     362          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
     363     .                             pctsrf(1 : klon_glo,is_oce))
     364#else
     365          ierr = NF_GET_VAR_REAL(nid, nvarid,
     366     .                           pctsrf(1 : klon_glo,is_oce))
    390367#endif
    391368          IF (ierr.NE.NF_NOERR) THEN
     
    404381      IF (ierr .EQ.  NF_NOERR) THEN
    405382#ifdef NC_DOUBLE
    406           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_sic))
    407 #else
    408           ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon, is_sic))
     383          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
     384     .                             pctsrf(1 : klon_glo,is_sic))
     385#else
     386          ierr = NF_GET_VAR_REAL(nid, nvarid,
     387     .                           pctsrf(1 : klon_glo, is_sic))
    409388#endif
    410389          IF (ierr.NE.NF_NOERR) THEN
     
    420399C  Verification de l'adequation entre le masque et les sous-surfaces
    421400C
    422       fractint( 1 : klon) = pctsrf(1 : klon, is_ter)
    423      $    + pctsrf(1 : klon, is_lic)
    424       DO i = 1 , klon
    425         IF ( abs(fractint(i) - zmasq(i) ) .GT. EPSFRA ) THEN
     401      fractint( 1 : klon_glo) = pctsrf(1 : klon_glo, is_ter)
     402     $    + pctsrf(1 : klon_glo, is_lic)
     403      DO i = 1 , klon_glo
     404        IF ( abs(fractint(i) - zmasq_glo(i) ) .GT. EPSFRA ) THEN
    426405            WRITE(*,*) 'phyetat0: attention fraction terre pas ',
    427      $          'coherente ', i, zmasq(i), pctsrf(i, is_ter)
     406     $          'coherente ', i, zmasq_glo(i), pctsrf(i, is_ter)
    428407     $          ,pctsrf(i, is_lic)
    429408        ENDIF
    430409      END DO
    431       fractint (1 : klon) =  pctsrf(1 : klon, is_oce)
    432      $    + pctsrf(1 : klon, is_sic)
    433       DO i = 1 , klon
    434         IF ( abs( fractint(i) - (1. - zmasq(i))) .GT. EPSFRA ) THEN
     410      fractint (1 : klon_glo) =  pctsrf(1 : klon_glo, is_oce)
     411     $    + pctsrf(1 : klon_glo, is_sic)
     412      DO i = 1 , klon_glo
     413        IF ( abs( fractint(i) - (1. - zmasq_glo(i))) .GT. EPSFRA ) THEN
    435414            WRITE(*,*) 'phyetat0 attention fraction ocean pas ',
    436      $          'coherente ', i, zmasq(i) , pctsrf(i, is_oce)
     415     $          'coherente ', i, zmasq_glo(i) , pctsrf(i, is_oce)
    437416     $          ,pctsrf(i, is_sic)
    438417        ENDIF
     
    470449           xmin = 1.0E+20
    471450           xmax = -1.0E+20
    472            DO i = 1, klon
     451           DO i = 1, klon_glo
    473452              xmin = MIN(tsol(i,nsrf),xmin)
    474453              xmax = MAX(tsol(i,nsrf),xmax)
     
    490469         xmin = 1.0E+20
    491470         xmax = -1.0E+20
    492          DO i = 1, klon
     471         DO i = 1, klon_glo
    493472            xmin = MIN(tsol(i,1),xmin)
    494473            xmax = MAX(tsol(i,1),xmax)
     
    496475         PRINT*,'Temperature du sol <TS>', xmin, xmax
    497476         DO nsrf = 2, nbsrf
    498          DO i = 1, klon
     477         DO i = 1, klon_glo
    499478            tsol(i,nsrf) = tsol(i,1)
    500479         ENDDO
     
    516495         PRINT*, "phyetat0: Le champ <Tsoil"//str7//"> est absent"
    517496         PRINT*, "          Il prend donc la valeur de surface"
    518          DO i=1, klon
     497         DO i=1, klon_glo
    519498             tsoil(i,isoil,nsrf)=tsol(i,nsrf)
    520499         ENDDO
     
    554533        xmin = 1.0E+20
    555534        xmax = -1.0E+20
    556         DO i = 1, klon
     535        DO i = 1, klon_glo
    557536          xmin = MIN(tslab(i),xmin)
    558537          xmax = MAX(tslab(i),xmax)
     
    578557        xmin = 1.0E+20
    579558        xmax = -1.0E+20
    580         DO i = 1, klon
     559        DO i = 1, klon_glo
    581560          xmin = MIN(seaice(i),xmin)
    582561          xmax = MAX(seaice(i),xmax)
     
    617596           xmin = 1.0E+20
    618597           xmax = -1.0E+20
    619            DO i = 1, klon
     598           DO i = 1, klon_glo
    620599              xmin = MIN(qsurf(i,nsrf),xmin)
    621600              xmax = MAX(qsurf(i,nsrf),xmax)
     
    637616         xmin = 1.0E+20
    638617         xmax = -1.0E+20
    639          DO i = 1, klon
     618         DO i = 1, klon_glo
    640619            xmin = MIN(qsurf(i,1),xmin)
    641620            xmax = MAX(qsurf(i,1),xmax)
     
    643622         PRINT*,'Humidite pres du sol <QS>', xmin, xmax
    644623         DO nsrf = 2, nbsrf
    645          DO i = 1, klon
     624         DO i = 1, klon_glo
    646625            qsurf(i,nsrf) = qsurf(i,1)
    647626         ENDDO
     
    670649      xmin = 1.0E+20
    671650      xmax = -1.0E+20
    672       DO i = 1, klon
     651      DO i = 1, klon_glo
    673652        xmin = MIN(qsol(i),xmin)
    674653        xmax = MAX(qsol(i),xmax)
     
    704683           xmin = 1.0E+20
    705684           xmax = -1.0E+20
    706            DO i = 1, klon
     685           DO i = 1, klon_glo
    707686              xmin = MIN(snow(i,nsrf),xmin)
    708687              xmax = MAX(snow(i,nsrf),xmax)
     
    724703         xmin = 1.0E+20
    725704         xmax = -1.0E+20
    726          DO i = 1, klon
     705         DO i = 1, klon_glo
    727706            xmin = MIN(snow(i,1),xmin)
    728707            xmax = MAX(snow(i,1),xmax)
     
    730709         PRINT*,'Neige du sol <SNOW>', xmin, xmax
    731710         DO nsrf = 2, nbsrf
    732          DO i = 1, klon
     711         DO i = 1, klon_glo
    733712            snow(i,nsrf) = snow(i,1)
    734713         ENDDO
     
    764743           xmin = 1.0E+20
    765744           xmax = -1.0E+20
    766            DO i = 1, klon
     745           DO i = 1, klon_glo
    767746              xmin = MIN(albe(i,nsrf),xmin)
    768747              xmax = MAX(albe(i,nsrf),xmax)
     
    784763         xmin = 1.0E+20
    785764         xmax = -1.0E+20
    786          DO i = 1, klon
     765         DO i = 1, klon_glo
    787766            xmin = MIN(albe(i,1),xmin)
    788767            xmax = MAX(albe(i,1),xmax)
     
    790769         PRINT*,'Neige du sol <ALBE>', xmin, xmax
    791770         DO nsrf = 2, nbsrf
    792          DO i = 1, klon
     771         DO i = 1, klon_glo
    793772            albe(i,nsrf) = albe(i,1)
    794773         ENDDO
     
    805784         PRINT*, '          Mais je vais prendre ALBE**'
    806785         DO nsrf = 1, nbsrf
    807            DO i = 1, klon
     786           DO i = 1, klon_glo
    808787             alblw(i,nsrf) = albe(i,nsrf)
    809788           ENDDO
     
    823802         xmin = 1.0E+20
    824803         xmax = -1.0E+20
    825          DO i = 1, klon
     804         DO i = 1, klon_glo
    826805            xmin = MIN(alblw(i,1),xmin)
    827806            xmax = MAX(alblw(i,1),xmax)
     
    829808         PRINT*,'Neige du sol <ALBLW>', xmin, xmax
    830809         DO nsrf = 2, nbsrf
    831          DO i = 1, klon
     810         DO i = 1, klon_glo
    832811            alblw(i,nsrf) = alblw(i,1)
    833812         ENDDO
     
    863842           xmin = 1.0E+20
    864843           xmax = -1.0E+20
    865            DO i = 1, klon
     844           DO i = 1, klon_glo
    866845              xmin = MIN(evap(i,nsrf),xmin)
    867846              xmax = MAX(evap(i,nsrf),xmax)
     
    883862         xmin = 1.0E+20
    884863         xmax = -1.0E+20
    885          DO i = 1, klon
     864         DO i = 1, klon_glo
    886865            xmin = MIN(evap(i,1),xmin)
    887866            xmax = MAX(evap(i,1),xmax)
     
    889868         PRINT*,'Evap du sol <EVAP>', xmin, xmax
    890869         DO nsrf = 2, nbsrf
    891          DO i = 1, klon
     870         DO i = 1, klon_glo
    892871            evap(i,nsrf) = evap(i,1)
    893872         ENDDO
     
    913892      xmin = 1.0E+20
    914893      xmax = -1.0E+20
    915       DO i = 1, klon
     894      DO i = 1, klon_glo
    916895         xmin = MIN(rain_fall(i),xmin)
    917896         xmax = MAX(rain_fall(i),xmax)
     
    937916      xmin = 1.0E+20
    938917      xmax = -1.0E+20
    939       DO i = 1, klon
     918      DO i = 1, klon_glo
    940919         xmin = MIN(snow_fall(i),xmin)
    941920         xmax = MAX(snow_fall(i),xmax)
     
    963942      xmin = 1.0E+20
    964943      xmax = -1.0E+20
    965       DO i = 1, klon
     944      DO i = 1, klon_glo
    966945         xmin = MIN(solsw(i),xmin)
    967946         xmax = MAX(solsw(i),xmax)
     
    989968      xmin = 1.0E+20
    990969      xmax = -1.0E+20
    991       DO i = 1, klon
     970      DO i = 1, klon_glo
    992971         xmin = MIN(sollw(i),xmin)
    993972         xmax = MAX(sollw(i),xmax)
    994973      ENDDO
    995974      PRINT*,'Rayonnement IF au sol sollw:', xmin, xmax
    996 
     975     
     976      ENDIF  ! is_mpi_root
    997977c$OMP END MASTER
    998978
    999979
    1000980c$OMP MASTER
    1001 
     981      IF (is_mpi_root) THEN
    1002982c
    1003983c Lecture derive des flux:
     
    10211001      xmin = 1.0E+20
    10221002      xmax = -1.0E+20
    1023       DO i = 1, klon
     1003      DO i = 1, klon_glo
    10241004         xmin = MIN(fder(i),xmin)
    10251005         xmax = MAX(fder(i),xmax)
     
    10461026      xmin = 1.0E+20
    10471027      xmax = -1.0E+20
    1048       DO i = 1, klon
     1028      DO i = 1, klon_glo
    10491029         xmin = MIN(radsol(i),xmin)
    10501030         xmax = MAX(radsol(i),xmax)
     
    10811061           xmin = 1.0E+20
    10821062           xmax = -1.0E+20
    1083            DO i = 1, klon
     1063           DO i = 1, klon_glo
    10841064              xmin = MIN(frugs(i,nsrf),xmin)
    10851065              xmax = MAX(frugs(i,nsrf),xmax)
     
    11011081         xmin = 1.0E+20
    11021082         xmax = -1.0E+20
    1103          DO i = 1, klon
     1083         DO i = 1, klon_glo
    11041084            xmin = MIN(frugs(i,1),xmin)
    11051085            xmax = MAX(frugs(i,1),xmax)
     
    11071087         PRINT*,'rugosite <RUG>', xmin, xmax
    11081088         DO nsrf = 2, nbsrf
    1109          DO i = 1, klon
     1089         DO i = 1, klon_glo
    11101090            frugs(i,nsrf) = frugs(i,1)
    11111091         ENDDO
     
    11421122           xmin = 1.0E+20
    11431123           xmax = -1.0E+20
    1144            DO i = 1, klon
     1124           DO i = 1, klon_glo
    11451125              xmin = MIN(agesno(i,nsrf),xmin)
    11461126              xmax = MAX(agesno(i,nsrf),xmax)
     
    11621142         xmin = 1.0E+20
    11631143         xmax = -1.0E+20
    1164          DO i = 1, klon
     1144         DO i = 1, klon_glo
    11651145            xmin = MIN(agesno(i,1),xmin)
    11661146            xmax = MAX(agesno(i,1),xmax)
     
    11681148         PRINT*,'Age de la neige <AGESNO>', xmin, xmax
    11691149         DO nsrf = 2, nbsrf
    1170          DO i = 1, klon
     1150         DO i = 1, klon_glo
    11711151            agesno(i,nsrf) = agesno(i,1)
    11721152         ENDDO
     
    11911171      xmin = 1.0E+20
    11921172      xmax = -1.0E+20
    1193       DO i = 1, klon
     1173      DO i = 1, klon_glo
    11941174         xmin = MIN(zmea(i),xmin)
    11951175         xmax = MAX(zmea(i),xmax)
     
    12141194      xmin = 1.0E+20
    12151195      xmax = -1.0E+20
    1216       DO i = 1, klon
     1196      DO i = 1, klon_glo
    12171197         xmin = MIN(zstd(i),xmin)
    12181198         xmax = MAX(zstd(i),xmax)
     
    12371217      xmin = 1.0E+20
    12381218      xmax = -1.0E+20
    1239       DO i = 1, klon
     1219      DO i = 1, klon_glo
    12401220         xmin = MIN(zsig(i),xmin)
    12411221         xmax = MAX(zsig(i),xmax)
     
    12601240      xmin = 1.0E+20
    12611241      xmax = -1.0E+20
    1262       DO i = 1, klon
     1242      DO i = 1, klon_glo
    12631243         xmin = MIN(zgam(i),xmin)
    12641244         xmax = MAX(zgam(i),xmax)
     
    12831263      xmin = 1.0E+20
    12841264      xmax = -1.0E+20
    1285       DO i = 1, klon
     1265      DO i = 1, klon_glo
    12861266         xmin = MIN(zthe(i),xmin)
    12871267         xmax = MAX(zthe(i),xmax)
     
    13061286      xmin = 1.0E+20
    13071287      xmax = -1.0E+20
    1308       DO i = 1, klon
     1288      DO i = 1, klon_glo
    13091289         xmin = MIN(zpic(i),xmin)
    13101290         xmax = MAX(zpic(i),xmax)
     
    13281308      xmin = 1.0E+20
    13291309      xmax = -1.0E+20
    1330       DO i = 1, klon
     1310      DO i = 1, klon_glo
    13311311         xmin = MIN(zval(i),xmin)
    13321312         xmax = MAX(zval(i),xmax)
     
    13511331      xmin = 1.0E+20
    13521332      xmax = -1.0E+20
    1353       DO i = 1, klon
     1333      DO i = 1, klon_glo
    13541334         xmin = MIN(rugsrel(i),xmin)
    13551335         xmax = MAX(rugsrel(i),xmax)
     
    15101490c
    15111491      ierr = NF_CLOSE(nid)
     1492      ENDIF ! is_mpi_root
    15121493c
    15131494c$OMP END MASTER
     
    15161497cym  en attendant mieux
    15171498        iolat(1)=rlat(1)
    1518         iolat(jjm+1)=rlat(klon)
     1499        iolat(jjm+1)=rlat(klon_glo)
    15191500        do i=2,jjm
    15201501          iolat(i)=rlat(2+(i-2)*iim)
    15211502        enddo
    1522        
     1503        CALL bcast_mpi(iolat)
     1504        CALL bcast_mpi(rlon)
    15231505        call init_iophy(iolat,rlon(2:iim+1))
    15241506       
    1525       print *,'Allocated ??',allocated(zmasq_mpi)
    1526       print *,'klon_mpi',klon_mpi
    1527       print *,'omp_rank',omp_rank
    1528       ALLOCATE( zmasq_mpi(klon_mpi))
    1529       ALLOCATE( rlat_mpi(klon_mpi), rlon_mpi(klon_mpi))
    1530       ALLOCATE( tsol_mpi(klon_mpi,nbsrf))
    1531       ALLOCATE( tsoil_mpi(klon_mpi,nsoilmx,nbsrf))
    1532       ALLOCATE( tslab_mpi(klon_mpi))
    1533       ALLOCATE( seaice_mpi(klon_mpi))
    1534       ALLOCATE( qsurf_mpi(klon_mpi,nbsrf))
    1535       ALLOCATE( qsol_mpi(klon_mpi))
    1536       ALLOCATE( snow_mpi(klon_mpi,nbsrf))
    1537       ALLOCATE( albe_mpi(klon_mpi,nbsrf))
    1538       ALLOCATE( alblw_mpi(klon_mpi,nbsrf))
    1539       ALLOCATE( evap_mpi(klon_mpi,nbsrf))
    1540       ALLOCATE( radsol_mpi(klon_mpi))
    1541       ALLOCATE( rain_fall_mpi(klon_mpi))
    1542       ALLOCATE( snow_fall_mpi(klon_mpi))
    1543       ALLOCATE( sollw_mpi(klon_mpi))
    1544       ALLOCATE( solsw_mpi(klon_mpi))
    1545       ALLOCATE( fder_mpi(klon_mpi))
    1546       ALLOCATE( frugs_mpi(klon_mpi,nbsrf))
    1547       ALLOCATE( agesno_mpi(klon_mpi,nbsrf))
    1548       ALLOCATE( zmea_mpi(klon_mpi))
    1549       ALLOCATE( zstd_mpi(klon_mpi))
    1550       ALLOCATE( zsig_mpi(klon_mpi))
    1551       ALLOCATE( zgam_mpi(klon_mpi))
    1552       ALLOCATE( zthe_mpi(klon_mpi))
    1553       ALLOCATE( zpic_mpi(klon_mpi))
    1554       ALLOCATE( zval_mpi(klon_mpi))
    1555       ALLOCATE( rugsrel_mpi(klon_mpi))
    1556       ALLOCATE( pctsrf_mpi(klon_mpi, nbsrf))
    1557       ALLOCATE( run_off_lic_0_mpi(klon_mpi))
    1558       ALLOCATE( t_ancien_mpi(klon_mpi,klev))
    1559       ALLOCATE( q_ancien_mpi(klon_mpi,klev))
    1560       ALLOCATE( rnebcon_mpi(klon_mpi,klev))
    1561       ALLOCATE( clwcon_mpi(klon_mpi,klev))
    1562       ALLOCATE( ratqs_mpi(klon_mpi,klev))
     1507c$OMP END MASTER
    15631508       
    1564       call ScatterField( rlat,rlat_mpi,1)
    1565       call ScatterField( rlon,rlon_mpi,1)
    1566       call ScatterField( tsol,tsol_mpi,nbsrf)
    1567       call ScatterField( tsoil,tsoil_mpi,nsoilmx*nbsrf)
    1568       call ScatterField( tslab,tslab_mpi,1)
    1569       call ScatterField( seaice,seaice_mpi,1)
    1570       call ScatterField( qsurf,qsurf_mpi,nbsrf)
    1571       call ScatterField( qsol,qsol_mpi,1)
    1572       call ScatterField( snow,snow_mpi,nbsrf)
    1573       call ScatterField( albe,albe_mpi,nbsrf)
    1574       call ScatterField( alblw,alblw_mpi,nbsrf)
    1575       call ScatterField( evap,evap_mpi,nbsrf)
    1576       call ScatterField( radsol,radsol_mpi,1)
    1577       call ScatterField( rain_fall,rain_fall_mpi,1)
    1578       call ScatterField( snow_fall,snow_fall_mpi,1)
    1579       call ScatterField( sollw,sollw_mpi,1)
    1580       call ScatterField( solsw,solsw_mpi,1)
    1581       call ScatterField( fder,fder_mpi,1)
    1582       call ScatterField( frugs,frugs_mpi,nbsrf)
    1583       call ScatterField( agesno,agesno_mpi,nbsrf)
    1584       call ScatterField( zmea,zmea_mpi,1)
    1585       call ScatterField( zstd,zstd_mpi,1)
    1586       call ScatterField( zsig,zsig_mpi,1)
    1587       call ScatterField( zgam,zgam_mpi,1)
    1588       call ScatterField( zthe,zthe_mpi,1)
    1589       call ScatterField( zpic,zpic_mpi,1)
    1590       call ScatterField( zval,zval_mpi,1)
    1591       call ScatterField( rugsrel,rugsrel_mpi,1)
    1592       call ScatterField( pctsrf,pctsrf_mpi, nbsrf)
    1593       call ScatterField( run_off_lic_0,run_off_lic_0_mpi,1)
    1594       call ScatterField( t_ancien,t_ancien_mpi,klev)
    1595       call ScatterField( q_ancien,q_ancien_mpi,klev)
    1596       call ScatterField( rnebcon,rnebcon_mpi,klev)
    1597       call ScatterField( clwcon,clwcon_mpi,klev)
    1598       call ScatterField( ratqs,ratqs_mpi,klev)
    1599       call ScatterField( zmasq,zmasq_mpi,1)
    1600 c$OMP END MASTER
    1601 c$OMP BARRIER
    1602       call ScatterField_omp( rlat_mpi,rlat_p,1)
    1603       call ScatterField_omp( rlon_mpi,rlon_p,1)
    1604       call ScatterField_omp( tsol_mpi,tsol_p,nbsrf)
    1605       call ScatterField_omp( tsoil_mpi,tsoil_p,nsoilmx*nbsrf)
    1606       call ScatterField_omp( tslab_mpi,tslab_p,1)
    1607       call ScatterField_omp( seaice_mpi,seaice_p,1)
    1608       call ScatterField_omp( qsurf_mpi,qsurf_p,nbsrf)
    1609       call ScatterField_omp( qsol_mpi,qsol_p,1)
    1610       call ScatterField_omp( snow_mpi,snow_p,nbsrf)
    1611       call ScatterField_omp( albe_mpi,albe_p,nbsrf)
    1612       call ScatterField_omp( alblw_mpi,alblw_p,nbsrf)
    1613       call ScatterField_omp( evap_mpi,evap_p,nbsrf)
    1614       call ScatterField_omp( radsol_mpi,radsol_p,1)
    1615       call ScatterField_omp( rain_fall_mpi,rain_fall_p,1)
    1616       call ScatterField_omp( snow_fall_mpi,snow_fall_p,1)
    1617       call ScatterField_omp( sollw_mpi,sollw_p,1)
    1618       call ScatterField_omp( solsw_mpi,solsw_p,1)
    1619       call ScatterField_omp( fder_mpi,fder_p,1)
    1620       call ScatterField_omp( frugs_mpi,frugs_p,nbsrf)
    1621       call ScatterField_omp( agesno_mpi,agesno_p,nbsrf)
    1622       call ScatterField_omp( zmea_mpi,zmea_p,1)
    1623       call ScatterField_omp( zstd_mpi,zstd_p,1)
    1624       call ScatterField_omp( zsig_mpi,zsig_p,1)
    1625       call ScatterField_omp( zgam_mpi,zgam_p,1)
    1626       call ScatterField_omp( zthe_mpi,zthe_p,1)
    1627       call ScatterField_omp( zpic_mpi,zpic_p,1)
    1628       call ScatterField_omp( zval_mpi,zval_p,1)
    1629       call ScatterField_omp( rugsrel_mpi,rugsrel_p,1)
    1630       call ScatterField_omp( pctsrf_mpi,pctsrf_p, nbsrf)
    1631       call ScatterField_omp( run_off_lic_0_mpi,run_off_lic_0_p,1)
    1632       call ScatterField_omp( t_ancien_mpi,t_ancien_p,klev)
    1633       call ScatterField_omp( q_ancien_mpi,q_ancien_p,klev)
    1634       call ScatterField_omp( rnebcon_mpi,rnebcon_p,klev)
    1635       call ScatterField_omp( clwcon_mpi,clwcon_p,klev)
    1636       call ScatterField_omp( ratqs_mpi,ratqs_p,klev)
    1637       call ScatterField_omp( zmasq_mpi,zmasq_p,1)
    1638       ancien_ok_p=ancien_ok
    1639 
    1640 c$OMP MASTER
    1641       DEALLOCATE( zmasq_mpi)
    1642       DEALLOCATE( rlat_mpi, rlon_mpi)
    1643       DEALLOCATE( tsol_mpi)
    1644       DEALLOCATE( tsoil_mpi)
    1645       DEALLOCATE( tslab_mpi)
    1646       DEALLOCATE( seaice_mpi)
    1647       DEALLOCATE( qsurf_mpi)
    1648       DEALLOCATE( qsol_mpi)
    1649       DEALLOCATE( snow_mpi)
    1650       DEALLOCATE( albe_mpi)
    1651       DEALLOCATE( alblw_mpi)
    1652       DEALLOCATE( evap_mpi)
    1653       DEALLOCATE( radsol_mpi)
    1654       DEALLOCATE( rain_fall_mpi)
    1655       DEALLOCATE( snow_fall_mpi)
    1656       DEALLOCATE( sollw_mpi)
    1657       DEALLOCATE( solsw_mpi)
    1658       DEALLOCATE( fder_mpi)
    1659       DEALLOCATE( frugs_mpi)
    1660       DEALLOCATE( agesno_mpi)
    1661       DEALLOCATE( zmea_mpi)
    1662       DEALLOCATE( zstd_mpi)
    1663       DEALLOCATE( zsig_mpi)
    1664       DEALLOCATE( zgam_mpi)
    1665       DEALLOCATE( zthe_mpi)
    1666       DEALLOCATE( zpic_mpi)
    1667       DEALLOCATE( zval_mpi)
    1668       DEALLOCATE( rugsrel_mpi)
    1669       DEALLOCATE( pctsrf_mpi)
    1670       DEALLOCATE( run_off_lic_0_mpi)
    1671       DEALLOCATE( t_ancien_mpi)
    1672       DEALLOCATE( q_ancien_mpi)
    1673       DEALLOCATE( rnebcon_mpi)
    1674       DEALLOCATE( clwcon_mpi)   
    1675 
    1676 c$OMP END MASTER
    1677 c$OMP BARRIER
     1509      call Scatter( rlat,rlat_p)
     1510      call Scatter( rlon,rlon_p)
     1511      call Scatter( tsol,tsol_p)
     1512      call Scatter( tsoil,tsoil_p)
     1513      call Scatter( tslab,tslab_p)
     1514      call Scatter( seaice,seaice_p)
     1515      call Scatter( qsurf,qsurf_p)
     1516      call Scatter( qsol,qsol_p)
     1517      call Scatter( snow,snow_p)
     1518      call Scatter( albe,albe_p)
     1519      call Scatter( alblw,alblw_p)
     1520      call Scatter( evap,evap_p)
     1521      call Scatter( radsol,radsol_p)
     1522      call Scatter( rain_fall,rain_fall_p)
     1523      call Scatter( snow_fall,snow_fall_p)
     1524      call Scatter( sollw,sollw_p)
     1525      call Scatter( solsw,solsw_p)
     1526      call Scatter( fder,fder_p)
     1527      call Scatter( frugs,frugs_p)
     1528      call Scatter( agesno,agesno_p)
     1529      call Scatter( zmea,zmea_p)
     1530      call Scatter( zstd,zstd_p)
     1531      call Scatter( zsig,zsig_p)
     1532      call Scatter( zgam,zgam_p)
     1533      call Scatter( zthe,zthe_p)
     1534      call Scatter( zpic,zpic_p)
     1535      call Scatter( zval,zval_p)
     1536      call Scatter( rugsrel,rugsrel_p)
     1537      call Scatter( pctsrf,pctsrf_p)
     1538      call Scatter( run_off_lic_0,run_off_lic_0_p)
     1539      call Scatter( t_ancien,t_ancien_p)
     1540      call Scatter( q_ancien,q_ancien_p)
     1541      call Scatter( rnebcon,rnebcon_p)
     1542      call Scatter( clwcon,clwcon_p)
     1543      call Scatter( ratqs,ratqs_p)
     1544      call Scatter( zmasq_glo,zmasq)
    16781545
    16791546      RETURN
Note: See TracChangeset for help on using the changeset viewer.