source: LMDZ4/trunk/libf/phylmd/thermcell_init.F90 @ 938

Last change on this file since 938 was 938, checked in by lmdzadmin, 16 years ago

Enleve prints par defaut
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1      SUBROUTINE thermcell_init(ngrid,nlay,ztv,zlev,  &
2     &                  lalim,lmin,alim_star,alim_star_tot,lev_out)
3
4!----------------------------------------------------------------------
5!thermcell_init: calcul du profil d alimentation du thermique
6!----------------------------------------------------------------------
7      IMPLICIT NONE
8#include "iniprint.h"
9
10      INTEGER l,ig
11!arguments d entree
12      INTEGER ngrid,nlay
13      REAL ztv(ngrid,nlay)
14      REAL zlev(ngrid,nlay)
15!arguments de sortie
16      INTEGER lalim(ngrid)
17      INTEGER lmin(ngrid)
18      REAL alim_star(ngrid,nlay)
19      REAL alim_star_tot(ngrid)
20      integer lev_out                           ! niveau pour les print
21     
22!CR: ponderation entrainement des couches instables
23!def des alim_star tels que alim=f*alim_star     
24
25      do l=1,nlay
26         do ig=1,ngrid
27            alim_star(ig,l)=0.
28         enddo
29      enddo
30! determination de la longueur de la couche d entrainement
31      do ig=1,ngrid
32         lalim(ig)=1
33      enddo
34
35!on ne considere que les premieres couches instables
36      do l=nlay-2,1,-1
37         do ig=1,ngrid
38            if (ztv(ig,l).gt.ztv(ig,l+1).and.  &
39     &          ztv(ig,l+1).le.ztv(ig,l+2)) then
40               lalim(ig)=l+1
41            endif
42          enddo
43      enddo
44
45! determination du lmin: couche d ou provient le thermique
46
47      do ig=1,ngrid
48! FH initialisation de lmin a nlay plutot que 1.
49!        lmin(ig)=nlay
50         lmin(ig)=1
51      enddo
52      do l=nlay,2,-1
53         do ig=1,ngrid
54            if (ztv(ig,l-1).gt.ztv(ig,l)) then
55               lmin(ig)=l-1
56            endif
57         enddo
58      enddo
59!
60! definition de l'entrainement des couches
61      do l=1,nlay-1
62         do ig=1,ngrid
63            if (ztv(ig,l).gt.ztv(ig,l+1).and.  &
64     &          l.ge.lmin(ig).and.l.lt.lalim(ig)) then
65!def possibles pour alim_star: zdthetadz, dthetadz, zdtheta
66             alim_star(ig,l)=MAX((ztv(ig,l)-ztv(ig,l+1)),0.)  &
67     &                       *sqrt(zlev(ig,l+1))
68            endif
69         enddo
70      enddo
71     
72! pas de thermique si couche 1 stable
73      do ig=1,ngrid
74!CRnouveau test
75        if (alim_star(ig,1).lt.1.e-10) then
76            do l=1,nlay
77                alim_star(ig,l)=0.
78            enddo
79            lmin(ig)=1
80         endif
81      enddo
82! calcul de l alimentation totale
83      do ig=1,ngrid
84         alim_star_tot(ig)=0.
85      enddo
86      do l=1,nlay
87         do ig=1,ngrid
88            alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,l)
89         enddo
90      enddo
91!
92! Calcul entrainement normalise
93      do l=1,nlay
94         do ig=1,ngrid
95            if (alim_star_tot(ig).gt.1.e-10) then
96               alim_star(ig,l)=alim_star(ig,l)/alim_star_tot(ig)
97            endif
98         enddo
99      enddo
100       
101      return
102      end 
Note: See TracBrowser for help on using the repository browser.