source: LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/undefSTD.F90 @ 2404

Last change on this file since 2404 was 1992, checked in by lguez, 11 years ago

Converted to free source form files in libf/phylmd which were still in
fixed source form. The conversion was done using the polish mode of
the NAG Fortran Compiler.

In addition to converting to free source form, the processing of the
files also:

-- indented the code (including comments);

-- set Fortran keywords to uppercase, and set all other identifiers
to lower case;

-- added qualifiers to end statements (for example "end subroutine
conflx", instead of "end");

-- changed the terminating statements of all DO loops so that each
loop ends with an ENDDO statement (instead of a labeled continue).

-- replaced #include by include.

  • 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.2 KB
Line 
1
2! $Id: undefSTD.F90 1992 2014-03-05 13:19:12Z fhourdin $
3
4SUBROUTINE 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
101END SUBROUTINE undefstd
Note: See TracBrowser for help on using the repository browser.