Ignore:
Timestamp:
Jul 5, 2000, 4:58:04 PM (24 years ago)
Author:
lmdzadmin
Message:

Interface avec les differentes surface, version de travail.LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F

    r88 r98  
    100100      REAL soilcap(klon,nbsrf), soilflux(klon,nbsrf)
    101101      SAVE soilcap, soilflux
     102      logical ok_veget
     103      parameter (ok_veget = .false.)
    102104c======================================================================
    103105c Dans les versions precedentes, l'eau liquide nuageuse utilisee dans
     
    132134      INTEGER iliq          ! indice de traceurs pour eau liquide
    133135      PARAMETER (iliq=2)
    134 c
     136
    135137      INTEGER nvm           ! nombre de vegetations
    136138      PARAMETER (nvm=8)
    137139      REAL veget(klon,nvm)  ! couverture vegetale
    138140      SAVE veget
     141
     142c
    139143c
    140144c Variables argument:
     
    224228      SAVE ftsoil                 ! temperature dans le sol
    225229c
     230      REAL fevap(klon,nbsrf)
     231      SAVE fevap                 ! evaporation
     232c
    226233      REAL deltat(klon)
    227234      SAVE deltat                 ! ecart avec la SST de reference
     
    232239      REAL fsnow(klon,nbsrf)
    233240      SAVE fsnow                  ! epaisseur neigeuse
     241c
     242      REAL falbe(klon,nbsrf)
     243      SAVE falbe                  ! albedo par type de surface
    234244c
    235245      REAL rugmer(klon)
     
    379389      REAL cldemi(klon,klev)  ! emissivite infrarouge
    380390c
    381       REAL fluxq(klon,klev)   ! flux turbulent d'humidite
    382       REAL fluxt(klon,klev)   ! flux turbulent de chaleur
    383       REAL fluxu(klon,klev)   ! flux turbulent de vitesse u
    384       REAL fluxv(klon,klev)   ! flux turbulent de vitesse v
    385 c
     391C§§§ PB
     392      REAL fluxq(klon,klev, nbsrf)   ! flux turbulent d'humidite
     393      REAL fluxt(klon,klev, nbsrf)   ! flux turbulent de chaleur
     394      REAL fluxu(klon,klev, nbsrf)   ! flux turbulent de vitesse u
     395      REAL fluxv(klon,klev, nbsrf)   ! flux turbulent de vitesse v
     396c
     397      REAL zxfluxt(klon, klev)
     398      REAL zxfluxq(klon, klev)
     399      REAL zxfluxu(klon, klev)
     400      REAL zxfluxv(klon, klev)
     401C§§§
    386402      REAL heat(klon,klev)    ! chauffage solaire
    387403      REAL heat0(klon,klev)   ! chauffage solaire ciel clair
     
    424440c
    425441      REAL zphi(klon,klev)
    426       REAL zx_tmp_x(iim), zx_tmp_yjjmp1
    427442      REAL zx_relief(iim,jjmp1)
    428443      REAL zx_aire(iim,jjmp1)
     
    561576c
    562577       IF (debut) THEN
    563 c
    564  
    565          IF (ok_oasis) THEN
    566             PRINT*, "Attentions! les parametres suivants sont fixes:"
    567             PRINT *,'***********************************************'
    568             PRINT*, "npas, nexca, itimestep=", npas, nexca, itimestep
    569             PRINT*, "Changer-les manuellement s il le faut"
    570             PRINT *,'***********************************************'
    571             CALL inicma( npas, nexca, itimestep)
    572          ENDIF
    573 c
    574          IF (ok_ocean) THEN
    575             PRINT*, '************************'
    576             PRINT*, 'SLAB OCEAN est active, prenez precautions !'
    577             PRINT*, '************************'
    578          ENDIF
    579 c
     578
    580579         DO k = 2, nvm          ! pas de vegetation
    581580            DO i = 1, klon
     
    588587         PRINT*, 'Pas de vegetation; desert partout'
    589588c
     589c
    590590c Initialiser les compteurs:
    591591c
     
    595595c
    596596         CALL phyetat0 ("startphy.nc",dtime,co2_ppm,solaire,
    597      .         rlat,rlon,ftsol,ftsoil,deltat,fqsol,fsnow,
    598      .        radsol,rugmer,agesno,clesphy0,
     597     .       rlat,rlon,pctsrf, ftsol,ftsoil,deltat,fqsol,fsnow,
     598     .       falbe, fevap, rain_fall,snow_fall,sollw, solsw,
     599     .       radsol,rugmer,agesno,clesphy0,
    599600     .       zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,tabcntr0,
    600601     .       t_ancien, q_ancien, ancien_ok )
     
    646647         ENDIF
    647648c
    648          IF (soil_model) THEN
    649             DO nsrf = 1, nbsrf
    650             CALL soil(dtime, nsrf, fsnow(1,nsrf),
    651      .                ftsol(1,nsrf), ftsoil(1,1,nsrf),
    652      .                soilcap(1,nsrf), soilflux(1,nsrf))
    653             ENDDO
    654          ENDIF
    655649c
    656650         lmt_pas = NINT(86400./dtime * 1.0)   ! tous les jours
     
    716710     .                "ave(X)", zsto,zout)
    717711c
     712         CALL histdef(nid_day, "tter", "Surface Temperature", "K",
     713     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     714     .                "ave(X)", zsto,zout)
     715c
     716         CALL histdef(nid_day, "tlic", "Surface Temperature", "K",
     717     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     718     .                "ave(X)", zsto,zout)
     719c
     720         CALL histdef(nid_day, "toce", "Surface Temperature", "K",
     721     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     722     .                "ave(X)", zsto,zout)
     723c
     724         CALL histdef(nid_day, "tsic", "Surface Temperature", "K",
     725     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     726     .                "ave(X)", zsto,zout)
     727c
    718728         CALL histdef(nid_day, "psol", "Surface Pressure", "Pa",
    719729     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     
    768778     .                "ave(X)", zsto,zout)
    769779c
     780C §§§ PB flux pour chauqe sous surface
     781C
     782         DO nsrf = 1, nbsrf
     783C
     784           call histdef(nid_day, "pourc_"//clnsurf(nsrf),
     785     $         "Fraction"//clnsurf(nsrf), "W/m2", 
     786     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     787     $         "ave(X)", zsto,zout)
     788
     789           call histdef(nid_day, "sens_"//clnsurf(nsrf),
     790     $         "Sensible heat flux "//clnsurf(nsrf), "W/m2", 
     791     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     792     $         "ave(X)", zsto,zout)
     793c
     794           call histdef(nid_day, "lat_"//clnsurf(nsrf),
     795     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
     796     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     797     $         "ave(X)", zsto,zout)
     798C
     799           call histdef(nid_day, "taux_"//clnsurf(nsrf),
     800     $         "Zonal wind stress"//clnsurf(nsrf),"Pa",
     801     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     802     $         "ave(X)", zsto,zout)
     803
     804           call histdef(nid_day, "tauy_"//clnsurf(nsrf),
     805     $         "Meridional xind stress "//clnsurf(nsrf), "Pa", 
     806     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     807     $         "ave(X)", zsto,zout)
     808C§§§
     809         END DO
     810           
    770811         CALL histdef(nid_day, "ruis", "Runoff", "mm/day",
    771812     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     
    956997     .                "ave(X)", zsto,zout)
    957998c
     999         DO nsrf = 1, nbsrf
     1000C
     1001           call histdef(nid_mth, "pourc_"//clnsurf(nsrf),
     1002     $         "Fraction "//clnsurf(nsrf), "W/m2", 
     1003     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1004     $         "ave(X)", zsto,zout)
     1005C
     1006           call histdef(nid_mth, "sens_"//clnsurf(nsrf),
     1007     $         "Sensible heat flux "//clnsurf(nsrf), "W/m2", 
     1008     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1009     $         "ave(X)", zsto,zout)
     1010c
     1011           call histdef(nid_mth, "lat_"//clnsurf(nsrf),
     1012     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
     1013     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1014     $         "ave(X)", zsto,zout)
     1015C
     1016           call histdef(nid_mth, "taux_"//clnsurf(nsrf),
     1017     $         "Zonal wind stress"//clnsurf(nsrf), "Pa", 
     1018     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1019     $         "ave(X)", zsto,zout)
     1020
     1021           call histdef(nid_mth, "tauy_"//clnsurf(nsrf),
     1022     $         "Meridional xind stress "//clnsurf(nsrf), "Pa", 
     1023     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1024     $         "ave(X)", zsto,zout)
     1025         END DO
     1026C
    9581027         CALL histdef(nid_mth, "ruis", "Runoff", "mm/day",
    9591028     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     
    12091278c Champs 2D:
    12101279c
    1211          CALL histdef(nid_ins, "psol", "Surface Pressure", "Pa",
     1280        CALL histdef(nid_ins, "tsol", "Surface Temperature", "K",
     1281     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     1282     .                "inst(X)", zsto,zout)
     1283c
     1284        CALL histdef(nid_ins, "psol", "Surface Pressure", "Pa",
    12121285     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    12131286     .                "inst(X)", zsto,zout)
     
    12561329     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    12571330     .                "inst(X)", zsto,zout)
     1331
     1332         DO nsrf = 1, nbsrf
     1333C
     1334           call histdef(nid_ins, "pourc_"//clnsurf(nsrf),
     1335     $         "Fraction"//clnsurf(nsrf), "W/m2", 
     1336     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1337     $         "inst(X)", zsto,zout)
     1338
     1339           call histdef(nid_ins, "sens_"//clnsurf(nsrf),
     1340     $         "Sensible heat flux "//clnsurf(nsrf), "W/m2", 
     1341     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1342     $         "inst(X)", zsto,zout)
     1343c
     1344           call histdef(nid_ins, "tsol_"//clnsurf(nsrf),
     1345     $         "Surface Temperature"//clnsurf(nsrf), "W/m2", 
     1346     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1347     $         "inst(X)", zsto,zout)
     1348c
     1349           call histdef(nid_ins, "lat_"//clnsurf(nsrf),
     1350     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
     1351     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1352     $         "inst(X)", zsto,zout)
     1353C
     1354           call histdef(nid_ins, "taux_"//clnsurf(nsrf),
     1355     $         "Zonal wind stress"//clnsurf(nsrf),"Pa",
     1356     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1357     $         "inst(X)", zsto,zout)
     1358
     1359           call histdef(nid_ins, "tauy_"//clnsurf(nsrf),
     1360     $         "Meridional xind stress "//clnsurf(nsrf), "Pa", 
     1361     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1362     $         "inst(X)", zsto,zout)
     1363C§§§
     1364         END DO
    12581365c
    12591366c Champs 3D:
     
    13061413cc         ENDDO
    13071414c
    1308          IF (ok_oasis) THEN
    1309          DO i = 1, klon
    1310            oas_sols(i) = 0.0
    1311            oas_nsol(i) = 0.0
    1312            oas_rain(i) = 0.0
    1313            oas_snow(i) = 0.0
    1314            oas_evap(i) = 0.0
    1315            oas_ruis(i) = 0.0
    1316            oas_tsol(i) = 0.0
    1317            oas_fder(i) = 0.0
    1318            oas_albe(i) = 0.0
    1319            oas_taux(i) = 0.0
    1320            oas_tauy(i) = 0.0
    1321          ENDDO
    1322          ENDIF
    13231415c
    13241416      ENDIF
     
    14211513         CALL ozonecm( FLOAT(julien), rlat, paprs, wo)
    14221514      ENDIF
    1423 cccccccccc
    1424       IF (ok_oasis .AND. MOD(itap-1,nexca).EQ.0) THEN
    1425 C
    1426          CALL fromcpl(itap,jjmp1*iim,
    1427      .        cpl_sst,cpl_sic,cpl_alb_sst,cpl_alb_sic)
    1428          DO i = 1, iim-1 ! un seul point pour le pole nord
    1429             cpl_sst(i,1) = cpl_sst(iim,1)
    1430             cpl_sic(i,1) = cpl_sic(iim,1)
    1431             cpl_alb_sst(i,1) = cpl_alb_sst(iim,1)
    1432             cpl_alb_sic(i,1) = cpl_alb_sic(iim,1)
    1433          ENDDO
    1434          DO i = 2, iim ! un seul point pour le pole sud
    1435             cpl_sst(i,jjmp1) = cpl_sst(1,jjmp1)
    1436             cpl_sic(i,jjmp1) = cpl_sic(1,jjmp1)
    1437             cpl_alb_sst(i,jjmp1) = cpl_alb_sst(1,jjmp1)
    1438             cpl_alb_sic(i,jjmp1) = cpl_alb_sic(1,jjmp1)
    1439          ENDDO
    1440 c
    1441          ig = 1
    1442          IF (pctsrf(ig,is_oce).GT.epsfra .OR.
    1443      .       pctsrf(ig,is_sic).GT.epsfra) THEN
    1444             pctsrf(ig,is_oce) = pctsrf(ig,is_oce)
    1445      .                        - (cpl_sic(1,1)-pctsrf(ig,is_sic))
    1446             pctsrf(ig,is_sic) = cpl_sic(1,1)
    1447             lmt_sst(ig) = cpl_sst(1,1)
    1448          ENDIF
    1449          DO j = 2, jjm
    1450          DO i = 1, iim
    1451          ig = ig + 1
    1452          IF (pctsrf(ig,is_oce).GT.epsfra .OR.
    1453      .       pctsrf(ig,is_sic).GT.epsfra) THEN
    1454            pctsrf(ig,is_oce) = pctsrf(ig,is_oce)
    1455      .                       - (cpl_sic(i,j)-pctsrf(ig,is_sic))
    1456            pctsrf(ig,is_sic) = cpl_sic(i,j)
    1457            lmt_sst(ig) = cpl_sst(i,j)
    1458          ENDIF
    1459          ENDDO
    1460          ENDDO
    1461          ig = ig + 1
    1462          IF (pctsrf(ig,is_oce).GT.epsfra .OR.
    1463      .       pctsrf(ig,is_sic).GT.epsfra) THEN
    1464             pctsrf(ig,is_oce) = pctsrf(ig,is_oce)
    1465      .                        - (cpl_sic(1,jjmp1)-pctsrf(ig,is_sic))
    1466             pctsrf(ig,is_sic) = cpl_sic(1,jjmp1)
    1467             lmt_sst(ig) = cpl_sst(1,jjmp1)
    1468          ENDIF
    1469 c
    1470       ENDIF ! ok_oasis
    1471 cccccccccc
    1472 c
    1473  
    1474       IF (ok_ocean) THEN
    1475          DO i = 1, klon
    1476             ftsol(i,is_oce) = lmt_sst(i) + deltat(i)
    1477          ENDDO
    1478 
    1479       ELSE
    1480          DO i = 1, klon
    1481             ftsol(i,is_oce) = lmt_sst(i)
    1482          ENDDO
    1483 
    1484       ENDIF
    14851515c
    14861516c Re-evaporer l'eau liquide nuageuse
     
    15231553c
    15241554      CALL clmain(dtime,pctsrf,
    1525      e            t_seri,q_seri,u_seri,v_seri,soil_model,
    1526      e            ftsol,soilcap,soilflux,paprs,pplay,radsol,
    1527      e            fsnow,fqsol,
    1528      e            rlat, frugs,
     1555     e            t_seri,q_seri,u_seri,v_seri,ok_veget,
     1556     e            ftsol,paprs,pplay,radsol,
     1557     e            fsnow,fqsol,fevap,falbe,
     1558     e            rain_fall, snow_fall, solsw, sollw,
     1559     e            rlon, rlat, frugs,
     1560     e            debut, lafin,
    15291561     s            d_t_vdf,d_q_vdf,d_u_vdf,d_v_vdf,d_ts,
    15301562     s            fluxt,fluxq,fluxu,fluxv,cdragh,cdragm,rugmer,
     
    15321564     s            ycoefh,yu1,yv1)
    15331565c
    1534       DO i = 1, klon
    1535          sens(i) = - fluxt(i,1) ! flux de chaleur sensible au sol
    1536          evap(i) = - fluxq(i,1) ! flux d'evaporation au sol
     1566C§§§ PB
     1567C§§§ Incrementation des flux
     1568C§§
     1569      zxfluxt=0.
     1570      zxfluxq=0.
     1571      zxfluxu=0.
     1572      zxfluxv=0.
     1573      DO nsrf = 1, nbsrf
     1574        DO k = 1, klev
     1575          DO i = 1, klon
     1576            zxfluxt(i,k) = zxfluxt(i,k) +
     1577     $          fluxt(i,k,nsrf) * pctsrf( i, nsrf)
     1578            zxfluxq(i,k) = zxfluxq(i,k) +
     1579     $          fluxq(i,k,nsrf) * pctsrf( i, nsrf)
     1580            zxfluxu(i,k) = zxfluxu(i,k) +
     1581     $          fluxu(i,k,nsrf) * pctsrf( i, nsrf)
     1582            zxfluxv(i,k) = zxfluxv(i,k) +
     1583     $          fluxv(i,k,nsrf) * pctsrf( i, nsrf)
     1584          END DO
     1585        END DO
     1586      END DO
     1587      DO i = 1, klon
     1588         sens(i) = - zxfluxt(i,1) ! flux de chaleur sensible au sol
     1589c         evap(i) = - fluxq(i,1) ! flux d'evaporation au sol
     1590         evap(i) = - zxfluxq(i,1) ! flux d'evaporation au sol
    15371591         fder(i) = dsens(i) + devap(i)
    15381592      ENDDO
     
    15511605      DO i = 1, klon
    15521606         zxtsol(i) = 0.0
     1607         IF ( abs( pctsrf(i, is_ter) + pctsrf(i, is_lic) +
     1608     $       pctsrf(i, is_oce) + pctsrf(i, is_sic)  - 1.) .GT. EPSFRA)
     1609     $       THEN
     1610             WRITE(*,*) 'physiq : pb sous surface au point ', i,
     1611     $           pctsrf(i, 1 : nbsrf)
     1612         ENDIF
    15531613      ENDDO
    15541614      DO nsrf = 1, nbsrf
     
    15681628      ENDDO
    15691629
    1570 c
    1571 c Appeler le modele du sol
    1572 c
    1573       IF (soil_model) THEN
    1574          DO nsrf = 1, nbsrf
    1575          CALL soil(dtime, nsrf, fsnow(1,nsrf),
    1576      .             ftsol(1,nsrf), ftsoil(1,1,nsrf),
    1577      .             soilcap(1,nsrf), soilflux(1,nsrf))
    1578          ENDDO
    1579       ENDIF
    15801630c
    15811631c Calculer la derive du flux infrarouge
     
    16231673      ELSE IF (iflag_con.EQ.2) THEN
    16241674      CALL conflx(dtime, paprs, pplay, t_seri, q_seri,
    1625      e            conv_t, conv_q, fluxq(1,1), omega,
     1675     e            conv_t, conv_q, zxfluxq(1,1), omega,
    16261676     s            d_t_con, d_q_con, rain_con, snow_con,
    16271677     s            pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
     
    18201870      CALL albsno(veget,agesno,alb_neig)
    18211871      DO i = 1, klon
    1822          zx_alb_oce = alb_eau(i)
     1872         falbe(i,is_oce) = alb_eau(i)
    18231873         IF (pctsrf(i,is_oce).GT.epsfra .AND. ftsol(i,is_oce).LT.271.35)
    1824      .   zx_alb_oce = 0.6 ! pour slab_ocean
     1874     .   falbe(i,is_oce) = 0.6 ! pour slab_ocean
    18251875         zfra = MAX(0.0,MIN(1.0,fsnow(i,is_lic)/(fsnow(i,is_lic)+10.0)))
    1826          zx_alb_lic = alb_neig(i)*zfra + 0.6*(1.0-zfra)
     1876         falbe(i,is_lic) = alb_neig(i)*zfra + 0.6*(1.0-zfra)
    18271877         zfra = MAX(0.0,MIN(1.0,fsnow(i,is_ter)/(fsnow(i,is_ter)+10.0)))
    1828          zx_alb_ter = alb_neig(i)*zfra + lmt_alb(i)*(1.0-zfra)
     1878         falbe(i,is_ter) = alb_neig(i)*zfra + lmt_alb(i)*(1.0-zfra)
    18291879         zfra = MAX(0.0,MIN(1.0,fsnow(i,is_sic)/(fsnow(i,is_sic)+10.0)))
    1830          zx_alb_sic = alb_neig(i)*zfra + 0.6*(1.0-zfra)
    1831          albsol(i) = zx_alb_oce * pctsrf(i,is_oce)
    1832      .             + zx_alb_lic * pctsrf(i,is_lic)
    1833      .             + zx_alb_ter * pctsrf(i,is_ter)
    1834      .             + zx_alb_sic * pctsrf(i,is_sic)
    1835       ENDDO
     1880         falbe(i,is_sic) = alb_neig(i)*zfra + 0.6*(1.0-zfra)
     1881         albsol(i) = falbe(i,is_oce) * pctsrf(i,is_oce)
     1882     .             + falbe(i,is_lic) * pctsrf(i,is_lic)
     1883     .             + falbe(i,is_ter) * pctsrf(i,is_ter)
     1884     .             + falbe(i,is_sic) * pctsrf(i,is_sic)
     1885      ENDDO
     1886c      DO nsrf = 1, nbsrf
     1887c        DO i = 1, klon
     1888c           albsol(i) = albsol(i) + falbe(i,nsrf)*pctsrf(i,nsrf)
     1889c        ENDDO
     1890c      ENDDO
    18361891      CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    18371892     e            (dist, rmu0, fract, co2_ppm, solaire,
     
    18561911c Calculer l'hydrologie de la surface
    18571912c
    1858       CALL hydrol(dtime,pctsrf,rain_fall, snow_fall, evap,
    1859      .            agesno, ftsol,fqsol,fsnow, ruis)
     1913c      CALL hydrol(dtime,pctsrf,rain_fall, snow_fall, zxevap,
     1914c     .            agesno, ftsol,fqsol,fsnow, ruis)
    18601915c
    18611916      DO i = 1, klon
     
    20072062c Accumuler les variables a stocker dans les fichiers histoire:
    20082063c
    2009       IF (ok_oasis) THEN ! couplage oasis
    2010       DO i = 1, klon
    2011         oas_sols(i) = oas_sols(i) + solsw(i)          / FLOAT(nexca)
    2012         oas_nsol(i) = oas_nsol(i) + (bils(i)-solsw(i))/ FLOAT(nexca)
    2013         oas_rain(i) = oas_rain(i) + rain_fall(i)      / FLOAT(nexca)
    2014         oas_snow(i) = oas_snow(i) + snow_fall(i)      / FLOAT(nexca)
    2015         oas_evap(i) = oas_evap(i) + evap(i)           / FLOAT(nexca)
    2016         oas_tsol(i) = oas_tsol(i) + zxtsol(i)         / FLOAT(nexca)
    2017         oas_fder(i) = oas_fder(i) + fder(i)           / FLOAT(nexca)
    2018         oas_albe(i) = oas_albe(i) + albsol(i)         / FLOAT(nexca)
    2019         oas_taux(i) = oas_taux(i) + fluxu(i,1)        / FLOAT(nexca)
    2020         oas_tauy(i) = oas_tauy(i) + fluxv(i,1)        / FLOAT(nexca)
    2021         oas_ruis(i) = oas_ruis(i) + ruis(i)       /FLOAT(nexca)/dtime
    2022       ENDDO
    2023       ENDIF
    20242064c
    20252065c
     
    20432083      CALL histwrite(nid_day,"tsol",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    20442084c
     2085C
     2086      zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, is_ter)
     2087      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d ,zx_tmp_2d)
     2088      CALL histwrite(nid_day,"tter",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2089C
     2090      zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, is_lic)
     2091      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zxtsol,zx_tmp_2d)
     2092      CALL histwrite(nid_day,"tlic",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2093C
     2094      zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, is_oce)
     2095      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zxtsol,zx_tmp_2d)
     2096      CALL histwrite(nid_day,"toce",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2097C
     2098      zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, is_sic)
     2099      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zxtsol,zx_tmp_2d)
     2100      CALL histwrite(nid_day,"tsic",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2101C
    20452102      DO i = 1, klon
    20462103         zx_tmp_fi2d(i) = paprs(i,1)
     
    20852142      CALL histwrite(nid_day,"ruis",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    20862143c
    2087       DO i = 1, klon
    2088          zx_tmp_fi2d(i) = fluxu(i,1)
    2089       ENDDO
    2090       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    2091       CALL histwrite(nid_day,"frtu",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    2092 c
    2093       DO i = 1, klon
    2094          zx_tmp_fi2d(i) = fluxv(i,1)
    2095       ENDDO
    2096       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    2097       CALL histwrite(nid_day,"frtv",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    2098 c
    2099       DO i = 1, klon
    2100          zx_tmp_fi2d(i) = pctsrf(i,is_sic)
    2101       ENDDO
    2102       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    2103       CALL histwrite(nid_day,"sicf",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2144c      DO i = 1, klon
     2145c         zx_tmp_fi2d(i) = fluxu(i,1)
     2146c      ENDDO
     2147c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     2148c      CALL histwrite(nid_day,"frtu",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2149c
     2150c      DO i = 1, klon
     2151c         zx_tmp_fi2d(i) = fluxv(i,1)
     2152c      ENDDO
     2153c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     2154c      CALL histwrite(nid_day,"frtv",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2155c
     2156      DO nsrf = 1, nbsrf
     2157C§§§
     2158        zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
     2159        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2160        CALL histwrite(nid_day,"pourc_"//clnsurf(nsrf),itap,
     2161     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2162C
     2163        zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf)
     2164        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2165        CALL histwrite(nid_day,"sens_"//clnsurf(nsrf),itap,
     2166     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2167C
     2168        zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)
     2169        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2170        CALL histwrite(nid_day,"lat_"//clnsurf(nsrf),itap,
     2171     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2172C
     2173        zx_tmp_fi2d(1 : klon) = - fluxu( 1 : klon, 1, nsrf)
     2174        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2175        CALL histwrite(nid_day,"taux_"//clnsurf(nsrf),itap,
     2176     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2177C     
     2178        zx_tmp_fi2d(1 : klon) = - fluxv( 1 : klon, 1, nsrf)
     2179        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2180        CALL histwrite(nid_day,"tauy_"//clnsurf(nsrf),itap,
     2181     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2182C
     2183      END DO 
     2184C
     2185c$$$      DO i = 1, klon
     2186c$$$         zx_tmp_fi2d(i) = pctsrf(i,is_sic)
     2187c$$$      ENDDO
     2188c$$$      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     2189c$$$      CALL histwrite(nid_day,"sicf",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    21042190c
    21052191      CALL gr_fi_ecrit(1, klon,iim,jjmp1, cldl,zx_tmp_2d)
     
    22432329      CALL histwrite(nid_mth,"ruis",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    22442330c
    2245       DO i = 1, klon
    2246          zx_tmp_fi2d(i) = fluxu(i,1)
    2247       ENDDO
    2248       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    2249       CALL histwrite(nid_mth,"frtu",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    2250 c
    2251       DO i = 1, klon
    2252          zx_tmp_fi2d(i) = fluxv(i,1)
    2253       ENDDO
    2254       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    2255       CALL histwrite(nid_mth,"frtv",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    2256 c
    2257       DO i = 1, klon
    2258          zx_tmp_fi2d(i) = pctsrf(i,is_sic)
    2259       ENDDO
    2260       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    2261       CALL histwrite(nid_mth,"sicf",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2331c      DO i = 1, klon
     2332c         zx_tmp_fi2d(i) = fluxu(i,1)
     2333c      ENDDO
     2334c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     2335c      CALL histwrite(nid_mth,"frtu",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2336c
     2337c      DO i = 1, klon
     2338c         zx_tmp_fi2d(i) = fluxv(i,1)
     2339c      ENDDO
     2340c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     2341c      CALL histwrite(nid_mth,"frtv",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2342c
     2343      DO nsrf = 1, nbsrf
     2344C§§§
     2345        zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
     2346        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2347        CALL histwrite(nid_mth,"pourc_"//clnsurf(nsrf),itap,
     2348     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2349C
     2350        zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf)
     2351        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2352        CALL histwrite(nid_mth,"sens_"//clnsurf(nsrf),itap,
     2353     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2354C
     2355        zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)
     2356        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2357        CALL histwrite(nid_mth,"lat_"//clnsurf(nsrf),itap,
     2358     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2359C
     2360        zx_tmp_fi2d(1 : klon) = - fluxu( 1 : klon, 1, nsrf)
     2361        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2362        CALL histwrite(nid_mth,"taux_"//clnsurf(nsrf),itap,
     2363     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2364C     
     2365        zx_tmp_fi2d(1 : klon) = - fluxv( 1 : klon, 1, nsrf)
     2366        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2367        CALL histwrite(nid_mth,"tauy_"//clnsurf(nsrf),itap,
     2368     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2369C
     2370      END DO 
     2371c$$$      DO i = 1, klon
     2372c$$$         zx_tmp_fi2d(i) = pctsrf(i,is_sic)
     2373c$$$      ENDDO
     2374c$$$      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     2375c$$$      CALL histwrite(nid_mth,"sicf",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    22622376c
    22632377      CALL gr_fi_ecrit(1, klon,iim,jjmp1, albsol,zx_tmp_2d)
     
    24762590      CALL histwrite(nid_ins,"psol",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    24772591c
     2592      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zxtsol,zx_tmp_2d)
     2593      CALL histwrite(nid_ins,"tsol",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2594c
    24782595      CALL gr_fi_ecrit(1, klon,iim,jjmp1, toplw,zx_tmp_2d)
    24792596      CALL histwrite(nid_ins,"topl",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     
    25082625      CALL gr_fi_ecrit(1, klon,iim,jjmp1, d_ts(1,is_sic),zx_tmp_2d)
    25092626      CALL histwrite(nid_ins,"dtsvdfi",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2627
     2628      DO nsrf = 1, nbsrf
     2629C§§§
     2630        zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
     2631        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2632        CALL histwrite(nid_ins,"pourc_"//clnsurf(nsrf),itap,
     2633     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2634C
     2635        zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf)
     2636        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2637        CALL histwrite(nid_ins,"sens_"//clnsurf(nsrf),itap,
     2638     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2639C
     2640        zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)
     2641        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2642        CALL histwrite(nid_ins,"lat_"//clnsurf(nsrf),itap,
     2643     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2644C
     2645        zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
     2646        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2647        CALL histwrite(nid_ins,"tsol_"//clnsurf(nsrf),itap,
     2648     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2649C
     2650        zx_tmp_fi2d(1 : klon) = - fluxu( 1 : klon, 1, nsrf)
     2651        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2652        CALL histwrite(nid_ins,"taux_"//clnsurf(nsrf),itap,
     2653     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2654C     
     2655        zx_tmp_fi2d(1 : klon) = - fluxv( 1 : klon, 1, nsrf)
     2656        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2657        CALL histwrite(nid_ins,"tauy_"//clnsurf(nsrf),itap,
     2658     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2659C
     2660      END DO 
    25102661
    25112662c
     
    25462697      ENDIF
    25472698c
    2548       IF (ok_oasis .AND. mod(itap,nexca).EQ.0) THEN
    2549 c
    2550 c Je ne traite pas le ruissellement, pour l'instant (qui m'aidera ?)
    2551          DO i = 1, klon
    2552             oas_ruisoce(i) = 0.0
    2553             oas_ruisriv(i) = 0.0
    2554          ENDDO
    2555 c
    2556          ig = 1
    2557          DO i = 1, iim
    2558             z_sols(i,1) = oas_sols(ig)
    2559             z_nsol(i,1) = oas_nsol(ig)
    2560             z_rain(i,1) = oas_rain(ig)
    2561             z_snow(i,1) = oas_snow(ig)
    2562             z_evap(i,1) = oas_evap(ig)
    2563             z_ruisoce(i,1) = oas_ruisoce(ig)
    2564             z_ruisriv(i,1) = oas_ruisriv(ig)
    2565             z_tsol(i,1) = oas_tsol(ig)
    2566             z_fder(i,1) = oas_fder(ig)
    2567             z_albe(i,1) = oas_albe(ig)
    2568             z_taux(i,1) = oas_taux(ig)
    2569             z_tauy(i,1) = oas_tauy(ig)
    2570          ENDDO
    2571          DO j = 2, jjm
    2572          DO i = 1, iim
    2573             ig = ig + 1
    2574             z_sols(i,j) = oas_sols(ig)
    2575             z_nsol(i,j) = oas_nsol(ig)
    2576             z_rain(i,j) = oas_rain(ig)
    2577             z_snow(i,j) = oas_snow(ig)
    2578             z_evap(i,j) = oas_evap(ig)
    2579             z_ruisoce(i,j) = oas_ruisoce(ig)
    2580             z_ruisriv(i,j) = oas_ruisriv(ig)
    2581             z_tsol(i,j) = oas_tsol(ig)
    2582             z_fder(i,j) = oas_fder(ig)
    2583             z_albe(i,j) = oas_albe(ig)
    2584             z_taux(i,j) = oas_taux(ig)
    2585             z_tauy(i,j) = oas_tauy(ig)
    2586          ENDDO
    2587          ENDDO
    2588          ig = ig + 1
    2589          DO i = 1, iim
    2590             z_sols(i,jjmp1)    = oas_sols(ig)
    2591             z_nsol(i,jjmp1)    = oas_nsol(ig)
    2592             z_rain(i,jjmp1)    = oas_rain(ig)
    2593             z_snow(i,jjmp1)    = oas_snow(ig)
    2594             z_evap(i,jjmp1)    = oas_evap(ig)
    2595             z_ruisoce(i,jjmp1) = oas_ruisoce(ig)
    2596             z_ruisriv(i,jjmp1) = oas_ruisriv(ig)
    2597             z_tsol(i,jjmp1)    = oas_tsol(ig)
    2598             z_fder(i,jjmp1)    = oas_fder(ig)
    2599             z_albe(i,jjmp1)    = oas_albe(ig)
    2600             z_taux(i,jjmp1)    = oas_taux(ig)
    2601             z_tauy(i,jjmp1)    = oas_tauy(ig)
    2602          ENDDO
    2603 c
    2604 c Passer les champs au coupleur:
    2605 c
    2606          CALL intocpl(itap,jjmp1*iim,
    2607      .                   z_sols, z_nsol,
    2608      .                   z_rain, z_snow, z_evap,
    2609      .                   z_ruisoce, z_ruisriv,
    2610      .                   z_tsol, z_fder, z_albe,
    2611      .                   z_taux, z_tauy)
    2612          DO i = 1, klon
    2613            oas_sols(i) = 0.0
    2614            oas_nsol(i) = 0.0
    2615            oas_rain(i) = 0.0
    2616            oas_snow(i) = 0.0
    2617            oas_evap(i) = 0.0
    2618            oas_ruis(i) = 0.0
    2619            oas_tsol(i) = 0.0
    2620            oas_fder(i) = 0.0
    2621            oas_albe(i) = 0.0
    2622            oas_taux(i) = 0.0
    2623            oas_tauy(i) = 0.0
    2624          ENDDO
    2625       ENDIF
    26262699c
    26272700c Ecrire la bande regionale (binaire grads)
     
    26392712         CALL ecriregs(84,bils)
    26402713         CALL ecriregs(84,pctsrf(1,is_sic))
    2641          CALL ecriregs(84,fluxu(1,1))
    2642          CALL ecriregs(84,fluxv(1,1))
     2714         CALL ecriregs(84,zxfluxu(1,1))
     2715         CALL ecriregs(84,zxfluxv(1,1))
    26432716         CALL ecriregs(84,ue)
    26442717         CALL ecriregs(84,ve)
     
    27052778ccc         IF (ok_oasis) CALL quitcpl
    27062779         CALL phyredem ("restartphy.nc",dtime,radpas,co2_ppm,solaire,
    2707      .        rlat,rlon,ftsol,ftsoil,deltat,fqsol,fsnow,
    2708      .        radsol,rugmer,agesno,
    2709      .        zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,
    2710      .        t_ancien, q_ancien)
     2780     .      rlat, rlon, pctsrf, ftsol, ftsoil, deltat, fqsol, fsnow,
     2781     .      falbe, fevap, rain_fall, snow_fall,
     2782     .      solsw, sollw,
     2783     .      radsol,rugmer,agesno,
     2784     .      zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,
     2785     .      t_ancien, q_ancien)
    27112786      ENDIF
    27122787
Note: See TracChangeset for help on using the changeset viewer.