Calculate the short-wave radiation (Source File: short_wave_radiation.F90)


INTERFACE:

    subroutine short_wave_radiation(jul,secs,dlon,dlat,cloud,swr)
DESCRIPTION:

This subroutine calculates the short-wave net radiation based on latitude, longitude, time, fractional cloud cover and albedo. The albedo monthly values from Payne (1972) are given here as means of the values between at 30$ ^{\circ}$ N and 40$ ^{\circ}$ N for the Atlantic Ocean (hence the same latitudinal band of the Mediterranean Sea). The basic formula for the short-wave radiation at the surface, $ Q_s$, has been taken from Rosati and Miyakoda (1988), who adapted the work of Reed (1977) and Simpson and Paulson (1999):

$\displaystyle Q_s=Q_{tot} (1-0.62 C + 0.0019 \beta) (1-\alpha),$ (230)

with the total radiation reaching the surface under clear skies, $ Q_{tot}$, the fractional cloud cover, $ C$, the solar noon altitude, $ \beta$, and the albedo, $ \alpha$. This piece of code has been taken the MOM-I (Modular Ocean Model) version at the INGV (Istituto Nazionale di Geofisica e Vulcanologia, see http://www.bo.ingv.it/).


USES:

    use time, only: calendar_date
    IMPLICIT NONE
INPUT PARAMETERS:
    integer, intent(in)                 :: jul,secs
    REALTYPE, intent(in)                :: dlon,dlat
    REALTYPE, intent(in)                :: cloud
OUTPUT PARAMETERS:
    REALTYPE, optional, intent(out)     :: swr
REVISION HISTORY:
    Original author(s): Karsten Bolding & Hans Burchard
    $Log: short_wave_radiation.F90,v $
    Revision 1.2  2010-09-17 12:53:45  jorn
    extensive code clean-up to ensure proper initialization and clean-up of all variables
    Revision 1.1  2007-09-25 10:06:10  kbk
    modularized the airsea module - added Fairall method
LOCAL VARIABLES:
    REALTYPE, parameter       :: pi=3.14159265358979323846
    REALTYPE, parameter       :: deg2rad=pi/180.
    REALTYPE, parameter       :: rad2deg=180./pi
 
    REALTYPE, parameter       :: solar=1350.
    REALTYPE, parameter       :: eclips=23.439*deg2rad
    REALTYPE, parameter       :: tau=0.7
    REALTYPE, parameter       :: aozone=0.09
 
    REALTYPE                  :: th0,th02,th03,sundec
    REALTYPE                  :: thsun,coszen,zen,dzen,sunbet
    REALTYPE                  :: qatten,qzer,qdir,qdiff,qtot,qshort
    REALTYPE                  :: albedo
    integer                   :: jab
    integer                   :: yy,mm,dd
    REALTYPE                  :: yrdays,days,hour,tjul
    REALTYPE                  :: rlon,rlat
 
    integer, parameter        :: yday(12) = &
                  (/ 0,31,59,90,120,151,181,212,243,273,304,334 /)
 
    REALTYPE, parameter       :: alb1(20) = &
                  (/.719,.656,.603,.480,.385,.300,.250,.193,.164, &
                    .131,.103,.084,.071,.061,.054,.039,.036,.032,.031,.030 /)
 
    REALTYPE, parameter       :: za(20) = &
                  (/90.,88.,86.,84.,82.,80.,78.,76.,74.,70.,  &
                    66.,62.,58.,54.,50.,40.,30.,20.,10.,0.0 /)
 
    REALTYPE                  :: dza(19)
    data           dza/8*2.0, 6*4.0, 5*10.0/

Karsten Bolding 2012-01-24