Changeset 4556
- Timestamp:
- May 31, 2023, 5:27:03 PM (19 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/calcul_divers.h
r3435 r4556 2 2 ! $Id$ 3 3 ! 4 ! itap : nombre de pas de temps de la physique 5 ! itapm1 : somme du nombre de pas de temps du/des mois precedent/s. 6 ! (itap - itapm1) : nombre de pas de temps du mois courant 4 7 ! 5 ! Initialisations diverses au tout debut 8 ! Ne pas modifier les IFs ci-dessous impliquant itapm1, 9 ! autrement les resultats seront faux !! 10 ! 11 ! Ici on utilise MOD(itap - itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.1) 12 ! pour detecter le debut de chaque mois lorsque l on tourne par an. 13 ! 14 ! IM, 26.05.2023 15 ! 16 ! 17 ! Initialisations itapm1 du premier mois 6 18 IF(itap.EQ.1) THEN 7 19 itapm1=0 20 ! print*,'initialisation itap=1 itapm1 ',itapm1 8 21 ENDIF 9 22 23 ! 10 24 ! Initialisation debut de mois 11 25 IF(itap.EQ.itapm1+1) THEN 26 ndayrain_mth(:)=0. 27 ! print*,'Initialisation ndayrain_mth ',itap 28 ENDIF 29 ! 30 ! Initialisation debut de chaque jour 31 IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN 12 32 nday_rain(:)=0. 13 33 ! print*,'initialisation mois suivants day_rain itap',itap 14 34 ENDIF 15 16 ! Calcul fin de journee : total_rain, nday_rain 17 IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN 18 ! print*,'calcul nday_rain itap ',itap 35 ! 36 ! Calcul a chaque pas de temps de la physique 19 37 DO i = 1, klon 20 38 total_rain(i)=rain_fall(i)+snow_fall(i) 21 IF(total_rain(i).GT.0.) nday_rain(i)=nday_rain(i)+1. 39 IF(total_rain(i).GT.0.) nday_rain(i)=1. 40 ENDDO 41 ! 42 ! Cumul en fin de journee 43 IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN 44 DO i = 1, klon 45 ndayrain_mth(i)=ndayrain_mth(i)+nday_rain(i) 22 46 ENDDO 23 47 ENDIF 24 48 ! 25 49 ! Initialisation fin de mois 50 ! Ne pas changer le IF ci-dessous, car le compteur itapm1 est augmente 51 ! apres, dans la boucle !!! 52 ! IM, 260523 26 53 IF(MOD(itap-itapm1,NINT(mth_len*un_jour/phys_tstep)).EQ.0) THEN 27 54 itapm1=itapm1+NINT(mth_len*un_jour/phys_tstep) 28 ! print*,' initialisation itapm1 ',itapm155 ! print*,'fmois i i1 mjt',itap,itapm1,mth_len,un_jour,phys_tstep 29 56 ENDIF 30 57 ! 31 58 ! calcul temperatures minimale et maximale moyennees sur le mois 32 59 ! 33 !initialisation debut de mois ou de journee pour les fichiers mensuels60 !initialisation debut de mois pour les fichiers mensuels annuels 34 61 IF(itap.EQ.itapm1+1) THEN 35 62 t2m_min_mon=0. 36 63 t2m_max_mon=0. 37 64 ENDIF 65 ! 66 !initialisation debut de journee pour les fichiers mensuels annuels 38 67 IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.1) THEN 39 68 zt2m_min_mon=zt2m 40 69 zt2m_max_mon=zt2m 41 70 ENDIF 42 !calcul a chaque pas de temps pour les fichiers mensuels 71 ! 72 !calcul sur tous les pas de temps pour les fichiers mensuels annuels 43 73 DO i = 1, klon 44 74 zt2m_min_mon(i)=MIN(zt2m(i),zt2m_min_mon(i)) 45 75 zt2m_max_mon(i)=MAX(zt2m(i),zt2m_max_mon(i)) 46 76 ENDDO 47 !fin de journee 77 ! 78 !fin journee 48 79 IF(MOD(itap,NINT(un_jour/phys_tstep)).EQ.0) THEN 49 80 t2m_min_mon=t2m_min_mon+zt2m_min_mon 50 81 t2m_max_mon=t2m_max_mon+zt2m_max_mon 51 82 ENDIF 83 ! 52 84 !fin mois 53 85 IF(itap==itapm1) THEN -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r4530 r4556 247 247 USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, bs_fall,& 248 248 qsol, z0m, z0h, fevap, agesno, & 249 nday_rain, rain_con, snow_con, &249 nday_rain, ndayrain_mth, rain_con, snow_con, & 250 250 topsw, toplw, toplw0, swup, swdn, solswfdiff, & 251 251 topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, & … … 907 907 CALL histwrite_phy(o_precip, zx_tmp_fi2d) 908 908 CALL histwrite_phy(o_rain_fall, rain_fall) 909 CALL histwrite_phy(o_ndayrain, nday _rain)909 CALL histwrite_phy(o_ndayrain, ndayrain_mth) 910 910 911 911 ! epmax_cape: -
LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
r4523 r4556 313 313 REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 314 314 !$OMP THREADPRIVATE(total_rain,nday_rain) 315 REAL,ALLOCATABLE,SAVE :: ndayrain_mth(:) 316 !$OMP THREADPRIVATE(ndayrain_mth) 315 317 REAL,ALLOCATABLE,SAVE :: paire_ter(:) 316 318 !$OMP THREADPRIVATE(paire_ter) … … 656 658 ALLOCATE(pfrac_1nucl(klon,klev)) 657 659 ALLOCATE(total_rain(klon), nday_rain(klon)) 660 ALLOCATE(ndayrain_mth(klon)) 658 661 ALLOCATE(paire_ter(klon)) 659 662 ALLOCATE(albsol1(klon), albsol2(klon)) … … 836 839 DEALLOCATE(pfrac_1nucl) 837 840 DEALLOCATE(total_rain, nday_rain) 841 DEALLOCATE(ndayrain_mth) 838 842 DEALLOCATE(paire_ter) 839 843 DEALLOCATE(albsol1, albsol2)
Note: See TracChangeset
for help on using the changeset viewer.