source: LMDZ.3.3/branches/rel-LF/libf/phylmd/albedo.F @ 460

Last change on this file since 460 was 433, checked in by lmdzadmin, 22 years ago

Convergence avec la version de Ionela dec 2002

YOMCST.? : suppression RI0 (IM)
albedo.F : facteur 1.2 sur le nouveau calcul (IM)
clesphys.h : rajout de différentes ctes (concentration des gaz) (IM)
clmain.F : separation des flux LW, SW (JLD)

remplace qsurf par yqsol (IM)

conf_phys.F90 : rajout de différentes ctes (gaz + orbite) (IM)
convect3.F : DPINV+SIGD*0.5*(EVAP(1)+EVAP(2)) (SBL)
cv3_routines.F:
cvparam3.h : compatibilite avec conema3 TEMPORAIRE (FH)
phyetat0.F : lecture de co2_ppm et solaire pour tests de coherence
phyredem.F : co2_ppm et solaire passé en common
physiq.F : separation flux LW, SW

rajout diagnostiques (slp, w500)
suppression iflag_con = 4
clwcon0=qcondc (FH)
position dU "ENDIF ! ok_cvl"

radlwsw.F : passage des concentrations gaz dans un common (IM)

PEMIS(i) = 1.0 (JLD pour cohérence ORCHIDEE)

stdlevvar.F90 :
suphec.F : suppression init. des ctes orbitales (IM)

