13 |
! This is the main procedure for the "physics" part of the program. |
! This is the main procedure for the "physics" part of the program. |
14 |
|
|
15 |
USE abort_gcm_m, ONLY: abort_gcm |
USE abort_gcm_m, ONLY: abort_gcm |
16 |
|
use ajsec_m, only: ajsec |
17 |
USE calendar, ONLY: ymds2ju |
USE calendar, ONLY: ymds2ju |
18 |
|
use calltherm_m, only: calltherm |
19 |
USE clesphys, ONLY: cdhmax, cdmmax, co2_ppm, ecrit_hf, ecrit_ins, & |
USE clesphys, ONLY: cdhmax, cdmmax, co2_ppm, ecrit_hf, ecrit_ins, & |
20 |
ecrit_mth, ecrit_reg, ecrit_tra, ksta, ksta_ter, ok_kzmin |
ecrit_mth, ecrit_reg, ecrit_tra, ksta, ksta_ter, ok_kzmin |
21 |
USE clesphys2, ONLY: cycle_diurne, iflag_con, nbapp_rad, new_oliq, & |
USE clesphys2, ONLY: cycle_diurne, iflag_con, nbapp_rad, new_oliq, & |
26 |
USE conf_gcm_m, ONLY: offline, raz_date |
USE conf_gcm_m, ONLY: offline, raz_date |
27 |
USE conf_phys_m, ONLY: conf_phys |
USE conf_phys_m, ONLY: conf_phys |
28 |
USE ctherm, ONLY: iflag_thermals, nsplit_thermals |
USE ctherm, ONLY: iflag_thermals, nsplit_thermals |
29 |
|
use diagcld2_m, only: diagcld2 |
30 |
use diagetpq_m, only: diagetpq |
use diagetpq_m, only: diagetpq |
31 |
USE dimens_m, ONLY: iim, jjm, llm, nqmx |
USE dimens_m, ONLY: iim, jjm, llm, nqmx |
32 |
USE dimphy, ONLY: klon, nbtr |
USE dimphy, ONLY: klon, nbtr |
33 |
USE dimsoil, ONLY: nsoilmx |
USE dimsoil, ONLY: nsoilmx |
34 |
|
use drag_noro_m, only: drag_noro |
35 |
USE fcttre, ONLY: foeew, qsatl, qsats, thermcep |
USE fcttre, ONLY: foeew, qsatl, qsats, thermcep |
36 |
USE hgardfou_m, ONLY: hgardfou |
USE hgardfou_m, ONLY: hgardfou |
37 |
USE histcom, ONLY: histsync |
USE histcom, ONLY: histsync |
49 |
USE phystokenc_m, ONLY: phystokenc |
USE phystokenc_m, ONLY: phystokenc |
50 |
USE phytrac_m, ONLY: phytrac |
USE phytrac_m, ONLY: phytrac |
51 |
USE qcheck_m, ONLY: qcheck |
USE qcheck_m, ONLY: qcheck |
52 |
|
use radlwsw_m, only: radlwsw |
53 |
|
use sugwd_m, only: sugwd |
54 |
USE suphec_m, ONLY: ra, rcpd, retv, rg, rlvtt, romega, rsigma, rtt |
USE suphec_m, ONLY: ra, rcpd, retv, rg, rlvtt, romega, rsigma, rtt |
55 |
USE temps, ONLY: annee_ref, day_ref, itau_phy |
USE temps, ONLY: annee_ref, day_ref, itau_phy |
56 |
USE yoethf_m, ONLY: r2es, rvtmp2 |
USE yoethf_m, ONLY: r2es, rvtmp2 |
390 |
! Declaration des procedures appelees |
! Declaration des procedures appelees |
391 |
|
|
392 |
EXTERNAL alboc ! calculer l'albedo sur ocean |
EXTERNAL alboc ! calculer l'albedo sur ocean |
|
EXTERNAL ajsec ! ajustement sec |
|
393 |
!KE43 |
!KE43 |
394 |
EXTERNAL conema3 ! convect4.3 |
EXTERNAL conema3 ! convect4.3 |
395 |
EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) |
EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) |
396 |
EXTERNAL nuage ! calculer les proprietes radiatives |
EXTERNAL nuage ! calculer les proprietes radiatives |
|
EXTERNAL radlwsw ! rayonnements solaire et infrarouge |
|
397 |
EXTERNAL transp ! transport total de l'eau et de l'energie |
EXTERNAL transp ! transport total de l'eau et de l'energie |
398 |
|
|
399 |
! Variables locales |
! Variables locales |
421 |
REAL zxfluxu(klon, llm) |
REAL zxfluxu(klon, llm) |
422 |
REAL zxfluxv(klon, llm) |
REAL zxfluxv(klon, llm) |
423 |
|
|
424 |
REAL heat(klon, llm) ! chauffage solaire |
! Le rayonnement n'est pas calcule tous les pas, il faut donc |
425 |
|
! que les variables soient rémanentes |
426 |
|
REAL, save:: heat(klon, llm) ! chauffage solaire |
427 |
REAL heat0(klon, llm) ! chauffage solaire ciel clair |
REAL heat0(klon, llm) ! chauffage solaire ciel clair |
428 |
REAL cool(klon, llm) ! refroidissement infrarouge |
REAL cool(klon, llm) ! refroidissement infrarouge |
429 |
REAL cool0(klon, llm) ! refroidissement infrarouge ciel clair |
REAL cool0(klon, llm) ! refroidissement infrarouge ciel clair |
433 |
REAL albpla(klon) |
REAL albpla(klon) |
434 |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface |
435 |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface |
436 |
! Le rayonnement n'est pas calcule tous les pas, il faut donc |
SAVE cool, albpla, topsw, toplw, solsw, sollw, sollwdown |
|
! sauvegarder les sorties du rayonnement |
|
|
SAVE heat, cool, albpla, topsw, toplw, solsw, sollw, sollwdown |
|
437 |
SAVE topsw0, toplw0, solsw0, sollw0, heat0, cool0 |
SAVE topsw0, toplw0, solsw0, sollw0, heat0, cool0 |
438 |
|
|
439 |
INTEGER itaprad |
INTEGER itaprad |
777 |
|
|
778 |
IF (ok_orodr) THEN |
IF (ok_orodr) THEN |
779 |
rugoro = MAX(1e-5, zstd * zsig / 2) |
rugoro = MAX(1e-5, zstd * zsig / 2) |
780 |
CALL SUGWD(klon, llm, paprs, play) |
CALL SUGWD(paprs, play) |
781 |
else |
else |
782 |
rugoro = 0. |
rugoro = 0. |
783 |
ENDIF |
ENDIF |
1172 |
itop_con(i) = llm + 1 - kctop(i) |
itop_con(i) = llm + 1 - kctop(i) |
1173 |
ENDDO |
ENDDO |
1174 |
case (3:) |
case (3:) |
1175 |
! number of tracers for the Kerry-Emanuel convection: |
! number of tracers for the convection scheme of Kerry Emanuel: |
1176 |
! la partie traceurs est faite dans phytrac |
! la partie traceurs est faite dans phytrac |
1177 |
! on met ntra = 1 pour limiter les appels mais on peut |
! on met ntra = 1 pour limiter les appels mais on peut |
1178 |
! supprimer les calculs / ftra. |
! supprimer les calculs / ftra. |
1192 |
pmfu = upwd + dnwd |
pmfu = upwd + dnwd |
1193 |
ELSE |
ELSE |
1194 |
! conema3 ne contient pas les traceurs |
! conema3 ne contient pas les traceurs |
1195 |
CALL conema3 (dtphys, paprs, play, t_seri, q_seri, u_seri, v_seri, & |
CALL conema3(dtphys, paprs, play, t_seri, q_seri, u_seri, v_seri, & |
1196 |
tr_seri, ntra, ema_work1, ema_work2, d_t_con, d_q_con, & |
tr_seri, ntra, ema_work1, ema_work2, d_t_con, d_q_con, & |
1197 |
d_u_con, d_v_con, d_tr, rain_con, snow_con, ibas_con, & |
d_u_con, d_v_con, d_tr, rain_con, snow_con, ibas_con, & |
1198 |
itop_con, upwd, dnwd, dnwd0, bas, top, Ma, cape, tvp, rflag, & |
itop_con, upwd, dnwd, dnwd0, bas, top, Ma, cape, tvp, rflag, & |
1284 |
ENDDO |
ENDDO |
1285 |
DO k = 1, llm |
DO k = 1, llm |
1286 |
DO i = 1, klon |
DO i = 1, klon |
1287 |
IF (z_factor(i) > (1.0 + 1.0E-08) .OR. & |
IF (z_factor(i) > 1. + 1E-8 .OR. z_factor(i) < 1. - 1E-8) THEN |
|
z_factor(i) < (1.0-1.0E-08)) THEN |
|
1288 |
q_seri(i, k) = q_seri(i, k) * z_factor(i) |
q_seri(i, k) = q_seri(i, k) * z_factor(i) |
1289 |
ENDIF |
ENDIF |
1290 |
ENDDO |
ENDDO |
1481 |
d_ql, d_qs, d_ec) |
d_ql, d_qs, d_ec) |
1482 |
END IF |
END IF |
1483 |
|
|
1484 |
! Calculer l'humidite relative pour diagnostique |
! Humidité relative pour diagnostic: |
|
|
|
1485 |
DO k = 1, llm |
DO k = 1, llm |
1486 |
DO i = 1, klon |
DO i = 1, klon |
1487 |
zx_t = t_seri(i, k) |
zx_t = t_seri(i, k) |
1502 |
zqsat(i, k) = zx_qs |
zqsat(i, k) = zx_qs |
1503 |
ENDDO |
ENDDO |
1504 |
ENDDO |
ENDDO |
1505 |
!jq - introduce the aerosol direct and first indirect radiative forcings |
|
1506 |
!jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) |
! Introduce the aerosol direct and first indirect radiative forcings: |
1507 |
IF (ok_ade.OR.ok_aie) THEN |
! Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) |
1508 |
|
IF (ok_ade .OR. ok_aie) THEN |
1509 |
! Get sulfate aerosol distribution |
! Get sulfate aerosol distribution |
1510 |
CALL readsulfate(rdayvrai, firstcal, sulfate) |
CALL readsulfate(rdayvrai, firstcal, sulfate) |
1511 |
CALL readsulfate_preind(rdayvrai, firstcal, sulfate_pi) |
CALL readsulfate_preind(rdayvrai, firstcal, sulfate_pi) |
1512 |
|
|
1513 |
! Calculate aerosol optical properties (Olivier Boucher) |
! Calculate aerosol optical properties (Olivier Boucher) |
1514 |
CALL aeropt(play, paprs, t_seri, sulfate, rhcl, & |
CALL aeropt(play, paprs, t_seri, sulfate, rhcl, tau_ae, piz_ae, cg_ae, & |
1515 |
tau_ae, piz_ae, cg_ae, aerindex) |
aerindex) |
1516 |
ELSE |
ELSE |
1517 |
tau_ae = 0.0 |
tau_ae = 0. |
1518 |
piz_ae = 0.0 |
piz_ae = 0. |
1519 |
cg_ae = 0.0 |
cg_ae = 0. |
1520 |
ENDIF |
ENDIF |
1521 |
|
|
1522 |
! Calculer les parametres optiques des nuages et quelques |
! Paramètres optiques des nuages et quelques paramètres pour |
1523 |
! parametres pour diagnostiques: |
! diagnostics : |
|
|
|
1524 |
if (ok_newmicro) then |
if (ok_newmicro) then |
1525 |
CALL newmicro (paprs, play, ok_newmicro, & |
CALL newmicro(paprs, play, ok_newmicro, t_seri, cldliq, cldfra, & |
1526 |
t_seri, cldliq, cldfra, cldtau, cldemi, & |
cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, flwp, fiwp, flwc, & |
1527 |
cldh, cldl, cldm, cldt, cldq, & |
fiwc, ok_aie, sulfate, sulfate_pi, bl95_b0, bl95_b1, cldtaupi, & |
1528 |
flwp, fiwp, flwc, fiwc, & |
re, fl) |
|
ok_aie, & |
|
|
sulfate, sulfate_pi, & |
|
|
bl95_b0, bl95_b1, & |
|
|
cldtaupi, re, fl) |
|
1529 |
else |
else |
1530 |
CALL nuage (paprs, play, & |
CALL nuage(paprs, play, t_seri, cldliq, cldfra, cldtau, cldemi, cldh, & |
1531 |
t_seri, cldliq, cldfra, cldtau, cldemi, & |
cldl, cldm, cldt, cldq, ok_aie, sulfate, sulfate_pi, bl95_b0, & |
1532 |
cldh, cldl, cldm, cldt, cldq, & |
bl95_b1, cldtaupi, re, fl) |
|
ok_aie, & |
|
|
sulfate, sulfate_pi, & |
|
|
bl95_b0, bl95_b1, & |
|
|
cldtaupi, re, fl) |
|
|
|
|
1533 |
endif |
endif |
1534 |
|
|
1535 |
! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol. |
! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol. |
|
|
|
1536 |
IF (MOD(itaprad, radpas) == 0) THEN |
IF (MOD(itaprad, radpas) == 0) THEN |
1537 |
DO i = 1, klon |
DO i = 1, klon |
1538 |
albsol(i) = falbe(i, is_oce) * pctsrf(i, is_oce) & |
albsol(i) = falbe(i, is_oce) * pctsrf(i, is_oce) & |
1559 |
|
|
1560 |
DO k = 1, llm |
DO k = 1, llm |
1561 |
DO i = 1, klon |
DO i = 1, klon |
1562 |
t_seri(i, k) = t_seri(i, k) & |
t_seri(i, k) = t_seri(i, k) + (heat(i, k)-cool(i, k)) * dtphys/86400. |
|
+ (heat(i, k)-cool(i, k)) * dtphys/86400. |
|
1563 |
ENDDO |
ENDDO |
1564 |
ENDDO |
ENDDO |
1565 |
|
|
1691 |
|
|
1692 |
! diag. bilKP |
! diag. bilKP |
1693 |
|
|
1694 |
CALL transp_lay (paprs, zxtsol, t_seri, q_seri, u_seri, v_seri, zphi, & |
CALL transp_lay(paprs, zxtsol, t_seri, q_seri, u_seri, v_seri, zphi, & |
1695 |
ve_lay, vq_lay, ue_lay, uq_lay) |
ve_lay, vq_lay, ue_lay, uq_lay) |
1696 |
|
|
1697 |
! Accumuler les variables a stocker dans les fichiers histoire: |
! Accumuler les variables a stocker dans les fichiers histoire: |
1839 |
itau_w = itau_phy + itap |
itau_w = itau_phy + itap |
1840 |
|
|
1841 |
i = NINT(zout/zsto) |
i = NINT(zout/zsto) |
1842 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), pphis, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, pphis, zx_tmp_2d) |
1843 |
CALL histwrite(nid_ins, "phis", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "phis", itau_w, zx_tmp_2d) |
1844 |
|
|
1845 |
i = NINT(zout/zsto) |
i = NINT(zout/zsto) |
1846 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), airephy, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, airephy, zx_tmp_2d) |
1847 |
CALL histwrite(nid_ins, "aire", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "aire", itau_w, zx_tmp_2d) |
1848 |
|
|
1849 |
DO i = 1, klon |
DO i = 1, klon |
1850 |
zx_tmp_fi2d(i) = paprs(i, 1) |
zx_tmp_fi2d(i) = paprs(i, 1) |
1851 |
ENDDO |
ENDDO |
1852 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1853 |
CALL histwrite(nid_ins, "psol", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "psol", itau_w, zx_tmp_2d) |
1854 |
|
|
1855 |
DO i = 1, klon |
DO i = 1, klon |
1856 |
zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i) |
zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i) |
1857 |
ENDDO |
ENDDO |
1858 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1859 |
CALL histwrite(nid_ins, "precip", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "precip", itau_w, zx_tmp_2d) |
1860 |
|
|
1861 |
DO i = 1, klon |
DO i = 1, klon |
1862 |
zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i) |
zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i) |
1863 |
ENDDO |
ENDDO |
1864 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1865 |
CALL histwrite(nid_ins, "plul", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "plul", itau_w, zx_tmp_2d) |
1866 |
|
|
1867 |
DO i = 1, klon |
DO i = 1, klon |
1868 |
zx_tmp_fi2d(i) = rain_con(i) + snow_con(i) |
zx_tmp_fi2d(i) = rain_con(i) + snow_con(i) |
1869 |
ENDDO |
ENDDO |
1870 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1871 |
CALL histwrite(nid_ins, "pluc", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "pluc", itau_w, zx_tmp_2d) |
1872 |
|
|
1873 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zxtsol, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zxtsol, zx_tmp_2d) |
1874 |
CALL histwrite(nid_ins, "tsol", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "tsol", itau_w, zx_tmp_2d) |
1875 |
!ccIM |
!ccIM |
1876 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zt2m, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zt2m, zx_tmp_2d) |
1877 |
CALL histwrite(nid_ins, "t2m", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "t2m", itau_w, zx_tmp_2d) |
1878 |
|
|
1879 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zq2m, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zq2m, zx_tmp_2d) |
1880 |
CALL histwrite(nid_ins, "q2m", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "q2m", itau_w, zx_tmp_2d) |
1881 |
|
|
1882 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zu10m, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zu10m, zx_tmp_2d) |
1883 |
CALL histwrite(nid_ins, "u10m", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "u10m", itau_w, zx_tmp_2d) |
1884 |
|
|
1885 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zv10m, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zv10m, zx_tmp_2d) |
1886 |
CALL histwrite(nid_ins, "v10m", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "v10m", itau_w, zx_tmp_2d) |
1887 |
|
|
1888 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), snow_fall, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, snow_fall, zx_tmp_2d) |
1889 |
CALL histwrite(nid_ins, "snow", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "snow", itau_w, zx_tmp_2d) |
1890 |
|
|
1891 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), cdragm, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, cdragm, zx_tmp_2d) |
1892 |
CALL histwrite(nid_ins, "cdrm", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "cdrm", itau_w, zx_tmp_2d) |
1893 |
|
|
1894 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), cdragh, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, cdragh, zx_tmp_2d) |
1895 |
CALL histwrite(nid_ins, "cdrh", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "cdrh", itau_w, zx_tmp_2d) |
1896 |
|
|
1897 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), toplw, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, toplw, zx_tmp_2d) |
1898 |
CALL histwrite(nid_ins, "topl", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "topl", itau_w, zx_tmp_2d) |
1899 |
|
|
1900 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), evap, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, evap, zx_tmp_2d) |
1901 |
CALL histwrite(nid_ins, "evap", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "evap", itau_w, zx_tmp_2d) |
1902 |
|
|
1903 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), solsw, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, solsw, zx_tmp_2d) |
1904 |
CALL histwrite(nid_ins, "sols", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "sols", itau_w, zx_tmp_2d) |
1905 |
|
|
1906 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), sollw, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, sollw, zx_tmp_2d) |
1907 |
CALL histwrite(nid_ins, "soll", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "soll", itau_w, zx_tmp_2d) |
1908 |
|
|
1909 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), sollwdown, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, sollwdown, zx_tmp_2d) |
1910 |
CALL histwrite(nid_ins, "solldown", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "solldown", itau_w, zx_tmp_2d) |
1911 |
|
|
1912 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), bils, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, bils, zx_tmp_2d) |
1913 |
CALL histwrite(nid_ins, "bils", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "bils", itau_w, zx_tmp_2d) |
1914 |
|
|
1915 |
zx_tmp_fi2d(1:klon) = -1*sens(1:klon) |
zx_tmp_fi2d(1:klon) = -1*sens(1:klon) |
1916 |
! CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), sens, zx_tmp_2d) |
! CALL gr_fi_ecrit(1, klon, iim, jjm + 1, sens, zx_tmp_2d) |
1917 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1918 |
CALL histwrite(nid_ins, "sens", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "sens", itau_w, zx_tmp_2d) |
1919 |
|
|
1920 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), fder, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, fder, zx_tmp_2d) |
1921 |
CALL histwrite(nid_ins, "fder", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "fder", itau_w, zx_tmp_2d) |
1922 |
|
|
1923 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), d_ts(1, is_oce), zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_oce), zx_tmp_2d) |
1924 |
CALL histwrite(nid_ins, "dtsvdfo", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "dtsvdfo", itau_w, zx_tmp_2d) |
1925 |
|
|
1926 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), d_ts(1, is_ter), zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_ter), zx_tmp_2d) |
1927 |
CALL histwrite(nid_ins, "dtsvdft", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "dtsvdft", itau_w, zx_tmp_2d) |
1928 |
|
|
1929 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), d_ts(1, is_lic), zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_lic), zx_tmp_2d) |
1930 |
CALL histwrite(nid_ins, "dtsvdfg", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "dtsvdfg", itau_w, zx_tmp_2d) |
1931 |
|
|
1932 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), d_ts(1, is_sic), zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, d_ts(1, is_sic), zx_tmp_2d) |
1933 |
CALL histwrite(nid_ins, "dtsvdfi", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "dtsvdfi", itau_w, zx_tmp_2d) |
1934 |
|
|
1935 |
DO nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
1936 |
!XXX |
!XXX |
1937 |
zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf)*100. |
zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf)*100. |
1938 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1939 |
CALL histwrite(nid_ins, "pourc_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "pourc_"//clnsurf(nsrf), itau_w, & |
1940 |
zx_tmp_2d) |
zx_tmp_2d) |
1941 |
|
|
1942 |
zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf) |
zx_tmp_fi2d(1 : klon) = pctsrf(1 : klon, nsrf) |
1943 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1944 |
CALL histwrite(nid_ins, "fract_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "fract_"//clnsurf(nsrf), itau_w, & |
1945 |
zx_tmp_2d) |
zx_tmp_2d) |
1946 |
|
|
1947 |
zx_tmp_fi2d(1 : klon) = fluxt(1 : klon, 1, nsrf) |
zx_tmp_fi2d(1 : klon) = fluxt(1 : klon, 1, nsrf) |
1948 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1949 |
CALL histwrite(nid_ins, "sens_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "sens_"//clnsurf(nsrf), itau_w, & |
1950 |
zx_tmp_2d) |
zx_tmp_2d) |
1951 |
|
|
1952 |
zx_tmp_fi2d(1 : klon) = fluxlat(1 : klon, nsrf) |
zx_tmp_fi2d(1 : klon) = fluxlat(1 : klon, nsrf) |
1953 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1954 |
CALL histwrite(nid_ins, "lat_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "lat_"//clnsurf(nsrf), itau_w, & |
1955 |
zx_tmp_2d) |
zx_tmp_2d) |
1956 |
|
|
1957 |
zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, nsrf) |
zx_tmp_fi2d(1 : klon) = ftsol(1 : klon, nsrf) |
1958 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1959 |
CALL histwrite(nid_ins, "tsol_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "tsol_"//clnsurf(nsrf), itau_w, & |
1960 |
zx_tmp_2d) |
zx_tmp_2d) |
1961 |
|
|
1962 |
zx_tmp_fi2d(1 : klon) = fluxu(1 : klon, 1, nsrf) |
zx_tmp_fi2d(1 : klon) = fluxu(1 : klon, 1, nsrf) |
1963 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1964 |
CALL histwrite(nid_ins, "taux_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "taux_"//clnsurf(nsrf), itau_w, & |
1965 |
zx_tmp_2d) |
zx_tmp_2d) |
1966 |
|
|
1967 |
zx_tmp_fi2d(1 : klon) = fluxv(1 : klon, 1, nsrf) |
zx_tmp_fi2d(1 : klon) = fluxv(1 : klon, 1, nsrf) |
1968 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1969 |
CALL histwrite(nid_ins, "tauy_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "tauy_"//clnsurf(nsrf), itau_w, & |
1970 |
zx_tmp_2d) |
zx_tmp_2d) |
1971 |
|
|
1972 |
zx_tmp_fi2d(1 : klon) = frugs(1 : klon, nsrf) |
zx_tmp_fi2d(1 : klon) = frugs(1 : klon, nsrf) |
1973 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1974 |
CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "rugs_"//clnsurf(nsrf), itau_w, & |
1975 |
zx_tmp_2d) |
zx_tmp_2d) |
1976 |
|
|
1977 |
zx_tmp_fi2d(1 : klon) = falbe(1 : klon, nsrf) |
zx_tmp_fi2d(1 : klon) = falbe(1 : klon, nsrf) |
1978 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zx_tmp_fi2d, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zx_tmp_fi2d, zx_tmp_2d) |
1979 |
CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, & |
CALL histwrite(nid_ins, "albe_"//clnsurf(nsrf), itau_w, & |
1980 |
zx_tmp_2d) |
zx_tmp_2d) |
1981 |
|
|
1982 |
END DO |
END DO |
1983 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), albsol, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, albsol, zx_tmp_2d) |
1984 |
CALL histwrite(nid_ins, "albs", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "albs", itau_w, zx_tmp_2d) |
1985 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), albsollw, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, albsollw, zx_tmp_2d) |
1986 |
CALL histwrite(nid_ins, "albslw", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "albslw", itau_w, zx_tmp_2d) |
1987 |
|
|
1988 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), zxrugs, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, zxrugs, zx_tmp_2d) |
1989 |
CALL histwrite(nid_ins, "rugs", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "rugs", itau_w, zx_tmp_2d) |
1990 |
|
|
1991 |
!HBTM2 |
!HBTM2 |
1992 |
|
|
1993 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_pblh, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_pblh, zx_tmp_2d) |
1994 |
CALL histwrite(nid_ins, "s_pblh", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_pblh", itau_w, zx_tmp_2d) |
1995 |
|
|
1996 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_pblt, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_pblt, zx_tmp_2d) |
1997 |
CALL histwrite(nid_ins, "s_pblt", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_pblt", itau_w, zx_tmp_2d) |
1998 |
|
|
1999 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_lcl, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_lcl, zx_tmp_2d) |
2000 |
CALL histwrite(nid_ins, "s_lcl", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_lcl", itau_w, zx_tmp_2d) |
2001 |
|
|
2002 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_capCL, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_capCL, zx_tmp_2d) |
2003 |
CALL histwrite(nid_ins, "s_capCL", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_capCL", itau_w, zx_tmp_2d) |
2004 |
|
|
2005 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_oliqCL, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_oliqCL, zx_tmp_2d) |
2006 |
CALL histwrite(nid_ins, "s_oliqCL", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_oliqCL", itau_w, zx_tmp_2d) |
2007 |
|
|
2008 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_cteiCL, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_cteiCL, zx_tmp_2d) |
2009 |
CALL histwrite(nid_ins, "s_cteiCL", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_cteiCL", itau_w, zx_tmp_2d) |
2010 |
|
|
2011 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_therm, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_therm, zx_tmp_2d) |
2012 |
CALL histwrite(nid_ins, "s_therm", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_therm", itau_w, zx_tmp_2d) |
2013 |
|
|
2014 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_trmb1, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_trmb1, zx_tmp_2d) |
2015 |
CALL histwrite(nid_ins, "s_trmb1", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_trmb1", itau_w, zx_tmp_2d) |
2016 |
|
|
2017 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_trmb2, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_trmb2, zx_tmp_2d) |
2018 |
CALL histwrite(nid_ins, "s_trmb2", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_trmb2", itau_w, zx_tmp_2d) |
2019 |
|
|
2020 |
CALL gr_fi_ecrit(1, klon, iim, (jjm + 1), s_trmb3, zx_tmp_2d) |
CALL gr_fi_ecrit(1, klon, iim, jjm + 1, s_trmb3, zx_tmp_2d) |
2021 |
CALL histwrite(nid_ins, "s_trmb3", itau_w, zx_tmp_2d) |
CALL histwrite(nid_ins, "s_trmb3", itau_w, zx_tmp_2d) |
2022 |
|
|
2023 |
! Champs 3D: |
! Champs 3D: |
2024 |
|
|
2025 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), t_seri, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, t_seri, zx_tmp_3d) |
2026 |
CALL histwrite(nid_ins, "temp", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "temp", itau_w, zx_tmp_3d) |
2027 |
|
|
2028 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), u_seri, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, u_seri, zx_tmp_3d) |
2029 |
CALL histwrite(nid_ins, "vitu", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "vitu", itau_w, zx_tmp_3d) |
2030 |
|
|
2031 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), v_seri, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, v_seri, zx_tmp_3d) |
2032 |
CALL histwrite(nid_ins, "vitv", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "vitv", itau_w, zx_tmp_3d) |
2033 |
|
|
2034 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), zphi, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, zphi, zx_tmp_3d) |
2035 |
CALL histwrite(nid_ins, "geop", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "geop", itau_w, zx_tmp_3d) |
2036 |
|
|
2037 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), play, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, play, zx_tmp_3d) |
2038 |
CALL histwrite(nid_ins, "pres", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "pres", itau_w, zx_tmp_3d) |
2039 |
|
|
2040 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), d_t_vdf, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, d_t_vdf, zx_tmp_3d) |
2041 |
CALL histwrite(nid_ins, "dtvdf", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "dtvdf", itau_w, zx_tmp_3d) |
2042 |
|
|
2043 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), d_q_vdf, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, d_q_vdf, zx_tmp_3d) |
2044 |
CALL histwrite(nid_ins, "dqvdf", itau_w, zx_tmp_3d) |
CALL histwrite(nid_ins, "dqvdf", itau_w, zx_tmp_3d) |
2045 |
|
|
2046 |
if (ok_sync) then |
if (ok_sync) then |
2064 |
|
|
2065 |
! Champs 3D: |
! Champs 3D: |
2066 |
|
|
2067 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), t_seri, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, t_seri, zx_tmp_3d) |
2068 |
CALL histwrite(nid_hf3d, "temp", itau_w, zx_tmp_3d) |
CALL histwrite(nid_hf3d, "temp", itau_w, zx_tmp_3d) |
2069 |
|
|
2070 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), qx(1, 1, ivap), zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, qx(1, 1, ivap), zx_tmp_3d) |
2071 |
CALL histwrite(nid_hf3d, "ovap", itau_w, zx_tmp_3d) |
CALL histwrite(nid_hf3d, "ovap", itau_w, zx_tmp_3d) |
2072 |
|
|
2073 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), u_seri, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, u_seri, zx_tmp_3d) |
2074 |
CALL histwrite(nid_hf3d, "vitu", itau_w, zx_tmp_3d) |
CALL histwrite(nid_hf3d, "vitu", itau_w, zx_tmp_3d) |
2075 |
|
|
2076 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), v_seri, zx_tmp_3d) |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, v_seri, zx_tmp_3d) |
2077 |
CALL histwrite(nid_hf3d, "vitv", itau_w, zx_tmp_3d) |
CALL histwrite(nid_hf3d, "vitv", itau_w, zx_tmp_3d) |
2078 |
|
|
2079 |
if (nbtr >= 3) then |
if (nbtr >= 3) then |
2080 |
CALL gr_fi_ecrit(llm, klon, iim, (jjm + 1), tr_seri(1, 1, 3), & |
CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, tr_seri(1, 1, 3), & |
2081 |
zx_tmp_3d) |
zx_tmp_3d) |
2082 |
CALL histwrite(nid_hf3d, "O3", itau_w, zx_tmp_3d) |
CALL histwrite(nid_hf3d, "O3", itau_w, zx_tmp_3d) |
2083 |
end if |
end if |