source: LMDZ6/trunk/libf/phylmd/undefSTD.f90 @ 5327

Last change on this file since 5327 was 5310, checked in by abarral, 2 weeks ago

unify abort_gcm
rename wxios -> wxios_mod

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