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_mod, only: cpdet |
---|
9 | IMPLICIT none |
---|
10 | |
---|
11 | #include "dimensions.h" |
---|
12 | #include "YOMCST.h" |
---|
13 | C |
---|
14 | C ------------------------------------------------------------------ |
---|
15 | C |
---|
16 | C PURPOSE. |
---|
17 | C -------- |
---|
18 | C |
---|
19 | c This routine uses the NER matrix |
---|
20 | c (computed for a given cell and temp profile in radlwsw) |
---|
21 | c to compute cooling rates and radiative fluxes. |
---|
22 | c |
---|
23 | C AUTHOR. |
---|
24 | C ------- |
---|
25 | C Sebastien Lebonnois |
---|
26 | C |
---|
27 | C MODIFICATIONS. |
---|
28 | C -------------- |
---|
29 | C ORIGINAL : 27/07/2005 |
---|
30 | C version multimatrice (topographie, sommet nuages): 20/12/2006 |
---|
31 | C ------------------------------------------------------------------ |
---|
32 | C |
---|
33 | C* ARGUMENTS: |
---|
34 | C |
---|
35 | c 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 |
---|
41 | C |
---|
42 | c output |
---|
43 | |
---|
44 | REAL PCOOL(klev) ! LONGWAVE COOLING (K/VENUSDAY) 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 | |
---|
50 | C |
---|
51 | C* LOCAL VARIABLES: |
---|
52 | C |
---|
53 | real dureejour |
---|
54 | parameter (dureejour=10.087e6) |
---|
55 | |
---|
56 | integer i,j,p |
---|
57 | real zlnet(klev+1) ! net thermal flux (W/m**2) |
---|
58 | real dzlnet(0:klev) ! Radiative budget (W/m**2) |
---|
59 | real pdp(klev) ! epaisseur de la couche en pression (Pa) |
---|
60 | |
---|
61 | c -------------------------- |
---|
62 | c Calculation of the fluxes |
---|
63 | c -------------------------- |
---|
64 | |
---|
65 | c flux aux intercouches: |
---|
66 | c zlnet(i+1) est le flux net traversant le plafond de la couche i (+ vers le haut) |
---|
67 | do p=0,klev ! numero de la couche |
---|
68 | zlnet(p+1) = 0.0 |
---|
69 | do j=p+1,klev+1 |
---|
70 | do i=0,p |
---|
71 | zlnet(p+1) = zlnet(p+1)+ psi(i,j) |
---|
72 | enddo |
---|
73 | enddo |
---|
74 | enddo |
---|
75 | |
---|
76 | c flux net au sol, + vers le haut: |
---|
77 | PSOLLW = zlnet(1) |
---|
78 | c flux vers le bas au sol, + vers le bas: |
---|
79 | PSOLLWDN = 0.0 |
---|
80 | do i=1,klev+1 |
---|
81 | PSOLLWDN = PSOLLWDN+max(psi(i,0),0.0) |
---|
82 | enddo |
---|
83 | |
---|
84 | c dfluxnet = radiative budget (W m-2) |
---|
85 | do p=0,klev ! numero de la couche |
---|
86 | dzlnet(p) = 0.0 |
---|
87 | do j=0,klev+1 |
---|
88 | dzlnet(p) = dzlnet(p)+psi(p,j) |
---|
89 | enddo |
---|
90 | enddo |
---|
91 | |
---|
92 | c -------------------------------------- |
---|
93 | c Interpolation in the GCM vertical grid |
---|
94 | c -------------------------------------- |
---|
95 | |
---|
96 | c Flux net |
---|
97 | c -------- |
---|
98 | |
---|
99 | do j=1,klev+1 |
---|
100 | ZFLNET(j) = zlnet(j) |
---|
101 | enddo |
---|
102 | PTOPLW = ZFLNET(klev+1) |
---|
103 | |
---|
104 | c Heating rates |
---|
105 | c ------------- |
---|
106 | |
---|
107 | c cool (K/s) = dfluxnet (W/m2) ! positif quand nrj sort de la couche |
---|
108 | c *g (m/s2) |
---|
109 | c /(-dp) (epaisseur couche, en Pa=kg/m/s2) |
---|
110 | c /cp (J/kg/K) |
---|
111 | |
---|
112 | do j=1,klev |
---|
113 | pdp(j)=(PPB(j)-PPB(j+1))*1.e5 |
---|
114 | enddo |
---|
115 | |
---|
116 | c calcul direct OU calcul par schema implicit |
---|
117 | if (1.eq.1) then |
---|
118 | do j=1,klev |
---|
119 | ! ADAPTATION GCM POUR CP(T) |
---|
120 | PCOOL(j) = dzlnet(j) *RG/cpdet(pt(j)) / pdp(j) |
---|
121 | enddo |
---|
122 | else |
---|
123 | call lwi(klev,dzlnet,deltapsi,pdp,pt,PCOOL) |
---|
124 | endif |
---|
125 | c print*,dzlnet |
---|
126 | c print*,pdp |
---|
127 | c print*,PCOOL |
---|
128 | |
---|
129 | do j=1,klev |
---|
130 | PCOOL(j) = PCOOL(j)*dureejour ! K/Venusday |
---|
131 | enddo |
---|
132 | |
---|
133 | return |
---|
134 | end |
---|
135 | |
---|