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

Last change on this file since 1912 was 1912, checked in by musat, 10 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: 3.1 KB
Line 
1!
2! $Id: undefSTD.F 1912 2013-12-05 17:32:35Z musat $
3!
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"
10c
11c====================================================================
12c
13c I. Musat : 09.2004
14c
15c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef))
16c          ou la variable tlevSTD est bien definie (.NE.missing_val),
17c et
18c        * de la somme de tlevSTD => tsumSTD
19c
20c nout=1 !var. journaliere "day" moyenne sur tous les pas de temps
21c        ! de la physique
22c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps
23c        ! de la physique
24c nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf
25c
26c
27c NB: mettre "inst(X)" dans le write_hist*NMC.h !
28c====================================================================
29c
30cym#include "dimensions.h"
31cym      integer jjmp1
32cym      parameter (jjmp1=jjm+1-1/jjm)
33cym#include "dimphy.h"
34c variables Input
35c
36c     INTEGER nlevSTD, klevSTD, itap
37c     PARAMETER(klevSTD=17)
38      INTEGER itap
39c     REAL dtime
40c
41c variables locales
42c     INTEGER i, k, nout, n
43c     PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
44      INTEGER i, k, n
45c     REAL freq_calNMC(nout)
46      INTEGER read_climoz
47c
48c variables Output
49c     REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
50c     LOGICAL oknondef(klon,klevSTD,nout)
51c     REAL tnondef(klon,klevSTD,nout)
52c
53      REAL missing_val
54c
55      missing_val=nf90_fill_real
56c
57      DO n=1, nout
58c
59c
60c calcul variables tous les freq_calNMC(n)/dtime pas de temps
61c de la physique
62c
63       IF(MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0) THEN
64        DO k=1, nlevSTD
65         DO i=1, klon
66          IF(tlevSTD(i,k).EQ.missing_val) THEN
67c          IF(oknondef(i,k,n)) THEN         
68            tnondef(i,k,n)=tnondef(i,k,n)+1.
69c          ENDIF !oknondef(i,k)
70c
71          ELSE IF(tlevSTD(i,k).NE.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)
90     &          O3daysumSTD(i,k,n)=O3daysumSTD(i,k,n)+O3daySTD(i,k)
91
92          ENDIF
93         ENDDO !i
94        ENDDO !k
95c
96       ENDIF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0
97c
98      ENDDO !n
99c
100      RETURN
101      END 
Note: See TracBrowser for help on using the repository browser.