File indexing completed on 2024-12-17 18:33:59 UTC
view on githubraw file Latest commit 086a45f2 on 2024-08-16 18:53:56 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE DARWIN_LIGHT(
0007 O PAR,
0008 I midTime, bi, bj, iMin, iMax, jMin, jMax,
0009 I myTime, myIter, myThid )
0010
0011
0012
0013
0014 IMPLICIT NONE
0015 #include "SIZE.h"
0016 #include "GRID.h"
0017 #include "EEPARAMS.h"
0018 #include "PARAMS.h"
0019
0020 #include "FFIELDS.h"
0021 #include "PTRACERS_SIZE.h"
0022 #include "PTRACERS_FIELDS.h"
0023 #ifdef ALLOW_DARWIN
0024 #include "DARWIN_SIZE.h"
0025 #include "DARWIN_INDICES.h"
0026 #include "DARWIN_EXF_FIELDS.h"
0027 #include "DARWIN_PARAMS.h"
0028 #include "DARWIN_TRAITS.h"
0029 #include "DARWIN_FIELDS.h"
0030 #endif
0031
0032
0033
0034 _RL midTime
0035 _RL myTime
0036 INTEGER bi, bj, iMin, iMax, jMin, jMax, myIter, myThid
0037
0038
0039 _RL PAR(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr)
0040
0041
0042 #ifdef ALLOW_DARWIN
0043 #ifndef ALLOW_RADTRANS
0044
0045
0046
0047
0048 INTEGER i,j,k,jp
0049 _RL PARlat(1-OLy:sNy+OLy)
0050 _RL Chl(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0051 _RL PARF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0052 _RL atten(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0053
0054
0055 IF (DARWIN_haveSurfPAR) THEN
0056 DO j=jMin,jMax
0057 DO i=iMin,iMax
0058 PARF(i,j) = surfPAR(i,j,bi,bj)
0059 ENDDO
0060 ENDDO
0061 ELSEIF (DARWIN_useQsw) THEN
0062 DO j=jMin,jMax
0063 DO i=iMin,iMax
0064 PARF(i,j) = -parfrac*parconv*Qsw(i,j,bi,bj)*maskC(i,j,1,bi,bj)
0065 ENDDO
0066 ENDDO
0067 ELSE
0068 CALL DARWIN_INSOL(midTime, PARlat, bj, .FALSE.)
0069 DO j=jMin,jMax
0070 DO i=iMin,iMax
0071
0072 PARF(i,j) = PARlat(j)/.2174
0073 ENDDO
0074 ENDDO
0075 ENDIF
0076
0077 #ifdef ALLOW_DIAGNOSTICS
0078 IF (useDiagnostics .AND. myIter .GE.0) THEN
0079 CALL DIAGNOSTICS_FILL(PARF,'surfPAR ',1,1,2,bi,bj,myThid)
0080 ENDIF
0081 #endif
0082
1a51d9d680 Oliv*0083 IF (myiter .gt. -99 .AND. .NOT.DARWIN_useQsw) THEN
8fbfd1f382 Oliv*0084 DO j=jMin,jMax
0085 DO i=iMin,iMax
0086 PARF(i,j) = PARF(i,j) * (1.0 _d 0 - iceFrac(i,j,bi,bj))
0087 ENDDO
0088 ENDDO
0089 ENDIF
0090
0091 DO k=1,Nr
0092
0093 DO j=jMin,jMax
0094 DO i=iMin,iMax
0095 Chl(i,j) = 0.0 _d 0
0096 ENDDO
0097 ENDDO
0098 #ifdef DARWIN_ALLOW_GEIDER
0099 #ifdef DARWIN_ALLOW_CHLQUOTA
0100 DO jp=1,nPhoto
0101 DO j=jMin,jMax
0102 DO i=iMin,iMax
086a45f245 Oliv*0103 Chl(i,j) = Chl(i,j) + MAX(0 _d 0,
0104 & Ptracer(i,j,k,bi,bj,iChl+jp-1))
8fbfd1f382 Oliv*0105 ENDDO
0106 ENDDO
0107 ENDDO
0108 #else
0109 DO j=jMin,jMax
0110 DO i=iMin,iMax
0111 Chl(i,j) = ChlPrev(i,j,k,bi,bj)
0112 ENDDO
0113 ENDDO
0114 #endif
0115 #else
0116 DO jp=1,nPhoto
0117 DO j=jMin,jMax
0118 DO i=iMin,iMax
086a45f245 Oliv*0119 Chl(i,j) = Chl(i,j) + MAX(0 _d 0,
8fbfd1f382 Oliv*0120 & Ptracer(i,j,k,bi,bj,ic+jp-1)*R_ChlC(jp))
0121 ENDDO
0122 ENDDO
0123 ENDDO
0124 #endif
0125
0126 DO j=jMin,jMax
0127 DO i=iMin,iMax
0128
0129 atten(i,j) = (katten_w + katten_Chl*Chl(i,j))*DRF(k)
0130 #ifdef DARWIN_AVPAR
0131 PAR(i,j,k) = PARF(i,j)*(1.0 - EXP(-atten(i,j)))/atten(i,j)
0132 #else /* USE_MIDPAR */
0133 PAR(i,j,k) = PARF(i,j)*EXP(-0.5*atten(i,j))
0134 #endif
0135 PAR(i,j,k) = PAR(i,j,k)*maskC(i,j,k,bi,bj)
0136 ENDDO
0137 ENDDO
0138
0139 #ifdef ALLOW_DIAGNOSTICS
0140 IF (useDiagnostics .AND. myIter .GE.0) THEN
0141 CALL DIAGNOSTICS_FILL(PARF,'PARF ',k,1,2,bi,bj,myThid)
0142 CALL DIAGNOSTICS_FILL(atten,'atten ',k,1,2,bi,bj,myThid)
0143 ENDIF
0144 #endif
0145 DO j=jMin,jMax
0146 DO i=iMin,iMax
0147 PARF(i,j) = PARF(i,j)*EXP(-atten(i,j))
0148 ENDDO
0149 ENDDO
0150
0151
0152 ENDDO
0153
0154 #endif /* not ALLOW_RADTRANS */
0155 #endif /* ALLOW_DARWIN */
0156
0157 RETURN
0158 END