Changeset 5791 for LMDZ6/branches/contrails/libf/phylmd/calcul_STDlev.h
- Timestamp:
- Jul 28, 2025, 7:23:15 PM (6 days ago)
- Location:
- LMDZ6/branches/contrails
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/contrails
- Property svn:mergeinfo changed
/LMDZ6/trunk merged: 5654-5683,5685-5690,5692-5715,5718-5721,5726-5727,5729,5744-5761,5763-5778,5780,5785-5789
- Property svn:mergeinfo changed
-
LMDZ6/branches/contrails/libf/phylmd/calcul_STDlev.h
r2312 r5791 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
Note: See TracChangeset
for help on using the changeset viewer.