1 |
jahn |
1.1 |
C $Header$ |
2 |
|
|
C $Name$ |
3 |
|
|
|
4 |
|
|
#include "DARWIN_OPTIONS.h" |
5 |
|
|
|
6 |
|
|
CBOP |
7 |
|
|
C !ROUTINE: DARWIN_SOLZ360 |
8 |
|
|
|
9 |
|
|
C !INTERFACE: ====================================================== |
10 |
|
|
SUBROUTINE darwin_solz360(Time,ylat, |
11 |
|
|
O solz) |
12 |
|
|
|
13 |
|
|
C !DESCRIPTION: |
14 |
|
|
C Procedure name: DARWIN_SOLZ360 |
15 |
|
|
C Function: find solar zenith angle for model calendar |
16 |
|
|
C (360 day year) |
17 |
|
|
c based on paltridge and parson |
18 |
|
|
C cos(solz) = average cos(sol.zenith) during daylight |
19 |
|
|
C Comments: swd, April 1998 |
20 |
|
|
C following code by mick |
21 |
|
|
C |
22 |
|
|
C !USES: =========================================================== |
23 |
|
|
IMPLICIT NONE |
24 |
|
|
|
25 |
|
|
C !INPUT PARAMETERS: =============================================== |
26 |
|
|
C time :: model time in seconds since Jan 1 (of start year) |
27 |
|
|
C ylat :: latitude in degrees |
28 |
|
|
_RL time, ylat |
29 |
|
|
c INTEGER myThid |
30 |
|
|
|
31 |
|
|
C !OUTPUT PARAMETERS: ============================================== |
32 |
|
|
C delta :: solar zenith angle in degrees |
33 |
|
|
_RL solz |
34 |
|
|
|
35 |
|
|
C !FUNCTIONS: ====================================================== |
36 |
|
|
|
37 |
|
|
C !LOCAL VARIABLES: ================================================ |
38 |
|
|
_RL dayfrac, yday, delta, lat, sun1, dayhrs, cosz |
39 |
|
|
CEOP |
40 |
|
|
|
41 |
|
|
c find day (****NOTE for year starting in 1 Jan *****) |
42 |
|
|
dayfrac = mod(Time, 360. _d 0*86400. _d 0) |
43 |
|
|
& /(360. _d 0*86400. _d 0) !fraction of year |
44 |
|
|
yday = 2.0 _d 0*3.1416 _d 0*dayfrac !convert to radians |
45 |
|
|
delta = (0.006918 _d 0- (0.399912 _d 0*cos(yday)) !zenith angle |
46 |
|
|
& +(0.070257 _d 0*sin(yday)) !(paltridge+platt) |
47 |
|
|
& -(0.006758 _d 0*cos(2.0 _d 0*yday)) |
48 |
|
|
& +(0.000907 _d 0*sin(2.0 _d 0*yday)) |
49 |
|
|
& -(0.002697 _d 0*cos(3.0 _d 0*yday)) |
50 |
|
|
& +(0.001480 _d 0*sin(3.0 _d 0*yday)) ) |
51 |
|
|
|
52 |
|
|
lat = ylat/180. _d 0*3.1416 _d 0 |
53 |
|
|
sun1 = -sin(delta)/cos(delta) * sin(lat)/cos(lat) |
54 |
|
|
if (sun1.le.-0.999 _d 0) sun1=-0.999 _d 0 |
55 |
|
|
if (sun1.ge. 0.999 _d 0) sun1= 0.999 _d 0 |
56 |
|
|
dayhrs = abs(acos(sun1)) |
57 |
|
|
cosz = ( sin(delta)*sin(lat)+ !average zenith angle |
58 |
|
|
& (cos(delta)*cos(lat)*sin(dayhrs)/dayhrs) ) |
59 |
|
|
if (cosz.le.0.005 _d 0) cosz=0.005 _d 0 |
60 |
|
|
if (cosz.ge. 0.999 _d 0) cosz= 0.999 _d 0 |
61 |
|
|
solz = acos(cosz)*180. _d 0/3.1416 _d 0 |
62 |
|
|
c frac = dayhrs/3.1416 _d 0 !fraction of daylight in day |
63 |
|
|
cc daily average photosynthetically active solar radiation just below surface |
64 |
|
|
c fluxi = solar*(1.0 _d 0-albedo)*cosz*frac*par |
65 |
|
|
cc |
66 |
|
|
cc convert to sfac |
67 |
|
|
c if (fluxi.gt.0.0 _d 0) sfac(j)=fluxi |
68 |
|
|
cc very large for polar night |
69 |
|
|
c if (fluxi.lt.0.00001 _d 0) sfac(j)=0.00001 _d 0 |
70 |
|
|
|
71 |
|
|
return |
72 |
|
|
end |
73 |
|
|
c |
74 |
|
|
C========================================================================== |