source: LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/calcul_STDlev.h @ 1688

Last change on this file since 1688 was 1350, checked in by musat, 15 years ago

Add 3 output files for standard pressure levels AR5 exercice and flags
to manage their computation and output frequencies
histhfNMC.nc with 3 standard pressure levels
histdayNMC.nc with 8 (or may have 17) standard pressure levels
histmthNMC.nc with 17 standard pressure levels
Add 3 flags in the physiq.def file: freq_calNMC(3), freq_outNMC(3) and lev_histdayNMC
freq_calNMC(3) : computation frequency of variables on standard pressure levels

and by default has fallowing values (in fact physics' time step dtime)

freq_calNMC(1)=900.
freq_calNMC(2)=900.
freq_calNMC(3)=900.
freq_outNMC(3) : output frequency of variables on standard pressure levels

with following default values

freq_out(1) = 2592000. (30 days)
freq_out(2) = 86400. (1 day)
freq_out(3) = 21600. (6 hours)
lev_histdayNMC is 8 by default but may be switched to 17 (if we need more levels for a particular run)
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
RevLine 
[644]1c
2c $Header$
3c
4c
[1350]5cIM on initialise les variables
[644]6c
[1350]7        CALL ini_undefSTD(itap,freq_outNMC)
[644]8c
[1350]9cIM on interpole les champs sur les niveaux STD de pression
10cIM a chaque pas de temps de la physique
[644]11c
[1146]12c-------------------------------------------------------c
13c positionnement de l'argument logique a .false.        c
14c pour ne pas recalculer deux fois la meme chose !      c
15c a cet effet un appel a plevel_new a ete deplace       c
16c a la fin de la serie d'appels                         c
17c la boucle 'DO k=1, nlevSTD' a ete internalisee        c
18c dans plevel_new, d'ou la creation de cette routine... c
19c-------------------------------------------------------c
[644]20c
[1146]21        CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD,
22     &              t_seri,tlevSTD)
23        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
24     &             u_seri,ulevSTD)
25        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
26     &             v_seri,vlevSTD)
[644]27c
[1146]28
[644]29c
[1146]30        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
31     &             zphi/RG,philevSTD)
32        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
33     &             qx(:,:,ivap),qlevSTD)
34        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
35     &             zx_rh*100.,rhlevSTD)
[644]36c
37        DO l=1, klev
38         DO i=1, klon
39          zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l)
40         ENDDO !i
41        ENDDO !l
[1146]42        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
43     &             zx_tmp_fi3d,uvSTD)
[644]44c
45        DO l=1, klev
46         DO i=1, klon
47          zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l)
48         ENDDO !i
49        ENDDO !l
[1146]50        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
51     &             zx_tmp_fi3d,vqSTD)
[644]52c
53        DO l=1, klev
54         DO i=1, klon
55          zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l)
56         ENDDO !i
57        ENDDO !l
[1146]58        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
59     &             zx_tmp_fi3d,vTSTD)
[644]60c
61        DO l=1, klev
62         DO i=1, klon
63          zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap)
64         ENDDO !i
65        ENDDO !l
[1146]66        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
67     &             zx_tmp_fi3d,wqSTD)
[644]68c
69        DO l=1, klev
70         DO i=1, klon
71          zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG
72         ENDDO !i
73        ENDDO !l
[1146]74        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
75     &             zx_tmp_fi3d,vphiSTD)
[644]76c
77        DO l=1, klev
78         DO i=1, klon
79          zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l)
80         ENDDO !i
81        ENDDO !l
[1146]82        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
83     &             zx_tmp_fi3d,wTSTD)
[644]84c
85        DO l=1, klev
86         DO i=1, klon
87          zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l)
88         ENDDO !i
89        ENDDO !l
[1146]90        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
91     &             zx_tmp_fi3d,u2STD)
[644]92c
93        DO l=1, klev
94         DO i=1, klon
95          zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l)
96         ENDDO !i
97        ENDDO !l
[1146]98        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
99     &             zx_tmp_fi3d,v2STD)
[644]100c
101        DO l=1, klev
102         DO i=1, klon
103          zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l)
104         ENDDO !i
105        ENDDO !l
[1146]106        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
107     &             zx_tmp_fi3d,T2STD)
108
109
110        DO l=1, klev
111        DO i=1, klon
112         zx_tmp_fi3d(i,l)=paprs(i,l)
113        ENDDO !i
114        ENDDO !l
115        CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD,
116     &             omega,wlevSTD)
117
[644]118c
[1350]119cIM on somme les valeurs toutes les freq_calNMC secondes
[644]120c
[1350]121       CALL undefSTD(itap,freq_calNMC)
[644]122c
[1350]123cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
[644]124c
[1350]125       CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
[644]126c
[1350]127       CALL plevel(klon,klev,.true.,pplay,50000.,
128     &              zphi/RG,geo500)
129
130cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
[644]131c
132      CALL plevel(klon,klevp1,.true.,paprs,20000.,
133     $     swdn0,SWdn200clr)
134      CALL plevel(klon,klevp1,.false.,paprs,20000.,
135     $     swdn,SWdn200)
136      CALL plevel(klon,klevp1,.false.,paprs,20000.,
137     $     swup0,SWup200clr)
138      CALL plevel(klon,klevp1,.false.,paprs,20000.,
139     $     swup,SWup200)
140c
141      CALL plevel(klon,klevp1,.false.,paprs,20000.,
142     $     lwdn0,LWdn200clr)
143      CALL plevel(klon,klevp1,.false.,paprs,20000.,
144     $     lwdn,LWdn200)
145      CALL plevel(klon,klevp1,.false.,paprs,20000.,
146     $     lwup0,LWup200clr)
147      CALL plevel(klon,klevp1,.false.,paprs,20000.,
148     $     lwup,LWup200)
149c
Note: See TracBrowser for help on using the repository browser.