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

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

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


Revision 1.2 - (show annotations) (download)
Fri Apr 4 20:56:32 2014 UTC (10 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64w, checkpoint64v, 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.1: +20 -17 lines
- Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage
  which are specific to TAF/TAMC).

1 C $Header: /u/gcmpack/MITgcm/model/src/update_sigma.F,v 1.1 2010/09/11 21:27:13 jmc Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6 c#ifdef ALLOW_AUTODIFF
7 c# include "AUTODIFF_OPTIONS.h"
8 c#endif
9
10 CBOP
11 C !ROUTINE: UPDATE_SIGMA
12 C !INTERFACE:
13 SUBROUTINE UPDATE_SIGMA( etaHc, myTime, myIter, myThid )
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | SUBROUTINE UPDATE_SIGMA
17 C | o Update the thickness fractions (hFacC,W,S)
18 C | according to the surface r-position = Non-Linear FrSurf
19 C *==========================================================*
20 C \ev
21
22 C !USES:
23 IMPLICIT NONE
24 C == Global variables
25 #include "SIZE.h"
26 #include "EEPARAMS.h"
27 #include "PARAMS.h"
28 c #include "DYNVARS.h"
29 #include "GRID.h"
30 #include "SURFACE.h"
31 c#ifdef ALLOW_AUTODIFF_TAMC
32 c# include "tamc.h"
33 c# include "tamc_keys.h"
34 c#endif
35
36 C !INPUT/OUTPUT PARAMETERS:
37 C == Routine arguments ==
38 C etaHc :: surface r-anomaly at grid cell center
39 C myTime :: Current time in simulation
40 C myIter :: Current iteration number in simulation
41 C myThid :: my Thread Id. number
42 _RL etaHc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43 _RL myTime
44 INTEGER myIter
45 INTEGER myThid
46
47 #ifdef NONLIN_FRSURF
48 c#ifndef DISABLE_SIGMA_CODE
49 C !LOCAL VARIABLES:
50 C Local variables
51 C bi, bj :: tile indices
52 C i, j, k :: Loop counters
53 C rEmpty :: empty column r-position
54 C rFullDepth :: maximum depth of a full column
55 C tmpFld :: Temporary array used to compute & write Total Depth
56 C msgBuf :: Informational/error message buffer
57 INTEGER bi, bj
58 INTEGER i, j, k
59 _RL rFullDepth
60 _RL tmpFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
61 c _RL hFactmp
62 c CHARACTER*(MAX_LEN_MBUF) msgBuf
63 CEOP
64
65 rFullDepth = rF(1)-rF(Nr+1)
66
67 DO bj=myByLo(myThid), myByHi(myThid)
68 DO bi=myBxLo(myThid), myBxHi(myThid)
69
70 c#ifdef ALLOW_AUTODIFF_TAMC
71 c act1 = bi - myBxLo(myThid)
72 c max1 = myBxHi(myThid) - myBxLo(myThid) + 1
73 c act2 = bj - myByLo(myThid)
74 c max2 = myByHi(myThid) - myByLo(myThid) + 1
75 c act3 = myThid - 1
76 c max3 = nTx*nTy
77 c act4 = ikey_dynamics - 1
78 c idynkey = (act1 + 1) + act2*max1
79 c & + act3*max1*max2
80 c & + act4*max1*max2*max3
81 c#endif /* ALLOW_AUTODIFF_TAMC */
82
83 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
84
85 c#ifdef ALLOW_OBCS
86 c# ifdef ALLOW_AUTODIFF_TAMC
87 cCADJ STORE rStarFacC(:,:,bi,bj) =
88 cCADJ & comlev1_bibj, key = idynkey, byte = isbyte
89 cCADJ STORE rStarFacS(:,:,bi,bj) =
90 cCADJ & comlev1_bibj, key = idynkey, byte = isbyte
91 cCADJ STORE rStarFacW(:,:,bi,bj) =
92 cCADJ & comlev1_bibj, key = idynkey, byte = isbyte
93 c# endif /* ALLOW_AUTODIFF_TAMC */
94 cC-- Apply OBC to rStar_Factor_W,S before updating hFacW,S
95 c IF (useOBCS) THEN
96 c CALL OBCS_APPLY_R_STAR(
97 c I bi, bj,
98 c U rStarFacC, rStarFacW, rStarFacS,
99 c I myTime, myIter, myThid )
100 c ENDIF
101 c#endif /* ALLOW_OBCS */
102
103 C-- Update the fractional thickness hFacC (& "recip_hFac") :
104 DO j=1-OLy,sNy+OLy
105 DO i=1-OLx,sNx+OLx
106 IF ( kSurfC(i,j,bi,bj).LE.Nr ) THEN
107 tmpFld(i,j) = etaHc(i,j,bi,bj)
108 & + ( Ro_surf(i,j,bi,bj)-R_low(i,j,bi,bj) )
109 ELSE
110 tmpFld(i,j) = rFullDepth
111 ENDIF
112 ENDDO
113 ENDDO
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) = maskC(i,j,k,bi,bj)
118 & *( dAHybSigF(k)*rFullDepth
119 & +dBHybSigF(k)*tmpFld(i,j)
120 & )*recip_drF(k)
121 recip_hFacC(i,j,k,bi,bj) = maskC(i,j,k,bi,bj)*drF(k)
122 & /( dAHybSigF(k)*rFullDepth
123 & +dBHybSigF(k)*tmpFld(i,j)
124 & )
125 ENDDO
126 ENDDO
127 ENDDO
128
129 C-- Update the fractional thickness hFacW (& "recip_hFac") :
130 DO j=1-OLy,sNy+OLy
131 DO i=1-OLx,sNx+OLx
132 IF ( kSurfW(i,j,bi,bj).LE.Nr ) THEN
133 tmpFld(i,j) = etaHw(i,j,bi,bj)
134 & + ( rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj) )
135 ELSE
136 tmpFld(i,j) = rFullDepth
137 ENDIF
138 ENDDO
139 ENDDO
140 DO k=1,Nr
141 DO j=1-OLy,sNy+OLy
142 DO i=1-OLx,sNx+OLx
143 hFacW(i,j,k,bi,bj) = maskW(i,j,k,bi,bj)
144 & *( dAHybSigF(k)*rFullDepth
145 & +dBHybSigF(k)*tmpFld(i,j)
146 & )*recip_drF(k)
147 recip_hFacW(i,j,k,bi,bj) = maskW(i,j,k,bi,bj)*drF(k)
148 & /( dAHybSigF(k)*rFullDepth
149 & +dBHybSigF(k)*tmpFld(i,j)
150 & )
151 ENDDO
152 ENDDO
153 ENDDO
154
155 C-- Update the fractional thickness hFacS (& "recip_hFac") :
156 DO j=1-OLy,sNy+OLy
157 DO i=1-OLx,sNx+OLx
158 IF ( kSurfS(i,j,bi,bj).LE.Nr ) THEN
159 tmpFld(i,j) = etaHs(i,j,bi,bj)
160 & + ( rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj) )
161 ELSE
162 tmpFld(i,j) = rFullDepth
163 ENDIF
164 ENDDO
165 ENDDO
166 DO k=1,Nr
167 DO j=1-OLy,sNy+OLy
168 DO i=1-OLx,sNx+OLx
169 hFacS(i,j,k,bi,bj) = maskS(i,j,k,bi,bj)
170 & *( dAHybSigF(k)*rFullDepth
171 & +dBHybSigF(k)*tmpFld(i,j)
172 & )*recip_drF(k)
173 recip_hFacS(i,j,k,bi,bj) = maskS(i,j,k,bi,bj)*drF(k)
174 & /( dAHybSigF(k)*rFullDepth
175 & +dBHybSigF(k)*tmpFld(i,j)
176 & )
177 ENDDO
178 ENDDO
179 ENDDO
180
181 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
182
183 C- end bi,bj loop
184 ENDDO
185 ENDDO
186
187 c _EXCH_XYZ_RS( hFacC, myThid )
188 c _EXCH_XYZ_RS( recip_hFacC, myThid )
189 c CALL EXCH_UV_XYZ_RS(hFacW,hFacS,.FALSE.,myThid)
190 c CALL EXCH_UV_XYZ_RS(recip_hFacW,recip_hFacS,.FALSE.,myThid)
191
192 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
193 c#endif /* ndef DISABLE_SIGMA_CODE */
194 #endif /* NONLIN_FRSURF */
195
196 RETURN
197 END

  ViewVC Help
Powered by ViewVC 1.1.22