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

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

More on physics/dynamics separation and cleanup:

  • Set things up so that all physics-related initializations are done via iniphysiq.
  • Created a "geometry_mod.F90" module in phy_common to store information on the loacl grid (i.e. replaces comgeomphy) and moreover give these variables more obvious names (e.g.: rlond => longitude, rlatd => latitude, airephy => cell_area).
  • removed obsolete comgeomphy.h and comgeomphy.F90

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
RevLine 
[1862]1!
2! $Header$
3!
[776]4      IF (is_sequential) THEN
5     
[644]6      IF (type_run.EQ."AMIP") THEN
[1862]7!
[644]8      ndex2d = 0
[2343]9      itau_w = itau_phy + itap + start_time * day_step_phy
[1862]10!
11! Champs 2D:
12!
[644]13      pi = ACOS(-1.)
14      pir = 4.0*ATAN(1.0) / 180.0
[1862]15!
[644]16      DO i=1, klon
17       zx_tmp_fi2d(i)=(topsw(i)-toplw(i))
18      ENDDO
[1862]19!
[644]20      ok_msk=.FALSE.
21      msk(1:klon)=pctsrf(1:klon,is_ter)
[2351]22      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
[1862]23           ok_msk, msk, moyglo)
[644]24      zx_tmp_fi2d(1:klon)=moyglo
[1862]25!
[2344]26      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]27      CALL histwrite(nid_day_seri,"bilTOA",itau_w, &
[2344]28                     zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
[1862]29!
[644]30      ok_msk=.FALSE.
[2351]31      CALL moyglo_pondaire(klon, bils, cell_area,  &
[1862]32           ok_msk, msk, moyglo)
[644]33      zx_tmp_fi2d(1:klon)=moyglo
[1862]34!
[2344]35      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]36      CALL histwrite(nid_day_seri,"bils",itau_w, &
[2344]37                     zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
[1862]38!
[644]39      DO k=1, klev
40      DO i=1, klon
[1862]41!IM 080904    zx_tmp_fi3d(i,k)=u(i,k)**2+v(i,k)**2
[644]42       zx_tmp_fi3d(i,k)=(u(i,k)**2+v(i,k)**2)/2.
43      ENDDO
44      ENDDO
[1862]45!
46      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
[2351]47           cell_area, paprs, moyglo)
[644]48      zx_tmp_fi2d(1:klon)=moyglo
[1862]49!
[2344]50      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]51      CALL histwrite(nid_day_seri,"ecin",itau_w, &
[2344]52                     zx_tmp_2d,nbp_lon*nbp_lat,ndex2d) 
[1862]53!
54!IM 151004 BEG
[644]55      IF(1.EQ.0) THEN
[1862]56!
[644]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
[1862]62!
63      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
[2351]64           cell_area, paprs, moyglo)
[644]65      zx_tmp_fi2d(1:klon)=moyglo
[1862]66!
[2344]67      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]68      CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
[2344]69                     nbp_lon*nbp_lat,ndex2d)
[1862]70!
71! friction torque
72!
[644]73      DO i=1, klon
74       zx_tmp_fi2d(i)=zxfluxu(i,1)*RA* cos(pir* rlat(i))
75      ENDDO
[1862]76!
[644]77      ok_msk=.FALSE.
[2351]78      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
[1862]79           ok_msk, msk, moyglo)
[644]80      zx_tmp_fi2d(1:klon)=moyglo
[1862]81!
[2344]82      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]83      CALL histwrite(nid_day_seri,"frictor",itau_w,zx_tmp_2d, &
[2344]84                     nbp_lon*nbp_lat,ndex2d)
[1862]85!
86! mountain torque
87!
88!IM 190504 BEG
[2351]89      CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,cell_area,airedyn)
[2344]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)
[644]92      mountor=0.
93      airetot=0.
[2344]94      DO j = 1, nbp_lat
95       DO i = 1, nbp_lon+1
96        ij=i+(nbp_lon+1)*(j-1)
[644]97        zx_tmp(ij)=0.
98        DO k = 1, klev
[1862]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
[644]101         airetot=airetot+airedyn(i,j)
102        ENDDO
[1862]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))
[644]106       ENDDO
107      ENDDO
[1862]108!IM 151004 BEG
[644]109      IF(itap.EQ.1) PRINT*,'airetot=',airetot,airetot/klev
[1862]110!IM 151004 END
111!IM 190504      mountor=mountor/(airetot*airetot)
[644]112      mountor=mountor/airetot
[1862]113!
114!IM 190504 END
[2344]115      zx_tmp_2d(1:nbp_lon,1:nbp_lat)=mountor
[1862]116      CALL histwrite(nid_day_seri,"mountor",itau_w,zx_tmp_2d, &
[2344]117                     nbp_lon*nbp_lat,ndex2d)
[1862]118!
[644]119      ENDIF !(1.EQ.0) THEN
[1862]120!
121!
[2351]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)
[644]124      airetot=0.
[2344]125!     DO j = 1, nbp_lat
126!      DO i = 1, nbp_lon+1
127!       ij=i+(nbp_lon+1)*(j-1)
[1862]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!
[644]135      DO i=1, klon
[2351]136       airetot=airetot+cell_area(i)
[644]137      ENDDO
[1862]138!     IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
139!
[644]140      airetot=0.
[2344]141      DO j=1, nbp_lat
142       DO i=1, nbp_lon
[644]143        airetot=airetot+zx_tmp_2d(i,j)
144       ENDDO
145      ENDDO
[1862]146!
147!     IF(itap.EQ.1) PRINT*,'airetotij=',airetot,
148!    $ '4piR2',4.*pi*RA*RA
149!
[644]150      zx_tmp_fi2d(1:klon)=aam/airetot
[2344]151      CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
[1862]152      CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
[2344]153                     nbp_lon*nbp_lat,ndex2d)
[1862]154!
[644]155      zx_tmp_fi2d(1:klon)=torsfc/airetot
[2344]156      CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
[1862]157      CALL histwrite(nid_day_seri,"torsfc",itau_w,zx_tmp_2d, &
[2344]158                     nbp_lon*nbp_lat,ndex2d)
[1862]159!
160!IM 151004 END
161!
162      CALL moyglo_pondmass(klon, klev, t_seri, &
[2351]163           cell_area, paprs, moyglo)
[644]164      zx_tmp_fi2d(1:klon)=moyglo
[1862]165!
[2344]166      CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
[1862]167      CALL histwrite(nid_day_seri,"tamv",itau_w, &
[2344]168                     zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
[1862]169!
[644]170      ok_msk=.FALSE.
[2351]171      CALL moyglo_pondaire(klon, paprs(:,1), cell_area,  &
[1862]172           ok_msk, msk, moyglo)
[644]173      zx_tmp_fi2d(1:klon)=moyglo
[1862]174!
[2344]175      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]176      CALL histwrite(nid_day_seri,"psol",itau_w, &
[2344]177                     zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
[1862]178!
[644]179      ok_msk=.FALSE.
[2351]180      CALL moyglo_pondaire(klon, evap, cell_area,  &
[1862]181           ok_msk, msk, moyglo)
[644]182      zx_tmp_fi2d(1:klon)=moyglo
[1862]183!
[2344]184      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d,zx_tmp_2d)
[1862]185      CALL histwrite(nid_day_seri,"evap",itau_w, &
[2344]186                     zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
[1862]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)
[2351]194!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area, 
[1862]195!    .                     ok_msk, msk, moyglo)
196!     zx_tmp_fi2d(1:klon)=moyglo
197!
[2344]198!     CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
[1862]199!     CALL histwrite(nid_day_seri,"SnowFrac",
[2344]200!    .               itau_w,zx_tmp_2d,nbp_lon*nbp_lat,ndex2d) 
[1862]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)
[2351]210!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area, 
[1862]211!    .     ok_msk, msk, moyglo)
212!     zx_tmp_fi2d(1:klon)=moyglo
213!
[2344]214!     CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat,zx_tmp_fi2d,zx_tmp_2d)
[1862]215!     CALL histwrite(nid_day_seri,"snow_depth",itau_w,
[2344]216!    .               zx_tmp_2d,nbp_lon*nbp_lat,ndex2d)
[1862]217!
[644]218      DO i=1, klon
219       zx_tmp_fi2d(i)=ftsol(i,is_oce)
220      ENDDO
[1862]221!
[644]222      ok_msk=.TRUE.
223      msk(1:klon)=pctsrf(1:klon,is_oce)
[2351]224      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
[1862]225           ok_msk, msk, moyglo)
[644]226      zx_tmp_fi2d(1:klon)=moyglo
[1862]227!
[2344]228      CALL gr_fi_ecrit(1, klon,nbp_lon,nbp_lat, zx_tmp_fi2d, zx_tmp_2d)
[1862]229      CALL histwrite(nid_day_seri,"tsol_"//clnsurf(is_oce), &
[2344]230                     itau_w,zx_tmp_2d,nbp_lon*nbp_lat,ndex2d) 
[1862]231!
232!=================================================================
233!=================================================================
234!=================================================================
235!
[644]236      if (ok_sync) then
237        call histsync(nid_day_seri)
238      endif
[1862]239!
[644]240      ENDIF !fin test sur type_run.EQ."AMIP"
[766]241     
242      ENDIF  ! mono_cpu
Note: See TracBrowser for help on using the repository browser.