nouvelles E/S (ini_hist..., write_hist...)

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.1 KB
Line 
1c
2c $Header$
3c
4      SUBROUTINE alboc(rjour,rlat,albedo)
5      IMPLICIT none
6c======================================================================
7c Auteur(s): Z.X. Li (LMD/CNRS) (adaptation du GCM du LMD)
8c Date: le 16 mars 1995
9c Objet: Calculer l'albedo sur l'ocean
10c Methode: Integrer numeriquement l'albedo pendant une journee
11c
12c Arguments;
13c rjour (in,R)  : jour dans l'annee (a compter du 1 janvier)
14c rlat (in,R)   : latitude en degre
15c albedo (out,R): albedo obtenu (de 0 a 1)
16c======================================================================
17#include "dimensions.h"
18#include "dimphy.h"
19#include "YOMCST.h"
20c
21      REAL fmagic ! un facteur magique pour regler l'albedo
22ccc      PARAMETER (fmagic=0.7)
23cccIM => a remplacer 
24        PARAMETER (fmagic=1.1)
25c       PARAMETER (fmagic=1.0)
26c       PARAMETER (fmagic=0.7)
27      INTEGER npts ! il controle la precision de l'integration
28      PARAMETER (npts=120) ! 120 correspond a l'interval 6 minutes
29c
30      REAL rlat(klon), rjour, albedo(klon)
31      REAL zdist, zlonsun, zpi, zdeclin
32      REAL rmu,alb, srmu, salb, fauxo, aa, bb
33      INTEGER i, k
34cccIM
35      LOGICAL ancien_albedo
36      PARAMETER(ancien_albedo=.FALSE.)
37c     SAVE albedo
38c
39      IF ( ancien_albedo ) THEN
40c
41      zpi = 4. * ATAN(1.)
42c
43c Calculer la longitude vraie de l'orbite terrestre:
44      CALL orbite(rjour,zlonsun,zdist)
45c
46c Calculer la declinaison du soleil (qui varie entre + et - R_incl):
47      zdeclin = ASIN(SIN(zlonsun*zpi/180.0)*SIN(R_incl*zpi/180.0))
48c
49      DO 999 i=1,klon
50      aa = SIN(rlat(i)*zpi/180.0) * SIN(zdeclin)
51      bb = COS(rlat(i)*zpi/180.0) * COS(zdeclin)
52c
53c Midi local (angle du temps = 0.0):
54      rmu = aa + bb * COS(0.0)
55      rmu = MAX(0.0, rmu)
56      fauxo = (1.47-ACOS(rmu))/.15
57      alb = 0.03+0.630/(1.+fauxo*fauxo)
58      srmu = rmu
59      salb = alb * rmu
60c
61c Faire l'integration numerique de midi a minuit (le facteur 2
62c prend en compte l'autre moitie de la journee):
63      DO k = 1, npts
64         rmu = aa + bb * COS(FLOAT(k)/FLOAT(npts)*zpi)
65         rmu = MAX(0.0, rmu)
66         fauxo = (1.47-ACOS(rmu))/.15
67         alb = 0.03+0.630/(1.+fauxo*fauxo)
68         srmu = srmu + rmu * 2.0
69         salb = salb + alb*rmu * 2.0
70      ENDDO
71      IF (srmu .NE. 0.0) THEN
72         albedo(i) = salb / srmu * fmagic
73      ELSE ! nuit polaire (on peut prendre une valeur quelconque)
74         albedo(i) = fmagic
75      ENDIF
76  999 CONTINUE
77c
78c nouvel albedo
79c
80      ELSE
81c
82      zpi = 4. * ATAN(1.)
83c
84c Calculer la longitude vraie de l'orbite terrestre:
85      CALL orbite(rjour,zlonsun,zdist)
86c
87c Calculer la declinaison du soleil (qui varie entre + et - R_incl):
88      zdeclin = ASIN(SIN(zlonsun*zpi/180.0)*SIN(R_incl*zpi/180.0))
89c
90      DO 1999 i=1,klon
91      aa = SIN(rlat(i)*zpi/180.0) * SIN(zdeclin)
92      bb = COS(rlat(i)*zpi/180.0) * COS(zdeclin)
93c
94c Midi local (angle du temps = 0.0):
95      rmu = aa + bb * COS(0.0)
96      rmu = MAX(0.0, rmu)
97cIM cf. PB  alb = 0.058/(rmu + 0.30)
98c     alb = 0.058/(rmu + 0.30) * 1.5
99      alb = 0.058/(rmu + 0.30) * 1.2
100      srmu = rmu
101      salb = alb * rmu
102c
103c Faire l'integration numerique de midi a minuit (le facteur 2
104c prend en compte l'autre moitie de la journee):
105      DO k = 1, npts
106         rmu = aa + bb * COS(FLOAT(k)/FLOAT(npts)*zpi)
107         rmu = MAX(0.0, rmu)
108cIM cf. PB      alb = 0.058/(rmu + 0.30)
109c        alb = 0.058/(rmu + 0.30) * 1.5
110         alb = 0.058/(rmu + 0.30) * 1.2
111         srmu = srmu + rmu * 2.0
112         salb = salb + alb*rmu * 2.0
113      ENDDO
114      IF (srmu .NE. 0.0) THEN
115         albedo(i) = salb / srmu * fmagic
116      ELSE ! nuit polaire (on peut prendre une valeur quelconque)
117         albedo(i) = fmagic
118      ENDIF
1191999  CONTINUE
120      ENDIF
121      RETURN
122      END
123c=====================================================================
124      SUBROUTINE alboc_cd(rmu0,albedo)
125      IMPLICIT none
126c======================================================================
127c Auteur(s): Z.X. Li (LMD/CNRS)
128c date: 19940624
129c Calculer l'albedo sur l'ocean en fonction de l'angle zenithal moyen
130c Formule due a Larson and Barkstrom (1977) Proc. of the symposium
131C on radiation in the atmosphere, 19-28 August 1976, science Press,
132C 1977 pp 451-453, ou These de 3eme cycle de Sylvie Joussaume.
133c
134c Arguments
135c rmu0    (in): cosinus de l'angle solaire zenithal
136c albedo (out): albedo de surface de l'ocean
137c======================================================================
138#include "dimensions.h"
139#include "dimphy.h"
140      REAL rmu0(klon), albedo(klon)
141c
142      REAL fmagic ! un facteur magique pour regler l'albedo
143ccc      PARAMETER (fmagic=0.7)
144cccIM => a remplacer 
145        PARAMETER (fmagic=1.1)
146c       PARAMETER (fmagic=1.0)
147c       PARAMETER (fmagic=0.7)
148c
149      REAL fauxo
150      INTEGER i
151cccIM
152      LOGICAL ancien_albedo
153      PARAMETER(ancien_albedo=.FALSE.)
154c     SAVE albedo
155c
156      IF ( ancien_albedo ) THEN
157c
158      DO i = 1, klon
159c
160         rmu0(i) = MAX(rmu0(i),0.0)
161c
162         fauxo = ( 1.47 - ACOS( rmu0(i) ) )/0.15
163         albedo(i) = fmagic*( .03 + .630/( 1. + fauxo*fauxo))
164         albedo(i) = MAX(MIN(albedo(i),0.60),0.04)
165      ENDDO
166c
167c nouvel albedo
168c
169      ELSE
170c
171      DO i = 1, klon
172         rmu0(i) = MAX(rmu0(i),0.0)
173cIM cf. PB      albedo(i) = 0.058/(rmu0(i) + 0.30)
174c        albedo(i) = 0.058/(rmu0(i) + 0.30) * 1.5
175         albedo(i) = 0.058/(rmu0(i) + 0.30) * 1.2
176         albedo(i) = MAX(MIN(albedo(i),0.60),0.04)
177      ENDDO
178c
179      ENDIF
180c
181      RETURN
182      END
183c========================================================================
184      SUBROUTINE albsno(veget, agesno, alb_neig)
185      IMPLICIT none
186c
187#include "dimensions.h"
188#include "dimphy.h"
189      INTEGER nvm
190      PARAMETER (nvm=8)
191      REAL veget(klon,nvm)
192      REAL alb_neig(klon)
193      REAL agesno(klon)
194c
195      INTEGER i, nv
196c
197      REAL init(nvm), decay(nvm), as
198      SAVE init, decay
199      DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./
200      DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./
201c
202      DO i = 1, klon
203         alb_neig(i) = 0.0
204      ENDDO
205      DO nv = 1, nvm
206         DO i = 1, klon
207            as = init(nv)+decay(nv)*EXP(-agesno(i)/5.)
208            alb_neig(i) = alb_neig(i) + veget(i,nv)*as
209         ENDDO
210      ENDDO
211c
212      RETURN
213      END
Note: See TracBrowser for help on using the repository browser.