source: LMDZ6/trunk/libf/phylmd/undefSTD.F90 @ 5171

Last change on this file since 5171 was 5084, checked in by Laurent Fairhead, 12 months ago

Reverting to r4065. Updating fortran standard broke too much stuff. Will do it by smaller chunks
AB, LF

  • 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
RevLine 
[1992]1
[1403]2! $Id: undefSTD.F90 5084 2024-07-19 16:40:44Z evignon $
[1418]3
[1992]4SUBROUTINE undefstd(itap, read_climoz)
[5084]5  USE netcdf
[1992]6  USE dimphy
[2271]7#ifdef CPP_IOIPSL
8  USE phys_state_var_mod
9#endif
[4619]10  USE wxios, ONLY: missing_val_xios => missing_val, using_xios
[2271]11
[1992]12  IMPLICIT NONE
13  include "clesphys.h"
[2271]14  REAL :: missing_val
[1992]15
16  ! ====================================================================
17
18  ! I. Musat : 09.2004
19
20  ! Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef))
21  ! ou la variable tlevSTD est bien definie (.NE.missing_val),
22  ! et
23  ! * de la somme de tlevSTD => tsumSTD
24
25  ! nout=1 !var. journaliere "day" moyenne sur tous les pas de temps
26  ! ! de la physique
27  ! nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps
28  ! ! de la physique
29  ! nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf
30
31
32  ! NB: mettre "inst(X)" dans le write_hist*NMC.h !
33  ! ====================================================================
34
[4593]35  ! ymINCLUDE "dimphy.h"
[1992]36  ! variables Input
37
38  ! INTEGER nlevSTD, klevSTD, itap
39  ! PARAMETER(klevSTD=17)
40  INTEGER itap
41
42  ! variables locales
43  ! INTEGER i, k, nout, n
44  ! PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
45  INTEGER i, k, n
46  ! REAL freq_calNMC(nout)
47  INTEGER read_climoz
48
49  ! variables Output
50  ! REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
51  ! LOGICAL oknondef(klon,klevSTD,nout)
52  ! REAL tnondef(klon,klevSTD,nout)
53
[2271]54! REAL missing_val
[1992]55
[2271]56! missing_val = nf90_fill_real
[4619]57  IF (using_xios) THEN
58    missing_val=missing_val_xios
59  ELSE
[2271]60      missing_val=missing_val_nf90
[4619]61  ENDIF
[1992]62
63  DO n = 1, nout
64
65
[3435]66    ! calcul variables tous les freq_calNMC(n)/phys_tstep pas de temps
[1992]67    ! de la physique
68
[3435]69    IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
[1992]70      DO k = 1, nlevstd
71        DO i = 1, klon
72          IF (tlevstd(i,k)==missing_val) THEN
73            ! IF(oknondef(i,k,n)) THEN
74            tnondef(i, k, n) = tnondef(i, k, n) + 1.
75            ! ENDIF !oknondef(i,k)
76
77          ELSE IF (tlevstd(i,k)/=missing_val) THEN
78            tsumstd(i, k, n) = tsumstd(i, k, n) + tlevstd(i, k)
79            usumstd(i, k, n) = usumstd(i, k, n) + ulevstd(i, k)
80            vsumstd(i, k, n) = vsumstd(i, k, n) + vlevstd(i, k)
81            wsumstd(i, k, n) = wsumstd(i, k, n) + wlevstd(i, k)
82            phisumstd(i, k, n) = phisumstd(i, k, n) + philevstd(i, k)
83            qsumstd(i, k, n) = qsumstd(i, k, n) + qlevstd(i, k)
84            rhsumstd(i, k, n) = rhsumstd(i, k, n) + rhlevstd(i, k)
85            uvsumstd(i, k, n) = uvsumstd(i, k, n) + uvstd(i, k)
86            vqsumstd(i, k, n) = vqsumstd(i, k, n) + vqstd(i, k)
87            vtsumstd(i, k, n) = vtsumstd(i, k, n) + vtstd(i, k)
88            wqsumstd(i, k, n) = wqsumstd(i, k, n) + wqstd(i, k)
89            vphisumstd(i, k, n) = vphisumstd(i, k, n) + vphistd(i, k)
90            wtsumstd(i, k, n) = wtsumstd(i, k, n) + wtstd(i, k)
91            u2sumstd(i, k, n) = u2sumstd(i, k, n) + u2std(i, k)
92            v2sumstd(i, k, n) = v2sumstd(i, k, n) + v2std(i, k)
93            t2sumstd(i, k, n) = t2sumstd(i, k, n) + t2std(i, k)
94            o3sumstd(i, k, n) = o3sumstd(i, k, n) + o3std(i, k)
95            IF (read_climoz==2) o3daysumstd(i, k, n) = o3daysumstd(i, k, n) + &
96              o3daystd(i, k)
97
98          END IF
99        END DO !i
100      END DO !k
101
[3435]102    END IF !MOD(itap,NINT(freq_calNMC(n)/phys_tstep)).EQ.0
[1992]103
104  END DO !n
105
106  RETURN
107END SUBROUTINE undefstd
Note: See TracBrowser for help on using the repository browser.