Changeset 1992 for LMDZ5/trunk/libf/phylmd/undefSTD.F90
- Timestamp:
- Mar 5, 2014, 2:19:12 PM (11 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/undefSTD.F90
r1988 r1992 1 ! 1 2 2 ! $Id$ 3 !4 SUBROUTINE undefSTD(itap, read_climoz)5 USE netcdf6 USE dimphy7 USE phys_state_var_mod ! Variables sauvegardees de la physique8 IMPLICIT none9 include "clesphys.h"10 c11 c====================================================================12 c13 c I. Musat : 09.200414 c15 c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef))16 c ou la variable tlevSTD est bien definie (.NE.missing_val),17 c et18 c * de la somme de tlevSTD => tsumSTD19 c20 c nout=1 !var. journaliere "day" moyenne sur tous les pas de temps21 c ! de la physique22 c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps23 c ! de la physique24 c nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf25 c26 c27 c NB: mettre "inst(X)" dans le write_hist*NMC.h !28 c====================================================================29 c30 cym#include "dimensions.h"31 cym integer jjmp132 cym parameter (jjmp1=jjm+1-1/jjm)33 cym#include "dimphy.h"34 c variables Input35 c36 c INTEGER nlevSTD, klevSTD, itap37 c PARAMETER(klevSTD=17)38 INTEGER itap39 c REAL dtime40 c41 c variables locales42 c INTEGER i, k, nout, n43 c PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC44 INTEGER i, k, n45 c REAL freq_calNMC(nout)46 INTEGER read_climoz47 c48 c variables Output49 c REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)50 c LOGICAL oknondef(klon,klevSTD,nout)51 c REAL tnondef(klon,klevSTD,nout)52 c53 REAL missing_val54 c55 missing_val=nf90_fill_real56 c57 DO n=1, nout58 c59 c60 c calcul variables tous les freq_calNMC(n)/dtime pas de temps61 c de la physique62 c63 IF(MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0) THEN64 DO k=1, nlevSTD65 DO i=1, klon66 IF(tlevSTD(i,k).EQ.missing_val) THEN67 c IF(oknondef(i,k,n)) THEN68 tnondef(i,k,n)=tnondef(i,k,n)+1.69 c ENDIF !oknondef(i,k)70 c71 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN72 tsumSTD(i,k,n)=tsumSTD(i,k,n)+tlevSTD(i,k)73 usumSTD(i,k,n)=usumSTD(i,k,n)+ulevSTD(i,k)74 vsumSTD(i,k,n)=vsumSTD(i,k,n)+vlevSTD(i,k)75 wsumSTD(i,k,n)=wsumSTD(i,k,n)+wlevSTD(i,k)76 phisumSTD(i,k,n)=phisumSTD(i,k,n)+philevSTD(i,k)77 qsumSTD(i,k,n)=qsumSTD(i,k,n)+qlevSTD(i,k)78 rhsumSTD(i,k,n)=rhsumSTD(i,k,n)+rhlevSTD(i,k)79 uvsumSTD(i,k,n)=uvsumSTD(i,k,n)+uvSTD(i,k)80 vqsumSTD(i,k,n)=vqsumSTD(i,k,n)+vqSTD(i,k)81 vTsumSTD(i,k,n)=vTsumSTD(i,k,n)+vTSTD(i,k)82 wqsumSTD(i,k,n)=wqsumSTD(i,k,n)+wqSTD(i,k)83 vphisumSTD(i,k,n)=vphisumSTD(i,k,n)+vphiSTD(i,k)84 wTsumSTD(i,k,n)=wTsumSTD(i,k,n)+wTSTD(i,k)85 u2sumSTD(i,k,n)=u2sumSTD(i,k,n)+u2STD(i,k)86 v2sumSTD(i,k,n)=v2sumSTD(i,k,n)+v2STD(i,k)87 T2sumSTD(i,k,n)=T2sumSTD(i,k,n)+T2STD(i,k)88 O3sumSTD(i,k,n)=O3sumSTD(i,k,n)+O3STD(i,k)89 IF (read_climoz==2)90 & O3daysumSTD(i,k,n)=O3daysumSTD(i,k,n)+O3daySTD(i,k)91 3 92 ENDIF 93 ENDDO !i 94 ENDDO !k 95 c 96 ENDIF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0 97 c 98 ENDDO !n 99 c 100 RETURN 101 END 4 SUBROUTINE undefstd(itap, read_climoz) 5 USE netcdf 6 USE dimphy 7 USE phys_state_var_mod ! Variables sauvegardees de la physique 8 IMPLICIT NONE 9 include "clesphys.h" 10 11 ! ==================================================================== 12 13 ! I. Musat : 09.2004 14 15 ! Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef)) 16 ! ou la variable tlevSTD est bien definie (.NE.missing_val), 17 ! et 18 ! * de la somme de tlevSTD => tsumSTD 19 20 ! nout=1 !var. journaliere "day" moyenne sur tous les pas de temps 21 ! ! de la physique 22 ! nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps 23 ! ! de la physique 24 ! nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf 25 26 27 ! NB: mettre "inst(X)" dans le write_hist*NMC.h ! 28 ! ==================================================================== 29 30 ! ym#include "dimensions.h" 31 ! ym integer jjmp1 32 ! ym parameter (jjmp1=jjm+1-1/jjm) 33 ! ym#include "dimphy.h" 34 ! variables Input 35 36 ! INTEGER nlevSTD, klevSTD, itap 37 ! PARAMETER(klevSTD=17) 38 INTEGER itap 39 ! REAL dtime 40 41 ! variables locales 42 ! INTEGER i, k, nout, n 43 ! PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 44 INTEGER i, k, n 45 ! REAL freq_calNMC(nout) 46 INTEGER read_climoz 47 48 ! variables Output 49 ! REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout) 50 ! LOGICAL oknondef(klon,klevSTD,nout) 51 ! REAL tnondef(klon,klevSTD,nout) 52 53 REAL missing_val 54 55 missing_val = nf90_fill_real 56 57 DO n = 1, nout 58 59 60 ! calcul variables tous les freq_calNMC(n)/dtime pas de temps 61 ! de la physique 62 63 IF (mod(itap,nint(freq_calnmc(n)/dtime))==0) THEN 64 DO k = 1, nlevstd 65 DO i = 1, klon 66 IF (tlevstd(i,k)==missing_val) THEN 67 ! IF(oknondef(i,k,n)) THEN 68 tnondef(i, k, n) = tnondef(i, k, n) + 1. 69 ! ENDIF !oknondef(i,k) 70 71 ELSE IF (tlevstd(i,k)/=missing_val) THEN 72 tsumstd(i, k, n) = tsumstd(i, k, n) + tlevstd(i, k) 73 usumstd(i, k, n) = usumstd(i, k, n) + ulevstd(i, k) 74 vsumstd(i, k, n) = vsumstd(i, k, n) + vlevstd(i, k) 75 wsumstd(i, k, n) = wsumstd(i, k, n) + wlevstd(i, k) 76 phisumstd(i, k, n) = phisumstd(i, k, n) + philevstd(i, k) 77 qsumstd(i, k, n) = qsumstd(i, k, n) + qlevstd(i, k) 78 rhsumstd(i, k, n) = rhsumstd(i, k, n) + rhlevstd(i, k) 79 uvsumstd(i, k, n) = uvsumstd(i, k, n) + uvstd(i, k) 80 vqsumstd(i, k, n) = vqsumstd(i, k, n) + vqstd(i, k) 81 vtsumstd(i, k, n) = vtsumstd(i, k, n) + vtstd(i, k) 82 wqsumstd(i, k, n) = wqsumstd(i, k, n) + wqstd(i, k) 83 vphisumstd(i, k, n) = vphisumstd(i, k, n) + vphistd(i, k) 84 wtsumstd(i, k, n) = wtsumstd(i, k, n) + wtstd(i, k) 85 u2sumstd(i, k, n) = u2sumstd(i, k, n) + u2std(i, k) 86 v2sumstd(i, k, n) = v2sumstd(i, k, n) + v2std(i, k) 87 t2sumstd(i, k, n) = t2sumstd(i, k, n) + t2std(i, k) 88 o3sumstd(i, k, n) = o3sumstd(i, k, n) + o3std(i, k) 89 IF (read_climoz==2) o3daysumstd(i, k, n) = o3daysumstd(i, k, n) + & 90 o3daystd(i, k) 91 92 END IF 93 END DO !i 94 END DO !k 95 96 END IF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0 97 98 END DO !n 99 100 RETURN 101 END SUBROUTINE undefstd
Note: See TracChangeset
for help on using the changeset viewer.