source: LMDZ5/trunk/libf/phylmd/write_histday_seri.h @ 2399

Last change on this file since 2399 was 2399, checked in by Ehouarn Millour, 9 years ago

Follow-up from commit 2395: get rid of rlon and rlat, longitude_deg and latitude_deg (from module geometry_mod) should be used instead. Longitudes and latitudes are no longer loaded from startphy.nc but inherited from dynamics (and compatibility with values in startphy.nc is checked). This will change bench results because of roundoffs differences between the two.
EM

  • 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: 7.2 KB
Line 
1!
2! $Header$
3!
4      IF (is_sequential) THEN
5     
6      IF (type_run.EQ."AMIP") THEN
7!
8      ndex2d = 0
9      itau_w = itau_phy + itap + start_time * day_step_phy
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)
22      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
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*latitude_deg(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*latitude_deg(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,latitude_deg,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*
104        mountor=mountor+zx_tmp(ij)*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
Note: See TracBrowser for help on using the repository browser.