/[MITgcm]/MITgcm/pkg/exf/exf_zenithangle_table.F
ViewVC logotype

Contents of /MITgcm/pkg/exf/exf_zenithangle_table.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Tue Apr 13 16:24:50 2010 UTC (14 years, 1 month ago) by gforget
Branch: MAIN
Changes since 1.1: +21 -21 lines
removing tabs and unbalance single quote in comments.

1 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_zenithangle_table.F,v 1.1 2010/04/13 06:57:33 gforget Exp $
2 C $Name: $
3
4 #include "EXF_OPTIONS.h"
5
6 SUBROUTINE EXF_ZENITHANGLE_TABLE(myThid)
7
8 C ==================================================================
9 C SUBROUTINE exf_zenithangle_table
10 C ==================================================================
11 C
12 C o compute table of daily mean albedo that will be used in exf_zenithangle.F
13 C
14 C ==================================================================
15 C SUBROUTINE exf_zenithangle_table
16 C ==================================================================
17
18 IMPLICIT NONE
19
20 C == global variables ==
21
22 #include "EEPARAMS.h"
23 #include "SIZE.h"
24 #include "PARAMS.h"
25 #include "DYNVARS.h"
26 #include "GRID.h"
27
28 #include "EXF_PARAM.h"
29 #include "EXF_FIELDS.h"
30 #include "EXF_CONSTANTS.h"
31
32 C == routine arguments ==
33
34 INTEGER myThid
35
36 #ifdef ALLOW_DOWNWARD_RADIATION
37 #ifdef ALLOW_ZENITHANGLE
38 C == local variables ==
39
40 INTEGER bi,bj
41 INTEGER i,j
42
43 _RL FSOL, dD0dDsq, SOLC, tmpINT1, tmpINT2
44 _RL LLLAT, TYEAR, TDAY, ALPHA, CZEN, ALBSEA1
45 _RL DECLI, ZS, ZC, SJ, CJ, TMPA, TMPB
46 integer iLat,iTyear,iTday
47
48 C == end of interface ==
49
50
51 c solar constant
52 c --------------
53 SOLC = 1368. _d 0
54
55 DO bj = myByLo(myThid),myByHi(myThid)
56 DO bi = myBxLo(myThid),myBxHi(myThid)
57 DO iLat=1,181
58 DO iTyear=1,366
59
60 LLLAT=(iLat-91. _d 0)
61 TYEAR=(iTyear-1. _d 0)/365. _d 0
62
63 c determine solar declination
64 c ---------------------------
65 c (formula from Hartmann textbook, after Spencer 1971)
66 ALPHA= 2. _d 0*PI*TYEAR
67 DECLI = 0.006918 _d 0
68 & - 0.399912 _d 0 * cos ( 1. _d 0 * ALPHA )
69 & + 0.070257 _d 0 * sin ( 1. _d 0 * ALPHA )
70 & - 0.006758 _d 0 * cos ( 2. _d 0 * ALPHA )
71 & + 0.000907 _d 0 * sin ( 2. _d 0 * ALPHA )
72 & - 0.002697 _d 0 * cos ( 3. _d 0 * ALPHA )
73 & + 0.001480 _d 0 * sin ( 3. _d 0 * ALPHA )
74
75 ZC = COS(DECLI)
76 ZS = SIN(DECLI)
77 SJ = SIN(LLLAT * deg2rad)
78 CJ = COS(LLLAT * deg2rad)
79 TMPA = SJ*ZS
80 TMPB = CJ*ZC
81
82 c compute squared earth-sun distance ratio
83 c ----------------------------------------
84 c (formula from Hartmann textbook, after Spencer 1971)
85 dD0dDsq = 1.000110 _d 0
86 & + 0.034221 _d 0 * cos ( 1. _d 0 * ALPHA )
87 & + 0.001280 _d 0 * sin ( 1. _d 0 * ALPHA )
88 & + 0.000719 _d 0 * cos ( 2. _d 0 * ALPHA )
89 & + 0.000077 _d 0 * sin ( 2. _d 0 * ALPHA )
90
91 tmpINT1=0. _d 0
92 tmpINT2=0. _d 0
93 DO iTday=1,100
94 TDAY=iTday/100. _d 0
95 c determine DAILY VARYING cos of solar zenith angle CZEN
96 c ------------------------------------------------------
97 CZEN = TMPA + TMPB *
98 & cos( 2. _d 0 *PI* TDAY + 0. _d 0 * deg2rad )
99 if ( CZEN .LE.0 ) CZEN = 0. _d 0
100 c compute incoming flux at the top of the atm.:
101 c ---------------------------------------------
102 FSOL = SOLC * dD0dDsq * MAX( 0. _d 0, CZEN )
103 c determine direct ocean albedo
104 c -----------------------------
105 c (formula from Briegleb, Minnis, et al 1986)
106 ALBSEA1 = ( ( 2.6 _d 0 / (CZEN**(1.7 _d 0) + 0.065 _d 0) )
107 & + ( 15. _d 0 * (CZEN-0.1 _d 0) * (CZEN-0.5 _d 0)
108 & * (CZEN-1.0 _d 0) ) ) / 100.0 _d 0
109 c accumulate averages
110 c -------------------
111 tmpINT1=tmpINT1+FSOL*ALBSEA1/100. _d 0
112 tmpINT2=tmpINT2+FSOL/100. _d 0
113 ENDDO
114 c compute weighted average of albedo
115 c ----------------------------------
116 if ( 0.5 _d 0 * tmpINT2 .GT. tmpINT1) then
117 zen_albedo_table(iTyear,iLat,bi,bj)=tmpINT1/tmpINT2
118 else
119 zen_albedo_table(iTyear,iLat,bi,bj)=0.5 _d 0
120 endif
121
122 ENDDO
123 ENDDO
124 ENDDO
125 ENDDO
126
127
128
129 c determine interpolation coefficient for each grid point
130 DO bj = myByLo(myThid),myByHi(myThid)
131 DO bi = myBxLo(myThid),myBxHi(myThid)
132 DO j = 1,sNy
133 DO i = 1,sNx
134 LLLAT=yC(i,j,bi,bj)+91. _d 0
135 c ensure that it is in valid range
136 LLLAT=max(LLLAT, 1._d 0)
137 LLLAT=min(LLLAT, 181._d 0)
138 c store
139 zen_albedo_pointer(i,j,bi,bj)=LLLAT
140 ENDDO
141 ENDDO
142 ENDDO
143 ENDDO
144
145 #endif /* ALLOW_ZENITHANGLE */
146 #endif /* ALLOW_DOWNWARD_RADIATION */
147
148 RETURN
149 END

  ViewVC Help
Powered by ViewVC 1.1.22