--- trunk/Sources/phylmd/physiq.f 2016/03/16 14:42:58 183 +++ trunk/Sources/phylmd/physiq.f 2016/04/14 15:15:56 190 @@ -82,7 +82,7 @@ REAL, intent(in):: play(:, :) ! (klon, llm) ! pression pour le mileu de chaque couche (en Pa) - REAL, intent(in):: pphi(:, :) ! (klon, llm) + REAL, intent(in):: pphi(:, :) ! (klon, llm) ! géopotentiel de chaque couche (référence sol) REAL, intent(in):: pphis(:) ! (klon) géopotentiel du sol @@ -108,10 +108,7 @@ LOGICAL:: firstcal = .true. - LOGICAL ok_gust ! pour activer l'effet des gust sur flux surface - PARAMETER (ok_gust = .FALSE.) - - LOGICAL, PARAMETER:: check = .FALSE. + LOGICAL, PARAMETER:: check = .FALSE. ! Verifier la conservation du modele en eau LOGICAL, PARAMETER:: ok_stratus = .FALSE. @@ -146,13 +143,7 @@ REAL lwdn0(klon, llm + 1), lwdn(klon, llm + 1) REAL lwup0(klon, llm + 1), lwup(klon, llm + 1) - SAVE lwdn0, lwdn, lwup0, lwup - - ! Amip2 - ! variables a une pression donnee - - integer nlevSTD - PARAMETER(nlevSTD = 17) + SAVE lwdn0, lwdn, lwup0, lwup ! prw: precipitable water real prw(klon) @@ -162,11 +153,6 @@ REAL flwp(klon), fiwp(klon) REAL flwc(klon, llm), fiwc(klon, llm) - INTEGER kmax, lmax - PARAMETER(kmax = 8, lmax = 8) - INTEGER kmaxm1, lmaxm1 - PARAMETER(kmaxm1 = kmax - 1, lmaxm1 = lmax - 1) - ! Variables propres a la physique INTEGER, save:: radpas @@ -208,23 +194,15 @@ REAL zulow(klon), zvlow(klon) INTEGER igwd, itest(klon) - REAL agesno(klon, nbsrf) - SAVE agesno ! age de la neige + REAL, save:: agesno(klon, nbsrf) ! age de la neige + REAL, save:: run_off_lic_0(klon) - REAL run_off_lic_0(klon) - SAVE run_off_lic_0 - !KE43 - ! Variables liees a la convection de K. Emanuel (sb): - - REAL Ma(klon, llm) ! undilute upward mass flux - SAVE Ma - REAL qcondc(klon, llm) ! in-cld water content from convect - SAVE qcondc + ! Variables li\'ees \`a la convection d'Emanuel : + REAL, save:: Ma(klon, llm) ! undilute upward mass flux + REAL, save:: qcondc(klon, llm) ! in-cld water content from convect REAL, save:: sig1(klon, llm), w01(klon, llm) - REAL, save:: wd(klon) - - ! Variables pour la couche limite (al1): + ! Variables pour la couche limite (Alain Lahellec) : REAL cdragh(klon) ! drag coefficient pour T and Q REAL cdragm(klon) ! drag coefficient pour vent @@ -233,7 +211,7 @@ REAL yu1(klon) ! vents dans la premiere couche U REAL yv1(klon) ! vents dans la premiere couche V REAL ffonte(klon, nbsrf) !Flux thermique utilise pour fondre la neige - REAL fqcalving(klon, nbsrf) !Flux d'eau "perdue" par la surface + REAL fqcalving(klon, nbsrf) !Flux d'eau "perdue" par la surface ! !et necessaire pour limiter la ! !hauteur de neige, en kg/m2/s REAL zxffonte(klon), zxfqcalving(klon) @@ -260,7 +238,7 @@ REAL dlw(klon) ! derivee infra rouge SAVE dlw REAL bils(klon) ! bilan de chaleur au sol - REAL, save:: fder(klon) ! Derive de flux (sensible et latente) + REAL, save:: fder(klon) ! Derive de flux (sensible et latente) REAL ve(klon) ! integr. verticale du transport meri. de l'energie REAL vq(klon) ! integr. verticale du transport meri. de l'eau REAL ue(klon) ! integr. verticale du transport zonal de l'energie @@ -331,7 +309,7 @@ REAL, PARAMETER:: t_coup = 234. REAL zphi(klon, llm) - ! cf. AM Variables pour la CLA (hbtm2) + ! cf. Anne Mathieu variables pour la couche limite atmosphérique (hbtm) REAL, SAVE:: pblh(klon, nbsrf) ! Hauteur de couche limite REAL, SAVE:: plcl(klon, nbsrf) ! Niveau de condensation de la CLA @@ -341,9 +319,9 @@ REAL, SAVE:: pblt(klon, nbsrf) ! T a la Hauteur de couche limite REAL, SAVE:: therm(klon, nbsrf) REAL, SAVE:: trmb1(klon, nbsrf) ! deep_cape - REAL, SAVE:: trmb2(klon, nbsrf) ! inhibition + REAL, SAVE:: trmb2(klon, nbsrf) ! inhibition REAL, SAVE:: trmb3(klon, nbsrf) ! Point Omega - ! Grdeurs de sorties + ! Grandeurs de sorties REAL s_pblh(klon), s_lcl(klon), s_capCL(klon) REAL s_oliqCL(klon), s_cteiCL(klon), s_pblt(klon) REAL s_therm(klon), s_trmb1(klon), s_trmb2(klon) @@ -423,8 +401,6 @@ REAL zustrph(klon), zvstrph(klon) REAL aam, torsfc - REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique - INTEGER, SAVE:: nid_ins REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert. @@ -441,7 +417,7 @@ REAL zero_v(klon) CHARACTER(LEN = 20) tit INTEGER:: ip_ebil = 0 ! print level for energy conservation diagnostics - INTEGER:: if_ebil = 0 ! verbosity for diagnostics of energy conservation + INTEGER:: if_ebil = 0 ! verbosity for diagnostics of energy conservation REAL d_t_ec(klon, llm) ! tendance due \`a la conversion Ec -> E thermique REAL ZRCPD @@ -495,10 +471,9 @@ SAVE d_u_con SAVE d_v_con - real zmasse(klon, llm) + real zmasse(klon, llm) ! (column-density of mass of air in a cell, in kg m-2) - real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2 integer, save:: ncid_startphy, itau_phy namelist /physiq_nml/ ok_journe, ok_mensuel, ok_instan, fact_cldcon, & @@ -544,7 +519,7 @@ pblt =0. ! T a la Hauteur de couche limite therm =0. trmb1 =0. ! deep_cape - trmb2 =0. ! inhibition + trmb2 =0. ! inhibition trmb3 =0. ! Point Omega IF (if_ebil >= 1) d_h_vcol_phy = 0. @@ -618,15 +593,15 @@ ztsol = sum(ftsol * pctsrf, dim = 2) - IF (if_ebil >= 1) THEN + IF (if_ebil >= 1) THEN tit = 'after dynamics' CALL diagetpq(airephy, tit, ip_ebil, 1, 1, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) ! Comme les tendances de la physique sont ajout\'es dans la - ! dynamique, la variation d'enthalpie par la dynamique devrait - ! \^etre \'egale \`a la variation de la physique au pas de temps - ! pr\'ec\'edent. Donc la somme de ces 2 variations devrait \^etre - ! nulle. + ! dynamique, la variation d'enthalpie par la dynamique devrait + ! \^etre \'egale \`a la variation de la physique au pas de temps + ! pr\'ec\'edent. Donc la somme de ces 2 variations devrait \^etre + ! nulle. call diagphy(airephy, tit, ip_ebil, zero_v, zero_v, zero_v, zero_v, & zero_v, zero_v, zero_v, zero_v, ztsol, d_h_vcol + d_h_vcol_phy, & d_qt, 0.) @@ -681,7 +656,7 @@ ENDDO ql_seri = 0. - IF (if_ebil >= 2) THEN + IF (if_ebil >= 2) THEN tit = 'after reevap' CALL diagetpq(airephy, tit, ip_ebil, 2, 1, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) @@ -759,7 +734,7 @@ ENDDO ENDDO - IF (if_ebil >= 2) THEN + IF (if_ebil >= 2) THEN tit = 'after clmain' CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) @@ -780,8 +755,8 @@ zxffonte(i) = 0. zxfqcalving(i) = 0. - s_pblh(i) = 0. - s_lcl(i) = 0. + s_pblh(i) = 0. + s_lcl(i) = 0. s_capCL(i) = 0. s_oliqCL(i) = 0. s_cteiCL(i) = 0. @@ -792,7 +767,7 @@ s_trmb3(i) = 0. IF (abs(pctsrf(i, is_ter) + pctsrf(i, is_lic) + pctsrf(i, is_oce) & - + pctsrf(i, is_sic) - 1.) > EPSFRA) print *, & + + pctsrf(i, is_sic) - 1.) > EPSFRA) print *, & 'physiq : probl\`eme sous surface au point ', i, & pctsrf(i, 1 : nbsrf) ENDDO @@ -850,12 +825,12 @@ ! Calculer la dérive du flux infrarouge DO i = 1, klon - dlw(i) = - 4. * RSIGMA * zxtsol(i)**3 + dlw(i) = - 4. * RSIGMA * zxtsol(i)**3 ENDDO IF (check) print *, "avantcon = ", qcheck(paprs, q_seri, ql_seri) - ! Appeler la convection (au choix) + ! Appeler la convection if (conv_emanuel) then da = 0. @@ -863,12 +838,11 @@ phi = 0. CALL concvl(dtphys, paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, & w01, d_t_con, d_q_con, d_u_con, d_v_con, rain_con, ibas_con, & - itop_con, upwd, dnwd, dnwd0, Ma, cape, iflagctrl, qcondc, wd, & - pmflxr, da, phi, mp) + itop_con, upwd, dnwd, dnwd0, Ma, cape, iflagctrl, qcondc, pmflxr, & + da, phi, mp) snow_con = 0. clwcon0 = qcondc mfu = upwd + dnwd - IF (.NOT. ok_gust) wd = 0. IF (thermcep) THEN zqsat = MIN(0.5, r2es * FOEEW(t_seri, rtt >= t_seri) / play) @@ -882,7 +856,7 @@ call clouds_gno(klon, llm, q_seri, zqsat, clwcon0, ptconv, ratqsc, & rnebcon0) - 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) mfd = 0. pen_u = 0. pen_d = 0. @@ -912,7 +886,7 @@ ENDDO ENDDO - IF (if_ebil >= 2) THEN + IF (if_ebil >= 2) THEN tit = 'after convect' CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) @@ -966,7 +940,7 @@ q_seri, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm) endif - IF (if_ebil >= 2) THEN + IF (if_ebil >= 2) THEN tit = 'after dry_adjust' CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) @@ -993,7 +967,7 @@ do k = 1, llm do i = 1, klon ratqss(i, k) = ratqsbas + (ratqshaut - ratqsbas) & - * min((paprs(i, 1) - play(i, k)) / (paprs(i, 1) - 3e4), 1.) + * min((paprs(i, 1) - play(i, k)) / (paprs(i, 1) - 3e4), 1.) enddo enddo @@ -1040,7 +1014,7 @@ print *, "Precip = ", zx_t ENDIF - IF (if_ebil >= 2) THEN + IF (if_ebil >= 2) THEN tit = 'after fisrt' CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) @@ -1194,7 +1168,7 @@ ENDDO ENDDO - IF (if_ebil >= 2) THEN + IF (if_ebil >= 2) THEN tit = 'after rad' CALL diagetpq(airephy, tit, ip_ebil, 2, 2, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) @@ -1300,9 +1274,9 @@ yu1, yv1, ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, & dnwd, tr_seri, zmasse, ncid_startphy, nid_ins, itau_phy) - IF (offline) call phystokenc(dtphys, rlon, rlat, t, mfu, mfd, pen_u, & - pde_u, pen_d, pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, & - pctsrf, frac_impa, frac_nucl, pphis, airephy, dtphys, itap) + IF (offline) call phystokenc(dtphys, t, mfu, mfd, pen_u, pde_u, pen_d, & + pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, pctsrf, & + frac_impa, frac_nucl, pphis, airephy, dtphys, itap) ! Calculer le transport de l'eau et de l'energie (diagnostique) CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq) @@ -1325,11 +1299,11 @@ END DO END DO - IF (if_ebil >= 1) THEN + IF (if_ebil >= 1) THEN tit = 'after physic' CALL diagetpq(airephy, tit, ip_ebil, 1, 1, dtphys, t_seri, q_seri, & ql_seri, u_seri, v_seri, paprs, d_h_vcol, d_qt, d_ec) - ! Comme les tendances de la physique sont ajoute dans la dynamique, + ! Comme les tendances de la physique sont ajoute dans la dynamique, ! on devrait avoir que la variation d'entalpie par la dynamique ! est egale a la variation de la physique au pas de temps precedent. ! Donc la somme de ces 2 variations devrait etre nulle. @@ -1397,229 +1371,93 @@ ! Ecriture des sorties - use dimens_m, only: iim, jjm + use gr_phy_write_m, only: gr_phy_write USE histsync_m, ONLY: histsync USE histwrite_m, ONLY: histwrite - integer i, itau_w ! pas de temps ecriture - REAL zx_tmp_2d(iim, jjm + 1), zx_tmp_3d(iim, jjm + 1, llm) + integer itau_w ! pas de temps d'\'ecriture !-------------------------------------------------- IF (ok_instan) THEN - ! Champs 2D: - itau_w = itau_phy + itap - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, pphis, zx_tmp_2d) - CALL histwrite(nid_ins, "phis", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, airephy, zx_tmp_2d) - CALL histwrite(nid_ins, "aire", itau_w, zx_tmp_2d) - - DO i = 1, klon - zx_tmp_fi2d(i) = paprs(i, 1) - ENDDO - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) - CALL histwrite(nid_ins, "psol", itau_w, zx_tmp_2d) - - DO i = 1, klon - zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i) - ENDDO - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) - CALL histwrite(nid_ins, "precip", itau_w, zx_tmp_2d) - - DO i = 1, klon - zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i) - ENDDO - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) - CALL histwrite(nid_ins, "plul", itau_w, zx_tmp_2d) - - DO i = 1, klon - zx_tmp_fi2d(i) = rain_con(i) + snow_con(i) - ENDDO - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) - CALL histwrite(nid_ins, "pluc", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zxtsol, zx_tmp_2d) - CALL histwrite(nid_ins, "tsol", itau_w, zx_tmp_2d) - !ccIM - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zt2m, zx_tmp_2d) - CALL histwrite(nid_ins, "t2m", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zq2m, zx_tmp_2d) - CALL histwrite(nid_ins, "q2m", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zu10m, zx_tmp_2d) - CALL histwrite(nid_ins, "u10m", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zv10m, zx_tmp_2d) - CALL histwrite(nid_ins, "v10m", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, snow_fall, zx_tmp_2d) - CALL histwrite(nid_ins, "snow", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, cdragm, zx_tmp_2d) - CALL histwrite(nid_ins, "cdrm", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, cdragh, zx_tmp_2d) - CALL histwrite(nid_ins, "cdrh", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, toplw, zx_tmp_2d) - CALL histwrite(nid_ins, "topl", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, evap, zx_tmp_2d) - CALL histwrite(nid_ins, "evap", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, solsw, zx_tmp_2d) - CALL histwrite(nid_ins, "sols", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, sollw, zx_tmp_2d) - CALL histwrite(nid_ins, "soll", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, sollwdown, zx_tmp_2d) - CALL histwrite(nid_ins, "solldown", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, bils, zx_tmp_2d) - CALL histwrite(nid_ins, "bils", itau_w, zx_tmp_2d) - - zx_tmp_fi2d(1:klon) = - sens(1:klon) - ! CALL gr_fi_ecrit(1, klon, iim, jjm + 1, sens, zx_tmp_2d) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) - CALL histwrite(nid_ins, "sens", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, fder, zx_tmp_2d) - CALL histwrite(nid_ins, "fder", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_oce), zx_tmp_2d) - CALL histwrite(nid_ins, "dtsvdfo", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_ter), zx_tmp_2d) - CALL histwrite(nid_ins, "dtsvdft", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_lic), zx_tmp_2d) - CALL histwrite(nid_ins, "dtsvdfg", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_sic), zx_tmp_2d) - CALL histwrite(nid_ins, "dtsvdfi", itau_w, zx_tmp_2d) + CALL histwrite(nid_ins, "phis", itau_w, gr_phy_write(pphis)) + CALL histwrite(nid_ins, "aire", itau_w, gr_phy_write(airephy)) + CALL histwrite(nid_ins, "psol", itau_w, gr_phy_write(paprs(:, 1))) + CALL histwrite(nid_ins, "precip", itau_w, & + gr_phy_write(rain_fall + snow_fall)) + CALL histwrite(nid_ins, "plul", itau_w, & + gr_phy_write(rain_lsc + snow_lsc)) + CALL histwrite(nid_ins, "pluc", itau_w, & + gr_phy_write(rain_con + snow_con)) + CALL histwrite(nid_ins, "tsol", itau_w, gr_phy_write(zxtsol)) + CALL histwrite(nid_ins, "t2m", itau_w, gr_phy_write(zt2m)) + CALL histwrite(nid_ins, "q2m", itau_w, gr_phy_write(zq2m)) + CALL histwrite(nid_ins, "u10m", itau_w, gr_phy_write(zu10m)) + CALL histwrite(nid_ins, "v10m", itau_w, gr_phy_write(zv10m)) + CALL histwrite(nid_ins, "snow", itau_w, gr_phy_write(snow_fall)) + CALL histwrite(nid_ins, "cdrm", itau_w, gr_phy_write(cdragm)) + CALL histwrite(nid_ins, "cdrh", itau_w, gr_phy_write(cdragh)) + CALL histwrite(nid_ins, "topl", itau_w, gr_phy_write(toplw)) + CALL histwrite(nid_ins, "evap", itau_w, gr_phy_write(evap)) + CALL histwrite(nid_ins, "sols", itau_w, gr_phy_write(solsw)) + CALL histwrite(nid_ins, "soll", itau_w, gr_phy_write(sollw)) + CALL histwrite(nid_ins, "solldown", itau_w, gr_phy_write(sollwdown)) + CALL histwrite(nid_ins, "bils", itau_w, gr_phy_write(bils)) + CALL histwrite(nid_ins, "sens", itau_w, gr_phy_write(- sens)) + CALL histwrite(nid_ins, "fder", itau_w, gr_phy_write(fder)) + CALL histwrite(nid_ins, "dtsvdfo", itau_w, & + gr_phy_write(d_ts(:, is_oce))) + CALL histwrite(nid_ins, "dtsvdft", itau_w, & + gr_phy_write(d_ts(:, is_ter))) + CALL histwrite(nid_ins, "dtsvdfg", itau_w, & + gr_phy_write(d_ts(:, is_lic))) + CALL histwrite(nid_ins, "dtsvdfi", itau_w, & + gr_phy_write(d_ts(:, is_sic))) DO nsrf = 1, nbsrf - !XXX - zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf)*100. - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) CALL histwrite(nid_ins, "pourc_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(pctsrf(:, nsrf)*100.)) CALL histwrite(nid_ins, "fract_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = fluxt(1 : klon, 1, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(pctsrf(:, nsrf))) CALL histwrite(nid_ins, "sens_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = fluxlat(1 : klon, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(fluxt(:, 1, nsrf))) CALL histwrite(nid_ins, "lat_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(fluxlat(:, nsrf))) CALL histwrite(nid_ins, "tsol_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = fluxu(1 : klon, 1, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(ftsol(:, nsrf))) CALL histwrite(nid_ins, "taux_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = fluxv(1 : klon, 1, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(fluxu(:, 1, nsrf))) CALL histwrite(nid_ins, "tauy_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = frugs(1 : klon, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(fluxv(:, 1, nsrf))) CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - - zx_tmp_fi2d(1 : klon) = falbe(:, nsrf) - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) + gr_phy_write(frugs(:, nsrf))) CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, & - zx_tmp_2d) - + gr_phy_write(falbe(:, nsrf))) END DO - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, albsol, zx_tmp_2d) - CALL histwrite(nid_ins, "albs", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zxrugs, zx_tmp_2d) - CALL histwrite(nid_ins, "rugs", itau_w, zx_tmp_2d) - - !HBTM2 - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_pblh, zx_tmp_2d) - CALL histwrite(nid_ins, "s_pblh", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_pblt, zx_tmp_2d) - CALL histwrite(nid_ins, "s_pblt", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_lcl, zx_tmp_2d) - CALL histwrite(nid_ins, "s_lcl", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_capCL, zx_tmp_2d) - CALL histwrite(nid_ins, "s_capCL", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_oliqCL, zx_tmp_2d) - CALL histwrite(nid_ins, "s_oliqCL", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_cteiCL, zx_tmp_2d) - CALL histwrite(nid_ins, "s_cteiCL", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_therm, zx_tmp_2d) - CALL histwrite(nid_ins, "s_therm", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_trmb1, zx_tmp_2d) - CALL histwrite(nid_ins, "s_trmb1", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_trmb2, zx_tmp_2d) - CALL histwrite(nid_ins, "s_trmb2", itau_w, zx_tmp_2d) - - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_trmb3, zx_tmp_2d) - CALL histwrite(nid_ins, "s_trmb3", itau_w, zx_tmp_2d) - - if (conv_emanuel) then - CALL gr_fi_ecrit(1, klon, iim, jjm + 1, ema_pct, zx_tmp_2d) - CALL histwrite(nid_ins, "ptop", itau_w, zx_tmp_2d) - end if - - ! Champs 3D: - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, t_seri, zx_tmp_3d) - CALL histwrite(nid_ins, "temp", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, u_seri, zx_tmp_3d) - CALL histwrite(nid_ins, "vitu", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, v_seri, zx_tmp_3d) - CALL histwrite(nid_ins, "vitv", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, zphi, zx_tmp_3d) - CALL histwrite(nid_ins, "geop", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, play, zx_tmp_3d) - CALL histwrite(nid_ins, "pres", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, d_t_vdf, zx_tmp_3d) - CALL histwrite(nid_ins, "dtvdf", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, d_q_vdf, zx_tmp_3d) - CALL histwrite(nid_ins, "dqvdf", itau_w, zx_tmp_3d) - - CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, zx_rh, zx_tmp_3d) - CALL histwrite(nid_ins, "rhum", itau_w, zx_tmp_3d) + CALL histwrite(nid_ins, "albs", itau_w, gr_phy_write(albsol)) + CALL histwrite(nid_ins, "rugs", itau_w, gr_phy_write(zxrugs)) + CALL histwrite(nid_ins, "s_pblh", itau_w, gr_phy_write(s_pblh)) + CALL histwrite(nid_ins, "s_pblt", itau_w, gr_phy_write(s_pblt)) + CALL histwrite(nid_ins, "s_lcl", itau_w, gr_phy_write(s_lcl)) + CALL histwrite(nid_ins, "s_capCL", itau_w, gr_phy_write(s_capCL)) + CALL histwrite(nid_ins, "s_oliqCL", itau_w, gr_phy_write(s_oliqCL)) + CALL histwrite(nid_ins, "s_cteiCL", itau_w, gr_phy_write(s_cteiCL)) + CALL histwrite(nid_ins, "s_therm", itau_w, gr_phy_write(s_therm)) + CALL histwrite(nid_ins, "s_trmb1", itau_w, gr_phy_write(s_trmb1)) + CALL histwrite(nid_ins, "s_trmb2", itau_w, gr_phy_write(s_trmb2)) + CALL histwrite(nid_ins, "s_trmb3", itau_w, gr_phy_write(s_trmb3)) + if (conv_emanuel) CALL histwrite(nid_ins, "ptop", itau_w, & + gr_phy_write(ema_pct)) + CALL histwrite(nid_ins, "temp", itau_w, gr_phy_write(t_seri)) + CALL histwrite(nid_ins, "vitu", itau_w, gr_phy_write(u_seri)) + CALL histwrite(nid_ins, "vitv", itau_w, gr_phy_write(v_seri)) + CALL histwrite(nid_ins, "geop", itau_w, gr_phy_write(zphi)) + CALL histwrite(nid_ins, "pres", itau_w, gr_phy_write(play)) + CALL histwrite(nid_ins, "dtvdf", itau_w, gr_phy_write(d_t_vdf)) + CALL histwrite(nid_ins, "dqvdf", itau_w, gr_phy_write(d_q_vdf)) + CALL histwrite(nid_ins, "rhum", itau_w, gr_phy_write(zx_rh)) call histsync(nid_ins) ENDIF