/[lmdze]/trunk/phylmd/Interface_surf/alboc.f
ViewVC logotype

Annotation of /trunk/phylmd/Interface_surf/alboc.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 118 - (hide annotations)
Thu Dec 18 17:30:24 2014 UTC (9 years, 6 months ago) by guez
File size: 3789 byte(s)
In file grilles_gcm.nc, renamed variable phis to orog, deleted
variable presnivs.

Removed variable bug_ozone from module clesphys.

In procedure ozonecm, moved computation of sint and cost out of the
loops on horizontal position and vertical level. Inverted the order of
the two loops. We can then move all computations from slat to aprim
out of the loop on vertical levels. Created variable slat2, following
LMDZ. Moved the limitation of column-density of ozone in cell at 1e-12
from radlwsw to ozonecm, following LMDZ.

Removed unused arguments u, albsol, rh, cldfra, rneb, diafra, cldliq,
pmflxr, pmflxs, prfl, psfl of phytrac.

In procedure yamada4, for all the arrays, replaced the dimension klon
by ngrid. At the end of the procedure, for the computation of kmn,kn,
kq and q2, changed the upper limit of the loop index from klon to ngrid.

In radlwsw, for the calculation of pozon, removed the factor
paprs(iof+i, 1)/101325, as in LMDZ. In procedure sw, removed the
factor 101325.0/PPSOL(JL), as in LMDZ.

1 guez 81 SUBROUTINE alboc(rjour, rlat, albedo)
2 guez 117 ! From LMDZ4/libf/phylmd/albedo.F,v 1.2 2005/02/07 15:00:52
3 guez 81 USE dimens_m
4     USE dimphy
5     USE yomcst
6     USE orbite_m, ONLY: orbite
7     IMPLICIT NONE
8     ! ======================================================================
9     ! Auteur(s): Z.X. Li (LMD/CNRS) (adaptation du GCM du LMD)
10     ! Date: le 16 mars 1995
11     ! Objet: Calculer l'albedo sur l'ocean
12     ! Methode: Integrer numeriquement l'albedo pendant une journee
13    
14     ! Arguments;
15     ! rjour (in,R) : jour dans l'annee (a compter du 1 janvier)
16     ! rlat (in,R) : latitude en degre
17     ! albedo (out,R): albedo obtenu (de 0 a 1)
18     ! ======================================================================
19    
20     REAL fmagic ! un facteur magique pour regler l'albedo
21     ! cc PARAMETER (fmagic=0.7)
22     ! ccIM => a remplacer
23     ! PARAMETER (fmagic=1.32)
24     PARAMETER (fmagic=1.0)
25     ! PARAMETER (fmagic=0.7)
26     INTEGER npts ! il controle la precision de l'integration
27     PARAMETER (npts=120) ! 120 correspond a l'interval 6 minutes
28    
29     REAL rlat(klon), rjour, albedo(klon)
30     REAL zdist, zlonsun, zpi, zdeclin
31     REAL rmu, alb, srmu, salb, fauxo, aa, bb
32     INTEGER i, k
33     ! ccIM
34     LOGICAL ancien_albedo
35     PARAMETER (ancien_albedo=.FALSE.)
36     ! SAVE albedo
37    
38     IF (ancien_albedo) THEN
39    
40     zpi = 4.*atan(1.)
41    
42     ! Calculer la longitude vraie de l'orbite terrestre:
43     CALL orbite(rjour, zlonsun, zdist)
44    
45     ! Calculer la declinaison du soleil (qui varie entre + et - R_incl):
46     zdeclin = asin(sin(zlonsun*zpi/180.0)*sin(r_incl*zpi/180.0))
47    
48     DO i = 1, klon
49     aa = sin(rlat(i)*zpi/180.0)*sin(zdeclin)
50     bb = cos(rlat(i)*zpi/180.0)*cos(zdeclin)
51    
52     ! Midi local (angle du temps = 0.0):
53     rmu = aa + bb*cos(0.0)
54     rmu = max(0.0, rmu)
55     fauxo = (1.47-acos(rmu))/.15
56     alb = 0.03 + 0.630/(1.+fauxo*fauxo)
57 guez 3 srmu = rmu
58 guez 81 salb = alb*rmu
59    
60     ! Faire l'integration numerique de midi a minuit (le facteur 2
61     ! prend en compte l'autre moitie de la journee):
62 guez 3 DO k = 1, npts
63 guez 81 rmu = aa + bb*cos(float(k)/float(npts)*zpi)
64     rmu = max(0.0, rmu)
65     fauxo = (1.47-acos(rmu))/.15
66     alb = 0.03 + 0.630/(1.+fauxo*fauxo)
67     srmu = srmu + rmu*2.0
68     salb = salb + alb*rmu*2.0
69     END DO
70     IF (srmu/=0.0) THEN
71     albedo(i) = salb/srmu*fmagic
72 guez 3 ELSE ! nuit polaire (on peut prendre une valeur quelconque)
73 guez 81 albedo(i) = fmagic
74     END IF
75     END DO
76    
77     ! nouvel albedo
78    
79     ELSE
80    
81     zpi = 4.*atan(1.)
82    
83     ! Calculer la longitude vraie de l'orbite terrestre:
84     CALL orbite(rjour, zlonsun, zdist)
85    
86     ! Calculer la declinaison du soleil (qui varie entre + et - R_incl):
87     zdeclin = asin(sin(zlonsun*zpi/180.0)*sin(r_incl*zpi/180.0))
88    
89     DO i = 1, klon
90     aa = sin(rlat(i)*zpi/180.0)*sin(zdeclin)
91     bb = cos(rlat(i)*zpi/180.0)*cos(zdeclin)
92    
93     ! Midi local (angle du temps = 0.0):
94     rmu = aa + bb*cos(0.0)
95     rmu = max(0.0, rmu)
96     ! IM cf. PB alb = 0.058/(rmu + 0.30)
97     ! alb = 0.058/(rmu + 0.30) * 1.5
98     alb = 0.058/(rmu+0.30)*1.2
99     ! alb = 0.058/(rmu + 0.30) * 1.3
100 guez 3 srmu = rmu
101 guez 81 salb = alb*rmu
102    
103     ! Faire l'integration numerique de midi a minuit (le facteur 2
104     ! prend en compte l'autre moitie de la journee):
105 guez 3 DO k = 1, npts
106 guez 81 rmu = aa + bb*cos(float(k)/float(npts)*zpi)
107     rmu = max(0.0, rmu)
108     ! IM cf. PB alb = 0.058/(rmu + 0.30)
109     ! alb = 0.058/(rmu + 0.30) * 1.5
110     alb = 0.058/(rmu+0.30)*1.2
111     ! alb = 0.058/(rmu + 0.30) * 1.3
112     srmu = srmu + rmu*2.0
113     salb = salb + alb*rmu*2.0
114     END DO
115     IF (srmu/=0.0) THEN
116     albedo(i) = salb/srmu*fmagic
117 guez 3 ELSE ! nuit polaire (on peut prendre une valeur quelconque)
118 guez 81 albedo(i) = fmagic
119     END IF
120     END DO
121     END IF
122     RETURN
123     END SUBROUTINE alboc

  ViewVC Help
Powered by ViewVC 1.1.21