source: LMDZ6/branches/cirrus/libf/phylmd/undefSTD.F90 @ 5185

Last change on this file since 5185 was 4619, checked in by yann meurdesoif, 18 months ago

Suppress usage of preprocessing key CPP_XIOS.
Wrapper file is used to suppress XIOS symbol when xios is not linked and not used (-io ioipsl)
The CPP_XIOS key is replaced in model by "using_xios" boolean variable to switch between IOIPSL or XIOS output.

YM

  • 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 4619 2023-07-09 23:40:39Z abarral $
3
4SUBROUTINE undefstd(itap, read_climoz)
5  USE netcdf
6  USE dimphy
7#ifdef CPP_IOIPSL
8  USE phys_state_var_mod
9#endif
10  USE wxios, ONLY: missing_val_xios => missing_val, using_xios
11
12  IMPLICIT NONE
13  include "clesphys.h"
14  REAL :: missing_val
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
35  ! ymINCLUDE "dimphy.h"
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
54! REAL missing_val
55
56! missing_val = nf90_fill_real
57  IF (using_xios) THEN
58    missing_val=missing_val_xios
59  ELSE
60      missing_val=missing_val_nf90
61  ENDIF
62
63  DO n = 1, nout
64
65
66    ! calcul variables tous les freq_calNMC(n)/phys_tstep pas de temps
67    ! de la physique
68
69    IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
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
102    END IF !MOD(itap,NINT(freq_calNMC(n)/phys_tstep)).EQ.0
103
104  END DO !n
105
106  RETURN
107END SUBROUTINE undefstd
Note: See TracBrowser for help on using the repository browser.