/[MITgcm]/MITgcm_contrib/shelfice_remeshing/DIG/code/shelfice_forcing_surf.F
ViewVC logotype

Contents of /MITgcm_contrib/shelfice_remeshing/DIG/code/shelfice_forcing_surf.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Fri Apr 1 10:19:37 2016 UTC (8 years, 2 months ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
Added rough code to dig ice shelf to make continuous ocean

1 C $Header: /u/gcmpack/MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_forcing_surf.F,v 1.3 2016/01/25 14:07:12 dgoldberg Exp $
2 C $Name: $
3
4 #include "SHELFICE_OPTIONS.h"
5 #include "OBCS_OPTIONS.h"
6
7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 CBOP
9 C !ROUTINE: SHELFICE_FORCING_SURF
10 C !INTERFACE:
11 SUBROUTINE SHELFICE_FORCING_SURF(
12 I bi, bj, iMin, iMax, jMin, jMax,
13 I myTime, myIter, myThid )
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | S/R SHELFICE_FORCING_SURF
17 C | o Contains problem specific surface forcing
18 C *==========================================================*
19 C \ev
20
21 C !USES:
22 IMPLICIT NONE
23 C == Global data ==
24 #include "SIZE.h"
25 #include "EEPARAMS.h"
26 #include "PARAMS.h"
27 #include "GRID.h"
28 #include "DYNVARS.h"
29 #include "SURFACE.h"
30 #include "FFIELDS.h"
31 #include "SHELFICE.h"
32 ! #include "OBCS_PARAMS.h"
33 ! #include "OBCS_GRID.h"
34 ! #include "OBCS_FIELDS.h"
35
36
37 C !INPUT/OUTPUT PARAMETERS:
38 C == Routine arguments ==
39 C bi,bj :: Current tile indices
40 C iMin,iMax :: Working range of x-index for applying forcing.
41 C jMin,jMax :: Working range of y-index for applying forcing.
42 C myTime :: Current time in simulation
43 C myIter :: Current iteration number in simulation
44 C myThid :: Thread Id number
45 INTEGER bi, bj
46 INTEGER iMin, iMax, jMin, jMax
47 _RL myTime
48 INTEGER myIter
49 INTEGER myThid
50
51 #ifdef ALLOW_SHELFICE
52 C !LOCAL VARIABLES:
53 C == Local variables ==
54 C i,j :: Loop counters
55 INTEGER i, j, jsl
56 _RL etarelax, lambda_obcs_t
57 CEOP
58
59 c DO bj=myByLo(myThid),myByHi(myThid)
60 c DO bi=myBxLo(myThid),myBxHi(myThid)
61
62 C-- Zero out surface forcing terms below ice-shelf
63 DO j=1-OLy,sNy+OLy
64 DO i=1-OLx,sNx+OLx
65 IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
66 surfaceForcingT(i,j,bi,bj) = 0.
67 surfaceForcingS(i,j,bi,bj) = 0.
68 EmPmR(i,j,bi,bj) = 0.
69 ENDIF
70 ENDDO
71 ENDDO
72 DO j=1-OLy,sNy+OLy
73 DO i=2-OLx,sNx+OLx
74 IF ( MAX( kTopC(i-1,j,bi,bj), kTopC(i,j,bi,bj) ).NE.0 ) THEN
75 surfaceForcingU(i,j,bi,bj) = 0.
76 ENDIF
77 ENDDO
78 ENDDO
79 DO j=2-OLy,sNy+OLy
80 DO i=1-OLx,sNx+OLx
81 IF ( MAX( kTopC(i,j-1,bi,bj), kTopC(i,j,bi,bj) ).NE.0 ) THEN
82 surfaceForcingV(i,j,bi,bj) = 0.
83 ENDIF
84 ENDDO
85 ENDDO
86
87 C-- Forcing term
88
89 IF ( .NOT.SHELFICEboundaryLayer ) THEN
90 C- for now, forcing using SHELFICEboundaryLayer is done separately
91 C (calling SHELFICE_FORCING_T & _S from APPLY_FORCING_T & _S)
92
93 DO j=1,sNy
94 DO i=1,sNx
95 IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
96 surfaceForcingT(i,j,bi,bj) = shelficeForcingT(i,j,bi,bj)
97 surfaceForcingS(i,j,bi,bj) = shelficeForcingS(i,j,bi,bj)
98 ENDIF
99 ENDDO
100 ENDDO
101
102 ENDIF
103
104 IF ( useRealFreshWaterFlux.and.
105 & (SHELFICErealFWflux.or.(.not.shelficeboundarylayer))) THEN
106 #ifdef ALLOW_AUTODIFF
107 STOP 'RealFreshWaterFlux disabled in SHELFICE_FORCING_SURF'
108 #else /* ALLOW_AUTODIFF */
109 DO j=1-OLy,sNy+OLy
110 DO i=1-OLx,sNx+OLx
111 c IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
112 EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)
113 & + shelfIceFreshWaterFlux(i,j,bi,bj)
114 c IF (J .GT. 395) THEN
115 c
116 c IF ((myTime/86400) .EQ.
117 c & INT (myTime/86400) .AND. myTime
118 c & .NE. 0.0 ) THEN
119 c SeaLevelRestore(i,j,bi,bj) = etaN(i,j,bi,bj)*1030/86400
120 c ENDIF
121 c EmPmR(i,j,bi,bj)=SeaLevelRestore(i,j,bi,bj)
122 c ENDIF
123
124 c ENDIF
125 ENDDO
126 ENDDO
127 #endif /* ALLOW_AUTODIFF */
128 ENDIF
129
130 CALL SHELFICE_RESTORE_SEALEVEL(
131 I bi, bj, iMin, iMax, jMin, jMax,
132 I myTime, myIter, myThid )
133
134
135 C-- end if not SHELFICEboundaryLayer
136
137 #ifdef EXACT_CONSERV
138 IF ( staggerTimeStep ) THEN
139 DO j=1-OLy,sNy+OLy
140 DO i=1-OLx,sNx+OLx
141 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
142 ENDDO
143 ENDDO
144 ENDIF
145 #endif /* EXACT_CONSERV */
146
147 IF ( usingZCoords ) THEN
148 DO j = jMin, jMax
149 DO i = iMin, iMax
150 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
151 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
152 ENDDO
153 ENDDO
154 ENDIF
155
156 c ENDDO
157 c ENDDO
158
159 #endif /* ALLOW_SHELFICE */
160 RETURN
161 END

  ViewVC Help
Powered by ViewVC 1.1.22