/[MITgcm]/MITgcm_contrib/dcarroll/highres_darwin/code/shelfice_forcing_surf.F
ViewVC logotype

Contents of /MITgcm_contrib/dcarroll/highres_darwin/code/shelfice_forcing_surf.F

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


Revision 1.1 - (show annotations) (download)
Sun Sep 22 21:23:47 2019 UTC (5 years, 10 months ago) by dcarroll
Branch: MAIN
CVS Tags: HEAD
Initial check in of high resolution Darwin simulation code

1 C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/shelfice/shelfice_forcing_surf.F,v 1.3 2015/02/14 22:28:57 jmc 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
84 #ifndef shelfice_new_thermo
85
86 IF ( .NOT.SHELFICEboundaryLayer ) THEN
87 C- for now, forcing using SHELFICEboundaryLayer is done separately
88 C (calling SHELFICE_FORCING_T & _S from APPLY_FORCING_T & _S)
89
90 DO j=1,sNy
91 DO i=1,sNx
92 IF ( kTopC(i,j,bi,bj).NE.0 ) THEN
93 surfaceForcingT(i,j,bi,bj) = shelficeForcingT(i,j,bi,bj)
94 surfaceForcingS(i,j,bi,bj) = shelficeForcingS(i,j,bi,bj)
95 ENDIF
96 ENDDO
97 ENDDO
98
99 IF ( useRealFreshWaterFlux ) 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 C-- end if not SHELFICEboundaryLayer
115 ENDIF
116 #endif /* shelfice_new_thermo */
117
118 #ifdef EXACT_CONSERV
119 IF ( staggerTimeStep ) THEN
120 DO j=1-OLy,sNy+OLy
121 DO i=1-OLx,sNx+OLx
122 PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
123 ENDDO
124 ENDDO
125 ENDIF
126 #endif /* EXACT_CONSERV */
127
128 IF ( usingZCoords ) THEN
129 DO j = jMin, jMax
130 DO i = iMin, iMax
131 phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
132 & + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
133 ENDDO
134 ENDDO
135 ENDIF
136
137 c ENDDO
138 c ENDDO
139
140 #endif /* ALLOW_SHELFICE */
141 RETURN
142 END

  ViewVC Help
Powered by ViewVC 1.1.22