LMDZ
write_histday_seri.h
Go to the documentation of this file.
1 !
2 ! $Id: write_histday_seri.h 2351 2015-08-25 15:14:59Z emillour $
3 !
4  IF (is_sequential) THEN
5 
6  IF (type_run.EQ."AMIP") THEN
7 !
8  ndex2d = 0
10 !
11 ! Champs 2D:
12 !
13  pi = ACOS(-1.)
14  pir = 4.0*ATAN(1.0) / 180.0
15 !
16  DO i=1, klon
17  zx_tmp_fi2d(i)=(topsw(i)-toplw(i))
18  ENDDO
19 !
20  ok_msk=.FALSE.
21  msk(1:klon)=pctsrf(1:klon,is_ter)
23  ok_msk, msk, moyglo)
24  zx_tmp_fi2d(1:klon)=moyglo
25 !
26  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
27  CALL histwrite(nid_day_seri,"bilTOA",itau_w, &
28  zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
29 !
30  ok_msk=.FALSE.
31  CALL moyglo_pondaire(klon, bils, cell_area, &
32  ok_msk, msk, moyglo)
33  zx_tmp_fi2d(1:klon)=moyglo
34 !
35  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
36  CALL histwrite(nid_day_seri,"bils",itau_w, &
37  zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
38 !
39  DO k=1, klev
40  DO i=1, klon
41 !IM 080904 zx_tmp_fi3d(i,k)=u(i,k)**2+v(i,k)**2
42  zx_tmp_fi3d(i,k)=(u(i,k)**2+v(i,k)**2)/2.
43  ENDDO
44  ENDDO
45 !
46  CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d, &
47  cell_area, paprs, moyglo)
48  zx_tmp_fi2d(1:klon)=moyglo
49 !
50  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
51  CALL histwrite(nid_day_seri,"ecin",itau_w, &
52  zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
53 !
54 !IM 151004 BEG
55  IF(1.EQ.0) THEN
56 !
57  DO k=1, klev
58  DO i=1, klon
59  zx_tmp_fi3d(i,k)=u_seri(i,k)*RA*cos(pir* rlat(i))
60  ENDDO
61  ENDDO
62 !
63  CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d, &
64  cell_area, paprs, moyglo)
65  zx_tmp_fi2d(1:klon)=moyglo
66 !
67  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
68  CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
69  nbp_lon*nbp_lat,ndex2d)
70 !
71 ! friction torque
72 !
73  DO i=1, klon
74  zx_tmp_fi2d(i)=zxfluxu(i,1)*RA* cos(pir* rlat(i))
75  ENDDO
76 !
77  ok_msk=.FALSE.
78  CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area, &
79  ok_msk, msk, moyglo)
80  zx_tmp_fi2d(1:klon)=moyglo
81 !
82  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
83  CALL histwrite(nid_day_seri,"frictor",itau_w,zx_tmp_2d, &
84  nbp_lon*nbp_lat,ndex2d)
85 !
86 ! mountain torque
87 !
88 !IM 190504 BEG
89  CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,cell_area,airedyn)
90  CALL gr_fi_dyn(klev+1,klon,nbp_lon+1,nbp_lat,paprs,padyn)
91  CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,rlat,rlatdyn)
92  mountor=0.
93  airetot=0.
94  DO j = 1, nbp_lat
95  DO i = 1, nbp_lon+1
96  ij=i+(nbp_lon+1)*(j-1)
97  zx_tmp(ij)=0.
98  DO k = 1, klev
99  zx_tmp(ij)=zx_tmp(ij)+dudyn(i,j,k)*airedyn(i,j)* &
100  (padyn(i,j,k+1)-padyn(i,j,k))/RG
101  airetot=airetot+airedyn(i,j)
102  ENDDO
103 !IM 190504 mountor=mountor+zx_tmp(ij)*airedyn(i,j)*RA*
105  cos(pir* rlatdyn(i,j))
106  ENDDO
107  ENDDO
108 !IM 151004 BEG
109  IF(itap.EQ.1) PRINT*,'airetot=',airetot,airetot/klev
110 !IM 151004 END
111 !IM 190504 mountor=mountor/(airetot*airetot)
112  mountor=mountor/airetot
113 !
114 !IM 190504 END
115  zx_tmp_2d(1:nbp_lon,1:nbp_lat)=mountor
116  CALL histwrite(nid_day_seri,"mountor",itau_w,zx_tmp_2d, &
117  nbp_lon*nbp_lat,ndex2d)
118 !
119  ENDIF !(1.EQ.0) THEN
120 !
121 !
122  CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,cell_area,airedyn)
123  CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,cell_area,zx_tmp_2d)
124  airetot=0.
125 ! DO j = 1, nbp_lat
126 ! DO i = 1, nbp_lon+1
127 ! ij=i+(nbp_lon+1)*(j-1)
128 ! DO k = 1, klev
129 ! airetot=airetot+airedyn(i,j)
130 ! airetot=airetot+airedyn(i,j)
131 ! ENDDO !k
132 ! ENDDO !i
133 ! ENDDO !j
134 !
135  DO i=1, klon
136  airetot=airetot+cell_area(i)
137  ENDDO
138 ! IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
139 !
140  airetot=0.
141  DO j=1, nbp_lat
142  DO i=1, nbp_lon
143  airetot=airetot+zx_tmp_2d(i,j)
144  ENDDO
145  ENDDO
146 !
147 ! IF(itap.EQ.1) PRINT*,'airetotij=',airetot,
148 ! $ '4piR2',4.*pi*RA*RA
149 !
150  zx_tmp_fi2d(1:klon)=aam/airetot
151  CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
152  CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
153  nbp_lon*nbp_lat,ndex2d)
154 !
155  zx_tmp_fi2d(1:klon)=torsfc/airetot
156  CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
157  CALL histwrite(nid_day_seri,"torsfc",itau_w,zx_tmp_2d, &
158  nbp_lon*nbp_lat,ndex2d)
159 !
160 !IM 151004 END
161 !
162  CALL moyglo_pondmass(klon, klev, t_seri, &
163  cell_area, paprs, moyglo)
164  zx_tmp_fi2d(1:klon)=moyglo
165 !
166  CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
167  CALL histwrite(nid_day_seri,"tamv",itau_w, &
168  zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
169 !
170  ok_msk=.FALSE.
171  CALL moyglo_pondaire(klon, paprs(:,1), cell_area, &
172  ok_msk, msk, moyglo)
173  zx_tmp_fi2d(1:klon)=moyglo
174 !
175  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
176  CALL histwrite(nid_day_seri,"psol",itau_w, &
177  zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
178 !
179  ok_msk=.FALSE.
180  CALL moyglo_pondaire(klon, evap, cell_area, &
181  ok_msk, msk, moyglo)
182  zx_tmp_fi2d(1:klon)=moyglo
183 !
184  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
185  CALL histwrite(nid_day_seri,"evap",itau_w, &
186  zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
187 !
188 ! DO i=1, klon
189 ! zx_tmp_fi2d(i)=SnowFrac(i,is_ter)
190 ! ENDDO
191 !
192 ! ok_msk=.TRUE.
193 ! msk(1:klon)=pctsrf(1:klon,is_ter)
194 ! CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,
195 ! . ok_msk, msk, moyglo)
196 ! zx_tmp_fi2d(1:klon)=moyglo
197 !
198 ! CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
199 ! CALL histwrite(nid_day_seri,"SnowFrac",
200 ! . itau_w,zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
201 !
202 ! DO i=1, klon
203 !IM 080904 zx_tmp_fi2d(i)=zsnow_mass(i)/330.*rowl
204 ! zx_tmp_fi2d(i)=zsnow_mass(i)
205 ! ENDDO
206 !
207 !IM 140904 ok_msk=.FALSE.
208 ! ok_msk=.TRUE.
209 ! msk(1:klon)=pctsrf(1:klon,is_ter)
210 ! CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,
211 ! . ok_msk, msk, moyglo)
212 ! zx_tmp_fi2d(1:klon)=moyglo
213 !
214 ! CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
215 ! CALL histwrite(nid_day_seri,"snow_depth",itau_w,
216 ! . zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
217 !
218  DO i=1, klon
219  zx_tmp_fi2d(i)=ftsol(i,is_oce)
220  ENDDO
221 !
222  ok_msk=.TRUE.
223  msk(1:klon)=pctsrf(1:klon,is_oce)
224  CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area, &
225  ok_msk, msk, moyglo)
226  zx_tmp_fi2d(1:klon)=moyglo
227 !
228  CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d, zx_tmp_2d)
229  CALL histwrite(nid_day_seri,"tsol_"//clnsurf(is_oce), &
230  itau_w,zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
231 !
232 !=================================================================
233 !=================================================================
234 !=================================================================
235 !
236  if (ok_sync) then
237  call histsync(nid_day_seri)
238  endif
239 !
240  ENDIF !fin test sur type_run.EQ."AMIP"
241 
242  ENDIF ! mono_cpu
subroutine moyglo_pondaire(nhori, champ, aire, ok_msk, msk, moyglo)
Definition: moyglo_aire.F90:5
!$Id Turb_fcg_gcssold if(prt_level.ge.1) then print *
INTERFACE SUBROUTINE RRTM_ECRT_140GP klon
!$Id klon zx_tmp_fi2d(i)
real, dimension(:), allocatable, save topsw
integer, parameter is_ter
c c $Id
Definition: ini_bilKP_ave.h:11
real, dimension(:), allocatable, save bils
!$Id klon initialisation mois suivants day_rain itap
Definition: calcul_divers.h:18
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon klev airetot
integer, save day_step_phy
!$Id ***************************************!ECRITURE DU FALSE
Definition: write_histrac.h:9
subroutine moyglo_pondmass(nhori, nvert, champ, aire, pbord, moyglo)
integer, save klev
Definition: dimphy.F90:7
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon klev zx_tmp(ij)
!$Id mode_top_bound COMMON comconstr && pi
Definition: comconst.h:7
subroutine moyglo_pondaima(nhori, nvert, champ, aire, pbord, moyglo)
Definition: moyglo_aire.F90:63
c c $Id c c calculs statistiques distribution nuage ftion du regime dynamique c c Ce calcul doit etre fait a partir de valeurs mensuelles CALL nbregdyn DO k
Definition: calcul_REGDYN.h:12
!$Id itau_phy
Definition: temps.h:15
real, dimension(:,:), pointer, save ecin
Definition: caldyn_mod.F90:11
!$Id klon IF(pctsrf(i, is_ter).GT.0.) THEN paire_ter(i)
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon ij
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi RG
Definition: calcul_STDlev.h:33
real, dimension(:), allocatable, save toplw
!$Id klon klev DO klon!IM zx_tmp_fi3d(i, k)
!FH On elimine toutes les clefs physiques dans la dynamique zx_tmp_2d
real, dimension(:), allocatable, save evap
!$Id Turb_fcg!implicit none!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc!cette routine permet d obtenir hq et ainsi de!pouvoir calculer la convergence et le cisaillement dans la physiq!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc INTEGER klev REAL j
Definition: 1Dconv.h:27
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
!$Id klon klev DO i
c c $Id c nbregdyn DO klon c rlat(i) c ENDIF!lon c ENDIF!lat ENDIF!pctsrf ENDDO!klon ENDDO!nbregdyn cIM 190504 ENDIF!ok_regdyn cIM somme de toutes les nhistoW BEG IF(debut) THEN DO nreg
c c zjulian c cym CALL iim cym klev iim cym jjmp1 cym On stoke le fichier bilKP instantanne sur
Definition: ini_bilKP_ins.h:41
real, dimension(:,:), allocatable, save, private pctsrf
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL & u_seri
Definition: calcul_STDlev.h:26
subroutine friction(ucov, vcov, pdt)
Definition: friction.F:6
subroutine gr_fi_ecrit(nfield, nlon, iim, jjmp1, fi, ecrit)
Definition: gr_fi_ecrit.F90:5
real, dimension(:,:), allocatable, save t_seri
real, dimension(:,:), allocatable, save ftsol
!FH On elimine toutes les clefs physiques dans la dynamique itau_w
!$Id!Thermodynamical constants for rowl
Definition: cvthermo.h:6
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon klev airetot klev!IM END!IM nbp_lat!DO nbp_lon klev klon airetot nbp_lat DO nbp_lon airetotij
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon klev airetot klev!IM END!IM mountor
!$Id start_time
Definition: temps.h:15
logical, save is_sequential
integer, parameter is_oce
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon klev airetot klev!IM END!IM nbp_lat!DO nbp_lon klev klon airetotphy
subroutine gr_fi_dyn(nfield, ngrid, im, jm, pfi, pdyn)
Definition: gr_fi_dyn.F:5
real, dimension(:), allocatable, save cell_area
!$Id RNAVO!A1 Astronomical constants REAL ROMEGA!A1 bis Constantes concernant l orbite de la R_incl!A1 Geoide REAL RA
Definition: YOMCST.h:11