/[lmdze]/trunk/phylmd/Radlwsw/radlwsw.f
ViewVC logotype

Diff of /trunk/phylmd/Radlwsw/radlwsw.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 53 by guez, Fri Oct 7 13:11:58 2011 UTC revision 71 by guez, Mon Jul 8 18:12:18 2013 UTC
# Line 12  contains Line 12  contains
12         solswai)         solswai)
13    
14      ! From LMDZ4/libf/phylmd/radlwsw.F, version 1.4 2005/06/06 13:16:33      ! From LMDZ4/libf/phylmd/radlwsw.F, version 1.4 2005/06/06 13:16:33
15      ! Author: Z. X. Li (LMD/CNRS) date: 1996/07/19      ! Author: Z. X. Li (LMD/CNRS)
16      ! Objet : interface entre le modèle et les rayonnements      ! Date: 1996/07/19
17      ! Rayonnements solaire et infrarouge  
18        ! Objet : interface entre le modèle et les rayonnements solaire et
19        ! infrarouge
20    
21        ! ATTENTION: swai and swad have to be interpreted in the following manner:
22    
23        ! not ok_ade and not ok_aie
24        ! both are zero
25    
26        ! ok_ade and not ok_aie
27        ! aerosol direct forcing is F_{AD} = topsw - topswad
28        ! indirect is zero
29    
30        ! not ok_ade and ok_aie
31        ! aerosol indirect forcing is F_{AI} = topsw - topswai
32        ! direct is zero
33    
34        ! ok_ade and ok_aie
35        ! aerosol indirect forcing is F_{AI} = topsw - topswai
36        ! aerosol direct forcing is F_{AD} = topswai - topswad
37    
     USE dimphy, ONLY: klev, klon  
38      USE clesphys, ONLY: bug_ozone, solaire      USE clesphys, ONLY: bug_ozone, solaire
39      USE suphec_m, ONLY: rg      USE dimphy, ONLY: klev, klon
40        use lw_m, only: lw
41      USE raddim, ONLY: kdlon      USE raddim, ONLY: kdlon
42      USE yoethf_m, ONLY: rvtmp2      USE suphec_m, ONLY: rg
43      use sw_m, only: sw      use sw_m, only: sw
44        USE yoethf_m, ONLY: rvtmp2
45                    
46      ! Arguments:      ! Arguments:
47    
48        real rmu0(klon), fract(klon), dist
49      ! dist-----input-R- distance astronomique terre-soleil      ! dist-----input-R- distance astronomique terre-soleil
50      ! rmu0-----input-R- cosinus de l'angle zenithal      ! rmu0-----input-R- cosinus de l'angle zenithal
51      ! fract----input-R- duree d'ensoleillement normalisee      ! fract----input-R- duree d'ensoleillement normalisee
52      ! co2_ppm--input-R- concentration du gaz carbonique (en ppm)  
53      ! solaire--input-R- constante solaire (W/m**2)      real, intent(in):: paprs(klon, klev+1)
54      ! paprs----input-R- pression a inter-couche (Pa)      ! paprs----input-R- pression a inter-couche (Pa)
55        real, intent(in):: pplay(klon, klev)
56      ! pplay----input-R- pression au milieu de couche (Pa)      ! pplay----input-R- pression au milieu de couche (Pa)
57      ! tsol-----input-R- temperature du sol (en K)      real albedo(klon), alblw(klon), tsol(klon)
58      ! albedo---input-R- albedo du sol (entre 0 et 1)      ! albedo---input-R- albedo du sol (entre 0 et 1)
59        ! tsol-----input-R- temperature du sol (en K)
60        real, intent(in):: t(klon, klev)
61      ! t--------input-R- temperature (K)      ! t--------input-R- temperature (K)
62        real q(klon, klev)
63      ! q--------input-R- vapeur d'eau (en kg/kg)      ! q--------input-R- vapeur d'eau (en kg/kg)
64        real, intent(in):: wo(klon, klev)
65      ! wo-------input-R- contenu en ozone (en kg/kg) correction MPL 100505      ! wo-------input-R- contenu en ozone (en kg/kg) correction MPL 100505
66        real cldfra(klon, klev), cldemi(klon, klev)
67      ! cldfra---input-R- fraction nuageuse (entre 0 et 1)      ! cldfra---input-R- fraction nuageuse (entre 0 et 1)
     ! cldtaupd---input-R- epaisseur optique des nuages dans le visible (present-day value)  
