File indexing completed on 2025-10-27 12:20:20 UTC
view on githubraw file Latest commit c3be0435 on 2025-09-18 18:40:16 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 IF ( staggerTimeStep ) THEN
0118 DO j=1-OLy,sNy+OLy
0119 DO i=1-OLx,sNx+OLx
0120 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
0121 ENDDO
0122 ENDDO
0123 ENDIF
0124
45f2c74f8a Jean*0125 IF ( usingZCoords ) THEN
5345270720 Jean*0126 DO j = jMin, jMax
0127 DO i = iMin, iMax
0128 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
45f2c74f8a Jean*0129 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
5345270720 Jean*0130 ENDDO
45f2c74f8a Jean*0131 ENDDO
0132 ENDIF
0133
470f7fc263 Jean*0134 #ifdef ALLOW_DIAGNOSTICS
0135 IF ( useDiagnostics ) THEN
0136 DO j=1-OLy,sNy+OLy
0137 DO i=1-OLx,sNx+OLx
0138 shelficeDragU(i,j,bi,bj) = 0.
0139 shelficeDragV(i,j,bi,bj) = 0.
0140 ENDDO
0141 ENDDO
00f81e6785 Ou W*0142 ENDIF
470f7fc263 Jean*0143 #endif /* ALLOW_DIAGNOSTICS */
0144
45f2c74f8a Jean*0145
0146
0147
0148 #endif /* ALLOW_SHELFICE */
0149 RETURN
0150 END