18 |
USE abort_gcm_m, ONLY: abort_gcm |
USE abort_gcm_m, ONLY: abort_gcm |
19 |
use ajsec_m, only: ajsec |
use ajsec_m, only: ajsec |
20 |
use calltherm_m, only: calltherm |
use calltherm_m, only: calltherm |
21 |
USE clesphys, ONLY: cdhmax, cdmmax, ecrit_hf, ecrit_ins, ecrit_mth, & |
USE clesphys, ONLY: cdhmax, cdmmax, ecrit_ins, ksta, ksta_ter, ok_kzmin, & |
22 |
ecrit_reg, ecrit_tra, ksta, ksta_ter, ok_kzmin, ok_instan |
ok_instan |
23 |
USE clesphys2, ONLY: cycle_diurne, conv_emanuel, nbapp_rad, new_oliq, & |
USE clesphys2, ONLY: cycle_diurne, conv_emanuel, nbapp_rad, new_oliq, & |
24 |
ok_orodr, ok_orolf |
ok_orodr, ok_orolf |
25 |
USE clmain_m, ONLY: clmain |
USE clmain_m, ONLY: clmain |
27 |
use comconst, only: dtphys |
use comconst, only: dtphys |
28 |
USE comgeomphy, ONLY: airephy |
USE comgeomphy, ONLY: airephy |
29 |
USE concvl_m, ONLY: concvl |
USE concvl_m, ONLY: concvl |
30 |
USE conf_gcm_m, ONLY: offline, day_step, iphysiq |
USE conf_gcm_m, ONLY: offline, day_step, iphysiq, lmt_pas |
31 |
USE conf_phys_m, ONLY: conf_phys |
USE conf_phys_m, ONLY: conf_phys |
32 |
use conflx_m, only: conflx |
use conflx_m, only: conflx |
33 |
USE ctherm, ONLY: iflag_thermals, nsplit_thermals |
USE ctherm, ONLY: iflag_thermals, nsplit_thermals |
89 |
REAL, intent(in):: pphis(:) ! (klon) géopotentiel du sol |
REAL, intent(in):: pphis(:) ! (klon) géopotentiel du sol |
90 |
|
|
91 |
REAL, intent(in):: u(:, :) ! (klon, llm) |
REAL, intent(in):: u(:, :) ! (klon, llm) |
92 |
! vitesse dans la direction X (de O a E) en m/s |
! vitesse dans la direction X (de O a E) en m / s |
93 |
|
|
94 |
REAL, intent(in):: v(:, :) ! (klon, llm) vitesse Y (de S a N) en m/s |
REAL, intent(in):: v(:, :) ! (klon, llm) vitesse Y (de S a N) en m / s |
95 |
REAL, intent(in):: t(:, :) ! (klon, llm) temperature (K) |
REAL, intent(in):: t(:, :) ! (klon, llm) temperature (K) |
96 |
|
|
97 |
REAL, intent(in):: qx(:, :, :) ! (klon, llm, nqmx) |
REAL, intent(in):: qx(:, :, :) ! (klon, llm, nqmx) |
98 |
! (humidit\'e sp\'ecifique et fractions massiques des autres traceurs) |
! (humidit\'e sp\'ecifique et fractions massiques des autres traceurs) |
99 |
|
|
100 |
REAL, intent(in):: omega(:, :) ! (klon, llm) vitesse verticale en Pa/s |
REAL, intent(in):: omega(:, :) ! (klon, llm) vitesse verticale en Pa / s |
101 |
REAL, intent(out):: d_u(:, :) ! (klon, llm) tendance physique de "u" (m s-2) |
REAL, intent(out):: d_u(:, :) ! (klon, llm) tendance physique de "u" (m s-2) |
102 |
REAL, intent(out):: d_v(:, :) ! (klon, llm) tendance physique de "v" (m s-2) |
REAL, intent(out):: d_v(:, :) ! (klon, llm) tendance physique de "v" (m s-2) |
103 |
REAL, intent(out):: d_t(:, :) ! (klon, llm) tendance physique de "t" (K/s) |
REAL, intent(out):: d_t(:, :) ! (klon, llm) tendance physique de "t" (K / s) |
104 |
|
|
105 |
REAL, intent(out):: d_qx(:, :, :) ! (klon, llm, nqmx) |
REAL, intent(out):: d_qx(:, :, :) ! (klon, llm, nqmx) |
106 |
! tendance physique de "qx" (s-1) |
! tendance physique de "qx" (s-1) |
126 |
REAL, save:: t_ancien(klon, llm), q_ancien(klon, llm) |
REAL, save:: t_ancien(klon, llm), q_ancien(klon, llm) |
127 |
LOGICAL, save:: ancien_ok |
LOGICAL, save:: ancien_ok |
128 |
|
|
129 |
REAL d_t_dyn(klon, llm) ! tendance dynamique pour "t" (K/s) |
REAL d_t_dyn(klon, llm) ! tendance dynamique pour "t" (K / s) |
130 |
REAL d_q_dyn(klon, llm) ! tendance dynamique pour "q" (kg/kg/s) |
REAL d_q_dyn(klon, llm) ! tendance dynamique pour "q" (kg / kg / s) |
131 |
|
|
132 |
real da(klon, llm), phi(klon, llm, llm), mp(klon, llm) |
real da(klon, llm), phi(klon, llm, llm), mp(klon, llm) |
133 |
|
|
142 |
! prw: precipitable water |
! prw: precipitable water |
143 |
real prw(klon) |
real prw(klon) |
144 |
|
|
145 |
! flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2) |
! flwp, fiwp = Liquid Water Path & Ice Water Path (kg / m2) |
146 |
! flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg) |
! flwc, fiwc = Liquid Water Content & Ice Water Content (kg / kg) |
147 |
REAL flwp(klon), fiwp(klon) |
REAL flwp(klon), fiwp(klon) |
148 |
REAL flwc(klon, llm), fiwc(klon, llm) |
REAL flwc(klon, llm), fiwc(klon, llm) |
149 |
|
|
206 |
|
|
207 |
REAL fqcalving(klon, nbsrf) |
REAL fqcalving(klon, nbsrf) |
208 |
! flux d'eau "perdue" par la surface et necessaire pour limiter la |
! flux d'eau "perdue" par la surface et necessaire pour limiter la |
209 |
! hauteur de neige, en kg/m2/s |
! hauteur de neige, en kg / m2 / s |
210 |
|
|
211 |
REAL zxffonte(klon), zxfqcalving(klon) |
REAL zxffonte(klon), zxfqcalving(klon) |
212 |
|
|
220 |
REAL frac_nucl(klon, llm) ! idem (nucleation) |
REAL frac_nucl(klon, llm) ! idem (nucleation) |
221 |
|
|
222 |
REAL, save:: rain_fall(klon) |
REAL, save:: rain_fall(klon) |
223 |
! liquid water mass flux (kg/m2/s), positive down |
! liquid water mass flux (kg / m2 / s), positive down |
224 |
|
|
225 |
REAL, save:: snow_fall(klon) |
REAL, save:: snow_fall(klon) |
226 |
! solid water mass flux (kg/m2/s), positive down |
! solid water mass flux (kg / m2 / s), positive down |
227 |
|
|
228 |
REAL rain_tiedtke(klon), snow_tiedtke(klon) |
REAL rain_tiedtke(klon), snow_tiedtke(klon) |
229 |
|
|
244 |
! Conditions aux limites |
! Conditions aux limites |
245 |
|
|
246 |
INTEGER julien |
INTEGER julien |
|
INTEGER, SAVE:: lmt_pas ! number of time steps of "physics" per day |
|
247 |
REAL, save:: pctsrf(klon, nbsrf) ! percentage of surface |
REAL, save:: pctsrf(klon, nbsrf) ! percentage of surface |
|
REAL pctsrf_new(klon, nbsrf) ! pourcentage surfaces issus d'ORCHIDEE |
|
248 |
REAL, save:: albsol(klon) ! albedo du sol total visible |
REAL, save:: albsol(klon) ! albedo du sol total visible |
249 |
REAL, SAVE:: wo(klon, llm) ! column density of ozone in a cell, in kDU |
REAL, SAVE:: wo(klon, llm) ! column density of ozone in a cell, in kDU |
250 |
|
|
283 |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous-surface |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous-surface |
284 |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb\'e pour chaque sous-surface |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb\'e pour chaque sous-surface |
285 |
|
|
286 |
REAL conv_q(klon, llm) ! convergence de l'humidite (kg/kg/s) |
REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s) |
287 |
REAL conv_t(klon, llm) ! convergence of temperature (K/s) |
REAL conv_t(klon, llm) ! convergence of temperature (K / s) |
288 |
|
|
289 |
REAL cldl(klon), cldm(klon), cldh(klon) ! nuages bas, moyen et haut |
REAL cldl(klon), cldm(klon), cldh(klon) ! nuages bas, moyen et haut |
290 |
REAL cldt(klon), cldq(klon) ! nuage total, eau liquide integree |
REAL cldt(klon), cldq(klon) ! nuage total, eau liquide integree |
409 |
INTEGER:: ip_ebil = 0 ! print level for energy conservation diagnostics |
INTEGER:: ip_ebil = 0 ! print level for energy conservation diagnostics |
410 |
INTEGER:: if_ebil = 0 ! verbosity for diagnostics of energy conservation |
INTEGER:: if_ebil = 0 ! verbosity for diagnostics of energy conservation |
411 |
|
|
412 |
REAL d_t_ec(klon, llm) |
REAL d_t_ec(klon, llm) |
413 |
! tendance due \`a la conversion Ec en énergie thermique |
! tendance due \`a la conversion Ec en énergie thermique |
414 |
|
|
415 |
REAL ZRCPD |
REAL ZRCPD |
421 |
|
|
422 |
! Aerosol effects: |
! Aerosol effects: |
423 |
|
|
424 |
REAL sulfate(klon, llm) ! SO4 aerosol concentration (micro g/m3) |
REAL sulfate(klon, llm) ! SO4 aerosol concentration (micro g / m3) |
425 |
|
|
426 |
REAL, save:: sulfate_pi(klon, llm) |
REAL, save:: sulfate_pi(klon, llm) |
427 |
! SO4 aerosol concentration, in \mu g/m3, pre-industrial value |
! SO4 aerosol concentration, in \mu g / m3, pre-industrial value |
428 |
|
|
429 |
REAL cldtaupi(klon, llm) |
REAL cldtaupi(klon, llm) |
430 |
! cloud optical thickness for pre-industrial aerosols |
! cloud optical thickness for pre-industrial aerosols |
534 |
! ATTENTION : il faudra a terme relire q2 dans l'etat initial |
! ATTENTION : il faudra a terme relire q2 dans l'etat initial |
535 |
q2 = 1e-8 |
q2 = 1e-8 |
536 |
|
|
|
lmt_pas = day_step / iphysiq |
|
|
print *, 'Number of time steps of "physics" per day: ', lmt_pas |
|
|
|
|
537 |
radpas = lmt_pas / nbapp_rad |
radpas = lmt_pas / nbapp_rad |
538 |
print *, "radpas = ", radpas |
print *, "radpas = ", radpas |
539 |
|
|
550 |
rugoro = 0. |
rugoro = 0. |
551 |
ENDIF |
ENDIF |
552 |
|
|
553 |
ecrit_ins = NINT(ecrit_ins/dtphys) |
ecrit_ins = NINT(ecrit_ins / dtphys) |
|
ecrit_hf = NINT(ecrit_hf/dtphys) |
|
|
ecrit_mth = NINT(ecrit_mth/dtphys) |
|
|
ecrit_tra = NINT(86400.*ecrit_tra/dtphys) |
|
|
ecrit_reg = NINT(ecrit_reg/dtphys) |
|
554 |
|
|
555 |
! Initialisation des sorties |
! Initialisation des sorties |
556 |
|
|
558 |
CALL ymds2ju(annee_ref, 1, day_ref, 0., date0) |
CALL ymds2ju(annee_ref, 1, day_ref, 0., date0) |
559 |
! Positionner date0 pour initialisation de ORCHIDEE |
! Positionner date0 pour initialisation de ORCHIDEE |
560 |
print *, 'physiq date0: ', date0 |
print *, 'physiq date0: ', date0 |
561 |
CALL phyredem0(lmt_pas) |
CALL phyredem0 |
562 |
ENDIF test_firstcal |
ENDIF test_firstcal |
563 |
|
|
564 |
! We will modify variables *_seri and we will not touch variables |
! We will modify variables *_seri and we will not touch variables |
671 |
|
|
672 |
! Couche limite: |
! Couche limite: |
673 |
|
|
674 |
CALL clmain(dtphys, pctsrf, pctsrf_new, t_seri, q_seri, u_seri, v_seri, & |
CALL clmain(dtphys, pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, & |
675 |
julien, mu0, ftsol, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, & |
ftsol, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, & |
676 |
ftsoil, qsol, paprs, play, fsnow, fqsurf, fevap, falbe, fluxlat, & |
paprs, play, fsnow, fqsurf, fevap, falbe, fluxlat, rain_fall, & |
677 |
rain_fall, snow_fall, fsolsw, fsollw, fder, rlat, frugs, firstcal, & |
snow_fall, fsolsw, fsollw, fder, rlat, frugs, agesno, rugoro, & |
678 |
agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, fluxt, & |
d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, fluxt, fluxq, fluxu, & |
679 |
fluxq, fluxu, fluxv, cdragh, cdragm, q2, dsens, devap, ycoefh, yu1, & |
fluxv, cdragh, cdragm, q2, dsens, devap, ycoefh, yu1, yv1, t2m, q2m, & |
680 |
yv1, t2m, q2m, u10m, v10m, pblh, capCL, oliqCL, cteiCL, pblT, therm, & |
u10m, v10m, pblh, capCL, oliqCL, cteiCL, pblT, therm, trmb1, trmb2, & |
681 |
trmb1, trmb2, trmb3, plcl, fqcalving, ffonte, run_off_lic_0) |
trmb3, plcl, fqcalving, ffonte, run_off_lic_0) |
682 |
|
|
683 |
! Incr\'ementation des flux |
! Incr\'ementation des flux |
684 |
|
|
722 |
! Update surface temperature: |
! Update surface temperature: |
723 |
|
|
724 |
DO i = 1, klon |
DO i = 1, klon |
|
zxtsol(i) = 0. |
|
725 |
zxfluxlat(i) = 0. |
zxfluxlat(i) = 0. |
726 |
|
|
727 |
zt2m(i) = 0. |
zt2m(i) = 0. |
745 |
|
|
746 |
call assert(abs(sum(pctsrf, dim = 2) - 1.) <= EPSFRA, 'physiq: pctsrf') |
call assert(abs(sum(pctsrf, dim = 2) - 1.) <= EPSFRA, 'physiq: pctsrf') |
747 |
|
|
748 |
|
ftsol = ftsol + d_ts |
749 |
|
zxtsol = sum(ftsol * pctsrf, dim = 2) |
750 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
751 |
DO i = 1, klon |
DO i = 1, klon |
752 |
ftsol(i, nsrf) = ftsol(i, nsrf) + d_ts(i, nsrf) |
zxfluxlat(i) = zxfluxlat(i) + fluxlat(i, nsrf) * pctsrf(i, nsrf) |
753 |
zxtsol(i) = zxtsol(i) + ftsol(i, nsrf)*pctsrf(i, nsrf) |
|
754 |
zxfluxlat(i) = zxfluxlat(i) + fluxlat(i, nsrf)*pctsrf(i, nsrf) |
zt2m(i) = zt2m(i) + t2m(i, nsrf) * pctsrf(i, nsrf) |
755 |
|
zq2m(i) = zq2m(i) + q2m(i, nsrf) * pctsrf(i, nsrf) |
756 |
zt2m(i) = zt2m(i) + t2m(i, nsrf)*pctsrf(i, nsrf) |
zu10m(i) = zu10m(i) + u10m(i, nsrf) * pctsrf(i, nsrf) |
757 |
zq2m(i) = zq2m(i) + q2m(i, nsrf)*pctsrf(i, nsrf) |
zv10m(i) = zv10m(i) + v10m(i, nsrf) * pctsrf(i, nsrf) |
758 |
zu10m(i) = zu10m(i) + u10m(i, nsrf)*pctsrf(i, nsrf) |
zxffonte(i) = zxffonte(i) + ffonte(i, nsrf) * pctsrf(i, nsrf) |
|
zv10m(i) = zv10m(i) + v10m(i, nsrf)*pctsrf(i, nsrf) |
|
|
zxffonte(i) = zxffonte(i) + ffonte(i, nsrf)*pctsrf(i, nsrf) |
|
759 |
zxfqcalving(i) = zxfqcalving(i) + & |
zxfqcalving(i) = zxfqcalving(i) + & |
760 |
fqcalving(i, nsrf)*pctsrf(i, nsrf) |
fqcalving(i, nsrf) * pctsrf(i, nsrf) |
761 |
s_pblh(i) = s_pblh(i) + pblh(i, nsrf)*pctsrf(i, nsrf) |
s_pblh(i) = s_pblh(i) + pblh(i, nsrf) * pctsrf(i, nsrf) |
762 |
s_lcl(i) = s_lcl(i) + plcl(i, nsrf)*pctsrf(i, nsrf) |
s_lcl(i) = s_lcl(i) + plcl(i, nsrf) * pctsrf(i, nsrf) |
763 |
s_capCL(i) = s_capCL(i) + capCL(i, nsrf) *pctsrf(i, nsrf) |
s_capCL(i) = s_capCL(i) + capCL(i, nsrf) * pctsrf(i, nsrf) |
764 |
s_oliqCL(i) = s_oliqCL(i) + oliqCL(i, nsrf) *pctsrf(i, nsrf) |
s_oliqCL(i) = s_oliqCL(i) + oliqCL(i, nsrf) * pctsrf(i, nsrf) |
765 |
s_cteiCL(i) = s_cteiCL(i) + cteiCL(i, nsrf) *pctsrf(i, nsrf) |
s_cteiCL(i) = s_cteiCL(i) + cteiCL(i, nsrf) * pctsrf(i, nsrf) |
766 |
s_pblT(i) = s_pblT(i) + pblT(i, nsrf) *pctsrf(i, nsrf) |
s_pblT(i) = s_pblT(i) + pblT(i, nsrf) * pctsrf(i, nsrf) |
767 |
s_therm(i) = s_therm(i) + therm(i, nsrf) *pctsrf(i, nsrf) |
s_therm(i) = s_therm(i) + therm(i, nsrf) * pctsrf(i, nsrf) |
768 |
s_trmb1(i) = s_trmb1(i) + trmb1(i, nsrf) *pctsrf(i, nsrf) |
s_trmb1(i) = s_trmb1(i) + trmb1(i, nsrf) * pctsrf(i, nsrf) |
769 |
s_trmb2(i) = s_trmb2(i) + trmb2(i, nsrf) *pctsrf(i, nsrf) |
s_trmb2(i) = s_trmb2(i) + trmb2(i, nsrf) * pctsrf(i, nsrf) |
770 |
s_trmb3(i) = s_trmb3(i) + trmb3(i, nsrf) *pctsrf(i, nsrf) |
s_trmb3(i) = s_trmb3(i) + trmb3(i, nsrf) * pctsrf(i, nsrf) |
771 |
ENDDO |
ENDDO |
772 |
ENDDO |
ENDDO |
773 |
|
|
873 |
zx_t = 0. |
zx_t = 0. |
874 |
za = 0. |
za = 0. |
875 |
DO i = 1, klon |
DO i = 1, klon |
876 |
za = za + airephy(i)/REAL(klon) |
za = za + airephy(i) / REAL(klon) |
877 |
zx_t = zx_t + (rain_con(i)+ & |
zx_t = zx_t + (rain_con(i)+ & |
878 |
snow_con(i))*airephy(i)/REAL(klon) |
snow_con(i)) * airephy(i) / REAL(klon) |
879 |
ENDDO |
ENDDO |
880 |
zx_t = zx_t/za*dtphys |
zx_t = zx_t / za * dtphys |
881 |
print *, "Precip = ", zx_t |
print *, "Precip = ", zx_t |
882 |
ENDIF |
ENDIF |
883 |
|
|
978 |
zx_t = 0. |
zx_t = 0. |
979 |
za = 0. |
za = 0. |
980 |
DO i = 1, klon |
DO i = 1, klon |
981 |
za = za + airephy(i)/REAL(klon) |
za = za + airephy(i) / REAL(klon) |
982 |
zx_t = zx_t + (rain_lsc(i) & |
zx_t = zx_t + (rain_lsc(i) & |
983 |
+ snow_lsc(i))*airephy(i)/REAL(klon) |
+ snow_lsc(i)) * airephy(i) / REAL(klon) |
984 |
ENDDO |
ENDDO |
985 |
zx_t = zx_t/za*dtphys |
zx_t = zx_t / za * dtphys |
986 |
print *, "Precip = ", zx_t |
print *, "Precip = ", zx_t |
987 |
ENDIF |
ENDIF |
988 |
|
|
1008 |
do k = 1, llm |
do k = 1, llm |
1009 |
do i = 1, klon |
do i = 1, klon |
1010 |
if (d_q_con(i, k) < 0.) then |
if (d_q_con(i, k) < 0.) then |
1011 |
rain_tiedtke(i) = rain_tiedtke(i) - d_q_con(i, k)/dtphys & |
rain_tiedtke(i) = rain_tiedtke(i) - d_q_con(i, k) / dtphys & |
1012 |
*zmasse(i, k) |
* zmasse(i, k) |
1013 |
endif |
endif |
1014 |
enddo |
enddo |
1015 |
enddo |
enddo |
1044 |
|
|
1045 |
! On prend la somme des fractions nuageuses et des contenus en eau |
! On prend la somme des fractions nuageuses et des contenus en eau |
1046 |
cldfra = min(max(cldfra, rnebcon), 1.) |
cldfra = min(max(cldfra, rnebcon), 1.) |
1047 |
cldliq = cldliq + rnebcon*clwcon |
cldliq = cldliq + rnebcon * clwcon |
1048 |
ENDIF |
ENDIF |
1049 |
|
|
1050 |
! 2. Nuages stratiformes |
! 2. Nuages stratiformes |
1076 |
DO i = 1, klon |
DO i = 1, klon |
1077 |
zx_t = t_seri(i, k) |
zx_t = t_seri(i, k) |
1078 |
IF (thermcep) THEN |
IF (thermcep) THEN |
1079 |
zx_qs = r2es * FOEEW(zx_t, rtt >= zx_t)/play(i, k) |
zx_qs = r2es * FOEEW(zx_t, rtt >= zx_t) / play(i, k) |
1080 |
zx_qs = MIN(0.5, zx_qs) |
zx_qs = MIN(0.5, zx_qs) |
1081 |
zcor = 1./(1. - retv*zx_qs) |
zcor = 1. / (1. - retv * zx_qs) |
1082 |
zx_qs = zx_qs*zcor |
zx_qs = zx_qs * zcor |
1083 |
ELSE |
ELSE |
1084 |
IF (zx_t < t_coup) THEN |
IF (zx_t < t_coup) THEN |
1085 |
zx_qs = qsats(zx_t)/play(i, k) |
zx_qs = qsats(zx_t) / play(i, k) |
1086 |
ELSE |
ELSE |
1087 |
zx_qs = qsatl(zx_t)/play(i, k) |
zx_qs = qsatl(zx_t) / play(i, k) |
1088 |
ENDIF |
ENDIF |
1089 |
ENDIF |
ENDIF |
1090 |
zx_rh(i, k) = q_seri(i, k)/zx_qs |
zx_rh(i, k) = q_seri(i, k) / zx_qs |
1091 |
zqsat(i, k) = zx_qs |
zqsat(i, k) = zx_qs |
1092 |
ENDDO |
ENDDO |
1093 |
ENDDO |
ENDDO |
1127 |
|
|
1128 |
DO k = 1, llm |
DO k = 1, llm |
1129 |
DO i = 1, klon |
DO i = 1, klon |
1130 |
t_seri(i, k) = t_seri(i, k) + (heat(i, k) - cool(i, k)) * dtphys/86400. |
t_seri(i, k) = t_seri(i, k) + (heat(i, k) - cool(i, k)) * dtphys & |
1131 |
|
/ 86400. |
1132 |
ENDDO |
ENDDO |
1133 |
ENDDO |
ENDDO |
1134 |
|
|
1147 |
ENDDO |
ENDDO |
1148 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
1149 |
DO i = 1, klon |
DO i = 1, klon |
1150 |
zxqsurf(i) = zxqsurf(i) + fqsurf(i, nsrf)*pctsrf(i, nsrf) |
zxqsurf(i) = zxqsurf(i) + fqsurf(i, nsrf) * pctsrf(i, nsrf) |
1151 |
zxsnow(i) = zxsnow(i) + fsnow(i, nsrf)*pctsrf(i, nsrf) |
zxsnow(i) = zxsnow(i) + fsnow(i, nsrf) * pctsrf(i, nsrf) |
1152 |
ENDDO |
ENDDO |
1153 |
ENDDO |
ENDDO |
1154 |
|
|
1233 |
d_qt, d_ec) |
d_qt, d_ec) |
1234 |
|
|
1235 |
! Calcul des tendances traceurs |
! Calcul des tendances traceurs |
1236 |
call phytrac(lmt_pas, julien, time, firstcal, lafin, dtphys, t, paprs, & |
call phytrac(julien, time, firstcal, lafin, dtphys, t, paprs, play, mfu, & |
1237 |
play, mfu, mfd, pde_u, pen_d, ycoefh, fm_therm, entr_therm, yu1, & |
mfd, pde_u, pen_d, ycoefh, fm_therm, entr_therm, yu1, yv1, ftsol, & |
1238 |
yv1, ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, & |
pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, tr_seri, & |
1239 |
tr_seri, zmasse, ncid_startphy) |
zmasse, ncid_startphy) |
1240 |
|
|
1241 |
IF (offline) call phystokenc(dtphys, t, mfu, mfd, pen_u, pde_u, pen_d, & |
IF (offline) call phystokenc(dtphys, t, mfu, mfd, pen_u, pde_u, pen_d, & |
1242 |
pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, pctsrf, & |
pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, pctsrf, & |
1282 |
DO i = 1, klon |
DO i = 1, klon |
1283 |
prw(i) = 0. |
prw(i) = 0. |
1284 |
DO k = 1, llm |
DO k = 1, llm |
1285 |
prw(i) = prw(i) + q_seri(i, k)*zmasse(i, k) |
prw(i) = prw(i) + q_seri(i, k) * zmasse(i, k) |
1286 |
ENDDO |
ENDDO |
1287 |
ENDDO |
ENDDO |
1288 |
|
|
1342 |
CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic)) |
CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic)) |
1343 |
|
|
1344 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
1345 |
CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf)*100.) |
CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.) |
1346 |
CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf)) |
CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf)) |
1347 |
CALL histwrite_phy("sens_"//clnsurf(nsrf), fluxt(:, 1, nsrf)) |
CALL histwrite_phy("sens_"//clnsurf(nsrf), fluxt(:, 1, nsrf)) |
1348 |
CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf)) |
CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf)) |