Changeset 776 for LMDZ4/trunk/libf/phylmd/phyetat0.F
- Timestamp:
- Jun 7, 2007, 12:01:52 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/phyetat0.F
r766 r776 15 15 . t_ancien_p,q_ancien_p,ancien_ok_p, rnebcon_p, ratqs_p, 16 16 . 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 18 20 USE iophy 19 21 IMPLICIT none … … 33 35 REAL dtime 34 36 INTEGER radpas 37 REAL rlat_p(klon), rlon_p(klon) 35 38 REAL rlat_p(klon2), rlon_p(klon2) 36 39 REAL co2_ppm_etat0 37 40 REAL solaire_etat0 38 REAL tsol_p(klon 2,nbsrf)39 REAL tsoil_p(klon 2,nsoilmx,nbsrf)40 REAL tslab_p(klon 2), seaice_p(klon2)41 REAL qsurf_p(klon 2,nbsrf)42 REAL qsol_p(klon 2)43 REAL snow_p(klon 2,nbsrf)44 REAL albe_p(klon 2,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) 45 48 cIM BEG alblw 46 REAL alblw_p(klon 2,nbsrf)49 REAL alblw_p(klon,nbsrf) 47 50 cIM END alblw 48 REAL evap_p(klon 2,nbsrf)49 REAL radsol_p(klon 2)50 REAL rain_fall_p(klon 2)51 REAL snow_fall_p(klon 2)52 REAL sollw_p(klon 2)53 real solsw_p(klon 2)54 real fder_p(klon 2)55 REAL frugs_p(klon 2,nbsrf)56 REAL agesno_p(klon 2,nbsrf)57 REAL zmea_p(klon 2)58 REAL zstd_p(klon 2)59 REAL zsig_p(klon 2)60 REAL zgam_p(klon 2)61 REAL zthe_p(klon 2)62 REAL zpic_p(klon 2)63 REAL zval_p(klon 2)64 REAL rugsrel_p(klon 2)65 REAL pctsrf_p(klon 2, nbsrf)66 REAL run_off_lic_0_p(klon 2)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) 67 70 68 REAL t_ancien_p(klon 2,klev), q_ancien_p(klon2,klev)69 real rnebcon_p(klon 2,klev),clwcon_p(klon2,klev)70 real ratqs_p(klon 2,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) 71 74 LOGICAL,SAVE :: ancien_ok 72 75 LOGICAL :: ancien_ok_p 73 76 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) 78 81 cIM "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) 147 113 148 114 CHARACTER*6 ocean … … 172 138 173 139 c$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 180 148 ENDIF 181 149 c$OMP END MASTER … … 184 152 c 185 153 c$OMP MASTER 154 IF (is_mpi_root) THEN 155 186 156 ierr = NF_INQ_VARID (nid, "controle", nvarid) 187 157 IF (ierr.NE.NF_NOERR) THEN … … 198 168 CALL abort 199 169 ENDIF 170 ENDIF 171 200 172 c$OMP END MASTER 201 c$OMP BARRIER202 173 203 DO i = 1, length 204 tab_cntrl( i ) = tab_cntrl_omp( i ) 205 ENDDO 174 CALL bcast(tab_cntrl) 206 175 207 176 c … … 281 250 c 282 251 c$OMP MASTER 252 IF (is_mpi_root) THEN 253 283 254 ierr = NF_INQ_VARID (nid, "latitude", nvarid) 284 255 IF (ierr.NE.NF_NOERR) THEN … … 321 292 IF (ierr .EQ. NF_NOERR) THEN 322 293 #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) 326 297 #endif 327 298 IF (ierr.NE.NF_NOERR) THEN … … 348 319 IF (ierr .EQ. NF_NOERR) THEN 349 320 #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)) 353 326 #endif 354 327 IF (ierr.NE.NF_NOERR) THEN … … 367 340 IF (ierr .EQ. NF_NOERR) THEN 368 341 #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)) 372 347 #endif 373 348 IF (ierr.NE.NF_NOERR) THEN … … 385 360 IF (ierr .EQ. NF_NOERR) THEN 386 361 #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)) 390 367 #endif 391 368 IF (ierr.NE.NF_NOERR) THEN … … 404 381 IF (ierr .EQ. NF_NOERR) THEN 405 382 #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)) 409 388 #endif 410 389 IF (ierr.NE.NF_NOERR) THEN … … 420 399 C Verification de l'adequation entre le masque et les sous-surfaces 421 400 C 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 ) THEN401 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 426 405 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) 428 407 $ ,pctsrf(i, is_lic) 429 408 ENDIF 430 409 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 ) THEN410 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 435 414 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) 437 416 $ ,pctsrf(i, is_sic) 438 417 ENDIF … … 470 449 xmin = 1.0E+20 471 450 xmax = -1.0E+20 472 DO i = 1, klon 451 DO i = 1, klon_glo 473 452 xmin = MIN(tsol(i,nsrf),xmin) 474 453 xmax = MAX(tsol(i,nsrf),xmax) … … 490 469 xmin = 1.0E+20 491 470 xmax = -1.0E+20 492 DO i = 1, klon 471 DO i = 1, klon_glo 493 472 xmin = MIN(tsol(i,1),xmin) 494 473 xmax = MAX(tsol(i,1),xmax) … … 496 475 PRINT*,'Temperature du sol <TS>', xmin, xmax 497 476 DO nsrf = 2, nbsrf 498 DO i = 1, klon 477 DO i = 1, klon_glo 499 478 tsol(i,nsrf) = tsol(i,1) 500 479 ENDDO … … 516 495 PRINT*, "phyetat0: Le champ <Tsoil"//str7//"> est absent" 517 496 PRINT*, " Il prend donc la valeur de surface" 518 DO i=1, klon 497 DO i=1, klon_glo 519 498 tsoil(i,isoil,nsrf)=tsol(i,nsrf) 520 499 ENDDO … … 554 533 xmin = 1.0E+20 555 534 xmax = -1.0E+20 556 DO i = 1, klon 535 DO i = 1, klon_glo 557 536 xmin = MIN(tslab(i),xmin) 558 537 xmax = MAX(tslab(i),xmax) … … 578 557 xmin = 1.0E+20 579 558 xmax = -1.0E+20 580 DO i = 1, klon 559 DO i = 1, klon_glo 581 560 xmin = MIN(seaice(i),xmin) 582 561 xmax = MAX(seaice(i),xmax) … … 617 596 xmin = 1.0E+20 618 597 xmax = -1.0E+20 619 DO i = 1, klon 598 DO i = 1, klon_glo 620 599 xmin = MIN(qsurf(i,nsrf),xmin) 621 600 xmax = MAX(qsurf(i,nsrf),xmax) … … 637 616 xmin = 1.0E+20 638 617 xmax = -1.0E+20 639 DO i = 1, klon 618 DO i = 1, klon_glo 640 619 xmin = MIN(qsurf(i,1),xmin) 641 620 xmax = MAX(qsurf(i,1),xmax) … … 643 622 PRINT*,'Humidite pres du sol <QS>', xmin, xmax 644 623 DO nsrf = 2, nbsrf 645 DO i = 1, klon 624 DO i = 1, klon_glo 646 625 qsurf(i,nsrf) = qsurf(i,1) 647 626 ENDDO … … 670 649 xmin = 1.0E+20 671 650 xmax = -1.0E+20 672 DO i = 1, klon 651 DO i = 1, klon_glo 673 652 xmin = MIN(qsol(i),xmin) 674 653 xmax = MAX(qsol(i),xmax) … … 704 683 xmin = 1.0E+20 705 684 xmax = -1.0E+20 706 DO i = 1, klon 685 DO i = 1, klon_glo 707 686 xmin = MIN(snow(i,nsrf),xmin) 708 687 xmax = MAX(snow(i,nsrf),xmax) … … 724 703 xmin = 1.0E+20 725 704 xmax = -1.0E+20 726 DO i = 1, klon 705 DO i = 1, klon_glo 727 706 xmin = MIN(snow(i,1),xmin) 728 707 xmax = MAX(snow(i,1),xmax) … … 730 709 PRINT*,'Neige du sol <SNOW>', xmin, xmax 731 710 DO nsrf = 2, nbsrf 732 DO i = 1, klon 711 DO i = 1, klon_glo 733 712 snow(i,nsrf) = snow(i,1) 734 713 ENDDO … … 764 743 xmin = 1.0E+20 765 744 xmax = -1.0E+20 766 DO i = 1, klon 745 DO i = 1, klon_glo 767 746 xmin = MIN(albe(i,nsrf),xmin) 768 747 xmax = MAX(albe(i,nsrf),xmax) … … 784 763 xmin = 1.0E+20 785 764 xmax = -1.0E+20 786 DO i = 1, klon 765 DO i = 1, klon_glo 787 766 xmin = MIN(albe(i,1),xmin) 788 767 xmax = MAX(albe(i,1),xmax) … … 790 769 PRINT*,'Neige du sol <ALBE>', xmin, xmax 791 770 DO nsrf = 2, nbsrf 792 DO i = 1, klon 771 DO i = 1, klon_glo 793 772 albe(i,nsrf) = albe(i,1) 794 773 ENDDO … … 805 784 PRINT*, ' Mais je vais prendre ALBE**' 806 785 DO nsrf = 1, nbsrf 807 DO i = 1, klon 786 DO i = 1, klon_glo 808 787 alblw(i,nsrf) = albe(i,nsrf) 809 788 ENDDO … … 823 802 xmin = 1.0E+20 824 803 xmax = -1.0E+20 825 DO i = 1, klon 804 DO i = 1, klon_glo 826 805 xmin = MIN(alblw(i,1),xmin) 827 806 xmax = MAX(alblw(i,1),xmax) … … 829 808 PRINT*,'Neige du sol <ALBLW>', xmin, xmax 830 809 DO nsrf = 2, nbsrf 831 DO i = 1, klon 810 DO i = 1, klon_glo 832 811 alblw(i,nsrf) = alblw(i,1) 833 812 ENDDO … … 863 842 xmin = 1.0E+20 864 843 xmax = -1.0E+20 865 DO i = 1, klon 844 DO i = 1, klon_glo 866 845 xmin = MIN(evap(i,nsrf),xmin) 867 846 xmax = MAX(evap(i,nsrf),xmax) … … 883 862 xmin = 1.0E+20 884 863 xmax = -1.0E+20 885 DO i = 1, klon 864 DO i = 1, klon_glo 886 865 xmin = MIN(evap(i,1),xmin) 887 866 xmax = MAX(evap(i,1),xmax) … … 889 868 PRINT*,'Evap du sol <EVAP>', xmin, xmax 890 869 DO nsrf = 2, nbsrf 891 DO i = 1, klon 870 DO i = 1, klon_glo 892 871 evap(i,nsrf) = evap(i,1) 893 872 ENDDO … … 913 892 xmin = 1.0E+20 914 893 xmax = -1.0E+20 915 DO i = 1, klon 894 DO i = 1, klon_glo 916 895 xmin = MIN(rain_fall(i),xmin) 917 896 xmax = MAX(rain_fall(i),xmax) … … 937 916 xmin = 1.0E+20 938 917 xmax = -1.0E+20 939 DO i = 1, klon 918 DO i = 1, klon_glo 940 919 xmin = MIN(snow_fall(i),xmin) 941 920 xmax = MAX(snow_fall(i),xmax) … … 963 942 xmin = 1.0E+20 964 943 xmax = -1.0E+20 965 DO i = 1, klon 944 DO i = 1, klon_glo 966 945 xmin = MIN(solsw(i),xmin) 967 946 xmax = MAX(solsw(i),xmax) … … 989 968 xmin = 1.0E+20 990 969 xmax = -1.0E+20 991 DO i = 1, klon 970 DO i = 1, klon_glo 992 971 xmin = MIN(sollw(i),xmin) 993 972 xmax = MAX(sollw(i),xmax) 994 973 ENDDO 995 974 PRINT*,'Rayonnement IF au sol sollw:', xmin, xmax 996 975 976 ENDIF ! is_mpi_root 997 977 c$OMP END MASTER 998 978 999 979 1000 980 c$OMP MASTER 1001 981 IF (is_mpi_root) THEN 1002 982 c 1003 983 c Lecture derive des flux: … … 1021 1001 xmin = 1.0E+20 1022 1002 xmax = -1.0E+20 1023 DO i = 1, klon 1003 DO i = 1, klon_glo 1024 1004 xmin = MIN(fder(i),xmin) 1025 1005 xmax = MAX(fder(i),xmax) … … 1046 1026 xmin = 1.0E+20 1047 1027 xmax = -1.0E+20 1048 DO i = 1, klon 1028 DO i = 1, klon_glo 1049 1029 xmin = MIN(radsol(i),xmin) 1050 1030 xmax = MAX(radsol(i),xmax) … … 1081 1061 xmin = 1.0E+20 1082 1062 xmax = -1.0E+20 1083 DO i = 1, klon 1063 DO i = 1, klon_glo 1084 1064 xmin = MIN(frugs(i,nsrf),xmin) 1085 1065 xmax = MAX(frugs(i,nsrf),xmax) … … 1101 1081 xmin = 1.0E+20 1102 1082 xmax = -1.0E+20 1103 DO i = 1, klon 1083 DO i = 1, klon_glo 1104 1084 xmin = MIN(frugs(i,1),xmin) 1105 1085 xmax = MAX(frugs(i,1),xmax) … … 1107 1087 PRINT*,'rugosite <RUG>', xmin, xmax 1108 1088 DO nsrf = 2, nbsrf 1109 DO i = 1, klon 1089 DO i = 1, klon_glo 1110 1090 frugs(i,nsrf) = frugs(i,1) 1111 1091 ENDDO … … 1142 1122 xmin = 1.0E+20 1143 1123 xmax = -1.0E+20 1144 DO i = 1, klon 1124 DO i = 1, klon_glo 1145 1125 xmin = MIN(agesno(i,nsrf),xmin) 1146 1126 xmax = MAX(agesno(i,nsrf),xmax) … … 1162 1142 xmin = 1.0E+20 1163 1143 xmax = -1.0E+20 1164 DO i = 1, klon 1144 DO i = 1, klon_glo 1165 1145 xmin = MIN(agesno(i,1),xmin) 1166 1146 xmax = MAX(agesno(i,1),xmax) … … 1168 1148 PRINT*,'Age de la neige <AGESNO>', xmin, xmax 1169 1149 DO nsrf = 2, nbsrf 1170 DO i = 1, klon 1150 DO i = 1, klon_glo 1171 1151 agesno(i,nsrf) = agesno(i,1) 1172 1152 ENDDO … … 1191 1171 xmin = 1.0E+20 1192 1172 xmax = -1.0E+20 1193 DO i = 1, klon 1173 DO i = 1, klon_glo 1194 1174 xmin = MIN(zmea(i),xmin) 1195 1175 xmax = MAX(zmea(i),xmax) … … 1214 1194 xmin = 1.0E+20 1215 1195 xmax = -1.0E+20 1216 DO i = 1, klon 1196 DO i = 1, klon_glo 1217 1197 xmin = MIN(zstd(i),xmin) 1218 1198 xmax = MAX(zstd(i),xmax) … … 1237 1217 xmin = 1.0E+20 1238 1218 xmax = -1.0E+20 1239 DO i = 1, klon 1219 DO i = 1, klon_glo 1240 1220 xmin = MIN(zsig(i),xmin) 1241 1221 xmax = MAX(zsig(i),xmax) … … 1260 1240 xmin = 1.0E+20 1261 1241 xmax = -1.0E+20 1262 DO i = 1, klon 1242 DO i = 1, klon_glo 1263 1243 xmin = MIN(zgam(i),xmin) 1264 1244 xmax = MAX(zgam(i),xmax) … … 1283 1263 xmin = 1.0E+20 1284 1264 xmax = -1.0E+20 1285 DO i = 1, klon 1265 DO i = 1, klon_glo 1286 1266 xmin = MIN(zthe(i),xmin) 1287 1267 xmax = MAX(zthe(i),xmax) … … 1306 1286 xmin = 1.0E+20 1307 1287 xmax = -1.0E+20 1308 DO i = 1, klon 1288 DO i = 1, klon_glo 1309 1289 xmin = MIN(zpic(i),xmin) 1310 1290 xmax = MAX(zpic(i),xmax) … … 1328 1308 xmin = 1.0E+20 1329 1309 xmax = -1.0E+20 1330 DO i = 1, klon 1310 DO i = 1, klon_glo 1331 1311 xmin = MIN(zval(i),xmin) 1332 1312 xmax = MAX(zval(i),xmax) … … 1351 1331 xmin = 1.0E+20 1352 1332 xmax = -1.0E+20 1353 DO i = 1, klon 1333 DO i = 1, klon_glo 1354 1334 xmin = MIN(rugsrel(i),xmin) 1355 1335 xmax = MAX(rugsrel(i),xmax) … … 1510 1490 c 1511 1491 ierr = NF_CLOSE(nid) 1492 ENDIF ! is_mpi_root 1512 1493 c 1513 1494 c$OMP END MASTER … … 1516 1497 cym en attendant mieux 1517 1498 iolat(1)=rlat(1) 1518 iolat(jjm+1)=rlat(klon )1499 iolat(jjm+1)=rlat(klon_glo) 1519 1500 do i=2,jjm 1520 1501 iolat(i)=rlat(2+(i-2)*iim) 1521 1502 enddo 1522 1503 CALL bcast_mpi(iolat) 1504 CALL bcast_mpi(rlon) 1523 1505 call init_iophy(iolat,rlon(2:iim+1)) 1524 1506 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)) 1507 c$OMP END MASTER 1563 1508 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) 1678 1545 1679 1546 RETURN
Note: See TracChangeset
for help on using the changeset viewer.