File indexing completed on 2022-04-29 05:09:38 UTC
view on githubraw file Latest commit 3bafcf60 on 2022-04-28 17:30:33 UTC
45f2c74f8a Jean*0001 #include "SHELFICE_OPTIONS.h"
0002
0003
0004
0005
0006
0007 SUBROUTINE SHELFICE_FORCING_SURF(
0008 I bi, bj, iMin, iMax, jMin, jMax,
0009 I myTime, myIter, myThid )
0010
0011
0012
0013
0014
0015
0016
0017
0018 IMPLICIT NONE
0019
0020 #include "SIZE.h"
0021 #include "EEPARAMS.h"
0022 #include "PARAMS.h"
0023 #include "GRID.h"
0024
0025 #include "SURFACE.h"
0026 #include "FFIELDS.h"
0027 #include "SHELFICE.h"
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 INTEGER bi, bj
0038 INTEGER iMin, iMax, jMin, jMax
0039 _RL myTime
0040 INTEGER myIter
0041 INTEGER myThid
0042
0043 #ifdef ALLOW_SHELFICE
0044
0045
0046
0047 INTEGER i, j
9952f046d7 dngo*0048 LOGICAL SHI_useRealFWflux
45f2c74f8a Jean*0049
0050
9952f046d7 dngo*0051 SHI_useRealFWflux = useRealFreshWaterFlux .AND.
0052 & ( .NOT.SHELFICEboundaryLayer .OR. SHI_withBL_realFWflux )
0053
45f2c74f8a Jean*0054
0055
0056
5345270720 Jean*0057
0058 DO j=1-OLy,sNy+OLy
0059 DO i=1-OLx,sNx+OLx
0060 IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
0061 surfaceForcingT(i,j,bi,bj) = 0.
0062 surfaceForcingS(i,j,bi,bj) = 0.
0063 EmPmR(i,j,bi,bj) = 0.
c87895a3f5 jm-c 0064 Qsw (i,j,bi,bj) = 0.
0065
0066 Qnet (i,j,bi,bj) = 0.
5345270720 Jean*0067 ENDIF
0068 ENDDO
0069 ENDDO
2694f84bda Jean*0070 DO j=1-OLy,sNy+OLy
0071 DO i=2-OLx,sNx+OLx
0072 IF ( MAX( kTopC(i-1,j,bi,bj), kTopC(i,j,bi,bj) ).NE.0 ) THEN
0073 surfaceForcingU(i,j,bi,bj) = 0.
0074 ENDIF
0075 ENDDO
0076 ENDDO
0077 DO j=2-OLy,sNy+OLy
0078 DO i=1-OLx,sNx+OLx
0079 IF ( MAX( kTopC(i,j-1,bi,bj), kTopC(i,j,bi,bj) ).NE.0 ) THEN
0080 surfaceForcingV(i,j,bi,bj) = 0.
0081 ENDIF
0082 ENDDO
0083 ENDDO
5345270720 Jean*0084
45f2c74f8a Jean*0085
0086
0087 IF ( .NOT.SHELFICEboundaryLayer ) THEN
0088
2694f84bda Jean*0089
45f2c74f8a Jean*0090 DO j=1,sNy
0091 DO i=1,sNx
5345270720 Jean*0092 IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
45f2c74f8a Jean*0093 surfaceForcingT(i,j,bi,bj) = shelficeForcingT(i,j,bi,bj)
0094 surfaceForcingS(i,j,bi,bj) = shelficeForcingS(i,j,bi,bj)
0095 ENDIF
0096 ENDDO
0097 ENDDO
9952f046d7 dngo*0098 ENDIF
45f2c74f8a Jean*0099
9952f046d7 dngo*0100 IF ( SHI_useRealFWflux ) THEN
0101
0102
5345270720 Jean*0103 DO j=1-OLy,sNy+OLy
0104 DO i=1-OLx,sNx+OLx
0105
0106 EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)
0107 & + shelfIceFreshWaterFlux(i,j,bi,bj)
0108
0109 ENDDO
0110 ENDDO
45f2c74f8a Jean*0111 ENDIF
0112
5345270720 Jean*0113 #ifdef EXACT_CONSERV
0114 IF ( staggerTimeStep ) THEN
0115 DO j=1-OLy,sNy+OLy
0116 DO i=1-OLx,sNx+OLx
0117 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
0118 ENDDO
0119 ENDDO
0120 ENDIF
0121 #endif /* EXACT_CONSERV */
0122
45f2c74f8a Jean*0123 IF ( usingZCoords ) THEN
5345270720 Jean*0124 DO j = jMin, jMax
0125 DO i = iMin, iMax
0126 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
45f2c74f8a Jean*0127 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
5345270720 Jean*0128 ENDDO
45f2c74f8a Jean*0129 ENDDO
0130 ENDIF
0131
470f7fc263 Jean*0132 #ifdef ALLOW_DIAGNOSTICS
0133 IF ( useDiagnostics ) THEN
0134 DO j=1-OLy,sNy+OLy
0135 DO i=1-OLx,sNx+OLx
0136 shelficeDragU(i,j,bi,bj) = 0.
0137 shelficeDragV(i,j,bi,bj) = 0.
0138 ENDDO
0139 ENDDO
0140 ENDIF
0141 #endif /* ALLOW_DIAGNOSTICS */
0142
45f2c74f8a Jean*0143
0144
0145
0146 #endif /* ALLOW_SHELFICE */
0147 RETURN
0148 END