source: LMDZ5/trunk/libf/phylmd/moy_undefSTD.F @ 1912

Last change on this file since 1912 was 1912, checked in by musat, 11 years ago

1) Modifications pour faire des simulations par an avec un calendrier realiste (365 jours ou autre).

Il faut mettre une frequence de sortie de -1 (variable phys_out_filetimesteps dans config.def) pour
que IOIPSL calcule les moyennes mensuels en prenant en compte des longuers variables de chaque
mois. Par exemple, pour le fichier histmth (1er fichier) et histmthNMC (7eme).
phys_out_filetimesteps= -1 1day 6hr 6hr 6hr 1d -1 1day 6hr

2) Corrections titres variables niveaux de pression des fichiers histmth, histday, etc

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.4 KB
RevLine 
[776]1!
[1403]2! $Id: moy_undefSTD.F 1912 2013-12-05 17:32:35Z musat $
[776]3!
[1912]4      SUBROUTINE moy_undefSTD(itap,itapm1)
[1233]5      USE netcdf
[766]6      USE dimphy
[1912]7      USE phys_state_var_mod
8      USE phys_cal_mod, only : mth_len
[644]9      IMPLICIT none
[1912]10      include "clesphys.h"
[644]11c
12c====================================================================
13c
14c I. Musat : 09.2004
15c
16c Moyenne - a des frequences differentes - des valeurs bien definies
[1352]17c         (.NE.missing_val) des variables interpolees a un niveau de
[644]18c         pression.
19c 1) les variables de type "day" (nout=1) ou "mth" (nout=2) sont sommees
20c    tous les pas de temps de la physique
21c
22c 2) les variables de type "NMC" (nout=3) sont calculees a partir
23c    des valeurs instantannees toutes les 6 heures
24c
25c
[1352]26c NB: mettre "inst(X)" dans le write_hist*NMC.h !
[644]27c====================================================================
[766]28cym#include "dimensions.h"
29cym      integer jjmp1
30cym      parameter (jjmp1=jjm+1-1/jjm)
31cym#include "dimphy.h"
[644]32c
[1279]33c
[644]34c variables Input
[1352]35c     INTEGER nlevSTD, klevSTD, itap
36c     PARAMETER(klevSTD=17)
[1912]37      INTEGER itap, itapm1
[644]38c
39c variables locales
[1352]40c     INTEGER i, k, nout, n
41c     PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC
42      INTEGER i, k, n
43c     REAL dtime, freq_outNMC(nout), freq_moyNMC(nout)
[1912]44c     REAL freq_outNMC(nout), freq_calNMC(nout)
45      REAL freq_moyNMC(nout)
[644]46c
47c variables Output
[1352]48c     REAL tnondef(klon,klevSTD,nout)
49c     REAL tsumSTD(klon,klevSTD,nout)
[644]50c
[1912]51      REAL un_jour
52      PARAMETER(un_jour=86400.)
[1233]53      REAL missing_val
54c
55      missing_val=nf90_fill_real
56c
[1352]57      DO n=1, nout
[1912]58       IF(freq_outNMC(n).LT.0) THEN
59         freq_moyNMC(n)=(mth_len*un_jour)/freq_calNMC(n)
60c        print*,'moy_undefSTD n freq_out freq_moy =',
61c    $n,freq_moyNMC(n)
62       ENDIF         
[1352]63c
[1912]64c calcul 1 fois pas mois, 1 fois par jour ou toutes les 6h
[644]65c
[1912]66       IF(n.EQ.1.AND.itap.EQ.itapm1.OR.
67     $n.GT.1.AND.MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0) THEN
[644]68c
[1912]69c       print*,'moy_undefSTD n itap itapm1',n,itap,itapm1
70c
[1352]71        DO k=1, nlevSTD
72         DO i=1, klon
73          IF(tnondef(i,k,n).NE.(freq_moyNMC(n))) THEN
74           tsumSTD(i,k,n)=tsumSTD(i,k,n)/
75     $     (freq_moyNMC(n)-tnondef(i,k,n))
76          usumSTD(i,k,n)=usumSTD(i,k,n)/
77     $     (freq_moyNMC(n)-tnondef(i,k,n))
78          vsumSTD(i,k,n)=vsumSTD(i,k,n)/
79     $     (freq_moyNMC(n)-tnondef(i,k,n))
80          wsumSTD(i,k,n)=wsumSTD(i,k,n)/
81     $     (freq_moyNMC(n)-tnondef(i,k,n))
82          phisumSTD(i,k,n)=phisumSTD(i,k,n)/
83     $     (freq_moyNMC(n)-tnondef(i,k,n))
84          qsumSTD(i,k,n)=qsumSTD(i,k,n)/
85     $     (freq_moyNMC(n)-tnondef(i,k,n))
86          rhsumSTD(i,k,n)=rhsumSTD(i,k,n)/
87     $     (freq_moyNMC(n)-tnondef(i,k,n))
88          uvsumSTD(i,k,n)=uvsumSTD(i,k,n)/
89     $     (freq_moyNMC(n)-tnondef(i,k,n))
90          vqsumSTD(i,k,n)=vqsumSTD(i,k,n)/
91     $     (freq_moyNMC(n)-tnondef(i,k,n))
92          vTsumSTD(i,k,n)=vTsumSTD(i,k,n)/
93     $     (freq_moyNMC(n)-tnondef(i,k,n))
94          wqsumSTD(i,k,n)=wqsumSTD(i,k,n)/
95     $     (freq_moyNMC(n)-tnondef(i,k,n))
96          vphisumSTD(i,k,n)=vphisumSTD(i,k,n)/
97     $     (freq_moyNMC(n)-tnondef(i,k,n))
98          wTsumSTD(i,k,n)=wTsumSTD(i,k,n)/
99     $     (freq_moyNMC(n)-tnondef(i,k,n))
100          u2sumSTD(i,k,n)=u2sumSTD(i,k,n)/
101     $     (freq_moyNMC(n)-tnondef(i,k,n))
102          v2sumSTD(i,k,n)=v2sumSTD(i,k,n)/
103     $     (freq_moyNMC(n)-tnondef(i,k,n))
104          T2sumSTD(i,k,n)=T2sumSTD(i,k,n)/
105     $     (freq_moyNMC(n)-tnondef(i,k,n))
[1398]106          O3sumSTD(i,k,n)=O3sumSTD(i,k,n)/
107     $     (freq_moyNMC(n)-tnondef(i,k,n))
108          O3daysumSTD(i,k,n)=O3daysumSTD(i,k,n)/
109     $     (freq_moyNMC(n)-tnondef(i,k,n))
[1352]110          ELSE
111           tsumSTD(i,k,n)=missing_val
112           usumSTD(i,k,n)=missing_val
113           vsumSTD(i,k,n)=missing_val
114           wsumSTD(i,k,n)=missing_val
115           phisumSTD(i,k,n)=missing_val
116           qsumSTD(i,k,n)=missing_val
117           rhsumSTD(i,k,n)=missing_val
118           uvsumSTD(i,k,n)=missing_val
119           vqsumSTD(i,k,n)=missing_val
120           vTsumSTD(i,k,n)=missing_val
121           wqsumSTD(i,k,n)=missing_val
122           vphisumSTD(i,k,n)=missing_val
123           wTsumSTD(i,k,n)=missing_val
124           u2sumSTD(i,k,n)=missing_val
125           v2sumSTD(i,k,n)=missing_val
126           T2sumSTD(i,k,n)=missing_val
[1398]127           O3sumSTD(i,k,n)=missing_val
128           O3daysumSTD(i,k,n)=missing_val
[1352]129          ENDIF !tnondef(i,k,n).NE.(freq_moyNMC(n))
130         ENDDO !i
131        ENDDO !k
132       ENDIF !MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0
[644]133c
[1352]134      ENDDO !n
135c
[644]136      RETURN
137      END 
Note: See TracBrowser for help on using the repository browser.