File indexing completed on 2024-05-25 05:11:10 UTC
view on githubraw file Latest commit 00f81e67 on 2024-05-24 21:00:12 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
00f81e6785 Ou W*0085 IF ( .NOT. useSTIC ) THEN
45f2c74f8a Jean*0086
0087
00f81e6785 Ou W*0088 IF ( .NOT.SHELFICEboundaryLayer ) THEN
45f2c74f8a Jean*0089
2694f84bda Jean*0090
00f81e6785 Ou W*0091 DO j=1,sNy
0092 DO i=1,sNx
0093 IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
0094 surfaceForcingT(i,j,bi,bj) = shelficeForcingT(i,j,bi,bj)
0095 surfaceForcingS(i,j,bi,bj) = shelficeForcingS(i,j,bi,bj)
0096 ENDIF
0097 ENDDO
45f2c74f8a Jean*0098 ENDDO
00f81e6785 Ou W*0099 ENDIF
45f2c74f8a Jean*0100
00f81e6785 Ou W*0101 IF ( SHI_useRealFWflux ) THEN
9952f046d7 dngo*0102
0103
5345270720 Jean*0104 DO j=1-OLy,sNy+OLy
0105 DO i=1-OLx,sNx+OLx
0106
0107 EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)
0108 & + shelfIceFreshWaterFlux(i,j,bi,bj)
0109
0110 ENDDO
0111 ENDDO
00f81e6785 Ou W*0112 ENDIF
0113
0114
45f2c74f8a Jean*0115 ENDIF
0116
5345270720 Jean*0117 #ifdef EXACT_CONSERV
0118 IF ( staggerTimeStep ) THEN
0119 DO j=1-OLy,sNy+OLy
0120 DO i=1-OLx,sNx+OLx
0121 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
0122 ENDDO
0123 ENDDO
0124 ENDIF
0125 #endif /* EXACT_CONSERV */
0126
45f2c74f8a Jean*0127 IF ( usingZCoords ) THEN
5345270720 Jean*0128 DO j = jMin, jMax
0129 DO i = iMin, iMax
0130 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
45f2c74f8a Jean*0131 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
5345270720 Jean*0132 ENDDO
45f2c74f8a Jean*0133 ENDDO
0134 ENDIF
0135
470f7fc263 Jean*0136 #ifdef ALLOW_DIAGNOSTICS
0137 IF ( useDiagnostics ) THEN
0138 DO j=1-OLy,sNy+OLy
0139 DO i=1-OLx,sNx+OLx
0140 shelficeDragU(i,j,bi,bj) = 0.
0141 shelficeDragV(i,j,bi,bj) = 0.
0142 ENDDO
0143 ENDDO
00f81e6785 Ou W*0144 ENDIF
470f7fc263 Jean*0145 #endif /* ALLOW_DIAGNOSTICS */
0146
45f2c74f8a Jean*0147
0148
0149
0150 #endif /* ALLOW_SHELFICE */
0151 RETURN
0152 END