/[MITgcm]/MITgcm/model/src/ini_nlfs_vars.F
ViewVC logotype

Contents of /MITgcm/model/src/ini_nlfs_vars.F

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


Revision 1.10 - (show annotations) (download)
Tue Apr 29 21:07:39 2014 UTC (10 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64w, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.9: +2 -1 lines
store factor rStarFacC**atm_kappa in common block (for atmosphere in p* coords)

1 C $Header: /u/gcmpack/MITgcm/model/src/ini_nlfs_vars.F,v 1.9 2012/08/10 22:35:56 jmc Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: INI_NLFS_VARS
9 C !INTERFACE:
10 SUBROUTINE INI_NLFS_VARS( myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE INI_NLFS_VARS
14 C | o Initialise variables for Non-Linear Free-Surface
15 C | formulations (formerly INI_SURF_DR & INI_R_STAR)
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21 C == Global variables
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26 #include "SURFACE.h"
27
28 C !INPUT/OUTPUT PARAMETERS:
29 C == Routine arguments ==
30 C myThid :: my Thread Id. number
31 INTEGER myThid
32
33 C !LOCAL VARIABLES:
34 C Local variables
35 C i,j,k,bi,bj :: loop counter
36 INTEGER bi,bj
37 #ifdef NONLIN_FRSURF
38 INTEGER i, j
39 INTEGER k, ks
40 _RL hFacInfMOM, Rmin_tmp
41 #else /* NONLIN_FRSURF */
42 # ifdef EXACT_CONSERV
43 INTEGER i, j
44 # endif
45 #endif /* NONLIN_FRSURF */
46 CEOP
47
48 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
49
50 #ifdef ALLOW_DEBUG
51 IF (debugMode) CALL DEBUG_ENTER('INI_NLFS_VARS',myThid)
52 #endif
53
54 DO bj=myByLo(myThid), myByHi(myThid)
55 DO bi=myBxLo(myThid), myBxHi(myThid)
56 C- 1rst bi,bj loop :
57
58 #ifdef EXACT_CONSERV
59 C-- Initialise arrays (defined within ifdef EXACT_CONSERV):
60 C note: should be done elsewhere, outside ifdef NONLIN_FRSURF bloc
61 DO j=1-OLy,sNy+OLy
62 DO i=1-OLx,sNx+OLx
63 etaHnm1(i,j,bi,bj) = 0.
64 dEtaHdt(i,j,bi,bj) = 0.
65 PmEpR (i,j,bi,bj) = 0.
66 ENDDO
67 ENDDO
68 #endif /* EXACT_CONSERV */
69
70 #ifdef NONLIN_FRSURF
71 C-- Initialise arrays (NLFS using r-coordinate):
72 DO j=1-OLy,sNy+OLy
73 DO i=1-OLx,sNx+OLx
74 hFac_surfC(i,j,bi,bj) = 0.
75 hFac_surfW(i,j,bi,bj) = 0.
76 hFac_surfS(i,j,bi,bj) = 0.
77 hFac_surfNm1C(i,j,bi,bj) = 0.
78 hFac_surfNm1W(i,j,bi,bj) = 0.
79 hFac_surfNm1S(i,j,bi,bj) = 0.
80 Rmin_surf(i,j,bi,bj) = Ro_surf(i,j,bi,bj)
81 ENDDO
82 ENDDO
83
84 C-- Initialise arrays (NLFS using r* coordinate):
85 DO j=1-OLy,sNy+OLy
86 DO i=1-OLx,sNx+OLx
87 rStarFacC(i,j,bi,bj) = 1.
88 rStarFacW(i,j,bi,bj) = 1.
89 rStarFacS(i,j,bi,bj) = 1.
90 pStarFacK(i,j,bi,bj) = 1.
91 rStarFacNm1C(i,j,bi,bj) = 1.
92 rStarFacNm1W(i,j,bi,bj) = 1.
93 rStarFacNm1S(i,j,bi,bj) = 1.
94 rStarExpC(i,j,bi,bj) = 1.
95 rStarExpW(i,j,bi,bj) = 1.
96 rStarExpS(i,j,bi,bj) = 1.
97 rStarDhCDt(i,j,bi,bj) = 0.
98 rStarDhWDt(i,j,bi,bj) = 0.
99 rStarDhSDt(i,j,bi,bj) = 0.
100 ENDDO
101 ENDDO
102
103 C-- Initialise arrays (NLFS using hybrid sigma-coordinate):
104 DO j=1-OLy,sNy+OLy
105 DO i=1-OLx,sNx+OLx
106 etaHw (i,j,bi,bj) = 0.
107 etaHs (i,j,bi,bj) = 0.
108 dEtaWdt(i,j,bi,bj) = 0.
109 dEtaSdt(i,j,bi,bj) = 0.
110 ENDDO
111 ENDDO
112
113 C-- to make TAF happy: reset hFac to h0Fac (copied from hFac in ini_linear_phisurf)
114 DO k=1,Nr
115 DO j=1-OLy,sNy+OLy
116 DO i=1-OLx,sNx+OLx
117 hFacC(i,j,k,bi,bj) = h0FacC(i,j,k,bi,bj)
118 hFacW(i,j,k,bi,bj) = h0FacW(i,j,k,bi,bj)
119 hFacS(i,j,k,bi,bj) = h0FacS(i,j,k,bi,bj)
120 ENDDO
121 ENDDO
122 ENDDO
123 #endif /* NONLIN_FRSURF */
124
125 C- end 1rst bi,bj loop.
126 ENDDO
127 ENDDO
128
129 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
130 #ifdef NONLIN_FRSURF
131
132 hFacInfMOM = hFacInf
133
134 DO bj=myByLo(myThid), myByHi(myThid)
135 DO bi=myBxLo(myThid), myBxHi(myThid)
136
137 C-- Compute the mimimum value of r_surf (used for computing hFac_surfC)
138 DO j=1,sNy
139 DO i=1,sNx
140 ks = kSurfC(i,j,bi,bj)
141 IF (ks.LE.Nr) THEN
142 Rmin_tmp = rF(ks+1)
143 IF ( ks.EQ.kSurfW(i,j,bi,bj))
144 & Rmin_tmp = MAX(Rmin_tmp, R_low(i-1,j,bi,bj))
145 IF ( ks.EQ.kSurfW(i+1,j,bi,bj))
146 & Rmin_tmp = MAX(Rmin_tmp, R_low(i+1,j,bi,bj))
147 IF ( ks.EQ.kSurfS(i,j,bi,bj))
148 & Rmin_tmp = MAX(Rmin_tmp, R_low(i,j-1,bi,bj))
149 IF ( ks.EQ.kSurfS(i,j+1,bi,bj))
150 & Rmin_tmp = MAX(Rmin_tmp, R_low(i,j+1,bi,bj))
151
152 Rmin_surf(i,j,bi,bj) =
153 & MAX( MAX(rF(ks+1),R_low(i,j,bi,bj)) + hFacInf*drF(ks),
154 & Rmin_tmp + hFacInfMOM*drF(ks)
155 & )
156 ENDIF
157 ENDDO
158 ENDDO
159
160 C- end bi,bj loop.
161 ENDDO
162 ENDDO
163
164 CALL EXCH_XY_RL( Rmin_surf, myThid )
165
166 #endif /* NONLIN_FRSURF */
167 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
168
169 #ifdef ALLOW_DEBUG
170 IF (debugMode) CALL DEBUG_LEAVE('INI_NLFS_VARS',myThid)
171 #endif
172
173 RETURN
174 END

  ViewVC Help
Powered by ViewVC 1.1.22