/[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.5 - (show annotations) (download)
Tue Mar 15 00:21:39 2011 UTC (13 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint63, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.4: +5 -4 lines
for the adjoint, change NonLin-FreeSurf initialisation sequence:
  fill-in h0Fac from INITIALISE_FIXED (in ini_linear_phisurf.F)
  and reset hFac to h0Fac in INITIALISE_VARIA (ini_nlfs_vars.F).

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

  ViewVC Help
Powered by ViewVC 1.1.22