source: LMDZ6/branches/Ocean_skin/libf/phylmd/thermcell_closure.F90

Last change on this file was 4368, checked in by lguez, 18 months ago

Sync latest trunk changes to Ocean_skin

  • 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: 2.0 KB
Line 
1!
2! $Header$
3!
4      SUBROUTINE thermcell_closure(ngrid,nlay,r_aspect,ptimestep,rho,  &
5     &   zlev,lalim,alim_star,zmax,wmax,f)
6
7!-------------------------------------------------------------------------
8!thermcell_closure: fermeture, determination de f
9!
10! Modification 7 septembre 2009
11! 1. On enleve alim_star_tot des arguments pour le recalculer et etre ainis
12! coherent avec l'integrale au numerateur.
13! 2. On ne garde qu'une version des couples wmax,zmax et wmax_sec,zmax_sec
14! l'idee etant que le choix se fasse a l'appel de thermcell_closure
15! 3. Vectorisation en mettant les boucles en l l'exterieur avec des if
16!-------------------------------------------------------------------------
17      IMPLICIT NONE
18
19! --- arguments ------------------------------------------
20integer, intent(in) :: ngrid,nlay
21real, intent(in) :: r_aspect,ptimestep
22real, intent(in), dimension(ngrid,nlay) :: alim_star,rho,zlev
23integer, intent(in), dimension(ngrid) :: lalim
24real, intent(in), dimension(ngrid) :: zmax,wmax
25
26real, intent(out), dimension(ngrid) :: f
27
28
29! --- local ------------------------------------------
30real, dimension(ngrid) :: zdenom,alim_star2,alim_star_tot
31INTEGER llmax
32INTEGER ig,k       
33
34!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
35!print*,'THERMCELL CLOSURE 26E'
36
37alim_star2(:)=0.
38alim_star_tot(:)=0.
39f(:)=0.
40
41! Indice vertical max (max de lalim) atteint par les thermiques sur le domaine
42llmax=1
43do ig=1,ngrid
44   if (lalim(ig)>llmax) llmax=lalim(ig)
45enddo
46
47
48! Calcul des integrales sur la verticale de alim_star et de
49!   alim_star^2/(rho dz)
50do k=1,llmax-1
51   do ig=1,ngrid
52      if (k<lalim(ig)) then
53         alim_star2(ig)=alim_star2(ig)+alim_star(ig,k)**2  &
54&                    /(rho(ig,k)*(zlev(ig,k+1)-zlev(ig,k)))
55         alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,k)
56      endif
57   enddo
58enddo
59
60
61do ig=1,ngrid
62   if (alim_star2(ig)>1.e-10) then
63      f(ig)=wmax(ig)*alim_star_tot(ig)/  &
64&     (max(500.,zmax(ig))*r_aspect*alim_star2(ig))
65   endif
66enddo
67
68
69
70 RETURN
71      end
Note: See TracBrowser for help on using the repository browser.