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

Last change on this file since 5748 was 5685, checked in by fhourdin, 2 months ago

Correction/nettoyage sorties en pression

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