Changeset 704 for LMDZ4/branches/V3_test/libf/phylmd/phyetat0.F
- Timestamp:
- Aug 17, 2006, 5:41:51 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/V3_test/libf/phylmd/phyetat0.F
r689 r704 5 5 c 6 6 SUBROUTINE phyetat0 (fichnom,dtime,co2_ppm_etat0,solaire_etat0, 7 . rlat ,rlon, pctsrf, tsol,tsoil,7 . rlat_p,rlon_p, pctsrf_p, tsol_p,tsoil_p, 8 8 cIM "slab" ocean 9 . ocean, tslab,seaice, 10 . qsurf,qsol,snow, 11 . albe, alblw, evap, rain_fall, snow_fall, solsw, sollw, 12 . fder,radsol,frugs,agesno,clesphy0, 13 . zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0, 14 . t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon, 15 . run_off_lic_0) 9 . ocean, tslab_p,seaice_p, 10 . qsurf_p,qsol_p,snow_p,albe_p, alblw_p, evap_p, 11 . rain_fall_p, snow_fall_p,solsw_p, sollw_p, 12 . fder_p,radsol_p,frugs_p,agesno_p,clesphy0, 13 . zmea_p,zstd_p,zsig_p,zgam_p,zthe_p,zpic_p,zval_p, 14 . rugsrel_p,tabcntr0, 15 . t_ancien_p,q_ancien_p,ancien_ok_p, rnebcon_p, ratqs_p, 16 . clwcon_p,run_off_lic_0_p) 17 USE dimphy,klon=>klon2,klon2=>klon,zmasq_p=>zmasq 18 USE iophy 16 19 IMPLICIT none 17 20 c====================================================================== … … 20 23 c====================================================================== 21 24 #include "dimensions.h" 22 #include "dimphy.h"25 cym#include "dimphy.h" 23 26 #include "netcdf.inc" 24 27 #include "indicesol.h" … … 30 33 REAL dtime 31 34 INTEGER radpas 32 REAL rlat (klon), rlon(klon)35 REAL rlat_p(klon2), rlon_p(klon2) 33 36 REAL co2_ppm_etat0 34 37 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) 45 cIM BEG alblw 46 REAL alblw_p(klon2,nbsrf) 47 cIM 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) 67 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 LOGICAL,SAVE :: ancien_ok 72 LOGICAL :: ancien_ok_p 73 74 REAL zmasq(klon) 75 REAL rlat(klon), rlon(klon) 35 76 REAL tsol(klon,nbsrf) 36 77 REAL tsoil(klon,nsoilmx,nbsrf) … … 62 103 REAL fractint(klon) 63 104 REAL run_off_lic_0(klon) 64 65 REAL t_ancien(klon,klev), q_ancien(klon,klev) 66 real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev) 67 LOGICAL ancien_ok 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 68 147 69 148 CHARACTER*6 ocean … … 80 159 PARAMETER (length=100) 81 160 REAL tab_cntrl(length), tabcntr0(length) 161 REAL,SAVE :: tab_cntrl_omp(length) 82 162 CHARACTER*7 str7 83 163 CHARACTER*2 str2 164 real iolat(jjm+1) 84 165 c 85 166 c Ouvrir le fichier contenant l'etat initial: 86 167 c 87 print*,'fichnom',fichnom 168 169 c$OMP MASTER 170 print *,'MASTER -x , omp_rank=',omp_rank 171 c$OMP END MASTER 172 173 c$OMP MASTER 174 print*,'fichnom ',fichnom 88 175 ierr = NF_OPEN (fichnom, NF_NOWRITE,nid) 89 176 IF (ierr.NE.NF_NOERR) THEN … … 92 179 CALL ABORT 93 180 ENDIF 181 c$OMP END MASTER 94 182 c 95 183 c Lecture des parametres de controle: 96 184 c 185 c$OMP MASTER 97 186 ierr = NF_INQ_VARID (nid, "controle", nvarid) 98 187 IF (ierr.NE.NF_NOERR) THEN … … 101 190 ENDIF 102 191 #ifdef NC_DOUBLE 103 ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl )104 #else 105 ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl )192 ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl_omp) 193 #else 194 ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl_omp) 106 195 #endif 107 196 IF (ierr.NE.NF_NOERR) THEN 108 197 PRINT*, 'phyetat0: Lecture echouee pour <controle>' 109 198 CALL abort 110 ELSE 111 c 199 ENDIF 200 c$OMP END MASTER 201 c$OMP BARRIER 202 203 DO i = 1, length 204 tab_cntrl( i ) = tab_cntrl_omp( i ) 205 ENDDO 206 207 c 208 112 209 DO i = 1, length 113 210 tabcntr0( i ) = tab_cntrl( i ) … … 177 274 IF( tab_cntrl(12) .EQ. 1. ) ok_limitvrai = .TRUE. 178 275 179 ENDIF180 276 181 277 itau_phy = tab_cntrl(15) … … 184 280 c Lecture des latitudes (coordonnees): 185 281 c 282 c$OMP MASTER 186 283 ierr = NF_INQ_VARID (nid, "latitude", nvarid) 187 284 IF (ierr.NE.NF_NOERR) THEN … … 198 295 CALL abort 199 296 ENDIF 297 200 298 c 201 299 c Lecture des longitudes (coordonnees): … … 219 317 C Lecture du masque terre mer 220 318 C 319 221 320 ierr = NF_INQ_VARID (nid, "masque", nvarid) 222 321 IF (ierr .EQ. NF_NOERR) THEN … … 235 334 C CALL abort 236 335 ENDIF 336 337 237 338 C Lecture des fractions pour chaque sous-surface 238 339 C … … 243 344 C fraction de terre 244 345 C 346 245 347 ierr = NF_INQ_VARID (nid, "FTER", nvarid) 246 348 IF (ierr .EQ. NF_NOERR) THEN … … 256 358 else 257 359 PRINT*, 'phyetat0: Le champ <FTER> est absent' 258 c$$$ CALL abort 259 ENDIF 360 c@$$ CALL abort 361 ENDIF 362 260 363 C 261 364 C fraction de glace de terre … … 274 377 else 275 378 PRINT*, 'phyetat0: Le champ <FLIC> est absent' 276 c $$$ CALL abort379 c@$$ CALL abort 277 380 ENDIF 278 381 C … … 292 395 else 293 396 PRINT*, 'phyetat0: Le champ <FOCE> est absent' 294 c$$$ CALL abort 295 ENDIF 397 c@$$ CALL abort 398 ENDIF 399 296 400 C 297 401 C fraction glace de mer … … 310 414 else 311 415 PRINT*, 'phyetat0: Le champ <FSIC> est absent' 312 c$$$ CALL abort 313 ENDIF 416 c@$$ CALL abort 417 ENDIF 418 314 419 C 315 420 C Verification de l'adequation entre le masque et les sous-surfaces … … 333 438 ENDIF 334 439 END DO 440 335 441 C 336 442 c Lecture des temperatures du sol: 337 443 c 444 338 445 ierr = NF_INQ_VARID (nid, "TS", nvarid) 339 446 IF (ierr.NE.NF_NOERR) THEN … … 360 467 CALL abort 361 468 ENDIF 469 362 470 xmin = 1.0E+20 363 471 xmax = -1.0E+20 … … 393 501 ENDDO 394 502 ENDIF 503 395 504 c 396 505 c Lecture des temperatures du sol profond: … … 557 666 PRINT*, ' Valeur par defaut nulle' 558 667 qsol(:)=0. 559 c $$$ CALL abort668 c@$$ CALL abort 560 669 ENDIF 561 670 xmin = 1.0E+20 … … 886 995 PRINT*,'Rayonnement IF au sol sollw:', xmin, xmax 887 996 997 c$OMP END MASTER 998 999 1000 c$OMP MASTER 1001 888 1002 c 889 1003 c Lecture derive des flux: … … 1280 1394 ENDIF 1281 1395 c 1396 clwcon=0. 1282 1397 ierr = NF_INQ_VARID (nid, "CLWCON", nvarid) 1283 1398 IF (ierr.NE.NF_NOERR) THEN … … 1302 1417 PRINT*,'Eau liquide convective (ecart-type) clwcon:', xmin, xmax 1303 1418 c 1419 rnebcon=0. 1304 1420 ierr = NF_INQ_VARID (nid, "RNEBCON", nvarid) 1305 1421 IF (ierr.NE.NF_NOERR) THEN … … 1344 1460 c Lecture ratqs 1345 1461 c 1462 ratqs=0. 1346 1463 ierr = NF_INQ_VARID (nid, "RATQS", nvarid) 1347 1464 IF (ierr.NE.NF_NOERR) THEN … … 1394 1511 ierr = NF_CLOSE(nid) 1395 1512 c 1513 c$OMP END MASTER 1514 1515 c$OMP MASTER 1516 cym en attendant mieux 1517 iolat(1)=rlat(1) 1518 iolat(jjm+1)=rlat(klon) 1519 do i=2,jjm 1520 iolat(i)=rlat(2+(i-2)*iim) 1521 enddo 1522 1523 call init_iophy(iolat,rlon(2:iim+1)) 1524 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)) 1563 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 1678 1396 1679 RETURN 1397 1680 END
Note: See TracChangeset
for help on using the changeset viewer.