- Timestamp:
- May 27, 2025, 1:07:44 PM (12 days ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/calcul_STDlev.h
r2312 r5685 2 2 ! $Header$ 3 3 ! 4 !------------------------------------------------------------------- 5 ! Interpolation sur des niveaux de pression. 6 ! 7 ! Enchainement des operations en prenant pour exemple la temperature 8 ! 9 ! 1. CALL ini_undefSTD : 10 ! On met les champs cumules à 0 si 11 ! if mod(itap,nint(freq_outnmc(n)/phys_tstep))==1 12 ! tnondef(i, k, n) = 0. 13 ! tsumstd(i, k, n) = 0. 14 ! 15 ! 2. Ensuite : 16 ! on interpole les champs sur les niveaux STD de pression 17 ! a chaque pas de temps de la physique avec plevel_new 18 ! t_seri -> tlevSTD 19 ! 20 ! 3. CALL undefSTD : 21 ! On ajoute les champs à la moyenne tous les frec_calnmc 22 ! pas de temps 23 ! IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN 24 ! IF (tlevstd(i,k)==missing_val) THEN 25 ! tnondef(i, k, n) = tnondef(i, k, n) + 1. 26 ! ELSE IF (tlevstd(i,k)/=missing_val) THEN 27 ! tsumstd(i, k, n) = tsumstd(i, k, n) + tlevstd(i, k) 28 ! 29 ! 4. CALL moy_undefSTD 30 ! On normalise à freq_outnmc, avant de reinitialiser plus haut dans ini_undef 31 ! IF mod(itap,nint(freq_outnmc(n)/phys_tstep))==0 32 ! tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 33 ! 34 ! 5. Intrpolation des flux (pourquoi pas avec 2 ?) 35 ! 36 ! 6. Choix entre instantanné et moyenne en temps 37 ! twriteSTD(:,:,1)=tsumSTD(:,:,1) 38 ! twriteSTD(:,:,3)=tlevSTD(:,:) 39 ! 40 ! Premiere série de modifications (2025/05/07, FH) : 41 ! - Fait en sorte que freq_outnmc=ecrit_files 42 ! - Mis tous les USE avec ONLY dans *undefSTD.f90 43 ! - Utilie ecrit_files comme frequence de sortie freq_outnmc 44 ! - Nettoye la lecture des freq_outnmc et freq_calnmc dans conf_phys 45 ! - Passe les dimensionnement de certaines variables de 3 à 10 46 ! nombre de fichiers par défaut. En gros nout=nfiles 47 ! 48 ! Proposition de modifications : 49 ! - Ne plus calculer l'interpolation à tous les pas de temps 50 ! mais seulement à la fréquence freq_calcnmc 51 ! - Mettre le call ini_undefSTD juste avant undef_STD et moy_undefSTD 52 ! - Enlever ecrit_files(7) = freq_outNMC(1) dans phys_output_mod 53 ! - Enlever les vieux controles de fichiers dans conf_phys 54 ! - enlever les dimensionnement à 10 en dur 55 ! - Enlever toute chaine de caractère NMC dans le modèle. 56 ! 57 !------------------------------------------------------------------- 58 4 59 !IM on initialise les variables 5 60 ! 6 61 ! missing_val=nf90_fill_real 7 62 ! 63 64 ! On peut à terme utiliser directement ecrit_files (le nom est moins 65 ! bien choisi ... 66 67 !print*,'STDSTD ecrit_files ',ecrit_files(1:4) 68 freq_outnmc(:)=ecrit_files(:) 69 freq_calnmc(:)=pdtphys 70 8 71 IF (.not. ok_all_xml) then 9 CALL ini_undefSTD(itap ,itapm1)72 CALL ini_undefSTD(itap) 10 73 ENDIF 11 !12 !IM on interpole les champs sur les niveaux STD de pression13 !IM a chaque pas de temps de la physique14 74 ! 15 75 !-------------------------------------------------------c … … 134 194 IF (.not. ok_all_xml) then 135 195 CALL undefSTD(itap, read_climoz) 136 CALL moy_undefSTD(itap ,itapm1)196 CALL moy_undefSTD(itap) 137 197 ENDIF 138 198 ! … … 160 220 lwup,LWup200) 161 221 ! 162 twriteSTD(:,:,1)=tsumSTD(:,:,1) 163 qwriteSTD(:,:,1)=qsumSTD(:,:,1) 164 rhwriteSTD(:,:,1)=rhsumSTD(:,:,1) 165 phiwriteSTD(:,:,1)=phisumSTD(:,:,1) 166 uwriteSTD(:,:,1)=usumSTD(:,:,1) 167 vwriteSTD(:,:,1)=vsumSTD(:,:,1) 168 wwriteSTD(:,:,1)=wsumSTD(:,:,1) 169 170 twriteSTD(:,:,2)=tsumSTD(:,:,2) 171 qwriteSTD(:,:,2)=qsumSTD(:,:,2) 172 rhwriteSTD(:,:,2)=rhsumSTD(:,:,2) 173 phiwriteSTD(:,:,2)=phisumSTD(:,:,2) 174 uwriteSTD(:,:,2)=usumSTD(:,:,2) 175 vwriteSTD(:,:,2)=vsumSTD(:,:,2) 176 wwriteSTD(:,:,2)=wsumSTD(:,:,2) 177 178 twriteSTD(:,:,3)=tlevSTD(:,:) 179 qwriteSTD(:,:,3)=qlevSTD(:,:) 180 rhwriteSTD(:,:,3)=rhlevSTD(:,:) 181 phiwriteSTD(:,:,3)=philevSTD(:,:) 182 uwriteSTD(:,:,3)=ulevSTD(:,:) 183 vwriteSTD(:,:,3)=vlevSTD(:,:) 184 wwriteSTD(:,:,3)=wlevSTD(:,:) 185 186 twriteSTD(:,:,4)=tlevSTD(:,:) 187 qwriteSTD(:,:,4)=qlevSTD(:,:) 188 rhwriteSTD(:,:,4)=rhlevSTD(:,:) 189 phiwriteSTD(:,:,4)=philevSTD(:,:) 190 uwriteSTD(:,:,4)=ulevSTD(:,:) 191 vwriteSTD(:,:,4)=vlevSTD(:,:) 192 wwriteSTD(:,:,4)=wlevSTD(:,:) 193 ! 194 !IM initialisation 5eme fichier de sortie 195 twriteSTD(:,:,5)=tlevSTD(:,:) 196 qwriteSTD(:,:,5)=qlevSTD(:,:) 197 rhwriteSTD(:,:,5)=rhlevSTD(:,:) 198 phiwriteSTD(:,:,5)=philevSTD(:,:) 199 uwriteSTD(:,:,5)=ulevSTD(:,:) 200 vwriteSTD(:,:,5)=vlevSTD(:,:) 201 wwriteSTD(:,:,5)=wlevSTD(:,:) 202 ! 203 !IM initialisation 6eme fichier de sortie 204 twriteSTD(:,:,6)=tlevSTD(:,:) 205 qwriteSTD(:,:,6)=qlevSTD(:,:) 206 rhwriteSTD(:,:,6)=rhlevSTD(:,:) 207 phiwriteSTD(:,:,6)=philevSTD(:,:) 208 uwriteSTD(:,:,6)=ulevSTD(:,:) 209 vwriteSTD(:,:,6)=vlevSTD(:,:) 210 wwriteSTD(:,:,6)=wlevSTD(:,:) 222 do n=1,nout 223 !print*,'STDSTD n nout',n,nout,clef_files(n) 224 if (clef_files(n)) then 225 if (type_ecri(n)=='ave(X)') then 226 !print*,'STDSTD fichier ave(X), n=',n 227 twriteSTD(:,:,n)=tsumSTD(:,:,n) 228 qwriteSTD(:,:,n)=qsumSTD(:,:,n) 229 rhwriteSTD(:,:,n)=rhsumSTD(:,:,n) 230 phiwriteSTD(:,:,n)=phisumSTD(:,:,n) 231 uwriteSTD(:,:,n)=usumSTD(:,:,n) 232 vwriteSTD(:,:,n)=vsumSTD(:,:,n) 233 wwriteSTD(:,:,n)=wsumSTD(:,:,n) 234 else 235 !print*,'STDSTD fichier autre, n=',n,type_ecri(n) 236 twriteSTD(:,:,n)=tlevSTD(:,:) 237 qwriteSTD(:,:,n)=qlevSTD(:,:) 238 rhwriteSTD(:,:,n)=rhlevSTD(:,:) 239 phiwriteSTD(:,:,n)=philevSTD(:,:) 240 uwriteSTD(:,:,n)=ulevSTD(:,:) 241 vwriteSTD(:,:,n)=vlevSTD(:,:) 242 wwriteSTD(:,:,n)=wlevSTD(:,:) 243 endif 244 endif 245 enddo 246 211 247 !IM for NMC files 212 248 DO n=1, nlevSTD3 -
LMDZ6/trunk/libf/phylmd/clesphys_mod_h.f90
r5645 r5685 36 36 , ok_kzmin & 37 37 , lev_histhf, lev_histday, lev_histmth & 38 , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC & 39 , ok_histNMC & 38 , lev_histins, lev_histLES & 40 39 , type_run, ok_regdyn, ok_cosp, ok_airs & 41 40 , ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP & … … 117 116 !IM lev_histday : niveau sorties journalieres 118 117 !IM lev_histmth : niveau sorties mensuelles 119 !IM lev_histdayNMC : on peut sortir soit sur 8 (comme AR5) ou bien120 ! sur 17 niveaux de pression121 118 INTEGER lev_histhf, lev_histday, lev_histmth 122 INTEGER lev_histdayNMC123 119 Integer lev_histins, lev_histLES 124 !IM ok_histNMC : sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)125 120 !IM freq_outNMC : frequences de sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC) 126 121 !IM freq_calNMC : frequences de calcul fis. hist*NMC.nc 127 LOGICAL ok_histNMC(3) 128 INTEGER levout_histNMC(3) 129 REAL freq_outNMC(3), freq_calNMC(3) 122 REAL freq_outNMC(10), freq_calNMC(10) 130 123 CHARACTER(len = 4) type_run 131 124 ! aer_type: pour utiliser un fichier constant dans readaerosol … … 197 190 !$OMP , ok_kzmin & 198 191 !$OMP , lev_histhf, lev_histday, lev_histmth & 199 !$OMP , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC & 200 !$OMP , ok_histNMC & 192 !$OMP , lev_histins, lev_histLES & 201 193 !$OMP , type_run, ok_regdyn, ok_cosp, ok_airs & 202 194 !$OMP , ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP & -
LMDZ6/trunk/libf/phylmd/conf_phys_m.f90
r5662 r5685 197 197 INTEGER,SAVE :: iflag_order2_sollw_omp 198 198 INTEGER, SAVE :: lev_histins_omp, lev_histLES_omp 199 INTEGER, SAVE :: lev_histdayNMC_omp200 INTEGER, SAVE :: levout_histNMC_omp(3)201 LOGICAL, SAVE :: ok_histNMC_omp(3)202 REAL, SAVE :: freq_outNMC_omp(3), freq_calNMC_omp(3)203 199 CHARACTER*4, SAVE :: type_run_omp 204 200 LOGICAL, SAVE :: ok_cosp_omp, ok_airs_omp … … 1898 1894 CALL getin('lev_histLES',lev_histLES_omp) 1899 1895 ! 1900 !Config Key = lev_histdayNMC1901 !Config Desc =1902 !Config Def = 81903 !Config Help =1904 !1905 lev_histdayNMC_omp = 81906 CALL getin('lev_histdayNMC',lev_histdayNMC_omp)1907 !1908 !Config Key = levout_histNMC1909 !Config Desc =1910 !Config Def = 51911 !Config Help =1912 !1913 levout_histNMC_omp(1) = 51914 levout_histNMC_omp(2) = 51915 levout_histNMC_omp(3) = 51916 CALL getin('levout_histNMC',levout_histNMC_omp)1917 !1918 !histNMC BEG1919 !Config Key = ok_histNMC1920 !Config Desc = ok_histNMC(1) = frequence de sortie fichiers histmthNMC1921 !Config Desc = ok_histNMC(2) = frequence de sortie fichiers histdayNMC1922 !Config Desc = ok_histNMC(3) = frequence de sortie fichiers histhfNMC1923 !Config Def = n, n, n1924 !Config Help =1925 !1926 ok_histNMC_omp(1) = .FALSE.1927 ok_histNMC_omp(2) = .FALSE.1928 ok_histNMC_omp(3) = .FALSE.1929 CALL getin('ok_histNMC',ok_histNMC_omp)1930 !1931 !Config Key = freq_outNMC1932 !Config Desc = freq_outNMC(1) = frequence de sortie fichiers histmthNMC1933 !Config Desc = freq_outNMC(2) = frequence de sortie fichiers histdayNMC1934 !Config Desc = freq_outNMC(3) = frequence de sortie fichiers histhfNMC1935 !Config Def = 2592000., 86400., 21600. (1mois, 1jour, 6h)1936 !Config Help =1937 !1938 freq_outNMC_omp(1) = mth_len1939 freq_outNMC_omp(2) = 1.1940 freq_outNMC_omp(3) = 1./4.1941 CALL getin('freq_outNMC',freq_outNMC_omp)1942 !1943 !Config Key = freq_calNMC1944 !Config Desc = freq_calNMC(1) = frequence de calcul fichiers histmthNMC1945 !Config Desc = freq_calNMC(2) = frequence de calcul fichiers histdayNMC1946 !Config Desc = freq_calNMC(3) = frequence de calcul fichiers histhfNMC1947 !Config Def = phys_tstep1948 !Config Help =1949 !1950 freq_calNMC_omp(1) = phys_tstep1951 freq_calNMC_omp(2) = phys_tstep1952 freq_calNMC_omp(3) = phys_tstep1953 CALL getin('freq_calNMC',freq_calNMC_omp)1954 !1955 1896 !Config Key = type_run 1956 1897 !Config Desc = … … 2583 2524 lev_histins = lev_histins_omp 2584 2525 lev_histLES = lev_histLES_omp 2585 lev_histdayNMC = lev_histdayNMC_omp 2586 levout_histNMC = levout_histNMC_omp 2587 ok_histNMC(:) = ok_histNMC_omp(:) 2588 freq_outNMC(:) = freq_outNMC_omp(:) 2589 freq_calNMC(:) = freq_calNMC_omp(:) 2526 2590 2527 2591 2528 type_ocean = type_ocean_omp … … 3016 2953 WRITE(lunout,*) ' lev_histins = ',lev_histins 3017 2954 WRITE(lunout,*) ' lev_histLES = ',lev_histLES 3018 WRITE(lunout,*) ' lev_histdayNMC = ',lev_histdayNMC3019 WRITE(lunout,*) ' levout_histNMC = ',levout_histNMC3020 WRITE(lunout,*) ' ok_histNMC = ',ok_histNMC3021 WRITE(lunout,*) ' freq_outNMC = ',freq_outNMC3022 WRITE(lunout,*) ' freq_calNMC = ',freq_calNMC3023 2955 WRITE(lunout,*) ' iflag_pbl = ', iflag_pbl 3024 2956 WRITE(lunout,*) ' iflag_physiq = ', iflag_physiq -
LMDZ6/trunk/libf/phylmd/cv3_routines.f90
r5682 r5685 4043 4043 4044 4044 if ( restore_bug_cvdn ) then 4045 print*,'DOWND BUG'4046 4045 DO il = 1, ncum 4047 4046 amp1(il) = upwd(il,i+1) … … 4049 4048 ENDDO 4050 4049 else 4051 print*,'DOWND NO BUG'4052 4050 DO il = 1, ncum 4053 4051 amp1(il) = upwd(il,i+1) -
LMDZ6/trunk/libf/phylmd/ini_undefSTD.f90
r5282 r5685 3 3 4 4 5 SUBROUTINE ini_undefstd(itap, itapm1) 6 USE clesphys_mod_h 7 USE dimphy 8 USE phys_state_var_mod ! Variables sauvegardees de la physique 9 USE phys_cal_mod, ONLY: mth_len 10 IMPLICIT NONE 5 SUBROUTINE ini_undefstd(itap) 6 USE clesphys_mod_h, ONLY : freq_outnmc 7 USE dimphy, ONLY : klon 8 USE phys_state_var_mod, ONLY : tnondef,tsumstd,usumstd,vsumstd,wsumstd,phisumstd,qsumstd,rhsumstd 9 USE phys_state_var_mod, ONLY : uvsumstd,vqsumstd,vtsumstd,wqsumstd,vphisumstd,wtsumstd,u2sumstd 10 USE phys_state_var_mod, ONLY : v2sumstd,t2sumstd,o3sumstd,o3daysumstd,nlevSTD,nout,phys_tstep 11 USE phys_state_var_mod, ONLY : missing_val_nf90 12 USE phys_cal_mod, ONLY: mth_len 13 USE phys_output_var_mod, ONLY : clef_files 14 15 IMPLICIT NONE 11 16 12 17 ! ==================================================================== … … 34 39 ! variables Input/Output 35 40 ! INTEGER nlevSTD, klevSTD, itap 36 INTEGER itap , itapm141 INTEGER itap 37 42 ! PARAMETER(klevSTD=17) 38 43 ! REAL dtime … … 54 59 ! initialisation variables en debut du mois, de la journee ou des 6h 55 60 56 IF (n==1 .AND. itap-itapm1==1 .OR. n>1 .AND. mod(itap,nint( & 57 freq_outnmc(n)/phys_tstep))==1) THEN 61 IF ( clef_files(n) .and. mod(itap,nint(freq_outnmc(n)/phys_tstep))==1) THEN 58 62 ! print*,'ini_undefSTD n itap',n,itap 59 63 DO k = 1, nlevstd -
LMDZ6/trunk/libf/phylmd/moy_undefSTD.f90
r5310 r5685 2 2 ! $Id$ 3 3 4 SUBROUTINE moy_undefstd(itap, itapm1) 5 USE clesphys_mod_h 6 USE netcdf 7 USE dimphy 8 USE phys_state_var_mod 9 use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios 4 SUBROUTINE moy_undefstd(itap) 5 USE clesphys_mod_h, ONLY : freq_calnmc, freq_outnmc 6 USE netcdf 7 USE dimphy, ONLY : klon 8 USE phys_state_var_mod, ONLY : missing_val_nf90,nlevstd,nout,o3daysumstd,o3sumstd,phisumstd,phys_tstep 9 USE phys_state_var_mod, ONLY : qsumstd,rhsumstd,t2sumstd,tnondef,tsumstd,u2sumstd,usumstd,uvsumstd,v2sumstd 10 USE phys_state_var_mod, ONLY : vphisumstd,vqsumstd,vsumstd,vtsumstd,wqsumstd,wsumstd,wtsumstd 11 USE wxios_mod, ONLY: missing_val_xios => missing_val, using_xios 12 USE phys_cal_mod, ONLY: mth_len 13 USE phys_output_var_mod, ONLY : clef_files 10 14 11 USE phys_cal_mod, ONLY: mth_len 15 12 16 IMPLICIT NONE 13 17 REAL :: missing_val … … 34 38 ! INTEGER nlevSTD, klevSTD, itap 35 39 ! PARAMETER(klevSTD=17) 36 INTEGER itap , itapm140 INTEGER itap 37 41 38 42 ! variables locales … … 69 73 70 74 ! calcul 1 fois pas mois, 1 fois par jour ou toutes les 6h 75 76 ! print*,'STDSTD n,freq_outnmc(n),phys_tstep',n,freq_outnmc(n),phys_tstep 71 77 72 IF (n==1 .AND. itap==itapm1 .OR. n>1 .AND. mod(itap,nint(freq_outnmc(n)/ & 73 phys_tstep))==0) THEN 74 75 ! print*,'moy_undefSTD n itap itapm1',n,itap,itapm1 78 IF ( clef_files(n) .and. mod(itap,nint(freq_outnmc(n)/phys_tstep))==0) THEN 76 79 77 80 DO k = 1, nlevstd 78 81 DO i = 1, klon 79 82 IF (tnondef(i,k,n)/=(freq_moynmc(n))) THEN 80 tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n & 81 )) 82 usumstd(i, k, n) = usumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n & 83 )) 84 vsumstd(i, k, n) = vsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n & 85 )) 86 wsumstd(i, k, n) = wsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n & 87 )) 88 phisumstd(i, k, n) = phisumstd(i, k, n)/ & 89 (freq_moynmc(n)-tnondef(i,k,n)) 90 qsumstd(i, k, n) = qsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n & 91 )) 92 rhsumstd(i, k, n) = rhsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 93 ,n)) 94 uvsumstd(i, k, n) = uvsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 95 ,n)) 96 vqsumstd(i, k, n) = vqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 97 ,n)) 98 vtsumstd(i, k, n) = vtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 99 ,n)) 100 wqsumstd(i, k, n) = wqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 101 ,n)) 102 vphisumstd(i, k, n) = vphisumstd(i, k, n)/ & 103 (freq_moynmc(n)-tnondef(i,k,n)) 104 wtsumstd(i, k, n) = wtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 105 ,n)) 106 u2sumstd(i, k, n) = u2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 107 ,n)) 108 v2sumstd(i, k, n) = v2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 109 ,n)) 110 t2sumstd(i, k, n) = t2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 111 ,n)) 112 o3sumstd(i, k, n) = o3sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k & 113 ,n)) 114 o3daysumstd(i, k, n) = o3daysumstd(i, k, n)/ & 115 (freq_moynmc(n)-tnondef(i,k,n)) 83 tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 84 usumstd(i, k, n) = usumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 85 vsumstd(i, k, n) = vsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 86 wsumstd(i, k, n) = wsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 87 phisumstd(i, k, n) = phisumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 88 qsumstd(i, k, n) = qsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 89 rhsumstd(i, k, n) = rhsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 90 uvsumstd(i, k, n) = uvsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 91 vqsumstd(i, k, n) = vqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 92 vtsumstd(i, k, n) = vtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 93 wqsumstd(i, k, n) = wqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 94 vphisumstd(i, k, n) = vphisumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 95 wtsumstd(i, k, n) = wtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 96 u2sumstd(i, k, n) = u2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 97 v2sumstd(i, k, n) = v2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 98 t2sumstd(i, k, n) = t2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 99 o3sumstd(i, k, n) = o3sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 100 o3daysumstd(i, k, n) = o3daysumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n)) 116 101 ELSE 117 102 tsumstd(i, k, n) = missing_val -
LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
r5677 r5685 6 6 USE phys_output_var_mod 7 7 USE phys_output_write_mod, ONLY : phys_output_write 8 8 9 REAL, DIMENSION(nfiles),SAVE :: ecrit_files 10 LOGICAL, DIMENSION(nfiles) :: phys_out_filekeys 9 11 10 12 … … 126 128 CHARACTER(LEN=20), DIMENSION(nfiles) :: chtimestep = (/ 'Default', 'Default', 'Default', 'Default', 'Default', & 127 129 'Default', 'Default', 'Default', 'Default', 'Default' /) 128 LOGICAL, DIMENSION(nfiles) :: phys_out_filekeys129 130 LOGICAL, DIMENSION(nfiles) :: phys_out_filestations 130 131 … … 249 250 type_ecri(10)= 'ave(X)' 250 251 251 clef_files(1) = ok_mensuel 252 clef_files(2) = ok_journe 253 clef_files(3) = ok_hf 254 clef_files(4) = ok_instan 255 clef_files(5) = ok_LES 256 clef_files(6) = ok_instan 257 clef_files(7) = ok_histNMC(1) 258 clef_files(8) = ok_histNMC(2) 259 clef_files(9) = ok_histNMC(3) 252 clef_files(1:3) = .TRUE. 253 clef_files(4:10) = .FALSE. 260 254 IF (CPPKEY_STRATAER) THEN 261 255 clef_files(10)= .TRUE. … … 265 259 266 260 !sortir des fichiers "stations" si clef_stations(:)=.TRUE. 267 clef_stations(1) = .FALSE. 268 clef_stations(2) = .FALSE. 269 clef_stations(3) = .FALSE. 270 clef_stations(4) = .FALSE. 271 clef_stations(5) = .FALSE. 272 clef_stations(6) = .FALSE. 273 clef_stations(7) = .FALSE. 274 clef_stations(8) = .FALSE. 275 clef_stations(9) = .FALSE. 276 clef_stations(10)= .FALSE. 277 278 lev_files(1) = lev_histmth 279 lev_files(2) = lev_histday 280 lev_files(3) = lev_histhf 281 lev_files(4) = lev_histins 282 lev_files(5) = lev_histLES 283 lev_files(6) = lev_histins 284 lev_files(7) = levout_histNMC(1) 285 lev_files(8) = levout_histNMC(2) 286 lev_files(9) = levout_histNMC(3) 287 lev_files(10)= 5 288 261 clef_stations(1:10) = .FALSE. 262 lev_files(1:10) = 5 263 264 print*,'A ecrit_mth=',ecrit_mth 265 ! Frequencies of the history files; 266 ! Defaut 267 ! overwritten by chtimestep given to convers_timesteps 289 268 ecrit_files(1) = ecrit_mth 290 269 ecrit_files(2) = ecrit_day … … 292 271 ecrit_files(4) = ecrit_ins 293 272 ecrit_files(5) = ecrit_LES 294 ecrit_files(6) = ecrit_ins 295 ecrit_files(7) = freq_outNMC(1) 296 ecrit_files(8) = freq_outNMC(2) 297 ecrit_files(9) = freq_outNMC(3) 298 ecrit_files(10)= ecrit_mth 273 ecrit_files(6:10) = ecrit_ins 299 274 300 275 !! Lectures des parametres de sorties dans physiq.def … … 387 362 ELSE 388 363 CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff)) 364 print*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff) 389 365 ENDIF 366 ! ecrit_files contains frequency of file iif in seconds 367 390 368 391 369 WRITE(lunout,*)'ecrit_files(',iff,')= ',ecrit_files(iff) … … 650 628 ! Updated write frequencies due to phys_out_filetimesteps. 651 629 ! Write frequencies are now in seconds. 652 ecrit_mth = ecrit_files(1) 653 ecrit_day = ecrit_files(2) 654 ecrit_hf = ecrit_files(3) 655 ecrit_ins = ecrit_files(4) 656 ecrit_LES = ecrit_files(5) 657 ecrit_ins = ecrit_files(6) 630 ! WHY CHANGING ecrit_mth ? 631 ! For Cosp ? 632 ! ecrit_mth = ecrit_files(1) 633 ! print*,'B ecrit_mth=',ecrit_mth 634 ! ecrit_day = ecrit_files(2) 635 ! ecrit_hf = ecrit_files(3) 636 ! ecrit_ins = ecrit_files(4) 637 ! ecrit_LES = ecrit_files(5) 638 ! ecrit_ins = ecrit_files(6) 658 639 659 640 IF (prt_level >= 10) THEN … … 664 645 WRITE(lunout,*)'phys_output_open: ends here' 665 646 ENDIF 647 print*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6) 666 648 667 649 ! DO iq=1,nqtot … … 705 687 IF ( type == 'day'.or.type == 'days'.or.type == 'd'.or.type == 'jours'.or.type == 'jour'.or.type == 'j' )& 706 688 & timestep = ttt * dayseconde 707 IF ( type == 'months'.or.type == 'month'.or.type == 'mth'.or.type == 'mois'.or.type == 'm' ) THEN689 IF ( type == 'months'.or.type == 'month'.or.type == 'mth'.or.type == 'mois'.or.type == 'm' .or.type == 'mo' ) THEN 708 690 WRITE(lunout,*)'annee_ref,day_ref mon_len',annee_ref,day_ref,mth_len 709 691 timestep = ttt * dayseconde * mth_len … … 713 695 IF ( type == 'mn'.or.type == 'minutes'.or.type == 'minute'.or.type == 'm' ) timestep = ttt * 60. 714 696 IF ( type == 's'.or.type == 'sec'.or.type == 'secondes'.or.type =='seconde' ) timestep = ttt 715 IF ( type == 'TS' ) timestep = ttt * dtime697 IF ( type == 'TS' .or. type == 'ts' ) timestep = ttt * dtime 716 698 717 699 WRITE(lunout,*)'type = ',type -
LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
r5683 r5685 15 15 INTEGER, PARAMETER :: nlevSTD8=8 16 16 INTEGER, PARAMETER :: nlevSTD3=3 17 INTEGER, PARAMETER :: nout= 317 INTEGER, PARAMETER :: nout=10 18 18 INTEGER, PARAMETER :: napisccp=1 19 19 INTEGER, SAVE :: radpas ! radiation is called every "radpas" step -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5677 r5685 96 96 USE phys_output_var_mod, ONLY : cloud_cover_sw, cloud_cover_sw_s2, ZFLUX_DIR, ZFLUX_DIR_CLEAR, & 97 97 & ZFLUX_DIR_s2, ZFLUX_DIR_CLEAR_s2, ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2 98 USE phys_output_var_mod, ONLY : type_ecri 98 99 99 100 … … 1749 1750 ok_sync=ok_sync_omp 1750 1751 1751 freq_outNMC(1) = ecrit_files(7)1752 freq_outNMC(2) = ecrit_files(8)1753 freq_outNMC(3) = ecrit_files(9)1754 WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)1755 WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)1756 WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)1752 ! freq_outNMC(1) = ecrit_files(7) 1753 ! freq_outNMC(2) = ecrit_files(8) 1754 ! freq_outNMC(3) = ecrit_files(9) 1755 ! WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1) 1756 ! WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2) 1757 ! WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3) 1757 1758 1758 1759 #ifndef CPP_XIOS -
LMDZ6/trunk/libf/phylmd/undefSTD.f90
r5310 r5685 3 3 4 4 SUBROUTINE undefstd(itap, read_climoz) 5 USE clesphys_mod_h 5 USE clesphys_mod_h, ONLY : freq_calnmc 6 6 USE netcdf 7 USE dimphy 8 USE phys_state_var_mod 7 USE dimphy, ONLY : klon 8 USE phys_state_var_mod, ONLY : nlevstd,nout,o3std,o3sumstd,philevstd,phisumstd,phys_tstep,qlevstd,qsumstd 9 USE phys_state_var_mod, ONLY : rhlevstd,rhsumstd,t2std,t2sumstd,tlevstd,tnondef,tsumstd,u2std,u2sumstd 10 USE phys_state_var_mod, ONLY : ulevstd,usumstd,uvstd,uvsumstd,v2std,v2sumstd,vlevstd,vphistd,vphisumstd 11 USE phys_state_var_mod, ONLY : vqstd,vqsumstd,vsumstd,vtstd,vtsumstd,wlevstd,wqstd,wqsumstd,wsumstd 12 USE phys_state_var_mod, ONLY : wtstd,wtsumstd,o3daysumstd,o3daystd,missing_val_nf90 13 USE phys_output_var_mod, ONLY : clef_files 14 15 9 16 use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios 10 17 … … 64 71 ! de la physique 65 72 66 IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN 73 ! print*,'STDSTD n,freq_calnmc(n),phys_tstep',n,freq_calnmc(n),phys_tstep 74 IF (clef_files(n) .and. mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN 67 75 DO k = 1, nlevstd 68 76 DO i = 1, klon -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5681 r5685 1904 1904 ok_sync=ok_sync_omp 1905 1905 1906 freq_outNMC(1) = ecrit_files(7) 1907 freq_outNMC(2) = ecrit_files(8) 1908 freq_outNMC(3) = ecrit_files(9) 1909 WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1) 1910 WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2) 1911 WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3) 1906 ! freq_outNMC(1) = ecrit_files(7) 1907 ! freq_outNMC(2) = ecrit_files(8) 1908 ! freq_outNMC(3) = ecrit_files(9) 1909 ! WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1) 1910 ! WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2) 1911 ! WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3) 1912 1912 1913 1913 1914 #ifndef CPP_XIOS
Note: See TracChangeset
for help on using the changeset viewer.