source: LMDZ4/branches/LMDZ4V5.0-LF/libf/phylmd/undefSTD.F @ 5215

Last change on this file since 5215 was 1299, checked in by Laurent Fairhead, 15 years ago

Nettoyage general pour se rapprocher des normes et éviter des erreurs a la
compilation:

  • tous les FLOAT() sont remplacés par des REAL()
  • tous les STOP dans phylmd sont remplacés par des appels à abort_gcm
  • le common control défini dans le fichier control.h est remplacé par le module control_mod pour éviter des messages sur l'alignement des variables dans les déclarations
  • des $Header$ remplacés par des $Id$ pour svn

Quelques remplacements à faire ont pu m'échapper


General cleanup of the code to try and adhere to norms and to prevent some
compilation errors:

  • all FLOAT() instructions have been replaced by REAL() instructions
  • all STOP instructions in phylmd have been replaced by calls to abort_gcm
  • the common block control defined in the control.h file has been replaced by the control_mod to prevent compilation warnings on the alignement of declared variables
  • $Header$ replaced by $Id$ for svn

Some changes which should have been made might have escaped me

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1!
2! $Id: undefSTD.F 1299 2010-01-20 14:27:21Z snguyen $
3!
4      SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD,
5     $           dtime,ecrit_hf,
6     $           oknondef,tnondef,tsumSTD)
7      USE netcdf
8      USE dimphy
9      IMPLICIT none
10c
11c====================================================================
12c
13c I. Musat : 09.2004
14c
15c Calcul * du nombre de pas de temps (REAL(ecrit_XXX)-tnondef))
16c          ou la variable tlevSTD est bien definie (.NE.1.E+20),
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 6heures
25c
26c
27c NB: mettre "inst(X)" dans le write_histXXX.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
36      INTEGER nlevSTD, klevSTD, itap
37      PARAMETER(klevSTD=17)
38      REAL dtime, ecrit_hf
39c
40c variables locales
41      INTEGER i, k, nout
42      PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
43c
44c variables Output
45      REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
46      LOGICAL oknondef(klon,klevSTD,nout)
47      REAL tnondef(klon,klevSTD,nout)
48c
49      REAL missing_val
50c
51      missing_val=nf90_fill_real
52c
53c calcul variables tous les pas de temps de la physique
54c
55      DO k=1, nlevSTD
56       DO i=1, klon
57        IF(tlevSTD(i,k).EQ.missing_val) THEN
58         IF(oknondef(i,k,1)) THEN         
59          tnondef(i,k,1)=tnondef(i,k,1)+1.
60         ENDIF !oknondef(i,k)
61c
62         IF(oknondef(i,k,2)) THEN         
63          tnondef(i,k,2)=tnondef(i,k,2)+1.
64         ENDIF !oknondef(i,k)
65c
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
72c
73c calcul variables toutes les 6h
74c
75      IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN
76c
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)
83c
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
91c
92      RETURN
93      END 
Note: See TracBrowser for help on using the repository browser.