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

Annotation 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 - (hide 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 dgoldberg 1.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