#include "DIC_OPTIONS.h"
#include "GCHEM_OPTIONS.h"
CBOP
C !ROUTINE: INSOL
C !INTERFACE: ==========================================================
SUBROUTINE INSOL(Time,sfac,bj)
C !DESCRIPTION:
C find light as function of date and latitude
c based on paltridge and parson
C !USES: ===============================================================
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "FFIELDS.h"
#include "GRID.h"
#include "DYNVARS.h"
C !INPUT PARAMETERS: ===================================================
C time :: current time
_RL time
integer bj
C !OUPUT PARAMETERS: ===================================================
_RL sfac(1-OLy:sNy+OLy)
C !LOCAL VARIABLES: ====================================================
_RL solar, albedo, par
_RL dayfrac, yday, delta
_RL lat, sun1, dayhrs
_RL cosz, frac, fluxi
integer j
CEOP
c
solar = 1360. !solar constant
albedo = 0.6 !planetary albedo
par = 0.4 !photosynthetically reactive frac
c
c find day (****NOTE for year starting in winter*****)
dayfrac=mod(Time,360. _d 0 *86400. _d 0)
& /(360. _d 0 *86400. _d 0) !fraction of year
yday = 2.0*3.1416*dayfrac !convert to radians
delta = (0.006918 - (0.399912*cos(yday)) !cosine zenith angle
& +(0.070257*sin(yday)) !(paltridge+platt)
& -(0.006758*cos(2.0*yday))
& +(0.000907*sin(2.0*yday))
& -(0.002697*cos(3.0*yday))
& +(0.001480*sin(3.0*yday)) )
do j=1-OLy,sNy+OLy
c latitude in radians
lat=YC(1,j,1,bj)/180.d0*3.1416
sun1 = -sin(delta)/cos(delta) * sin(lat)/cos(lat)
if (sun1.le.-0.999) sun1=-0.999
if (sun1.ge. 0.999) sun1= 0.999
dayhrs = abs(acos(sun1))
cosz = ( sin(delta)*sin(lat)+ !average zenith angle
& (cos(delta)*cos(lat)*sin(dayhrs)/dayhrs) )
if (cosz.le.0.005) cosz=0.005
frac = dayhrs/3.1416 !fraction of daylight in day
c daily average photosynthetically active solar radiation just below surface
fluxi = solar*(1.0-albedo)*cosz*frac*par
c
c convert to sfac
if (fluxi.gt.0.0) sfac(j)=fluxi
c very large for polar night
if (fluxi.lt.0.00001) sfac(j)=0.00001
enddo !j
c
return
end
c
C==========================================================================