--- trunk/libf/phylmd/physiq.f90 2008/08/05 13:31:32 17 +++ trunk/libf/phylmd/physiq.f90 2009/12/14 15:25:16 23 @@ -10,7 +10,7 @@ contains SUBROUTINE physiq(nq, firstcal, lafin, rdayvrai, gmtime, pdtphys, paprs, & - pplay, pphi, pphis, presnivs, u, v, t, qx, omega, d_u, d_v, & + pplay, pphi, pphis, u, v, t, qx, omega, d_u, d_v, & d_t, d_qx, d_ps, dudyn, PVteta) ! From phylmd/physiq.F, v 1.22 2006/02/20 09:38:28 @@ -28,9 +28,9 @@ use indicesol, only: nbsrf, is_ter, is_lic, is_sic, is_oce, & clnsurf, epsfra use dimphy, only: klon, nbtr - use conf_gcm_m, only: raz_date, offline, iphysiq + use conf_gcm_m, only: raz_date, offline use dimsoil, only: nsoilmx - use temps, only: itau_phy, day_ref, annee_ref, itaufin + use temps, only: itau_phy, day_ref, annee_ref use clesphys, only: ecrit_hf, ecrit_ins, ecrit_mth, & cdmmax, cdhmax, & co2_ppm, ecrit_reg, ecrit_tra, ksta, ksta_ter, & @@ -54,6 +54,7 @@ use conf_phys_m, only: conf_phys use phyredem_m, only: phyredem use qcheck_m, only: qcheck + use ozonecm_m, only: ozonecm ! Declaration des constantes et des fonctions thermodynamiques : use fcttre, only: thermcep, foeew, qsats, qsatl @@ -81,9 +82,6 @@ REAL pphis(klon) ! input geopotentiel du sol - REAL presnivs(llm) - ! (input pressions approximat. des milieux couches ( en PA)) - REAL u(klon, llm) ! input vitesse dans la direction X (de O a E) en m/s REAL v(klon, llm) ! input vitesse Y (de S a N) en m/s REAL t(klon, llm) ! input temperature (K) @@ -182,18 +180,10 @@ REAL swup0(klon, klevp1), swup(klon, klevp1) SAVE swdn0, swdn, swup0, swup - REAL SWdn200clr(klon), SWdn200(klon) - REAL SWup200clr(klon), SWup200(klon) - SAVE SWdn200clr, SWdn200, SWup200clr, SWup200 - REAL lwdn0(klon, klevp1), lwdn(klon, klevp1) REAL lwup0(klon, klevp1), lwup(klon, klevp1) SAVE lwdn0, lwdn, lwup0, lwup - REAL LWdn200clr(klon), LWdn200(klon) - REAL LWup200clr(klon), LWup200(klon) - SAVE LWdn200clr, LWdn200, LWup200clr, LWup200 - !IM Amip2 ! variables a une pression donnee @@ -208,34 +198,6 @@ '500 ', '400 ', '300 ', '250 ', '200 ', '150 ', '100 ', & '70 ', '50 ', '30 ', '20 ', '10 '/ - real tlevSTD(klon, nlevSTD), qlevSTD(klon, nlevSTD) - real rhlevSTD(klon, nlevSTD), philevSTD(klon, nlevSTD) - real ulevSTD(klon, nlevSTD), vlevSTD(klon, nlevSTD) - real wlevSTD(klon, nlevSTD) - - ! nout : niveau de output des variables a une pression donnee - INTEGER nout - PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC - - logical oknondef(klon, nlevSTD, nout) - real tnondef(klon, nlevSTD, nout) - save tnondef - - ! les produits uvSTD, vqSTD, .., T2STD sont calcules - ! a partir des valeurs instantannees toutes les 6 h - ! qui sont moyennees sur le mois - - real uvSTD(klon, nlevSTD) - real vqSTD(klon, nlevSTD) - real vTSTD(klon, nlevSTD) - real wqSTD(klon, nlevSTD) - - real vphiSTD(klon, nlevSTD) - real wTSTD(klon, nlevSTD) - real u2STD(klon, nlevSTD) - real v2STD(klon, nlevSTD) - real T2STD(klon, nlevSTD) - ! prw: precipitable water real prw(klon) @@ -244,7 +206,7 @@ REAL flwp(klon), fiwp(klon) REAL flwc(klon, llm), fiwc(klon, llm) - INTEGER l, kmax, lmax + INTEGER kmax, lmax PARAMETER(kmax=8, lmax=8) INTEGER kmaxm1, lmaxm1 PARAMETER(kmaxm1=kmax-1, lmaxm1=lmax-1) @@ -296,9 +258,6 @@ integer nid_hf, nid_hf3d save nid_hf, nid_hf3d - INTEGER longcles - PARAMETER ( longcles = 20 ) - ! Variables propres a la physique INTEGER, save:: radpas @@ -446,7 +405,6 @@ EXTERNAL conema3 ! convect4.3 EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) EXTERNAL nuage ! calculer les proprietes radiatives - EXTERNAL ozonecm ! prescrire l'ozone EXTERNAL radlwsw ! rayonnements solaire et infrarouge EXTERNAL transp ! transport total de l'eau et de l'energie @@ -627,8 +585,6 @@ REAL dudyn(iim+1, jjm + 1, llm) REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique - REAL zx_tmp_fi3d(klon, llm) ! variable temporaire pour champs 3D - REAL zx_tmp_2d(iim, jjm + 1), zx_tmp_3d(iim, jjm + 1, llm) INTEGER, SAVE:: nid_day, nid_ins @@ -656,8 +612,7 @@ INTEGER ip_ebil ! PRINT level for energy conserv. diag. SAVE ip_ebil DATA ip_ebil/0/ - INTEGER if_ebil ! level for energy conserv. dignostics - SAVE if_ebil + INTEGER, SAVE:: if_ebil ! level for energy conservation diagnostics !+jld ec_conser REAL d_t_ec(klon, llm) ! tendance du a la conersion Ec -> E thermique REAL ZRCPD @@ -876,9 +831,9 @@ ! Initialisation des sorties - call ini_histhf(pdtphys, presnivs, nid_hf, nid_hf3d) - call ini_histday(pdtphys, presnivs, ok_journe, nid_day, nq) - call ini_histins(pdtphys, presnivs, ok_instan, nid_ins) + call ini_histhf(pdtphys, nid_hf, nid_hf3d) + call ini_histday(pdtphys, ok_journe, nid_day, nq) + call ini_histins(pdtphys, ok_instan, nid_ins) CALL ymds2ju(annee_ref, 1, int(day_ref), 0., date0) !XXXPB Positionner date0 pour initialisation de ORCHIDEE WRITE(*, *) 'physiq date0 : ', date0 @@ -992,11 +947,10 @@ ! Mettre en action les conditions aux limites (albedo, sst, etc.). ! Prescrire l'ozone et calculer l'albedo sur l'ocean. -!!$ if (nq >= 5) then -!!$ wo = qx(:, :, 5) * zmasse / dobson_u / 1e3 -!!$ else IF (MOD(itap - 1, lmt_pas) == 0) THEN - IF (MOD(itap - 1, lmt_pas) == 0) THEN - CALL ozonecm(REAL(julien), rlat, paprs, wo) + if (nq >= 5) then + wo = qx(:, :, 5) * zmasse / dobson_u / 1e3 + else IF (MOD(itap - 1, lmt_pas) == 0) THEN + wo = ozonecm(REAL(julien), paprs) ENDIF ! Re-evaporer l'eau liquide nuageuse @@ -1284,7 +1238,7 @@ ! (driver commun aux versions 3 et 4) IF (ok_cvl) THEN ! new driver for convectL - CALL concvl (iflag_con, pdtphys, paprs, pplay, t_seri, q_seri, & + CALL concvl(iflag_con, pdtphys, paprs, pplay, t_seri, q_seri, & u_seri, v_seri, tr_seri, ntra, & ema_work1, ema_work2, & d_t_con, d_q_con, d_u_con, d_v_con, d_tr, & @@ -1850,7 +1804,7 @@ call phytrac(rnpb, itap, lmt_pas, julien, gmtime, firstcal, lafin, nq-2, & pdtphys, u, v, t, paprs, pplay, pmfu, pmfd, pen_u, pde_u, pen_d, & pde_d, ycoefh, fm_therm, entr_therm, yu1, yv1, ftsol, pctsrf, & - frac_impa, frac_nucl, presnivs, pphis, pphi, albsol, rhcl, cldfra, & + frac_impa, frac_nucl, pphis, pphi, albsol, rhcl, cldfra, & rneb, diafra, cldliq, itop_con, ibas_con, pmflxr, pmflxs, prfl, & psfl, da, phi, mp, upwd, dnwd, tr_seri, zmasse)