12 |
|
|
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 aaam_bud_m, only: aaam_bud |
16 |
USE abort_gcm_m, ONLY: abort_gcm |
USE abort_gcm_m, ONLY: abort_gcm |
17 |
|
use ajsec_m, only: ajsec |
18 |
USE calendar, ONLY: ymds2ju |
USE calendar, ONLY: ymds2ju |
19 |
use calltherm_m, only: calltherm |
use calltherm_m, only: calltherm |
20 |
USE clesphys, ONLY: cdhmax, cdmmax, co2_ppm, ecrit_hf, ecrit_ins, & |
USE clesphys, ONLY: cdhmax, cdmmax, co2_ppm, ecrit_hf, ecrit_ins, & |
50 |
USE phystokenc_m, ONLY: phystokenc |
USE phystokenc_m, ONLY: phystokenc |
51 |
USE phytrac_m, ONLY: phytrac |
USE phytrac_m, ONLY: phytrac |
52 |
USE qcheck_m, ONLY: qcheck |
USE qcheck_m, ONLY: qcheck |
53 |
|
use radlwsw_m, only: radlwsw |
54 |
|
use sugwd_m, only: sugwd |
55 |
USE suphec_m, ONLY: ra, rcpd, retv, rg, rlvtt, romega, rsigma, rtt |
USE suphec_m, ONLY: ra, rcpd, retv, rg, rlvtt, romega, rsigma, rtt |
56 |
USE temps, ONLY: annee_ref, day_ref, itau_phy |
USE temps, ONLY: annee_ref, day_ref, itau_phy |
57 |
USE yoethf_m, ONLY: r2es, rvtmp2 |
USE yoethf_m, ONLY: r2es, rvtmp2 |
391 |
! Declaration des procedures appelees |
! Declaration des procedures appelees |
392 |
|
|
393 |
EXTERNAL alboc ! calculer l'albedo sur ocean |
EXTERNAL alboc ! calculer l'albedo sur ocean |
|
EXTERNAL ajsec ! ajustement sec |
|
394 |
!KE43 |
!KE43 |
395 |
EXTERNAL conema3 ! convect4.3 |
EXTERNAL conema3 ! convect4.3 |
396 |
EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) |
EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) |
397 |
EXTERNAL nuage ! calculer les proprietes radiatives |
EXTERNAL nuage ! calculer les proprietes radiatives |
|
EXTERNAL radlwsw ! rayonnements solaire et infrarouge |
|
398 |
EXTERNAL transp ! transport total de l'eau et de l'energie |
EXTERNAL transp ! transport total de l'eau et de l'energie |
399 |
|
|
400 |
! Variables locales |
! Variables locales |
422 |
REAL zxfluxu(klon, llm) |
REAL zxfluxu(klon, llm) |
423 |
REAL zxfluxv(klon, llm) |
REAL zxfluxv(klon, llm) |
424 |
|
|
425 |
REAL heat(klon, llm) ! chauffage solaire |
! Le rayonnement n'est pas calcule tous les pas, il faut donc |
426 |
|
! que les variables soient rémanentes |
427 |
|
REAL, save:: heat(klon, llm) ! chauffage solaire |
428 |
REAL heat0(klon, llm) ! chauffage solaire ciel clair |
REAL heat0(klon, llm) ! chauffage solaire ciel clair |
429 |
REAL cool(klon, llm) ! refroidissement infrarouge |
REAL cool(klon, llm) ! refroidissement infrarouge |
430 |
REAL cool0(klon, llm) ! refroidissement infrarouge ciel clair |
REAL cool0(klon, llm) ! refroidissement infrarouge ciel clair |
434 |
REAL albpla(klon) |
REAL albpla(klon) |
435 |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface |
REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface |
436 |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface |
REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface |
437 |
! 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 |
|
438 |
SAVE topsw0, toplw0, solsw0, sollw0, heat0, cool0 |
SAVE topsw0, toplw0, solsw0, sollw0, heat0, cool0 |
439 |
|
|
440 |
INTEGER itaprad |
INTEGER itaprad |
778 |
|
|
779 |
IF (ok_orodr) THEN |
IF (ok_orodr) THEN |
780 |
rugoro = MAX(1e-5, zstd * zsig / 2) |
rugoro = MAX(1e-5, zstd * zsig / 2) |
781 |
CALL SUGWD(klon, llm, paprs, play) |
CALL SUGWD(paprs, play) |
782 |
else |
else |
783 |
rugoro = 0. |
rugoro = 0. |
784 |
ENDIF |
ENDIF |
905 |
! Mettre en action les conditions aux limites (albedo, sst, etc.). |
! Mettre en action les conditions aux limites (albedo, sst, etc.). |
906 |
|
|
907 |
! Prescrire l'ozone et calculer l'albedo sur l'ocean. |
! Prescrire l'ozone et calculer l'albedo sur l'ocean. |
908 |
if (nqmx >= 5) then |
wo = ozonecm(REAL(julien), paprs) |
|
wo = qx(:, :, 5) * zmasse / dobson_u / 1e3 |
|
|
else IF (MOD(itap - 1, lmt_pas) == 0) THEN |
|
|
wo = ozonecm(REAL(julien), paprs) |
|
|
ENDIF |
|
909 |
|
|
910 |
! Évaporation de l'eau liquide nuageuse : |
! Évaporation de l'eau liquide nuageuse : |
911 |
DO k = 1, llm |
DO k = 1, llm |
1655 |
ENDDO |
ENDDO |
1656 |
ENDDO |
ENDDO |
1657 |
|
|
1658 |
!IM calcul composantes axiales du moment angulaire et couple des montagnes |
CALL aaam_bud(ra, rg, romega, rlat, rlon, pphis, zustrdr, zustrli, & |
1659 |
|
zustrph, zvstrdr, zvstrli, zvstrph, paprs, u, v, aam, torsfc) |
|
CALL aaam_bud(27, klon, llm, time, ra, rg, romega, rlat, rlon, pphis, & |
|
|
zustrdr, zustrli, zustrph, zvstrdr, zvstrli, zvstrph, paprs, u, v, & |
|
|
aam, torsfc) |
|
1660 |
|
|
1661 |
IF (if_ebil >= 2) THEN |
IF (if_ebil >= 2) THEN |
1662 |
ztit = 'after orography' |
ztit = 'after orography' |