source: trunk/LMDZ.VENUS/libf/phyvenus/lw_venus_ve.F

Last change on this file was 3884, checked in by ikovalenko, 4 months ago
File size: 3.3 KB
Line 
1      SUBROUTINE LW_venus_ve(
2     S              PPB, pt, psi, deltapsi,
3     S              PCOOL,
4     S              PTOPLW,PSOLLW,PSOLLWDN,
5     S              ZFLNET)
6     
7      use dimphy
8      use cpdet_phy_mod, only: cpdet
9      use YOMCST_mod
10      IMPLICIT none
11
12C#include "YOMCST.h"
13C
14C     ------------------------------------------------------------------
15C
16C     PURPOSE.
17C     --------
18C
19c     This routine uses the NER matrix
20c     (computed for a given cell and temp profile in radlwsw)
21c     to compute cooling rates and radiative fluxes.
22c
23C     AUTHOR.
24C     -------
25C        Sebastien Lebonnois
26C
27C     MODIFICATIONS.
28C     --------------
29C        ORIGINAL : 27/07/2005
30C        version multimatrice (topographie, sommet nuages): 20/12/2006
31C     ------------------------------------------------------------------
32C
33C* ARGUMENTS:
34C
35c inputs
36
37      REAL    PPB(klev+1)  ! inter-couches PRESSURE (bar)
38      REAL    pt(klev)     ! mid-layer temperature
39      real    psi(0:klev+1,0:klev+1)      ! NER in W/m**2
40      real    deltapsi(0:klev+1,0:klev+1) ! D NER / DT in W/m**2/K
41C
42c output
43
44      REAL   PCOOL(klev)  ! LONGWAVE COOLING (K/s) within each layer
45      REAL   PTOPLW       ! LONGWAVE FLUX AT T.O.A. (net, + vers le haut)
46      REAL   PSOLLW       ! LONGWAVE FLUX AT SURFACE (net, + vers le haut)
47      REAL   PSOLLWDN     ! LONGWAVE FLUX AT SURFACE (down, + vers le bas)
48      REAL   ZFLNET(klev+1) ! net thermal flux at ppb levels (+ vers le haut)
49
50C
51C* LOCAL VARIABLES:
52C
53      integer i,j,p
54      real   zlnet(klev+1)    ! net thermal flux (W/m**2)
55      real   dzlnet(0:klev)   ! Radiative budget (W/m**2)
56      real   pdp(klev)        ! epaisseur de la couche en pression (Pa)
57
58c --------------------------
59c Calculation of the fluxes
60c --------------------------
61
62c flux aux intercouches:
63c zlnet(i+1) est le flux net traversant le plafond de la couche i (+ vers le haut)
64      do p=0,klev ! numero de la couche
65        zlnet(p+1) = 0.0
66        do j=p+1,klev+1
67         do i=0,p
68           zlnet(p+1) = zlnet(p+1)+ psi(i,j)
69         enddo
70        enddo
71      enddo
72
73c flux net au sol, + vers le haut:
74      PSOLLW = zlnet(1)
75c flux vers le bas au sol, + vers le bas:
76      PSOLLWDN = 0.0
77      do i=1,klev+1
78        PSOLLWDN = PSOLLWDN+max(psi(i,0),0.0)
79      enddo
80
81c dfluxnet = radiative budget (W m-2)
82      do p=0,klev ! numero de la couche
83        dzlnet(p) = 0.0
84        do j=0,klev+1
85           dzlnet(p) = dzlnet(p)+psi(p,j)
86        enddo
87      enddo
88     
89c --------------------------------------
90c Interpolation in the GCM vertical grid
91c --------------------------------------
92
93c Flux net
94c --------
95     
96      do j=1,klev+1
97        ZFLNET(j) =  zlnet(j)
98      enddo
99      PTOPLW   = ZFLNET(klev+1)
100     
101c Heating rates
102c -------------
103
104c  cool (K/s) = dfluxnet (W/m2)    ! positif quand nrj sort de la couche
105c              *g        (m/s2)
106c              /(-dp)  (epaisseur couche, en Pa=kg/m/s2)
107c              /cp  (J/kg/K)
108     
109      do j=1,klev
110        pdp(j)=(PPB(j)-PPB(j+1))*1.e5
111      enddo
112
113c calcul direct OU calcul par schema implicit
114      if (1.eq.1) then
115        do j=1,klev
116! ADAPTATION GCM POUR CP(T)
117         PCOOL(j) = dzlnet(j) *RG/cpdet(pt(j)) / pdp(j)
118        enddo
119      else
120        call lwi(klev,dzlnet,deltapsi,pdp,pt,PCOOL)
121      endif
122c     print*,dzlnet
123c     print*,pdp
124c     print*,PCOOL
125
126      return
127      end
128
Note: See TracBrowser for help on using the repository browser.