68      ! cldemi---input-R- emissivite des nuages dans l'IR (entre 0 et 1)      ! cldemi---input-R- emissivite des nuages dans l'IR (entre 0 et 1)
     ! ok_ade---input-L- apply the Aerosol Direct Effect or not?  
     ! ok_aie---input-L- apply the Aerosol Indirect Effect or not?  
     ! tau_ae, piz_ae, cg_ae-input-R- aerosol optical properties (calculated in aeropt.F)  
     ! cldtaupi-input-R- epaisseur optique des nuages dans le visible  
     !                   calculated for pre-industrial (pi) aerosol concentrations, i.e. with smaller  
     !                   droplet concentration, thus larger droplets, thus generally cdltaupi cldtaupd  
     !                   it is needed for the diagnostics of the aerosol indirect radiative forcing        
   
     ! cool-----output-R- refroidissement dans l'IR (K/jour)  
     ! radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas)  
     ! albpla---output-R- albedo planetaire (entre 0 et 1)  
     ! topsw----output-R- flux solaire net au sommet de l'atm.  
     ! toplw----output-R- ray. IR montant au sommet de l'atmosphere  
     ! solsw----output-R- flux solaire net a la surface  
     ! sollw----output-R- ray. IR montant a la surface  
     ! solswad---output-R- ray. solaire net absorbe a la surface (aerosol dir)  
     ! topswad---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol dir)  
     ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind)  
     ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind)  
   
     ! ATTENTION: swai and swad have to be interpreted in the following manner:  
     ! ok_ade = F & ok_aie = F -both are zero  
     ! ok_ade = T & ok_aie = F -aerosol direct forcing is F_{AD} = topsw-topswad  
     !                        indirect is zero  
     ! ok_ade = F & ok_aie = T -aerosol indirect forcing is F_{AI} = topsw-topswai  
     !                        direct is zero  
     ! ok_ade = T & ok_aie = T -aerosol indirect forcing is F_{AI} = topsw-topswai  
     !                        aerosol direct forcing is F_{AD} = topswai-topswad  
   
     real rmu0(klon), fract(klon), dist  
69    
70      real, intent(in):: paprs(klon, klev+1)      real cldtaupd(klon, klev)
71      real, intent(in):: pplay(klon, klev)      ! input-R- epaisseur optique des nuages dans le visible (present-day value)
     real albedo(klon), alblw(klon), tsol(klon)  
     real, intent(in):: t(klon, klev)  
     real q(klon, klev)  
     real, intent(in):: wo(klon, klev)  
     real cldfra(klon, klev), cldemi(klon, klev), cldtaupd(klon, klev)  
72    
73      real, intent(out):: heat(klon, klev)      real, intent(out):: heat(klon, klev)
74      ! échauffement atmosphérique (visible) (K/jour)      ! échauffement atmosphérique (visible) (K/jour)
75    
76      real cool(klon, klev)      real cool(klon, klev)
77        ! cool-----output-R- refroidissement dans l'IR (K/jour)
78      real heat0(klon, klev), cool0(klon, klev)      real heat0(klon, klev), cool0(klon, klev)
79      real radsol(klon), topsw(klon), toplw(klon)      real radsol(klon), topsw(klon)
80        ! radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas)
81        ! topsw----output-R- flux solaire net au sommet de l'atm.
82    
83        real, intent(out):: toplw(klon)
84        ! rayonnement infrarouge montant au sommet de l'atmosphère
85    
86      real solsw(klon), sollw(klon), albpla(klon)      real solsw(klon), sollw(klon), albpla(klon)
87      real topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)      ! solsw----output-R- flux solaire net a la surface
88        ! sollw----output-R- ray. IR montant a la surface
89        ! albpla---output-R- albedo planetaire (entre 0 et 1)
90        real topsw0(klon), solsw0(klon), sollw0(klon)
91        real, intent(out):: toplw0(klon)
92      real sollwdown(klon)      real sollwdown(klon)
93      !IM output 3D      !IM output 3D
94      DOUBLE PRECISION ZFSUP(KDLON, KLEV+1)      DOUBLE PRECISION ZFSUP(KDLON, KLEV+1)
# Line 99  contains Line 102  contains
102      DOUBLE PRECISION ZFLDN0(KDLON, KLEV+1)      DOUBLE PRECISION ZFLDN0(KDLON, KLEV+1)
103    
104      DOUBLE PRECISION zx_alpha1, zx_alpha2      DOUBLE PRECISION zx_alpha1, zx_alpha2
105        INTEGER k, kk, i, iof, nb_gr
     INTEGER k, kk, i, j, iof, nb_gr  
     EXTERNAL lw  
   
