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

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

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


Revision 1.1 - (show annotations) (download)
Tue Oct 13 16:04:39 2015 UTC (9 years, 9 months ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
*** empty log message ***

1 C $Header: /u/gcmpack/MITgcm_contrib/shelfice_remeshing/AUTO/code/shelfice_forcing_surf.F,v 1.1 2015/10/06 10:38:53 dgoldberg Exp $
2 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 c#include "DYNVARS.h"
28 #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 c ENDIF
109 ENDDO
110 ENDDO
111 #endif /* ALLOW_AUTODIFF */
112 ENDIF
113
114
115
116
117 C-- end if not SHELFICEboundaryLayer
118
119 #ifdef EXACT_CONSERV
120 IF ( staggerTimeStep ) THEN
121 DO j=1-OLy,sNy+OLy
122 DO i=1-OLx,sNx+OLx
123 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
124 ENDDO
125 ENDDO
126 ENDIF
127 #endif /* EXACT_CONSERV */
128
129 IF ( usingZCoords ) THEN
130 DO j = jMin, jMax
131 DO i = iMin, iMax
132 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
133 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
134 ENDDO
135 ENDDO
136 ENDIF
137
138 c ENDDO
139 c ENDDO
140
141 #endif /* ALLOW_SHELFICE */
142 RETURN
143 END

  ViewVC Help
Powered by ViewVC 1.1.22