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

Last change on this file since 224 was 79, checked in by (none), 25 years ago

This commit was manufactured by cvs2svn to create branch 'rel-LF'.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1      SUBROUTINE alboc(rjour,rlat,albedo)
2      IMPLICIT none
3c======================================================================
4c Auteur(s): Z.X. Li (LMD/CNRS) (adaptation du GCM du LMD)
5c Date: le 16 mars 1995
6c Objet: Calculer l'albedo sur l'ocean
7c Methode: Integrer numeriquement l'albedo pendant une journee
8c
9c Arguments;
10c rjour (in,R)  : jour dans l'annee (a compter du 1 janvier)
11c rlat (in,R)   : latitude en degre
12c albedo (out,R): albedo obtenu (de 0 a 1)
13c======================================================================
14#include "dimensions.h"
15#include "dimphy.h"
16#include "YOMCST.h"
17c
18      REAL fmagic ! un facteur magique pour regler l'albedo
19ccc      PARAMETER (fmagic=0.7)
20      PARAMETER (fmagic=1.1)
21      INTEGER npts ! il controle la precision de l'integration
22      PARAMETER (npts=120) ! 120 correspond a l'interval 6 minutes
23c
24      REAL rlat(klon), rjour, albedo(klon)
25      REAL zdist, zlonsun, zpi, zdeclin
26      REAL rmu,alb, srmu, salb, fauxo, aa, bb
27      INTEGER i, k
28c
29      zpi = 4. * ATAN(1.)
30c
31c Calculer la longitude vraie de l'orbite terrestre:
32      CALL orbite(rjour,zlonsun,zdist)
33c
34c Calculer la declinaison du soleil (qui varie entre + et - R_incl):
35      zdeclin = ASIN(SIN(zlonsun*zpi/180.0)*SIN(R_incl*zpi/180.0))
36c
37      DO 999 i=1,klon
38      aa = SIN(rlat(i)*zpi/180.0) * SIN(zdeclin)
39      bb = COS(rlat(i)*zpi/180.0) * COS(zdeclin)
40c
41c Midi local (angle du temps = 0.0):
42      rmu = aa + bb * COS(0.0)
43      rmu = MAX(0.0, rmu)
44      fauxo = (1.47-ACOS(rmu))/.15
45      alb = 0.03+0.630/(1.+fauxo*fauxo)
46      srmu = rmu
47      salb = alb * rmu
48c
49c Faire l'integration numerique de midi a minuit (le facteur 2
50c prend en compte l'autre moitie de la journee):
51      DO k = 1, npts
52         rmu = aa + bb * COS(FLOAT(k)/FLOAT(npts)*zpi)
53         rmu = MAX(0.0, rmu)
54         fauxo = (1.47-ACOS(rmu))/.15
55         alb = 0.03+0.630/(1.+fauxo*fauxo)
56         srmu = srmu + rmu * 2.0
57         salb = salb + alb*rmu * 2.0
58      ENDDO
59      IF (srmu .NE. 0.0) THEN
60         albedo(i) = salb / srmu * fmagic
61      ELSE ! nuit polaire (on peut prendre une valeur quelconque)
62         albedo(i) = fmagic
63      ENDIF
64  999 CONTINUE
65      RETURN
66      END
67c=====================================================================
68      SUBROUTINE alboc_cd(rmu0,albedo)
69      IMPLICIT none
70c======================================================================
71c Auteur(s): Z.X. Li (LMD/CNRS)
72c date: 19940624
73c Calculer l'albedo sur l'ocean en fonction de l'angle zenithal moyen
74c Formule due a Larson and Barkstrom (1977) Proc. of the symposium
75C on radiation in the atmosphere, 19-28 August 1976, science Press,
76C 1977 pp 451-453, ou These de 3eme cycle de Sylvie Joussaume.
77c
78c Arguments
79c rmu0    (in): cosinus de l'angle solaire zenithal
80c albedo (out): albedo de surface de l'ocean
81c======================================================================
82#include "dimensions.h"
83#include "dimphy.h"
84      REAL rmu0(klon), albedo(klon)
85c
86      REAL fmagic ! un facteur magique pour regler l'albedo
87ccc      PARAMETER (fmagic=0.7)
88      PARAMETER (fmagic=1.1)
89c
90      REAL fauxo
91      INTEGER i
92c
93      DO i = 1, klon
94         fauxo = ( 1.47 - ACOS( rmu0(i) ) )/0.15
95         albedo(i) = fmagic*( .03 + .630/( 1. + fauxo*fauxo))
96         albedo(i) = MAX(MIN(albedo(i),0.60),0.04)
97      ENDDO
98c
99      RETURN
100      END
101c========================================================================
102      SUBROUTINE albsno(veget, agesno, alb_neig)
103      IMPLICIT none
104c
105#include "dimensions.h"
106#include "dimphy.h"
107      INTEGER nvm
108      PARAMETER (nvm=8)
109      REAL veget(klon,nvm)
110      REAL alb_neig(klon)
111      REAL agesno(klon)
112c
113      INTEGER i, nv
114c
115      REAL init(nvm), decay(nvm), as
116      SAVE init, decay
117      DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./
118      DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./
119c
120      DO i = 1, klon
121         alb_neig(i) = 0.0
122      ENDDO
123      DO nv = 1, nvm
124         DO i = 1, klon
125            as = init(nv)+decay(nv)*EXP(-agesno(i)/5.)
126            alb_neig(i) = alb_neig(i) + veget(i,nv)*as
127         ENDDO
128      ENDDO
129c
130      RETURN
131      END
Note: See TracBrowser for help on using the repository browser.