/[lmdze]/trunk/phylmd/physiq.f
ViewVC logotype

Diff of /trunk/phylmd/physiq.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 189 by guez, Tue Mar 29 15:20:23 2016 UTC revision 190 by guez, Thu Apr 14 15:15:56 2016 UTC
# Line 82  contains Line 82  contains
82      REAL, intent(in):: play(:, :) ! (klon, llm)      REAL, intent(in):: play(:, :) ! (klon, llm)
83      ! pression pour le mileu de chaque couche (en Pa)      ! pression pour le mileu de chaque couche (en Pa)
84    
85      REAL, intent(in):: pphi(:, :) ! (klon, llm)      REAL, intent(in):: pphi(:, :) ! (klon, llm)
86      ! géopotentiel de chaque couche (référence sol)      ! géopotentiel de chaque couche (référence sol)
87    
88      REAL, intent(in):: pphis(:) ! (klon) géopotentiel du sol      REAL, intent(in):: pphis(:) ! (klon) géopotentiel du sol
# Line 108  contains Line 108  contains
108    
109      LOGICAL:: firstcal = .true.      LOGICAL:: firstcal = .true.
110    
111      LOGICAL, PARAMETER:: check = .FALSE.      LOGICAL, PARAMETER:: check = .FALSE.
112      ! Verifier la conservation du modele en eau      ! Verifier la conservation du modele en eau
113    
114      LOGICAL, PARAMETER:: ok_stratus = .FALSE.      LOGICAL, PARAMETER:: ok_stratus = .FALSE.
# Line 143  contains Line 143  contains
143    
144      REAL lwdn0(klon, llm + 1), lwdn(klon, llm + 1)      REAL lwdn0(klon, llm + 1), lwdn(klon, llm + 1)
145      REAL lwup0(klon, llm + 1), lwup(klon, llm + 1)      REAL lwup0(klon, llm + 1), lwup(klon, llm + 1)
146      SAVE lwdn0, lwdn, lwup0, lwup      SAVE lwdn0, lwdn, lwup0, lwup
147    
148      ! prw: precipitable water      ! prw: precipitable water
149      real prw(klon)      real prw(klon)
# Line 211  contains Line 211  contains
211      REAL yu1(klon) ! vents dans la premiere couche U      REAL yu1(klon) ! vents dans la premiere couche U
212      REAL yv1(klon) ! vents dans la premiere couche V      REAL yv1(klon) ! vents dans la premiere couche V
213      REAL ffonte(klon, nbsrf) !Flux thermique utilise pour fondre la neige      REAL ffonte(klon, nbsrf) !Flux thermique utilise pour fondre la neige
214      REAL fqcalving(klon, nbsrf) !Flux d'eau "perdue" par la surface      REAL fqcalving(klon, nbsrf) !Flux d'eau "perdue" par la surface
215      ! !et necessaire pour limiter la      ! !et necessaire pour limiter la
216      ! !hauteur de neige, en kg/m2/s      ! !hauteur de neige, en kg/m2/s
217      REAL zxffonte(klon), zxfqcalving(klon)      REAL zxffonte(klon), zxfqcalving(klon)
# Line 238  contains Line 238  contains
238      REAL dlw(klon) ! derivee infra rouge      REAL dlw(klon) ! derivee infra rouge
239      SAVE dlw      SAVE dlw
240      REAL bils(klon) ! bilan de chaleur au sol      REAL bils(klon) ! bilan de chaleur au sol
241      REAL, save:: fder(klon) ! Derive de flux (sensible et latente)      REAL, save:: fder(klon) ! Derive de flux (sensible et latente)
242      REAL ve(klon) ! integr. verticale du transport meri. de l'energie      REAL ve(klon) ! integr. verticale du transport meri. de l'energie
243      REAL vq(klon) ! integr. verticale du transport meri. de l'eau      REAL vq(klon) ! integr. verticale du transport meri. de l'eau
244      REAL ue(klon) ! integr. verticale du transport zonal de l'energie      REAL ue(klon) ! integr. verticale du transport zonal de l'energie
# Line 319  contains Line 319  contains
319      REAL, SAVE:: pblt(klon, nbsrf) ! T a la Hauteur de couche limite      REAL, SAVE:: pblt(klon, nbsrf) ! T a la Hauteur de couche limite
320      REAL, SAVE:: therm(klon, nbsrf)      REAL, SAVE:: therm(klon, nbsrf)
321      REAL, SAVE:: trmb1(klon, nbsrf) ! deep_cape      REAL, SAVE:: trmb1(klon, nbsrf) ! deep_cape
322      REAL, SAVE:: trmb2(klon, nbsrf) ! inhibition      REAL, SAVE:: trmb2(klon, nbsrf) ! inhibition
323      REAL, SAVE:: trmb3(klon, nbsrf) ! Point Omega      REAL, SAVE:: trmb3(klon, nbsrf) ! Point Omega
324      ! Grandeurs de sorties      ! Grandeurs de sorties
325      REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)      REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)
# Line 401  contains Line 401  contains
401      REAL zustrph(klon), zvstrph(klon)      REAL zustrph(klon), zvstrph(klon)
402      REAL aam, torsfc      REAL aam, torsfc
403    
     REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique  
   
