File indexing completed on 2024-12-17 18:37:24 UTC
view on githubraw file Latest commit 87dd4f7d on 2024-01-17 18:17:24 UTC
87dd4f7d5f Oliv*0001 #include "OASIM_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE OASIM_FORCING( dodiags, myTime, myIter, myThid )
0009
0010
0011
0012
0013
0014 IMPLICIT NONE
0015 #include "SIZE.h"
0016 #include "EEPARAMS.h"
0017 #include "PARAMS.h"
0018 #include "OASIM_SIZE.h"
0019 #include "OASIM_PARAMS.h"
0020 #include "OASIM_INTERNAL.h"
0021 #include "OASIM_FIELDS.h"
0022 #ifdef ALLOW_EXF
0023 #include "OASIM_EXF_PARAMS.h"
0024 #endif
0025
0026
0027
0028
0029
0030 LOGICAL dodiags
0031 _RL myTime
0032 INTEGER myIter, myThid
0033
0034
0035 #ifdef ALLOW_OASIM
0036
0037
0038 LOGICAL DIAGNOSTICS_IS_ON
0039 EXTERNAL DIAGNOSTICS_IS_ON
0040
0041
0042 CHARACTER*8 diagName
0043 _RL daycor, rday, secs, ylen
0044 INTEGER year, imon, iday, ss, lp, wd, currentdate(4)
0045 INTEGER yday, yymmdd, difftime(4), yearstart(4)
0046 INTEGER i, j, l, bi, bj
0047 _RL sPARF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0048
0049
0050 CALL OASIM_CALC_SOLZ( myTime, myIter, myThid )
0051
0052
0053 #ifdef ALLOW_CAL
0054 CALL cal_GetDate( myiter, mytime, currentdate, mythid )
0055 CALL cal_convDate( currentdate,year,imon,iday,ss,lp,wd,mythid )
0056
0057 yymmdd = year*10000 + 101
0058 CALL cal_fullDate( yymmdd, 0, yearstart, mythid )
0059 CALL cal_timePassed( yearstart, currentdate, difftime, mythid )
0060 CALL cal_ToSeconds (difftime,secs,myThid)
0061 rday = (secs+0.5 _d 0*deltaT)/86400.0 _d 0 + 1.0 _d 0
0062 ylen = 365.0 _d 0
0063
0064 #else
0065
0066 year = FLOOR(myTime/31104000. _d 0)
0067 secs = (myTime - 31104000. _d 0*year)
0068 rday = secs/86400. _d 0 + 1.0 _d 0
0069 ylen = 360.0 _d 0
0070 #endif
0071 daycor = (1.0 _d 0 + 1.67 _d -2*cos(pi2*(rday-3.0 _d 0)/ylen))**2
0072
0073
0074 CALL OASIM_CALC_ABOVE( daycor, dodiags, myThid )
0075
0076
0077 CALL OASIM_CALC_BELOW( dodiags, myThid )
0078
0079 #ifdef ALLOW_DIAGNOSTICS
0080 IF (useDiagnostics .AND. dodiags) THEN
0081 DO l=1,nlt
0082 WRITE(diagName,'(A5,I3.3)')'Edabv',l
0083 CALL DIAGNOSTICS_FILL(OASIM_Edabove(1-OLx,1-OLy,1,1,l),
0084 & diagName,0,1,0,1,1,myThid)
0085 WRITE(diagName,'(A5,I3.3)')'Esabv',l
0086 CALL DIAGNOSTICS_FILL(OASIM_Esabove(1-OLx,1-OLy,1,1,l),
0087 & diagName,0,1,0,1,1,myThid)
0088 WRITE(diagName,'(A5,I3.3)')'Edblw',l
0089 CALL DIAGNOSTICS_FILL(OASIM_Edbelow(1-OLx,1-OLy,1,1,l),
0090 & diagName,0,1,0,1,1,myThid)
0091 WRITE(diagName,'(A5,I3.3)')'Esblw',l
0092 CALL DIAGNOSTICS_FILL(OASIM_Esbelow(1-OLx,1-OLy,1,1,l),
0093 & diagName,0,1,0,1,1,myThid)
0094 ENDDO
0095 CALL DIAGNOSTICS_FILL(OASIM_solz,'OASIMsol',0,1,0,1,1,myThid)
0096 CALL DIAGNOSTICS_FILL(OASIM_rmud,'OASIMrmd',0,1,0,1,1,myThid)
0097 IF (DIAGNOSTICS_IS_ON('sPARblw ', myThid)) THEN
0098 DO bj=myByLo(myThid),myByHi(myThid)
0099 DO bi=myBxLo(myThid),myBxHi(myThid)
0100 DO j=1,sNy
0101 DO i=1,sNx
0102 sPARF(i,j) = 0 _d 0
0103 ENDDO
0104 ENDDO
0105 DO l=1,nlt
0106 DO j=1,sNy
0107 DO i=1,sNx
0108 sPARF(i,j) = sPARF(i,j) + (
0109 & oasim_rmud(i,j,bi,bj)*OASIM_Edbelow(i,j,bi,bj,l)
0110 & + oasim_rmus*OASIM_Esbelow(i,j,bi,bj,l)
0111 & )*WtouEins(l)*oasim_PARwgt(l)
0112 ENDDO
0113 ENDDO
0114 ENDDO
0115 CALL DIAGNOSTICS_FILL(sPARF,'sPARblw ',0,1,2,bi,bj,myThid)
0116 ENDDO
0117 ENDDO
0118 ENDIF
0119 ENDIF
0120 #endif
0121
0122 #endif /* ALLOW_OASIM */
0123
0124 RETURN
0125 END