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

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

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


Revision 1.7 - (show annotations) (download)
Tue Aug 12 22:42:33 2008 UTC (15 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62c, checkpoint62q, checkpoint62p, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62, checkpoint62b, checkpoint61f, checkpoint61n, checkpoint61q, checkpoint61e, checkpoint61g, checkpoint61d, checkpoint61c, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.6: +2 -2 lines
move kSurfC,W,S from SURFACE.h to GRID.h

1 C $Header: /u/gcmpack/MITgcm/model/src/update_r_star.F,v 1.6 2007/01/30 03:18:13 heimbach Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: UPDATE_R_STAR
9 C !INTERFACE:
10 SUBROUTINE UPDATE_R_STAR( myTime, myIter, myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE UPDATE_R_STAR
14 C | o Update the thickness fractions (hFacC,W,S)
15 C | according to the surface r-position = Non-Linear FrSurf
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 c #include "DYNVARS.h"
26 #include "GRID.h"
27 #include "SURFACE.h"
28 #ifdef ALLOW_AUTODIFF_TAMC
29 # include "tamc.h"
30 # include "tamc_keys.h"
31 #endif
32
33 C !INPUT/OUTPUT PARAMETERS:
34 C == Routine arguments ==
35 C myTime - Current time in simulation
36 C myIter - Current iteration number in simulation
37 C myThid - Thread number for this instance of the routine.
38 _RL myTime
39 INTEGER myIter
40 INTEGER myThid
41
42 C !LOCAL VARIABLES:
43 #ifdef NONLIN_FRSURF
44 C Local variables
45 C i,j,k,bi,bj - loop counter
46 INTEGER i,j,k,bi,bj
47 CEOP
48
49 DO bj=myByLo(myThid), myByHi(myThid)
50 DO bi=myBxLo(myThid), myBxHi(myThid)
51
52 #ifdef ALLOW_AUTODIFF_TAMC
53 act1 = bi - myBxLo(myThid)
54 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
55 act2 = bj - myByLo(myThid)
56 max2 = myByHi(myThid) - myByLo(myThid) + 1
57 act3 = myThid - 1
58 max3 = nTx*nTy
59 act4 = ikey_dynamics - 1
60 idynkey = (act1 + 1) + act2*max1
61 & + act3*max1*max2
62 & + act4*max1*max2*max3
63 #endif /* ALLOW_AUTODIFF_TAMC */
64
65 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
66
67 #ifdef ALLOW_OBCS
68 # ifdef ALLOW_AUTODIFF_TAMC
69 CADJ STORE rStarFacC(:,:,bi,bj) =
70 CADJ & comlev1_bibj, key = idynkey, byte = isbyte
71 CADJ STORE rStarFacS(:,:,bi,bj) =
72 CADJ & comlev1_bibj, key = idynkey, byte = isbyte
73 CADJ STORE rStarFacW(:,:,bi,bj) =
74 CADJ & comlev1_bibj, key = idynkey, byte = isbyte
75 # endif /* ALLOW_AUTODIFF_TAMC */
76 C-- Apply OBC to rStar_Factor_W,S before updating hFacW,S
77 IF (useOBCS) THEN
78 CALL OBCS_APPLY_R_STAR(
79 I bi, bj,
80 U rStarFacC, rStarFacW, rStarFacS,
81 I myTime, myIter, myThid )
82 ENDIF
83 #endif /* ALLOW_OBCS */
84
85 DO k=1,Nr
86 DO j=1-Oly,sNy+Oly
87 DO i=1-Olx,sNx+Olx
88 # ifndef DISABLE_RSTAR_CODE
89 C-- Update the fractional thickness hFacC , hFacW & hFacS (& "recip_hFac") :
90 hFacC(i,j,k,bi,bj) = h0FacC(i,j,k,bi,bj)
91 & *rStarFacC(i,j,bi,bj)
92 hFacW(i,j,k,bi,bj) = h0FacW(i,j,k,bi,bj)
93 & *rStarFacW(i,j,bi,bj)
94 hFacS(i,j,k,bi,bj) = h0FacS(i,j,k,bi,bj)
95 & *rStarFacS(i,j,bi,bj)
96 #endif
97 C
98 #ifdef USE_MASK_AND_NO_IF
99 recip_hFacC(i,j,k,bi,bj) = maskC(i,j,k,bi,bj)
100 & / ( _hFacC(i,j,k,bi,bj) + (1.-maskC(i,j,k,bi,bj)) )
101 recip_hFacW(i,j,k,bi,bj) = maskW(i,j,k,bi,bj)
102 & / ( _hFacW(i,j,k,bi,bj) + (1.-maskW(i,j,k,bi,bj)) )
103 recip_hFacS(i,j,k,bi,bj) = maskS(i,j,k,bi,bj)
104 & / ( _hFacS(i,j,k,bi,bj) + (1.-maskS(i,j,k,bi,bj)) )
105 #else
106 IF (maskC(i,j,k,bi,bj).NE.0.)
107 & recip_hFacC(i,j,k,bi,bj) = 1. _d 0 / _hFacC(i,j,k,bi,bj)
108 IF (maskW(i,j,k,bi,bj).NE.0.)
109 & recip_hFacW(i,j,k,bi,bj) = 1. _d 0 / _hFacW(i,j,k,bi,bj)
110 IF (maskS(i,j,k,bi,bj).NE.0.)
111 & recip_hFacS(i,j,k,bi,bj) = 1. _d 0 / _hFacS(i,j,k,bi,bj)
112 #endif
113 ENDDO
114 ENDDO
115 ENDDO
116
117 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
118
119 C- end bi,bj loop
120 ENDDO
121 ENDDO
122
123 c _EXCH_XYZ_RS( hFacC, myThid )
124 c _EXCH_XYZ_RS( recip_hFacC, myThid )
125 c CALL EXCH_UV_XYZ_RS(hFacW,hFacS,.FALSE.,myThid)
126 c CALL EXCH_UV_XYZ_RS(recip_hFacW,recip_hFacS,.FALSE.,myThid)
127
128 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
129 #endif /* NONLIN_FRSURF */
130
131 RETURN
132 END

  ViewVC Help
Powered by ViewVC 1.1.22