Changeset 1350 for LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/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/undefSTD.F
r1299 r1350 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD, 5 $ dtime,ecrit_hf, 6 $ oknondef,tnondef,tsumSTD) 4 c SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD, 5 c $ dtime,freq_calNMC, 6 c $ oknondef,tnondef,tsumSTD) 7 SUBROUTINE undefSTD(itap,freq_calNMC) 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 … … 13 15 c I. Musat : 09.2004 14 16 c 15 c Calcul * du nombre de pas de temps ( REAL(ecrit_XXX)-tnondef))16 c ou la variable tlevSTD est bien definie (.NE. 1.E+20),17 c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef)) 18 c ou la variable tlevSTD est bien definie (.NE.missing_val), 17 19 c et 18 20 c * de la somme de tlevSTD => tsumSTD … … 22 24 c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps 23 25 c ! de la physique 24 c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures26 c nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf 25 27 c 26 28 c 27 c NB: mettre "inst(X)" dans le write_hist XXX.h !29 c NB: mettre "inst(X)" dans le write_hist*NMC.h ! 28 30 c==================================================================== 29 31 c … … 34 36 c variables Input 35 37 c 36 INTEGER nlevSTD, klevSTD, itap 37 PARAMETER(klevSTD=17) 38 REAL dtime, ecrit_hf 38 c INTEGER nlevSTD, klevSTD, itap 39 c PARAMETER(klevSTD=17) 40 INTEGER itap 41 c REAL dtime 39 42 c 40 43 c variables locales 41 INTEGER i, k, nout 42 PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 44 c INTEGER i, k, nout, n 45 c PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 46 INTEGER i, k, n 47 REAL freq_calNMC(nout) 43 48 c 44 49 c variables Output 45 46 47 50 c REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout) 51 c LOGICAL oknondef(klon,klevSTD,nout) 52 c REAL tnondef(klon,klevSTD,nout) 48 53 c 49 54 REAL missing_val … … 51 56 missing_val=nf90_fill_real 52 57 c 53 c calcul variables tous les pas de temps de la physique 58 DO n=1, nout 54 59 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 60 c 62 IF(oknondef(i,k,2)) THEN 63 tnondef(i,k,2)=tnondef(i,k,2)+1. 64 ENDIF !oknondef(i,k) 61 c calcul variables tous les freq_calNMC(n)/dtime pas de temps 62 c de la physique 65 63 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 64 IF(MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0) THEN 72 65 c 73 c calcul variables toutes les 6h66 c print*,'n freq_cal=',n,itap,freq_calNMC(n)/dtime 74 67 c 75 IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN 68 DO k=1, nlevSTD 69 DO i=1, klon 70 IF(tlevSTD(i,k).EQ.missing_val) THEN 71 c IF(oknondef(i,k,n)) THEN 72 tnondef(i,k,n)=tnondef(i,k,n)+1. 73 c ENDIF !oknondef(i,k) 76 74 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) 75 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 76 tsumSTD(i,k,n)=tsumSTD(i,k,n)+tlevSTD(i,k) 77 usumSTD(i,k,n)=usumSTD(i,k,n)+ulevSTD(i,k) 78 vsumSTD(i,k,n)=vsumSTD(i,k,n)+vlevSTD(i,k) 79 wsumSTD(i,k,n)=wsumSTD(i,k,n)+wlevSTD(i,k) 80 phisumSTD(i,k,n)=phisumSTD(i,k,n)+philevSTD(i,k) 81 qsumSTD(i,k,n)=qsumSTD(i,k,n)+qlevSTD(i,k) 82 rhsumSTD(i,k,n)=rhsumSTD(i,k,n)+rhlevSTD(i,k) 83 uvsumSTD(i,k,n)=uvsumSTD(i,k,n)+uvSTD(i,k) 84 vqsumSTD(i,k,n)=vqsumSTD(i,k,n)+vqSTD(i,k) 85 vTsumSTD(i,k,n)=vTsumSTD(i,k,n)+vTSTD(i,k) 86 wqsumSTD(i,k,n)=wqsumSTD(i,k,n)+wqSTD(i,k) 87 vphisumSTD(i,k,n)=vphisumSTD(i,k,n)+vphiSTD(i,k) 88 wTsumSTD(i,k,n)=wTsumSTD(i,k,n)+wTSTD(i,k) 89 u2sumSTD(i,k,n)=u2sumSTD(i,k,n)+u2STD(i,k) 90 v2sumSTD(i,k,n)=v2sumSTD(i,k,n)+v2STD(i,k) 91 T2sumSTD(i,k,n)=T2sumSTD(i,k,n)+T2STD(i,k) 83 92 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 93 c if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN 94 if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN 95 print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i), 96 $tlevSTD(i,k) 97 endif 98 c 99 ENDIF 100 ENDDO !i 101 ENDDO !k 102 c 103 ENDIF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0 104 c 105 ENDDO !n 91 106 c 92 107 RETURN
Note: See TracChangeset
for help on using the changeset viewer.