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

Annotation of /MITgcm_contrib/shelfice_remeshing/CLEAN/code/shelfice_forcing_surf.F

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


Revision 1.3 - (hide annotations) (download)
Tue Jan 19 16:46:55 2016 UTC (9 years, 6 months ago) by dgoldberg
Branch: MAIN
Changes since 1.2: +2 -4 lines
Grounding lines, sea level restore, Effective mass diagnostic

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

  ViewVC Help
Powered by ViewVC 1.1.22