Changeset 4557
- Timestamp:
- Jun 1, 2023, 4:44:02 PM (19 months ago)
- Location:
- LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/calcul_divers.h
r3435 r4557 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/branches/IPSL-CM6A-MR/libf/phylmd/phys_output_write_mod.F90
r3842 r4557 225 225 USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, & 226 226 qsol, z0m, z0h, fevap, agesno, & 227 nday_rain, rain_con, snow_con, &227 nday_rain, ndayrain_mth, rain_con, snow_con, & 228 228 topsw, toplw, toplw0, swup, swdn, & 229 229 topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, & … … 845 845 CALL histwrite_phy(o_precip, zx_tmp_fi2d) 846 846 CALL histwrite_phy(o_rain_fall, rain_fall) 847 CALL histwrite_phy(o_ndayrain, nday _rain)847 CALL histwrite_phy(o_ndayrain, ndayrain_mth) 848 848 849 849 ! epmax_cape: -
LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/phys_state_var_mod.F90
r3496 r4557 288 288 REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:) 289 289 !$OMP THREADPRIVATE(total_rain,nday_rain) 290 REAL,ALLOCATABLE,SAVE :: ndayrain_mth(:) 291 !$OMP THREADPRIVATE(ndayrain_mth) 290 292 REAL,ALLOCATABLE,SAVE :: paire_ter(:) 291 293 !$OMP THREADPRIVATE(paire_ter) … … 568 570 ALLOCATE(pfrac_1nucl(klon,klev)) 569 571 ALLOCATE(total_rain(klon), nday_rain(klon)) 572 ALLOCATE(ndayrain_mth(klon)) 570 573 ALLOCATE(paire_ter(klon)) 571 574 ALLOCATE(albsol1(klon), albsol2(klon)) … … 719 722 deallocate(pfrac_1nucl) 720 723 deallocate(total_rain, nday_rain) 724 deallocate(ndayrain_mth) 721 725 deallocate(paire_ter) 722 726 deallocate(albsol1, albsol2)
Note: See TracChangeset
for help on using the changeset viewer.