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

Contents of /MITgcm_contrib/dgoldberg/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)
Wed Jul 6 18:01:26 2016 UTC (9 years ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
moving experiment out of shelfice_remeshing to replace with vertical remeshing only

1 C $Header: /u/gcmpack/MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_forcing_surf.F,v 1.4 2016/05/05 18:16:04 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 IF ( useRealFreshWaterFlux.and.
97 & (SHELFICErealFWflux.or.(.not.shelficeboundarylayer))) THEN
98 #ifdef ALLOW_AUTODIFF
99 STOP 'RealFreshWaterFlux disabled in SHELFICE_FORCING_SURF'
100 #else /* ALLOW_AUTODIFF */
101 DO j=1-OLy,sNy+OLy
102 DO i=1-OLx,sNx+OLx
103 c IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
104 EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)
105 & + shelfIceFreshWaterFlux(i,j,bi,bj)
106 c ENDIF
107 ENDDO
108 ENDDO
109 #endif /* ALLOW_AUTODIFF */
110 ENDIF
111
112 C-- end if not SHELFICEboundaryLayer
113 ENDIF
114
115 #ifdef EXACT_CONSERV
116 IF ( staggerTimeStep ) THEN
117 DO j=1-OLy,sNy+OLy
118 DO i=1-OLx,sNx+OLx
119 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
120 ENDDO
121 ENDDO
122 ENDIF
123 #endif /* EXACT_CONSERV */
124
125 IF ( usingZCoords ) THEN
126 DO j = jMin, jMax
127 DO i = iMin, iMax
128 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
129 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
130 ENDDO
131 ENDDO
132 ENDIF
133
134 c ENDDO
135 c ENDDO
136
137 #endif /* ALLOW_SHELFICE */
138 RETURN
139 END

  ViewVC Help
Powered by ViewVC 1.1.22