Changeset 1352 for LMDZ4/trunk/libf/phylmd/undefSTD.F
- Timestamp:
- Apr 14, 2010, 11:41:19 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/undefSTD.F
r1279 r1352 2 2 ! $Header$ 3 3 ! 4 SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD, 5 $ dtime,ecrit_hf, 6 $ oknondef,tnondef,tsumSTD) 4 SUBROUTINE undefSTD(itap,freq_calNMC) 7 5 USE netcdf 8 6 USE dimphy 7 USE phys_state_var_mod ! Variables sauvegardees de la physique 9 8 IMPLICIT none 10 9 c … … 14 13 c 15 14 c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef)) 16 c ou la variable tlevSTD est bien definie (.NE. 1.E+20),15 c ou la variable tlevSTD est bien definie (.NE.missing_val), 17 16 c et 18 17 c * de la somme de tlevSTD => tsumSTD … … 22 21 c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps 23 22 c ! de la physique 24 c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures23 c nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf 25 24 c 26 25 c 27 c NB: mettre "inst(X)" dans le write_hist XXX.h !26 c NB: mettre "inst(X)" dans le write_hist*NMC.h ! 28 27 c==================================================================== 29 28 c … … 34 33 c variables Input 35 34 c 36 INTEGER nlevSTD, klevSTD, itap 37 PARAMETER(klevSTD=17) 38 REAL dtime, ecrit_hf 35 c INTEGER nlevSTD, klevSTD, itap 36 c PARAMETER(klevSTD=17) 37 INTEGER itap 38 c REAL dtime 39 39 c 40 40 c variables locales 41 INTEGER i, k, nout 42 PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 41 c INTEGER i, k, nout, n 42 c PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 43 INTEGER i, k, n 44 REAL freq_calNMC(nout) 43 45 c 44 46 c variables Output 45 46 47 47 c REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout) 48 c LOGICAL oknondef(klon,klevSTD,nout) 49 c REAL tnondef(klon,klevSTD,nout) 48 50 c 49 51 REAL missing_val … … 51 53 missing_val=nf90_fill_real 52 54 c 53 c calcul variables tous les pas de temps de la physique 55 DO n=1, nout 54 56 c 55 DO k=1, nlevSTD56 DO i=1, klon57 IF(tlevSTD(i,k).EQ.missing_val) THEN58 IF(oknondef(i,k,1)) THEN59 tnondef(i,k,1)=tnondef(i,k,1)+1.60 ENDIF !oknondef(i,k)61 57 c 62 IF(oknondef(i,k,2)) THEN 63 tnondef(i,k,2)=tnondef(i,k,2)+1. 64 ENDIF !oknondef(i,k) 58 c calcul variables tous les freq_calNMC(n)/dtime pas de temps 59 c de la physique 65 60 c 66 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 67 tsumSTD(i,k,1)=tsumSTD(i,k,1)+tlevSTD(i,k) 68 tsumSTD(i,k,2)=tsumSTD(i,k,2)+tlevSTD(i,k) 69 ENDIF 70 ENDDO !i 71 ENDDO !k 61 IF(MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0) THEN 72 62 c 73 c calcul variables toutes les 6h63 c print*,'n freq_cal=',n,itap,freq_calNMC(n)/dtime 74 64 c 75 IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN 65 DO k=1, nlevSTD 66 DO i=1, klon 67 IF(tlevSTD(i,k).EQ.missing_val) THEN 68 c IF(oknondef(i,k,n)) THEN 69 tnondef(i,k,n)=tnondef(i,k,n)+1. 70 c ENDIF !oknondef(i,k) 76 71 c 77 DO k=1, nlevSTD 78 DO i=1, klon 79 IF(tlevSTD(i,k).EQ.missing_val) THEN 80 IF(oknondef(i,k,3)) THEN 81 tnondef(i,k,3)=tnondef(i,k,3)+1. 82 ENDIF !oknondef(i,k) 72 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 73 tsumSTD(i,k,n)=tsumSTD(i,k,n)+tlevSTD(i,k) 74 usumSTD(i,k,n)=usumSTD(i,k,n)+ulevSTD(i,k) 75 vsumSTD(i,k,n)=vsumSTD(i,k,n)+vlevSTD(i,k) 76 wsumSTD(i,k,n)=wsumSTD(i,k,n)+wlevSTD(i,k) 77 phisumSTD(i,k,n)=phisumSTD(i,k,n)+philevSTD(i,k) 78 qsumSTD(i,k,n)=qsumSTD(i,k,n)+qlevSTD(i,k) 79 rhsumSTD(i,k,n)=rhsumSTD(i,k,n)+rhlevSTD(i,k) 80 uvsumSTD(i,k,n)=uvsumSTD(i,k,n)+uvSTD(i,k) 81 vqsumSTD(i,k,n)=vqsumSTD(i,k,n)+vqSTD(i,k) 82 vTsumSTD(i,k,n)=vTsumSTD(i,k,n)+vTSTD(i,k) 83 wqsumSTD(i,k,n)=wqsumSTD(i,k,n)+wqSTD(i,k) 84 vphisumSTD(i,k,n)=vphisumSTD(i,k,n)+vphiSTD(i,k) 85 wTsumSTD(i,k,n)=wTsumSTD(i,k,n)+wTSTD(i,k) 86 u2sumSTD(i,k,n)=u2sumSTD(i,k,n)+u2STD(i,k) 87 v2sumSTD(i,k,n)=v2sumSTD(i,k,n)+v2STD(i,k) 88 T2sumSTD(i,k,n)=T2sumSTD(i,k,n)+T2STD(i,k) 83 89 c 84 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 85 tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k) 86 ENDIF 87 ENDDO !i 88 ENDDO !k 89 90 ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0 90 c if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN 91 if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN 92 print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i), 93 $tlevSTD(i,k) 94 endif 95 c 96 ENDIF 97 ENDDO !i 98 ENDDO !k 99 c 100 ENDIF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0 101 c 102 ENDDO !n 91 103 c 92 104 RETURN
Note: See TracChangeset
for help on using the changeset viewer.