File indexing completed on 2018-03-02 18:40:51 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
e0b3e1bdd8 Dimi*0001 #include "FRAZIL_OPTIONS.h"
0002
0003
0004
0005
0006
0007 SUBROUTINE FRAZIL_CALC_RHS(
0008 I myTime, myIter, myThid )
0009
0010
0011
0012
0013
0014
0015 IMPLICIT NONE
0016 #include "EEPARAMS.h"
33e5e9881a Dimi*0017 #include "SIZE.h"
e0b3e1bdd8 Dimi*0018 #include "PARAMS.h"
0019 #include "GRID.h"
33e5e9881a Dimi*0020 #include "DYNVARS.h"
e0b3e1bdd8 Dimi*0021 #include "FFIELDS.h"
33e5e9881a Dimi*0022 #ifdef ALLOW_FRAZIL
0023 # include "FRAZIL.h"
0024 #endif
e0b3e1bdd8 Dimi*0025
0026
33e5e9881a Dimi*0027
0028
0029
0030 _RL myTime
e0b3e1bdd8 Dimi*0031 INTEGER myIter
0032 INTEGER myThid
33e5e9881a Dimi*0033
e0b3e1bdd8 Dimi*0034
0035 #ifdef ALLOW_FRAZIL
33e5e9881a Dimi*0036
0037
0038
e0b3e1bdd8 Dimi*0039 INTEGER bi,bj,i,j,k,kTop
0040 _RL Tfreezing, Tresid, pLoc, sLoc, tLoc
0041 _RL a0, a1, a2, b
0042 PARAMETER( a0 = -0.0575 _d 0 )
0043 PARAMETER( a1 = 1.710523 _d -3 )
0044 PARAMETER( a2 = -2.154996 _d -4 )
0045 PARAMETER( b = -7.53 _d -4 )
0046
0047 _RL SW_TEMP
0048 EXTERNAL SW_TEMP
0049
0050 DO bj=myByLo(myThid),myByHi(myThid)
0051 DO bi=myBxLo(myThid),myBxHi(myThid)
33e5e9881a Dimi*0052
0053
0054 DO k=1,Nr
0055 DO j=1-Oly,sNy+OLy
0056 DO i=1-Olx,sNx+Olx
0057 FrazilForcingT(i,j,k,bi,bj) = 0. _d 0
0058 ENDDO
0059 ENDDO
0060 ENDDO
0061
0062
0063 DO k = 2, Nr
0064 DO j=1-OLy,sNy+OLy
0065 DO i=1-OLx,sNx+OLx
e0b3e1bdd8 Dimi*0066 IF ( maskC(i,j,k-1,bi,bj) .NE. 0. _d 0 .AND.
0067 & maskC(i,j,k, bi,bj) .NE. 0. _d 0 ) THEN
0068
0069 pLoc = ABS(RC(k))
0070 sLoc = MAX(salt(i,j,k,bi,bj), 0. _d 0)
0071 tLoc = SW_TEMP(sLoc,theta(i,j,k,bi,bj),pLoc,0. _d 0)
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085 Tfreezing = (a0 + a1*sqrt(sLoc) + a2*sLoc) * sLoc + b*pLoc
0086
0087 IF (tLoc .LT. Tfreezing) THEN
0088
33e5e9881a Dimi*0089 kTop = kSurfC(i,j,bi,bj)
0090 Tresid = ( Tfreezing - tloc )
610e3cd50d Dimi*0091 & * HeatCapacity_Cp * rUnit2mass
0092 & * drF(k) * _hFacC(i,j,k,bi,bj)
33e5e9881a Dimi*0093 FrazilForcingT(i,j,k,bi,bj) = Tresid / dTtracerLev(k)
610e3cd50d Dimi*0094 FrazilForcingT(i,j,kTop,bi,bj) =
33e5e9881a Dimi*0095 & FrazilForcingT(i,j,kTop,bi,bj)
610e3cd50d Dimi*0096 & - Tresid / dTtracerLev(kTop)
e0b3e1bdd8 Dimi*0097 ENDIF
0098 ENDIF
0099 ENDDO
0100 ENDDO
0101 ENDDO
0102 ENDDO
0103 ENDDO
0104
bb86b07795 Dimi*0105 # ifdef ALLOW_DIAGNOSTICS
0106 IF ( useDiagnostics ) THEN
0107 CALL DIAGNOSTICS_FILL( FrazilForcingT, 'FrzForcT',
0108 & 0,Nr, 0, 1, 1, myThid )
0109 ENDIF
0110 # endif /* ALLOW_DIAGNOSTICS */
0111
e0b3e1bdd8 Dimi*0112 #endif /* ALLOW_FRAZIL */
0113
0114 RETURN
0115 END