Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:39:14 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "DIC_OPTIONS.h"
daab022f42 Step*0002 
08536d17ba Step*0003 CBOP
                0004 C !ROUTINE: INSOL
                0005 
                0006 C !INTERFACE: ==========================================================
5625485478 Jean*0007       SUBROUTINE insol(Time,sfac,bi,bj,myThid)
08536d17ba Step*0008 
                0009 C !DESCRIPTION:
                0010 C find light as function of date and latitude
a8a6e9b6c6 Jean*0011 C based on paltridge and parson
08536d17ba Step*0012 
                0013 
                0014 C !USES: ===============================================================
daab022f42 Step*0015       IMPLICIT NONE
                0016 C     === Global variables ===
                0017 #include "SIZE.h"
                0018 #include "EEPARAMS.h"
                0019 #include "PARAMS.h"
                0020 #include "FFIELDS.h"
                0021 #include "GRID.h"
                0022 #include "DYNVARS.h"
2ef8966791 Davi*0023 #include "DIC_VARS.h"
08536d17ba Step*0024 
                0025 C !INPUT PARAMETERS: ===================================================
22ffeb40e4 Davi*0026 C Time                 :: current time
                0027        _RL Time
5625485478 Jean*0028        INTEGER bi,bj
                0029        INTEGER myThid
08536d17ba Step*0030 
                0031 C !OUPUT PARAMETERS: ===================================================
                0032        _RL sfac(1-OLy:sNy+OLy)
                0033 
df43453050 Davi*0034 #ifdef DIC_BIOTIC
                0035 
08536d17ba Step*0036 C !LOCAL VARIABLES: ====================================================
bbf97a7930 Step*0037        _RL  solar, albedo
daab022f42 Step*0038        _RL  dayfrac, yday, delta
                0039        _RL  lat, sun1, dayhrs
                0040        _RL  cosz, frac, fluxi
                0041        integer j
08536d17ba Step*0042 CEOP
                0043 
22ffeb40e4 Davi*0044       solar = 1360. _d 0   !solar constant
                0045       albedo= 0.6 _d 0     !planetary albedo
7e0ea1c751 Mart*0046 
a8a6e9b6c6 Jean*0047 C     Case where a 2-d output array is needed: for now, stop here.
                0048       IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
                0049        STOP 'ABNORMAL END: S/R INSOL: 2-D output not implemented'
7e0ea1c751 Mart*0050       ENDIF
                0051 
a8a6e9b6c6 Jean*0052 C find day (****NOTE for year starting in winter*****)
22ffeb40e4 Davi*0053         dayfrac=mod(Time,360. _d 0*86400. _d 0)
                0054      &                    /(360. _d 0*86400. _d 0)  !fraction of year
                0055         yday = 2. _d 0*PI*dayfrac                    !convert to radians
a8a6e9b6c6 Jean*0056         delta = (0.006918 _d 0
22ffeb40e4 Davi*0057      &         -(0.399912 _d 0*cos(yday))            !cosine zenith angle
                0058      &         +(0.070257 _d 0*sin(yday))            !(paltridge+platt)
                0059      &         -(0.006758 _d 0*cos(2. _d 0*yday))
                0060      &         +(0.000907 _d 0*sin(2. _d 0*yday))
                0061      &         -(0.002697 _d 0*cos(3. _d 0*yday))
                0062      &         +(0.001480 _d 0*sin(3. _d 0*yday)) )
                0063        DO j=1-OLy,sNy+OLy
a8a6e9b6c6 Jean*0064 C latitude in radians
22ffeb40e4 Davi*0065           lat=YC(1,j,1,bj)*deg2rad
7e0ea1c751 Mart*0066 C     latitute in radians, backed out from coriolis parameter
                0067 C     (makes latitude independent of grid)
a8a6e9b6c6 Jean*0068           IF ( usingCartesianGrid .OR. usingCylindricalGrid )
9496766f6a Mart*0069      &         lat = asin( fCori(1,j,1,bj)/(2. _d 0*omega) )
daab022f42 Step*0070           sun1 = -sin(delta)/cos(delta) * sin(lat)/cos(lat)
22ffeb40e4 Davi*0071           IF (sun1.LE.-0.999 _d 0) sun1=-0.999 _d 0
                0072           IF (sun1.GE. 0.999 _d 0) sun1= 0.999 _d 0
daab022f42 Step*0073           dayhrs = abs(acos(sun1))
                0074           cosz = ( sin(delta)*sin(lat)+              !average zenith angle
                0075      &            (cos(delta)*cos(lat)*sin(dayhrs)/dayhrs) )
22ffeb40e4 Davi*0076           IF (cosz.LE.5. _d -3) cosz= 5. _d -3
                0077           frac = dayhrs/PI                           !fraction of daylight in day
a8a6e9b6c6 Jean*0078 C daily average photosynthetically active solar radiation just below surface
22ffeb40e4 Davi*0079           fluxi = solar*(1. _d 0-albedo)*cosz*frac*parfrac
a8a6e9b6c6 Jean*0080 
                0081 C convert to sfac
22ffeb40e4 Davi*0082           sfac(j) = MAX(1. _d -5,fluxi)
                0083        ENDDO !j
df43453050 Davi*0084 
                0085 #endif /* DIC_BIOTIC */
                0086 
a8a6e9b6c6 Jean*0087       RETURN
                0088       END