404      INTEGER, SAVE:: nid_ins      INTEGER, SAVE:: nid_ins
405    
406      REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert.      REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert.
# Line 419  contains Line 417  contains
417      REAL zero_v(klon)      REAL zero_v(klon)
418      CHARACTER(LEN = 20) tit      CHARACTER(LEN = 20) tit
419      INTEGER:: ip_ebil = 0 ! print level for energy conservation diagnostics      INTEGER:: ip_ebil = 0 ! print level for energy conservation diagnostics
420      INTEGER:: if_ebil = 0 ! verbosity for diagnostics of energy conservation      INTEGER:: if_ebil = 0 ! verbosity for diagnostics of energy conservation
421    
422      REAL d_t_ec(klon, llm) ! tendance due \`a la conversion Ec -> E thermique      REAL d_t_ec(klon, llm) ! tendance due \`a la conversion Ec -> E thermique
423      REAL ZRCPD      REAL ZRCPD
# Line 473  contains Line 471  contains
471      SAVE d_u_con      SAVE d_u_con
472      SAVE d_v_con      SAVE d_v_con
473    
474      real zmasse(klon, llm)      real zmasse(klon, llm)
475      ! (column-density of mass of air in a cell, in kg m-2)      ! (column-density of mass of air in a cell, in kg m-2)
476    
477      integer, save:: ncid_startphy, itau_phy      integer, save:: ncid_startphy, itau_phy
# Line 521  contains Line 519  contains
519         pblt =0. ! T a la Hauteur de couche limite         pblt =0. ! T a la Hauteur de couche limite
520         therm =0.         therm =0.
521         trmb1 =0. ! deep_cape         trmb1 =0. ! deep_cape
522         trmb2 =0. ! inhibition         trmb2 =0. ! inhibition
523         trmb3 =0. ! Point Omega         trmb3 =0. ! Point Omega
524    
525         IF (if_ebil >= 1) d_h_vcol_phy = 0.         IF (if_ebil >= 1) d_h_vcol_phy = 0.
# Line 595  contains Line 593  contains
593    
594      ztsol = sum(ftsol * pctsrf, dim = 2)      ztsol = sum(ftsol * pctsrf, dim = 2)
595    
596      IF (if_ebil >= 1) THEN      IF (if_ebil >= 1) THEN
597         tit = 'after dynamics'         tit = 'after dynamics'
598         CALL diagetpq(airephy, tit, ip_ebil, 1, 1, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 1, 1, dtphys, t_seri, q_seri, &
599              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
600         ! Comme les tendances de la physique sont ajout\'es dans la         ! Comme les tendances de la physique sont ajout\'es dans la
601         !  dynamique, la variation d'enthalpie par la dynamique devrait         ! dynamique, la variation d'enthalpie par la dynamique devrait
602         !  \^etre \'egale \`a la variation de la physique au pas de temps         ! \^etre \'egale \`a la variation de la physique au pas de temps
603         !  pr\'ec\'edent.  Donc la somme de ces 2 variations devrait \^etre         ! pr\'ec\'edent. Donc la somme de ces 2 variations devrait \^etre
604         !  nulle.         ! nulle.
605         call diagphy(airephy, tit, ip_ebil, zero_v, zero_v, zero_v, zero_v, &         call diagphy(airephy, tit, ip_ebil, zero_v, zero_v, zero_v, zero_v, &
606              zero_v, zero_v, zero_v, zero_v, ztsol, d_h_vcol + d_h_vcol_phy, &              zero_v, zero_v, zero_v, zero_v, ztsol, d_h_vcol + d_h_vcol_phy, &
607              d_qt, 0.)              d_qt, 0.)
# Line 658  contains Line 656  contains
656      ENDDO      ENDDO
657      ql_seri = 0.      ql_seri = 0.
658    
659      IF (if_ebil >= 2) THEN      IF (if_ebil >= 2) THEN
660         tit = 'after reevap'         tit = 'after reevap'
661         CALL diagetpq(airephy, tit, ip_ebil, 2, 1, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 2, 1, dtphys, t_seri, q_seri, &
662              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
# Line 736  contains Line 734  contains
734         ENDDO         ENDDO
735      ENDDO      ENDDO
736    
737      IF (if_ebil >= 2) THEN      IF (if_ebil >= 2) THEN
738         tit = 'after clmain'         tit = 'after clmain'
739         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &
740              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
# Line 757  contains Line 755  contains
755         zxffonte(i) = 0.         zxffonte(i) = 0.
756         zxfqcalving(i) = 0.         zxfqcalving(i) = 0.
757    
758         s_pblh(i) = 0.         s_pblh(i) = 0.
759         s_lcl(i) = 0.         s_lcl(i) = 0.
760         s_capCL(i) = 0.         s_capCL(i) = 0.
761         s_oliqCL(i) = 0.         s_oliqCL(i) = 0.
762         s_cteiCL(i) = 0.         s_cteiCL(i) = 0.
# Line 769  contains Line 767  contains
767         s_trmb3(i) = 0.         s_trmb3(i) = 0.
768    
769         IF (abs(pctsrf(i, is_ter) + pctsrf(i, is_lic) + pctsrf(i, is_oce) &         IF (abs(pctsrf(i, is_ter) + pctsrf(i, is_lic) + pctsrf(i, is_oce) &
770              + pctsrf(i, is_sic) - 1.)  >  EPSFRA) print *, &              + pctsrf(i, is_sic) - 1.) > EPSFRA) print *, &
771              'physiq : probl\`eme sous surface au point ', i, &              'physiq : probl\`eme sous surface au point ', i, &
772              pctsrf(i, 1 : nbsrf)              pctsrf(i, 1 : nbsrf)
773      ENDDO      ENDDO
# Line 827  contains Line 825  contains
825      ! Calculer la dérive du flux infrarouge      ! Calculer la dérive du flux infrarouge
826    
827      DO i = 1, klon      DO i = 1, klon
828         dlw(i) = - 4. * RSIGMA * zxtsol(i)**3         dlw(i) = - 4. * RSIGMA * zxtsol(i)**3
829      ENDDO      ENDDO
830    
831      IF (check) print *, "avantcon = ", qcheck(paprs, q_seri, ql_seri)      IF (check) print *, "avantcon = ", qcheck(paprs, q_seri, ql_seri)
832    
833      ! Appeler la convection (au choix)      ! Appeler la convection
834    
835      if (conv_emanuel) then      if (conv_emanuel) then
836         da = 0.         da = 0.
# Line 858  contains Line 856  contains
856         call clouds_gno(klon, llm, q_seri, zqsat, clwcon0, ptconv, ratqsc, &         call clouds_gno(klon, llm, q_seri, zqsat, clwcon0, ptconv, ratqsc, &
857              rnebcon0)              rnebcon0)
858    
859         forall (i = 1:klon) ema_pct(i) = paprs(i,itop_con(i) + 1)         forall (i = 1:klon) ema_pct(i) = paprs(i, itop_con(i) + 1)
860         mfd = 0.         mfd = 0.
861         pen_u = 0.         pen_u = 0.
862         pen_d = 0.         pen_d = 0.
# Line 888  contains Line 886  contains
886         ENDDO         ENDDO
887      ENDDO      ENDDO
888    
889      IF (if_ebil >= 2) THEN      IF (if_ebil >= 2) THEN
890         tit = 'after convect'         tit = 'after convect'
891         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &
892              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
# Line 942  contains Line 940  contains
940              q_seri, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)              q_seri, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)
941      endif      endif
942    
943      IF (if_ebil >= 2) THEN      IF (if_ebil >= 2) THEN
944         tit = 'after dry_adjust'         tit = 'after dry_adjust'
945         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &
946              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
# Line 969  contains Line 967  contains
967      do k = 1, llm      do k = 1, llm
968         do i = 1, klon         do i = 1, klon
969            ratqss(i, k) = ratqsbas + (ratqshaut - ratqsbas) &            ratqss(i, k) = ratqsbas + (ratqshaut - ratqsbas) &
970                 * min((paprs(i, 1) - play(i, k)) / (paprs(i, 1) - 3e4), 1.)                 * min((paprs(i, 1) - play(i, k)) / (paprs(i, 1) - 3e4), 1.)
971         enddo         enddo
972      enddo      enddo
973    
# Line 1016  contains Line 1014  contains
1014         print *, "Precip = ", zx_t         print *, "Precip = ", zx_t
1015      ENDIF      ENDIF
1016    
1017      IF (if_ebil >= 2) THEN      IF (if_ebil >= 2) THEN
1018         tit = 'after fisrt'         tit = 'after fisrt'
1019         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &
1020              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
# Line 1170  contains Line 1168  contains
1168         ENDDO         ENDDO
1169      ENDDO      ENDDO
1170    
1171      IF (if_ebil >= 2) THEN      IF (if_ebil >= 2) THEN
1172         tit = 'after rad'         tit = 'after rad'
1173         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, &
1174              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
# Line 1276  contains Line 1274  contains
1274           yu1, yv1, ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, &           yu1, yv1, ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, &
1275           dnwd, tr_seri, zmasse, ncid_startphy, nid_ins, itau_phy)           dnwd, tr_seri, zmasse, ncid_startphy, nid_ins, itau_phy)
1276    
1277      IF (offline) call phystokenc(dtphys, rlon, rlat, t, mfu, mfd, pen_u, &      IF (offline) call phystokenc(dtphys, t, mfu, mfd, pen_u, pde_u, pen_d, &
1278           pde_u, pen_d, pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, &           pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, pctsrf, &
1279           pctsrf, frac_impa, frac_nucl, pphis, airephy, dtphys, itap)           frac_impa, frac_nucl, pphis, airephy, dtphys, itap)
1280    
1281      ! Calculer le transport de l'eau et de l'energie (diagnostique)      ! Calculer le transport de l'eau et de l'energie (diagnostique)
1282      CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq)      CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq)
# Line 1301  contains Line 1299  contains
1299         END DO         END DO
1300      END DO      END DO
1301    
1302      IF (if_ebil >= 1) THEN      IF (if_ebil >= 1) THEN
1303         tit = 'after physic'         tit = 'after physic'
1304         CALL diagetpq(airephy, tit, ip_ebil, 1, 1, dtphys, t_seri, q_seri, &         CALL diagetpq(airephy, tit, ip_ebil, 1, 1, dtphys, t_seri, q_seri, &
1305              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)              ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec)
1306         ! Comme les tendances de la physique sont ajoute dans la dynamique,         ! Comme les tendances de la physique sont ajoute dans la dynamique,
1307         ! on devrait avoir que la variation d'entalpie par la dynamique         ! on devrait avoir que la variation d'entalpie par la dynamique
1308         ! est egale a la variation de la physique au pas de temps precedent.         ! est egale a la variation de la physique au pas de temps precedent.
1309         ! Donc la somme de ces 2 variations devrait etre nulle.         ! Donc la somme de ces 2 variations devrait etre nulle.
# Line 1373  contains Line 1371  contains
1371    
1372        ! Ecriture des sorties        ! Ecriture des sorties
1373    
       use dimens_m, only: iim, jjm  
1374        use gr_phy_write_m, only: gr_phy_write        use gr_phy_write_m, only: gr_phy_write
1375        USE histsync_m, ONLY: histsync        USE histsync_m, ONLY: histsync
1376        USE histwrite_m, ONLY: histwrite        USE histwrite_m, ONLY: histwrite
1377    
1378        integer i, itau_w ! pas de temps ecriture        integer itau_w ! pas de temps d'\'ecriture
       REAL zx_tmp_2d(iim, jjm + 1), zx_tmp_3d(iim, jjm + 1, llm)  
1379    
1380        !--------------------------------------------------        !--------------------------------------------------
1381    
1382        IF (ok_instan) THEN        IF (ok_instan) THEN
          ! Champs 2D:  
   
1383           itau_w = itau_phy + itap           itau_w = itau_phy + itap
1384             CALL histwrite(nid_ins, "phis", itau_w, gr_phy_write(pphis))
1385           zx_tmp_2d = gr_phy_write(pphis)           CALL histwrite(nid_ins, "aire", itau_w, gr_phy_write(airephy))
1386           CALL histwrite(nid_ins, "phis", itau_w, zx_tmp_2d)           CALL histwrite(nid_ins, "psol", itau_w, gr_phy_write(paprs(:, 1)))
1387             CALL histwrite(nid_ins, "precip", itau_w, &
1388           zx_tmp_2d = gr_phy_write(airephy)                gr_phy_write(rain_fall + snow_fall))
1389           CALL histwrite(nid_ins, "aire", itau_w, zx_tmp_2d)           CALL histwrite(nid_ins, "plul", itau_w, &
1390                  gr_phy_write(rain_lsc + snow_lsc))
1391           DO i = 1, klon           CALL histwrite(nid_ins, "pluc", itau_w, &
1392              zx_tmp_fi2d(i) = paprs(i, 1)                gr_phy_write(rain_con + snow_con))
1393           ENDDO           CALL histwrite(nid_ins, "tsol", itau_w, gr_phy_write(zxtsol))
1394           zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)           CALL histwrite(nid_ins, "t2m", itau_w, gr_phy_write(zt2m))
1395           CALL histwrite(nid_ins, "psol", itau_w, zx_tmp_2d)           CALL histwrite(nid_ins, "q2m", itau_w, gr_phy_write(zq2m))
1396             CALL histwrite(nid_ins, "u10m", itau_w, gr_phy_write(zu10m))
1397           DO i = 1, klon           CALL histwrite(nid_ins, "v10m", itau_w, gr_phy_write(zv10m))
1398              zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)           CALL histwrite(nid_ins, "snow", itau_w, gr_phy_write(snow_fall))
1399           ENDDO           CALL histwrite(nid_ins, "cdrm", itau_w, gr_phy_write(cdragm))
1400           zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)           CALL histwrite(nid_ins, "cdrh", itau_w, gr_phy_write(cdragh))
1401           CALL histwrite(nid_ins, "precip", itau_w, zx_tmp_2d)           CALL histwrite(nid_ins, "topl", itau_w, gr_phy_write(toplw))
1402             CALL histwrite(nid_ins, "evap", itau_w, gr_phy_write(evap))
1403           DO i = 1, klon           CALL histwrite(nid_ins, "sols", itau_w, gr_phy_write(solsw))
1404              zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)           CALL histwrite(nid_ins, "soll", itau_w, gr_phy_write(sollw))
1405           ENDDO           CALL histwrite(nid_ins, "solldown", itau_w, gr_phy_write(sollwdown))
1406           zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)           CALL histwrite(nid_ins, "bils", itau_w, gr_phy_write(bils))
1407           CALL histwrite(nid_ins, "plul", itau_w, zx_tmp_2d)           CALL histwrite(nid_ins, "sens", itau_w, gr_phy_write(- sens))
1408             CALL histwrite(nid_ins, "fder", itau_w, gr_phy_write(fder))
1409           DO i = 1, klon           CALL histwrite(nid_ins, "dtsvdfo", itau_w, &
1410              zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)                gr_phy_write(d_ts(:, is_oce)))
1411           ENDDO           CALL histwrite(nid_ins, "dtsvdft", itau_w, &
1412           zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)                gr_phy_write(d_ts(:, is_ter)))
1413           CALL histwrite(nid_ins, "pluc", itau_w, zx_tmp_2d)           CALL histwrite(nid_ins, "dtsvdfg", itau_w, &
1414                  gr_phy_write(d_ts(:, is_lic)))
1415           zx_tmp_2d = gr_phy_write(zxtsol)           CALL histwrite(nid_ins, "dtsvdfi", itau_w, &
1416           CALL histwrite(nid_ins, "tsol", itau_w, zx_tmp_2d)                gr_phy_write(d_ts(:, is_sic)))
          !ccIM  
          zx_tmp_2d = gr_phy_write(zt2m)  
          CALL histwrite(nid_ins, "t2m", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(zq2m)  
          CALL histwrite(nid_ins, "q2m", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(zu10m)  
          CALL histwrite(nid_ins, "u10m", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(zv10m)  
          CALL histwrite(nid_ins, "v10m", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(snow_fall)  
          CALL histwrite(nid_ins, "snow", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(cdragm)  
          CALL histwrite(nid_ins, "cdrm", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(cdragh)  
          CALL histwrite(nid_ins, "cdrh", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(toplw)  
          CALL histwrite(nid_ins, "topl", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(evap)  
          CALL histwrite(nid_ins, "evap", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(solsw)  
          CALL histwrite(nid_ins, "sols", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(sollw)  
          CALL histwrite(nid_ins, "soll", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(sollwdown)  
          CALL histwrite(nid_ins, "solldown", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(bils)  
          CALL histwrite(nid_ins, "bils", itau_w, zx_tmp_2d)  
   
          zx_tmp_fi2d(1:klon) = - sens(1:klon)  
          ! zx_tmp_2d = gr_phy_write(sens)  
          zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
          CALL histwrite(nid_ins, "sens", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(fder)  
          CALL histwrite(nid_ins, "fder", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(d_ts(:, is_oce))  
          CALL histwrite(nid_ins, "dtsvdfo", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(d_ts(:, is_ter))  
          CALL histwrite(nid_ins, "dtsvdft", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(d_ts(:, is_lic))  
          CALL histwrite(nid_ins, "dtsvdfg", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(d_ts(:, is_sic))  
          CALL histwrite(nid_ins, "dtsvdfi", itau_w, zx_tmp_2d)  
1417    
1418           DO nsrf = 1, nbsrf           DO nsrf = 1, nbsrf
             !XXX  
             zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf)*100.  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1419              CALL histwrite(nid_ins, "pourc_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "pourc_"//clnsurf(nsrf), itau_w, &
1420                   zx_tmp_2d)                   gr_phy_write(pctsrf(:, nsrf)*100.))
   
             zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1421              CALL histwrite(nid_ins, "fract_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "fract_"//clnsurf(nsrf), itau_w, &
1422                   zx_tmp_2d)                   gr_phy_write(pctsrf(:, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = fluxt(1 : klon, 1, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1423              CALL histwrite(nid_ins, "sens_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "sens_"//clnsurf(nsrf), itau_w, &
1424                   zx_tmp_2d)                   gr_phy_write(fluxt(:, 1, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = fluxlat(1 : klon, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1425              CALL histwrite(nid_ins, "lat_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "lat_"//clnsurf(nsrf), itau_w, &
1426                   zx_tmp_2d)                   gr_phy_write(fluxlat(:, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1427              CALL histwrite(nid_ins, "tsol_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "tsol_"//clnsurf(nsrf), itau_w, &
1428                   zx_tmp_2d)                   gr_phy_write(ftsol(:, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = fluxu(1 : klon, 1, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1429              CALL histwrite(nid_ins, "taux_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "taux_"//clnsurf(nsrf), itau_w, &
1430                   zx_tmp_2d)                   gr_phy_write(fluxu(:, 1, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = fluxv(1 : klon, 1, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1431              CALL histwrite(nid_ins, "tauy_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "tauy_"//clnsurf(nsrf), itau_w, &
1432                   zx_tmp_2d)                   gr_phy_write(fluxv(:, 1, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = frugs(1 : klon, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1433              CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, &
1434                   zx_tmp_2d)                   gr_phy_write(frugs(:, nsrf)))
   
             zx_tmp_fi2d(1 : klon) = falbe(:, nsrf)  
             zx_tmp_2d = gr_phy_write(zx_tmp_fi2d)  
1435              CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, &              CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, &
1436                   zx_tmp_2d)                   gr_phy_write(falbe(:, nsrf)))
   
1437           END DO           END DO
          zx_tmp_2d = gr_phy_write(albsol)  
          CALL histwrite(nid_ins, "albs", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(zxrugs)  
          CALL histwrite(nid_ins, "rugs", itau_w, zx_tmp_2d)  
   
          !HBTM2  
   
          zx_tmp_2d = gr_phy_write(s_pblh)  
          CALL histwrite(nid_ins, "s_pblh", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_pblt)  
          CALL histwrite(nid_ins, "s_pblt", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_lcl)  
          CALL histwrite(nid_ins, "s_lcl", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_capCL)  
          CALL histwrite(nid_ins, "s_capCL", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_oliqCL)  
          CALL histwrite(nid_ins, "s_oliqCL", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_cteiCL)  
          CALL histwrite(nid_ins, "s_cteiCL", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_therm)  
          CALL histwrite(nid_ins, "s_therm", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_trmb1)  
          CALL histwrite(nid_ins, "s_trmb1", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_trmb2)  
          CALL histwrite(nid_ins, "s_trmb2", itau_w, zx_tmp_2d)  
   
          zx_tmp_2d = gr_phy_write(s_trmb3)  
          CALL histwrite(nid_ins, "s_trmb3", itau_w, zx_tmp_2d)  
   
          if (conv_emanuel) then  
             zx_tmp_2d = gr_phy_write(ema_pct)  
             CALL histwrite(nid_ins, "ptop", itau_w, zx_tmp_2d)  
          end if  
   
          ! Champs 3D:  
   
          zx_tmp_3d = gr_phy_write(t_seri)  
          CALL histwrite(nid_ins, "temp", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(u_seri)  
          CALL histwrite(nid_ins, "vitu", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(v_seri)  
          CALL histwrite(nid_ins, "vitv", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(zphi)  
          CALL histwrite(nid_ins, "geop", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(play)  
          CALL histwrite(nid_ins, "pres", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(d_t_vdf)  
          CALL histwrite(nid_ins, "dtvdf", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(d_q_vdf)  
          CALL histwrite(nid_ins, "dqvdf", itau_w, zx_tmp_3d)  
   
          zx_tmp_3d = gr_phy_write(zx_rh)  
          CALL histwrite(nid_ins, "rhum", itau_w, zx_tmp_3d)  
1438    
1439             CALL histwrite(nid_ins, "albs", itau_w, gr_phy_write(albsol))
1440             CALL histwrite(nid_ins, "rugs", itau_w, gr_phy_write(zxrugs))
1441             CALL histwrite(nid_ins, "s_pblh", itau_w, gr_phy_write(s_pblh))
1442             CALL histwrite(nid_ins, "s_pblt", itau_w, gr_phy_write(s_pblt))
1443             CALL histwrite(nid_ins, "s_lcl", itau_w, gr_phy_write(s_lcl))
1444             CALL histwrite(nid_ins, "s_capCL", itau_w, gr_phy_write(s_capCL))
1445             CALL histwrite(nid_ins, "s_oliqCL", itau_w, gr_phy_write(s_oliqCL))
1446             CALL histwrite(nid_ins, "s_cteiCL", itau_w, gr_phy_write(s_cteiCL))
1447             CALL histwrite(nid_ins, "s_therm", itau_w, gr_phy_write(s_therm))
1448             CALL histwrite(nid_ins, "s_trmb1", itau_w, gr_phy_write(s_trmb1))
1449             CALL histwrite(nid_ins, "s_trmb2", itau_w, gr_phy_write(s_trmb2))
1450             CALL histwrite(nid_ins, "s_trmb3", itau_w, gr_phy_write(s_trmb3))
1451             if (conv_emanuel) CALL histwrite(nid_ins, "ptop", itau_w, &
1452                  gr_phy_write(ema_pct))
1453             CALL histwrite(nid_ins, "temp", itau_w, gr_phy_write(t_seri))
1454             CALL histwrite(nid_ins, "vitu", itau_w, gr_phy_write(u_seri))
1455             CALL histwrite(nid_ins, "vitv", itau_w, gr_phy_write(v_seri))
1456             CALL histwrite(nid_ins, "geop", itau_w, gr_phy_write(zphi))
1457             CALL histwrite(nid_ins, "pres", itau_w, gr_phy_write(play))
1458             CALL histwrite(nid_ins, "dtvdf", itau_w, gr_phy_write(d_t_vdf))
1459             CALL histwrite(nid_ins, "dqvdf", itau_w, gr_phy_write(d_q_vdf))
1460             CALL histwrite(nid_ins, "rhum", itau_w, gr_phy_write(zx_rh))
1461           call histsync(nid_ins)           call histsync(nid_ins)
1462        ENDIF        ENDIF
1463    

Legend:
Removed from v.189  
changed lines
  Added in v.190

  ViewVC Help
Powered by ViewVC 1.1.21