106      DOUBLE PRECISION PSCT      DOUBLE PRECISION PSCT
107    
108      DOUBLE PRECISION PALBD(kdlon, 2), PALBP(kdlon, 2)      DOUBLE PRECISION PALBD(kdlon, 2), PALBP(kdlon, 2)
# Line 140  contains Line 140  contains
140    
141      real topswad(klon), solswad(klon)      real topswad(klon), solswad(klon)
142      ! output: aerosol direct forcing at TOA and surface      ! output: aerosol direct forcing at TOA and surface
143        ! topswad---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol dir)
144        ! solswad---output-R- ray. solaire net absorbe a la surface (aerosol dir)
145    
146      real topswai(klon), solswai(klon)      real topswai(klon), solswai(klon)
147      ! output: aerosol indirect forcing atTOA and surface      ! output: aerosol indirect forcing atTOA and surface
148        ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind)
149        ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind)
150    
151      real tau_ae(klon, klev, 2), piz_ae(klon, klev, 2), cg_ae(klon, klev, 2)      real tau_ae(klon, klev, 2), piz_ae(klon, klev, 2), cg_ae(klon, klev, 2)
152      ! aerosol optical properties (see aeropt.F)      ! input-R- aerosol optical properties (calculated in aeropt.F)
153    
154      real cldtaupi(klon, klev)      real cldtaupi(klon, klev)
155      ! cloud optical thickness for pre-industrial aerosol concentrations      ! cloud optical thickness for pre-industrial aerosol concentrations
156      ! (i.e., with a smaller droplet concentrationand thus larger droplet radii)      ! (i.e. with a smaller droplet concentration and thus larger droplet radii)
157        ! -input-R- epaisseur optique des nuages dans le visible
158        ! calculated for pre-industrial (pi) aerosol concentrations,
159        ! i.e. with smaller droplet concentration, thus larger droplets,
160        ! thus generally cdltaupi cldtaupd it is needed for the
161        ! diagnostics of the aerosol indirect radiative forcing
162    
163      logical ok_ade, ok_aie      logical ok_ade, ok_aie
164      ! switches whether to use aerosol direct (indirect) effects or not      ! switches whether to use aerosol direct (indirect) effects or not
165        ! ok_ade---input-L- apply the Aerosol Direct Effect or not?
166        ! ok_aie---input-L- apply the Aerosol Indirect Effect or not?
167    
168      double precision tauae(kdlon, klev, 2) ! aer opt properties      double precision tauae(kdlon, klev, 2) ! aer opt properties
169      double precision pizae(kdlon, klev, 2)      double precision pizae(kdlon, klev, 2)
# Line 188  contains Line 199  contains
199      zdist = dist      zdist = dist
200      PSCT = solaire / zdist / zdist      PSCT = solaire / zdist / zdist
201    
202      loop_nbgr: DO j = 1, nb_gr      loop_iof: DO iof = 0, klon - kdlon, kdlon
        iof = kdlon * (j - 1)  
   
203         DO i = 1, kdlon         DO i = 1, kdlon
204            zfract(i) = fract(iof+i)            zfract(i) = fract(iof+i)
205            zrmu0(i) = rmu0(iof+i)            zrmu0(i) = rmu0(iof+i)
# Line 355  contains Line 364  contains
364               cool0(iof+i, k) = zcool0(i, k)/zznormcp               cool0(iof+i, k) = zcool0(i, k)/zznormcp
365            ENDDO            ENDDO
366         ENDDO         ENDDO
367      end DO loop_nbgr      end DO loop_iof
368    
369    END SUBROUTINE radlwsw    END SUBROUTINE radlwsw
370    

Legend:
Removed from v.53  
changed lines
  Added in v.71

  ViewVC Help
Powered by ViewVC 1.1.21