--- trunk/Sources/phylmd/phytrac.f 2017/11/13 11:51:04 241 +++ trunk/phylmd/phytrac.f 2018/12/11 22:48:09 321 @@ -7,8 +7,8 @@ contains - SUBROUTINE phytrac(julien, gmtime, firstcal, lafin, pdtphys, t_seri, paprs, & - pplay, pmfu, pmfd, pde_u, pen_d, coefh, cdragh, fm_therm, entr_therm, yu1, & + SUBROUTINE phytrac(julien, gmtime, firstcal, lafin, t_seri, paprs, pplay, & + pmfu, pmfd, pde_u, pen_d, coefh, cdragh, fm_therm, entr_therm, yu1, & yv1, ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, & tr_seri, zmasse, ncid_startphy) @@ -32,14 +32,15 @@ use clesphys2, only: conv_emanuel use cltrac_m, only: cltrac use cltracrn_m, only: cltracrn + use comconst, only: dtphys USE conf_gcm_m, ONLY: lmt_pas use ctherm, only: iflag_thermals use cvltr_m, only: cvltr - use dimens_m, only: llm, nqmx + use dimensions, only: llm, nqmx use dimphy, only: klon use histwrite_phy_m, only: histwrite_phy use indicesol, only: nbsrf - use iniadvtrac_m, only: tname + use infotrac_init_m, only: tname use initrrnpb_m, only: initrrnpb use minmaxqfi_m, only: minmaxqfi use netcdf, only: NF90_FILL_float @@ -59,7 +60,6 @@ real, intent(in):: gmtime ! heure de la journ\'ee en fraction de jour logical, intent(in):: firstcal ! first call to "calfis" logical, intent(in):: lafin ! fin de la physique - real, intent(in):: pdtphys ! pas d'integration pour la physique (s) real, intent(in):: t_seri(klon, llm) ! temperature, in K real, intent(in):: paprs(klon, llm+1) @@ -119,21 +119,20 @@ REAL, save:: trs(klon, nqmx - 2) ! Concentration de traceur dans le sol - REAL masktr(klon, nqmx - 2) ! Masque reservoir de sol traceur + REAL, save:: masktr(klon, nqmx - 2) ! Masque reservoir de sol traceur ! Masque de l'echange avec la surface ! (1 = reservoir) ou (possible => 1) - SAVE masktr - REAL fshtr(klon, nqmx - 2) ! Flux surfacique dans le reservoir de sol - SAVE fshtr - REAL hsoltr(nqmx - 2) ! Epaisseur equivalente du reservoir de sol - SAVE hsoltr - REAL tautr(nqmx - 2) ! Constante de decroissance radioactive - SAVE tautr - REAL vdeptr(nqmx - 2) ! Vitesse de depot sec dans la couche Brownienne - SAVE vdeptr - REAL scavtr(nqmx - 2) ! Coefficient de lessivage - SAVE scavtr + + REAL, save:: fshtr(klon, nqmx - 2) + ! Flux surfacique dans le reservoir de sol + + REAL, save:: hsoltr(nqmx - 2) ! Epaisseur equivalente du reservoir de sol + REAL, save:: tautr(nqmx - 2) ! constante de d\'ecroissance radioactive + REAL, save:: vdeptr(nqmx - 2) + ! Vitesse de depot sec dans la couche Brownienne + + REAL, save:: scavtr(nqmx - 2) ! Coefficient de lessivage CHARACTER itn logical, save:: aerosol(nqmx - 2) ! Nature du traceur @@ -218,10 +217,10 @@ ! Calcul de l'effet de la convection DO it=1, nqmx - 2 if (conv_emanuel) then - call cvltr(pdtphys, da, phi, mp, paprs, tr_seri(:, :, it), upwd, & + call cvltr(dtphys, da, phi, mp, paprs, tr_seri(:, :, it), upwd, & dnwd, d_tr_cv(:, :, it)) else - CALL nflxtr(pdtphys, pmfu, pmfd, pde_u, pen_d, paprs, & + CALL nflxtr(dtphys, pmfu, pmfd, pde_u, pen_d, paprs, & tr_seri(:, :, it), d_tr_cv(:, :, it)) endif @@ -253,13 +252,13 @@ DO it=1, nqmx - 2 do isplit=1, nsplit ! Thermiques - call dqthermcell(klon, llm, pdtphys/nsplit & + call dqthermcell(klon, llm, dtphys/nsplit & , fm_therm, entr_therm, zmasse & , tr_seri(1:klon, 1:llm, it), d_tr, ztra_th) do k=1, llm do i=1, klon - d_tr(i, k)=pdtphys*d_tr(i, k)/nsplit + d_tr(i, k)=dtphys*d_tr(i, k)/nsplit d_tr_th(i, k, it)=d_tr_th(i, k, it)+d_tr(i, k) tr_seri(i, k, it)=max(tr_seri(i, k, it)+d_tr(i, k), 0.) enddo @@ -280,7 +279,7 @@ DO it=1, nqmx - 2 if (clsol(it)) then ! couche limite avec quantite dans le sol calculee - CALL cltracrn(it, pdtphys, yu1, yv1, coefh, cdragh, t_seri, ftsol, & + CALL cltracrn(it, dtphys, yu1, yv1, coefh, cdragh, t_seri, ftsol, & pctsrf, tr_seri(:, :, it), trs(:, it), paprs, pplay, delp, & masktr(1, it), fshtr(1, it), hsoltr(it), tautr(it), & vdeptr(it), rlat, d_tr_cl(1, 1, it), d_trs) @@ -298,7 +297,7 @@ source(i) = 0. ! pas de source, pour l'instant ENDDO - CALL cltrac(pdtphys, coefh, t_seri, tr_seri(:, :, it), source, & + CALL cltrac(dtphys, coefh, t_seri, tr_seri(:, :, it), source, & paprs, pplay, delp, d_tr_cl(1, 1, it)) DO k = 1, llm DO i = 1, klon @@ -312,7 +311,7 @@ ! MAF il faudrait faire une modification pour passer dans radiornpb ! si radio=true - d_tr_dec = radiornpb(tr_seri, pdtphys, tautr) + d_tr_dec = radiornpb(tr_seri, dtphys, tautr) DO it = 1, nqmx - 2 if (radio(it)) then tr_seri(:, :, it) = tr_seri(:, :, it) + d_tr_dec(:, :, it) @@ -327,7 +326,7 @@ ! Once per day, update the coefficients for ozone chemistry: call regr_pr_comb_coefoz(julien, paprs, pplay) end if - call o3_chem(julien, gmtime, t_seri, zmasse, pdtphys, tr_seri(:, :, 3)) + call o3_chem(julien, gmtime, t_seri, zmasse, dtphys, tr_seri(:, :, 3)) end if ! Calcul de l'effet de la precipitation @@ -371,7 +370,7 @@ DO i = 1, klon flestottr(i, k, it) = flestottr(i, k, it) & - (d_tr_lessi_nucl(i, k, it) + d_tr_lessi_impa(i, k, it)) & - * (paprs(i, k)-paprs(i, k+1)) / (RG * pdtphys) + * (paprs(i, k)-paprs(i, k+1)) / (RG * dtphys) ENDDO ENDDO ENDDO