Changeset 1350 for LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/moy_undefSTD.F
- Timestamp:
- Apr 14, 2010, 10:55:22 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/moy_undefSTD.F
r1279 r1350 2 2 ! $Header$ 3 3 ! 4 SUBROUTINE moy_undefSTD(nlevSTD,itap, 5 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 6 $ tnondef,tsumSTD) 4 c SUBROUTINE moy_undefSTD(nlevSTD,itap, 5 c $ dtime,freq_outNMC,freq_moyNMC, 6 c $ tnondef,tsumSTD) 7 SUBROUTINE moy_undefSTD(itap,freq_outNMC,freq_moyNMC) 7 8 USE netcdf 8 9 USE dimphy 10 USE phys_state_var_mod ! Variables sauvegardees de la physique 9 11 IMPLICIT none 10 12 c … … 14 16 c 15 17 c Moyenne - a des frequences differentes - des valeurs bien definies 16 c (.NE. 1.E+20) des variables interpolees a un niveau de18 c (.NE.missing_val) des variables interpolees a un niveau de 17 19 c pression. 18 20 c 1) les variables de type "day" (nout=1) ou "mth" (nout=2) sont sommees … … 23 25 c 24 26 c 25 c NB: mettre "inst(X)" dans le write_hist XXX.h !27 c NB: mettre "inst(X)" dans le write_hist*NMC.h ! 26 28 c==================================================================== 27 29 cym#include "dimensions.h" … … 32 34 c 33 35 c variables Input 34 35 36 REAL dtime, ecrit_day, ecrit_mth, ecrit_hf2mth36 c INTEGER nlevSTD, klevSTD, itap 37 c PARAMETER(klevSTD=17) 38 INTEGER itap 37 39 c 38 40 c variables locales 39 INTEGER i, k, nout 40 PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC 41 c INTEGER i, k, nout, n 42 c PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC 43 INTEGER i, k, n 44 c REAL dtime, freq_outNMC(nout), freq_moyNMC(nout) 45 REAL freq_outNMC(nout), freq_moyNMC(nout) 41 46 c 42 47 c variables Output 43 44 48 c REAL tnondef(klon,klevSTD,nout) 49 c REAL tsumSTD(klon,klevSTD,nout) 45 50 c 46 51 REAL missing_val … … 48 53 missing_val=nf90_fill_real 49 54 c 55 DO n=1, nout 56 c 50 57 c calcul 1 fois par jour 51 58 c 52 IF(MOD(itap,NINT(ecrit_day/dtime)).EQ.0) THEN 53 DO k=1, nlevSTD 54 DO i=1, klon 55 IF (NINT(tnondef(i,k,1)).NE.NINT(ecrit_day/dtime)) THEN 56 tsumSTD(i,k,1)=tsumSTD(i,k,1)/ 57 $ (ecrit_day/dtime-tnondef(i,k,1)) 58 ELSE 59 tsumSTD(i,k,1)=missing_val 60 ENDIF !tnondef 61 ENDDO !i 62 ENDDO !k 63 ENDIF !MOD(itap,ecrit_day).EQ.0 59 IF(MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0) THEN 64 60 c 65 c calcul 1 fois par mois61 c print*,'n freq_ini=',n,itap,freq_outNMC(n),missing_val 66 62 c 67 IF(MOD(itap,NINT(ecrit_mth/dtime)).EQ.0) THEN 68 DO k=1, nlevSTD 69 DO i=1, klon 70 IF(tnondef(i,k,2).NE.ecrit_mth/dtime) THEN 71 tsumSTD(i,k,2)=tsumSTD(i,k,2)/ 72 $ (ecrit_mth/dtime-tnondef(i,k,2)) 73 ELSE 74 tsumSTD(i,k,2)=missing_val 75 ENDIF !tnondef 63 DO k=1, nlevSTD 64 DO i=1, klon 65 IF(tnondef(i,k,n).NE.(freq_moyNMC(n))) THEN 66 tsumSTD(i,k,n)=tsumSTD(i,k,n)/ 67 $ (freq_moyNMC(n)-tnondef(i,k,n)) 68 cIM BEG 69 usumSTD(i,k,n)=usumSTD(i,k,n)/ 70 $ (freq_moyNMC(n)-tnondef(i,k,n)) 71 vsumSTD(i,k,n)=vsumSTD(i,k,n)/ 72 $ (freq_moyNMC(n)-tnondef(i,k,n)) 73 wsumSTD(i,k,n)=wsumSTD(i,k,n)/ 74 $ (freq_moyNMC(n)-tnondef(i,k,n)) 75 phisumSTD(i,k,n)=phisumSTD(i,k,n)/ 76 $ (freq_moyNMC(n)-tnondef(i,k,n)) 77 qsumSTD(i,k,n)=qsumSTD(i,k,n)/ 78 $ (freq_moyNMC(n)-tnondef(i,k,n)) 79 rhsumSTD(i,k,n)=rhsumSTD(i,k,n)/ 80 $ (freq_moyNMC(n)-tnondef(i,k,n)) 81 uvsumSTD(i,k,n)=uvsumSTD(i,k,n)/ 82 $ (freq_moyNMC(n)-tnondef(i,k,n)) 83 vqsumSTD(i,k,n)=vqsumSTD(i,k,n)/ 84 $ (freq_moyNMC(n)-tnondef(i,k,n)) 85 vTsumSTD(i,k,n)=vTsumSTD(i,k,n)/ 86 $ (freq_moyNMC(n)-tnondef(i,k,n)) 87 wqsumSTD(i,k,n)=wqsumSTD(i,k,n)/ 88 $ (freq_moyNMC(n)-tnondef(i,k,n)) 89 vphisumSTD(i,k,n)=vphisumSTD(i,k,n)/ 90 $ (freq_moyNMC(n)-tnondef(i,k,n)) 91 wTsumSTD(i,k,n)=wTsumSTD(i,k,n)/ 92 $ (freq_moyNMC(n)-tnondef(i,k,n)) 93 u2sumSTD(i,k,n)=u2sumSTD(i,k,n)/ 94 $ (freq_moyNMC(n)-tnondef(i,k,n)) 95 v2sumSTD(i,k,n)=v2sumSTD(i,k,n)/ 96 $ (freq_moyNMC(n)-tnondef(i,k,n)) 97 T2sumSTD(i,k,n)=T2sumSTD(i,k,n)/ 98 $ (freq_moyNMC(n)-tnondef(i,k,n)) 99 cIM END 100 ELSE 101 tsumSTD(i,k,n)=missing_val 102 usumSTD(i,k,n)=missing_val 103 vsumSTD(i,k,n)=missing_val 104 wsumSTD(i,k,n)=missing_val 105 phisumSTD(i,k,n)=missing_val 106 qsumSTD(i,k,n)=missing_val 107 rhsumSTD(i,k,n)=missing_val 108 uvsumSTD(i,k,n)=missing_val 109 vqsumSTD(i,k,n)=missing_val 110 vTsumSTD(i,k,n)=missing_val 111 wqsumSTD(i,k,n)=missing_val 112 vphisumSTD(i,k,n)=missing_val 113 wTsumSTD(i,k,n)=missing_val 114 u2sumSTD(i,k,n)=missing_val 115 v2sumSTD(i,k,n)=missing_val 116 T2sumSTD(i,k,n)=missing_val 117 ENDIF !tnondef(i,k,n).NE.(freq_moyNMC(n)) 76 118 c 77 IF(tnondef(i,k,3).NE.NINT(ecrit_hf2mth)) THEN 78 tsumSTD(i,k,3)=tsumSTD(i,k,3)/ 79 $ (ecrit_hf2mth-tnondef(i,k,3)) 80 ELSE 81 tsumSTD(i,k,3)=missing_val 82 ENDIF !tnondef 119 c if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN 120 if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN 121 print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i), 122 $tlevSTD(i,k) 123 endif 83 124 c 84 ENDDO !i 85 ENDDO !k 86 ENDIF !MOD 125 ENDDO !i 126 ENDDO !k 127 ENDIF !MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0 128 c 129 ENDDO !n 87 130 c 88 131 RETURN
Note: See TracChangeset
for help on using the changeset viewer.